Documentation Index
Fetch the complete documentation index at: https://docs.keephq.dev/llms.txt
Use this file to discover all available pages before exploring further.
The Functions in Keep Workflow Engine are utilities that can be used to manipulate data, check conditions, or perform transformations within workflows. This document provides a brief overview and usage examples for each available function.
Mathematical Functions
add
Description: Adds all provided numbers together. All arguments are converted to integers.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.add(1, 2, 3) # Output: 6
message2: keep.add(10, 20, 30) # Output: 60
sub
Description: Subtracts all subsequent numbers from the first number. All arguments are converted to integers.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.sub(10, 2, 3) # Output: 5
message2: keep.sub(100, 20, 30) # Output: 50
mul
Description: Multiplies all provided numbers together. All arguments are converted to integers.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.mul(2, 3, 4) # Output: 24
message2: keep.mul(5, 6, 7) # Output: 210
div
Description: Divides the first number by all subsequent numbers. All arguments are converted to integers. Returns an integer if the division result is whole, otherwise returns a floating-point number.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.div(10, 2) # Output: 5
message2: keep.div(10, 3) # Output: 3.3333333333333335
message3: keep.div(100, 2, 5) # Output: 10
mod
Description: Calculates the remainder of dividing the first number by all subsequent numbers sequentially. All arguments are converted to integers.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.mod(10, 3) # Output: 1
message2: keep.mod(100, 30, 7) # Output: 2
exp
Description: Raises the first number to the power equal to the product of all subsequent numbers. All arguments are converted to integers.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.exp(2, 3) # Output: 8
message2: keep.exp(2, 3, 2) # Output: 64
fdiv
Description: Performs integer division of the first number by all subsequent numbers sequentially. All arguments are converted to integers.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.fdiv(10, 3) # Output: 3
message2: keep.fdiv(100, 3, 2) # Output: 16
Description: Checks if two values are equal.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.eq(5, 5) # Output: true
message2: keep.eq("hello", "world") # Output: false
message3: keep.eq([1, 2, 3], [1, 2, 3]) # Output: true
String Functions
uppercase
Description: Converts a string to uppercase.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: "keep.uppercase('hello world')" # Output: "HELLO WORLD"
lowercase
Description: Converts a string to lowercase.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: "keep.lowercase('HELLO WORLD')" # Output: "hello world"
capitalize
Description: Capitalizes the first character of a string.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.capitalize("hello world") # Output: "Hello world"
title
Description: Converts a string to title case (capitalizes each word).
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.title("hello world") # Output: "Hello World"
split
Description: Splits a string into a list using a delimiter.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: "keep.split('a,b,c', ',')" # Output: ["a", "b", "c"]
strip
Description: Removes leading and trailing whitespace from a string.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.strip(" hello world ") # Output: "hello world"
replace
Description: Replaces occurrences of a substring with another string.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.replace("hello world", "world", "Keep") # Output: "hello Keep"
remove_newlines
Description: Removes all newline and tab characters from a string.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.remove_newlines("hello\nworld\t!") # Output: "helloworld!"
encode
Description: URL-encodes a string.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.encode("hello world") # Output: "hello%20world"
slice
Description: Extracts a portion of a string based on start and end indices.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.slice("hello world", 0, 5) # Output: "hello"
List and Dictionary Functions
first
Description: Retrieves the first element from a list.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.first([1, 2, 3]) # Output: 1
last
Description: Retrieves the last element from a list.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.last([1, 2, 3]) # Output: 3
index
Description: Retrieves an element at a specific index from a list.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.index(["a", "b", "c"], 1) # Output: "b"
join
Description: Joins a list of elements into a string using a delimiter.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.join(["a", "b", "c"], ",") # Output: "a,b,c"
len
Description: Returns the length of a list.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.len([1, 2, 3]) # Output: 3
dict_to_key_value_list
Description: Converts a dictionary into a list of key-value pairs.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.dict_to_key_value_list({"a": 1, "b": 2}) # Output: ["a:1", "b:2"]
dict_pop
Description: Removes specified keys from a dictionary.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.dict_pop({"a": 1, "b": 2, "c": 3}, "a", "b") # Output: {"c": 3}
dict_pop_prefix
Description: Removes all keys that start with a specified prefix from a dictionary.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.dict_pop_prefix({"a_1": 1, "a_2": 2, "b_1": 3}, "a_") # Output: {"b_1": 3}
dict_filter_by_prefix
Description: Returns only the dictionary entries whose keys start with a specified prefix.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.dict_filter_by_prefix({"a_1": 1, "a_2": 2, "b_1": 3}, "a_") # Output: {"a_1": 1, "a_2": 2}
dictget
Description: Gets a value from a dictionary with a default fallback.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.dictget({"a": 1, "b": 2}, "c", "default") # Output: "default"
Date and Time Functions
from_timestamp
Description: Converts unix timestamp int, float or string to datetime object, with optional timezone option.
Example:
steps:
- name: example-step
provider:
type: console
with:
message: keep.from_timestamp(1717244449.0) # will print "2024-06-01 12:20:49+00:00"
# or with timezone
# message: keep.from_timestamp(1717244449.0, "Europe/Berlin") # will print "2024-06-01 14:20:49+02:00"
utcnow
Description: Returns the current UTC datetime.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.utcnow()
utcnowtimestamp
Description: Returns the current UTC datetime as a Unix timestamp (seconds since epoch).
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.utcnowtimestamp() # Output: 1704067200
utcnowiso
Description: Returns the current UTC datetime in ISO format.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.utcnowiso()
to_utc
Description: Converts a datetime string or object to UTC.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.to_utc("2024-01-01T00:00:00")
to_timestamp
Description: Converts a datetime object or string into a Unix timestamp.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.to_timestamp("2024-01-01T00:00:00")
datetime_compare
Description: Compares two datetime objects and returns the difference in hours.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.datetime_compare("2024-01-01T10:00:00", "2024-01-01T00:00:00") # Output: 10.0
is_business_hours
Description: Checks whether a given time falls within business hours.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.is_business_hours(
time_to_check="2024-01-01T14:00:00Z",
start_hour=8,
end_hour=20,
business_days=[0,1,2,3,4],
timezone="America/New_York"
)
JSON Functions
json_dumps
Description: Converts a dictionary or string into a formatted JSON string.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.json_dumps({"key": "value"})
json_loads
Description: Parses a JSON string into a dictionary.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.json_loads('{"key": "value"}')
Utility Functions
get_firing_time
Description: Calculates the firing duration of an alert in specified time units.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.get_firing_time(alert, "m", tenant_id="tenant-id") # Output: "15.0"
add_time_to_date
Description: Adds time to a date string based on specified time units.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.add_time_to_date("2024-01-01", "%Y-%m-%d", "1w 2d") # Output: "2024-01-10"
timestamp_delta
Description: Adds or subtracts a time delta to/from a datetime. Use negative values to subtract time.
Example:
steps:
- name: example-step
provider:
type: mock
with:
# Add 2 hours to the current time
add_hours: keep.timestamp_delta(keep.utcnow(), 2, "hours")
# Subtract 30 minutes from a specific datetime
subtract_minutes: keep.timestamp_delta("2024-01-01T12:00:00Z", -30, "minutes") # Output: 2024-01-01T11:30:00Z
# Add 1 week to a datetime
add_week: keep.timestamp_delta("2024-01-01T00:00:00Z", 1, "weeks") # Output: 2024-01-08T00:00:00Z
is_first_time
Description: Checks if an alert with a given fingerprint is firing for the first time or first time within a specified period.
Example:
steps:
- name: example-step
provider:
type: mock
with:
# Check if this is the first time the alert is firing
first_time: keep.is_first_time(alert.fingerprint, tenant_id="tenant-id")
# Check if this is the first time the alert is firing in the last 24 hours
first_time_24h: keep.is_first_time(alert.fingerprint, "24h", tenant_id="tenant-id")
all
Description: Checks if all elements in an iterable are identical.
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.all([1, 1, 1]) # Output: true
diff
Description: Checks if any elements in an iterable are different (opposite of all).
Example:
steps:
- name: example-step
provider:
type: mock
with:
message: keep.diff([1, 2, 1]) # Output: true