Formula functions can be used in the value field of a custom header of a named credential or external credential.
A Binary Large OBject (BLOB) is a collection of binary data stored as a single entity. For named credentials, BLOBs can store binary executable code used in custom header formulas.
Formula Functions
| Function | Description |
|---|---|
| BASE64DECODE(expr) | <ul><li>Input: String</li><li>Output: BlobValue</li><li>Description: Decode the Base64-encoded String expression to binary.</li></ul> |
| BASE64ENCODE(expr) | <ul><li>Input: BlobValue</li><li>Output: String</li><li>Description: Encode the binary BLOB expression as a Base64-encoded String.</li></ul> |
| BLOB(expr) | <ul><li>Input: String</li><li>Output: BlobValue</li><li>Description: Convert the value to a UTF-8 binary BLOB.</li></ul> |
| HASH(algorithm, expr) | <ul><li>Input: String, BlobValue</li><li>Output: BlobValue</li><li>Description: Given a binary value to hash, use algorithm to get the binary hash. The only supported hashing algorithm is SHA-256.</li></ul> |
| HEX(expr) | <ul><li>Input: BlobValue</li><li>Output: String</li><li>Description: Represents the given BLOB expression as a base-16 lower-case encoded String. This hex encoding contains the binary data expected by encryption functions.</li></ul> |
| HMAC(algorithm, valueToSign, secretSigningKey) | <ul><li>Input: String, BlobValue, BlobValue</li><li>Output: BlobValue<</li>li>Description: Use algorithm to sign the given binary valueToSign with a binary secret signing key. The resulting message authentication code is a binary value. The only supported algorithm is SHA-256.</li></ul> |
Examples
- This example shows encoding a username and password stored in an external credential. The
BLOBfunction first converts a string of form username:password into a binary.BASE64ENCODEthen converts the binary into an encoded string.myExternalCredentialis the name of an external credential.
BASE64ENCODE(BLOB($Credential.myExternalCredential.Username & ':' & $Credential.myExternalCredential.Password))
- This example sets a header named
X-Usernamewith a base-16, SHA-256-hashed username as the value.reqis an HTTPRequest.Usernameis an authentication parameter attached to a permission set mapping.
req.setHeader('X-Username', '{!HEX(HASH(\'SHA-256\', BLOB($Credential.myExternalCredential.Username)))}');
- This example sets the X-Body header as the base-16, hashed evaluated body, meaning that all formulas within the request body are evaluated.
BLOBisn’t required here because$Credential.myExternalCredential.Bodyis returned as a BLOB type, rather than as a String.
req.setHeader('X-Body', '{!HEX(HASH(\'SHA-256\', $Credential.myExternalCredential.Body))}');