Home / Stream/ Reference· Cribl Expressions/Other expressions

Miscellaneous Expression Methods

C.Schema – Schema Methods

C.Schema

Schema: (id: string) => SchemaValidator

C.Schema.validate()

SchemaValidator.validate(data: any): boolean

Validates the given object against the schema.

Returns true when schema is valid; otherwise, false.

ParameterTypeDescription
dataanyObject to be validated.

Examples

To validate whether a myField conforms to schema1, you can use:

C.Schema('schema1').validate(myField)

See Schema Library for more details.

C.Secret – Secrets‑Management Methods

C.Secret()

Secret: (id: string, type?: string): ISecret
Secret(id: string, type: 'keypair') => IPairSecret
Secret(id: string, type: 'text') => ITextSecret
Secret(id: string, type: 'credentials') => ICredentialsSecret

Returns a secret matching the specified ID.

ParameterTypeDescription
idstringID of the secret.
type (optional)’text’ | ‘keypair’ | ‘credentials’Type of the secret.

Examples

To return a text secret with ID victorias (or with undefined, if no such secret exists), use:

C.Secret('victorias', 'text')

You can also get attributes of secrets with the following expressions:

C.Secret('api_key', 'keypair').secretKey
C.Secret('secret_hash', 'text').value
C.Secret('user_pass', 'credentials').password

Common returned attributes for ISecret objects:

  • secretType – one of keypair, text, or credentials.
  • description (optional) – the secret description.
  • tags (optional) – a comma separated list of tags.

Additional returned attributes for IPairSecret objects:

  • apiKey – the API key value
  • secretKey – the Secret key value

Additional returned attributes for ITextSecret objects:

  • value – the text value

Additional returned attributes for ICredentialsSecret objects:

  • username – the username value
  • password – the password value

See Securing Cribl Stream > Secrets for more details.

C.env – Environment

C.env

env: {[key: string]: string;}

Returns an object containing Cribl Stream’s environment variables.

Examples

To return the parent of Cribl’s bin directory (generally /opt/cribl), use:

C.env.CRIBL_HOME

To return the hostname of the machine where Cribl Stream is running, use:

C.env.HOSTNAME

C.os – System Methods

C.os.hostname()

Returns hostname of the system running this Cribl Stream instance.

C.vars – Global Variables

See Global Variables Library for more details.

C.version – Cribl Stream Versions

C.version

Returns the Cribl Stream version currently running.

C.confVersion

Returns the commit hash of the Worker Node’s current config version. (Evaluates only against live data sent through Worker Nodes. Values will be undefined in the Leader’s Preview pane.)

C.Misc – Miscellaneous Utility Methods

C.Misc.zip()

Misc.zip(keys: string[], values: any[], dest?: any): any

Sets the given keys to the corresponding values on the given dest object. If dest is not provided, a new object will be constructed.

Returns object on which the fields were set.

ParameterTypeDescription
keysstring[]Field names corresponding to keys.
valuesany[]Values corresponding to values.
destanyObject on which to set field values.

Examples

Let’s take the following expression:

people = C.Misc.zip(titles, names)

If sample data contains: titles=['ceo', 'svp', 'vp'], names=['foo', 'bar', 'baz'], this expression create an object called people, with key names from elements in titles, and with corresponding values from elements in names.

Result: "people": {"ceo": "foo", "svp": "bar", "vp": "baz"}

C.Misc.uuidv4()

C.Misc.uuidv4(): string

Returns a version 4 (random) UUID in accordance with RFC-4122.

Examples

To create a UUIDv4, use:

C.Misc.uuidv4()

Result: a conforming UUIDv4, such as 58d8be36-4db0-4b1c-ac80-28bb03c45e0d. It is highly improbable that two version 4 UUIDs will ever have the same value.

C.Misc.uuidv5()

C.Misc.uuidv5(name: string, namespace: string): string

Returns a version 5 (namespaced) UUID in accordance with RFC-4122 for the given name and namespace. If namespace is not a valid UUID, this function will fail.

ParameterTypeDescription
namestringAny arbitrary name to use in UUID generation.
namespacestringOne of DNS, URL, OID, or X500 to use a predefined namespace, or else a valid UUID.

Examples

To create a UUIDv5 with the predefined DNS namespace, use:

C.Misc.uuidv5('example', 'DNS')

Result: a UUID that is highly likely to be the same for the same name and namespace. In this case, the result would be 7cb48787-6d91-5b9f-bc60-f30298ea5736.

C.Misc.validateUUID()

C.Misc.validateUUID(maybeUUID: string): boolean

Returns true if maybeUUID is a valid UUID of any version, and false otherwise.

ParameterTypeDescription
maybeUUIDstringA string to test for a valid UUID.

Examples

C.Misc.validateUUID(C.Misc.uuidv4())

Result: returns true

C.Misc.validateUUID('clearly not a UUID')

Result: returns false

C.Misc.getUUIDVersion()

C.Misc.getUUIDVersion(uuid: string): number

Returns a number of the UUID version given by uuid if it is a valid UUID, otherwise undefined.

ParameterTypeDescription
uuidstringA UUID for which to determine the version.

Examples

C.Misc.getUUIDVersion(C.Misc.uuidv4())

Result: 4

C.Misc.getUUIDVersion(C.Misc.uuidv5('example', 'X500'))

Result: 5