By selecting Adopt and Sign, I agree that the signature and initials will be the electronic representation of my signature and initials for all purposes when I (or my agent) use them on documents, including legally binding contracts just the same as pen-and-paper signature or initial.
By selecting Adopt and Sign, I agree that the signature and initials will be the electronic representation of my signature and initials for all purposes when I (or my agent) use them on documents, including legally binding contracts just the same as pen-and-paper signature or initial.
Before proceeding with the deletion of the record from the object, it's crucial to review its dependencies across various components.
Please take a moment to examine all the dependent components where this record is being utilized.
Table of dependent components where the record is being utilized.
Object
Field
Row ID
This record is currently utilized in custom components, including views, conditions, and navigations. Deleting it might lead to misbehavior in associated functionalities. Please carefully review the potential impact before proceeding.
Are you sure to rename?
Changing the table name of an object is not advised. This will not change syntax referencing this object in formulas found in any expression.
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: All
ABS()
Arithmetic absolute value. If the value is a string, it will be converted to a number.
ABS("-3.14") Returns: 3.14 ABS(-2.718) Returns: 2.718
ACCOUNTID()
The current account ID
ACCOUNTID() Returns: UUID
ADDRESS_TO_LATLNG()
Converts an address to latitude and longitude. A point is a tuple with 2 values: latitude and longitude.
ADDRESS_TO_LATLNG("1600 Amphitheatre Parkway, Mountain View, CA 94043") Returns: (37.4223878,-122.0841877)
AND()
Returns a YesNo expression
AND(TRUE, TRUE) Returns: Yes AND(TRUE, FALSE) Returns: No AND(FALSE, TRUE) Returns: No AND(FALSE, FALSE) Returns: No
ANY()
Returns a random choice from a list
ANY(["a", "b", "c"]) Returns: a random value - a, b, or c ANY([1, 2, 3]) Returns: a random value - 1, 2, or 3
AVERAGE()
Returns mean of a list
AVERAGE([1, 2, 3]) Returns: 2 AVERAGE([3.14, 2.71, 1.41]) Returns: 2.42
BASE_URL()
Returns the base URL of the app
BASE_URL() Returns: https://www.appsheet.com/
BOOLEAN() or BOOL()
Converts a value to a boolean
BOOLEAN("true") Returns: Yes BOOLEAN("false") Returns: No BOOLEAN(1) Returns: Yes BOOLEAN(0) Returns: No
CEILING()
Returns the smallest integer greater than or equal to a number
CEILING(3.14) Returns: 4 CEILING(-3.14) Returns: -3
CONCAT()
Concatenates two or more text strings
CONCAT("Hello", " ", "World") Returns: Hello World CONCAT("Hello", " ", "World", "!") Returns: Hello World!
CONCAT_WS()
Concatenates two or more text strings with a separator
CONCAT_WS(" ", "Hello", "World") Returns: Hello World CONCAT_WS(" ", "Hello", "World", "!") Returns: Hello World !
CONCATENATE()
Concatenates two or more text strings
CONCATENATE("Hello", " ", "World") Returns: Hello World CONCATENATE("Hello", " ", "World", "!") Returns: Hello World!
CONTAINS()
Returns a YesNo expression
CONTAINS("Hello World", "World") Returns: Yes CONTAINS("Hello World", "World!") Returns: No
Returns the number of items in an iterable. If the argument is a table name, it will return the number of rows.
COUNT([1, 2, 3]) Returns: 3 COUNT([3.14, 2.71, 1.41]) Returns: 3 COUNT_DB("table_name") Returns: Number
CURRENTAPP()
The ID of the active application
CURRENTAPP() Returns: UUID
DATE()
Returns a date from a string
DATE("2020-01-01") Returns: 2020-01-01 DATE("2020-01-01 00:00:00") Returns: 2020-01-01
DATEADD()
Adds a number of days
DATEADD("2020-01-01", 1) Returns: 2020-01-02 DATEADD("2020-01-01", -1) Returns: 2019-12-31
DATEDIFF()
Returns the number of days between two dates. DATEDIFF("2020-01-01", "2020-12-31") returns 365
DATEDIFF("2020-01-01", "2020-12-31") Returns: 365 DATEDIFF("2020-12-31", "2020-01-01") Returns: -365
DAY()
Returns the day of the month
DAY("2020-01-01") Returns: 1 DAY("2020-12-31") Returns: 31
DLP_SSN()
Returns a de-identified SSN
DLP_SSN("123-45-6789") Returns: 123-XX-XXXX
ENCODEURL()
Returns a URL encoded string
ENCODEURL("https://www.google.com/search?q=hello world") Returns: https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Dhello+world
ENDSWITH()
Returns a YesNo expression
ENDSWITH("Hello World", "World") Returns: Yes ENDSWITH("Hello World", "World!") Returns: No
EOMONTH()
Returns the last day of the month
EOMONTH("2020-01-01") Returns: 2020-01-31 EOMONTH("2020-12-31") Returns: 2020-12-31
EOWEEK()
Returns the last day of the week
EOWEEK("2020-01-01") Returns: 2020-01-05 EOWEEK("2020-12-31") Returns: 2021-01-02
EXISTS()
Returns a YesNo expression
EXISTS("users", "id", 1) Returns: Yes EXISTS("users", "id", 999) Returns: No
EXTRACTDATES()
Returns a list of dates from a string
EXTRACTDATES("2020-01-01, 2020-01-03") Returns: ['2020-01-01', '2020-01-03']
EXTRACTEMAILS()
Returns a list of emails from a string
EXTRACTEMAILS("admin@example.com hello@example.com") Returns: ['admin.example.com', 'hello@example.com']
EXTRACTNUMBERS()
Returns a list of numbers from a string
EXTRACTNUMBERS("1 2 3") Returns: [1, 2, 3]
EXTRACTPHONES()
Returns a list of phone numbers from a string
EXTRACTPHONES("123-456-7890") Returns: ['123-456-7890']
EXTRACTURLS()
Returns a list of URLs from a string
EXTRACTURLS("https://www.google.com") Returns: ['https://www.google.com'] EXTRACTURLS("https://www.google.com https://www.example.com") Returns: ['https://www.google.com', 'https://www.example.com']
FIND()
Returns the position of a substring. Returns -1 if not found.
FIND("needle", "needle in haystack") Returns: 0 FIND("rock", "in haystack") Returns: -1
FLOAT()
Converts a value to float
FLOAT("3.14") Returns: 3.14 FLOAT(3) Returns: 3.0
FLOOR()
Returns the largest integer less than or equal to a number
FLOOR(1.1) Returns: 1 FLOOR(1.9) Returns: 1
FORMAT_DATETIME()
FORMAT_DATETIME(value, format,default_timezone[optional],ignore_timezone[optional]) Returns Datetime based on the input input
FORMAT_DATETIME(Sat, 15 Jun 2024 00:00:00 GMT,"%Y-%m-%d %H:%M:%S") Returns: 2024-05-20 05:07:51 FORMAT_DATETIME(2024-06-13 12:28:47,"%Y-%m-%d") Returns: 2024-06-15 FORMAT_DATETIME(2024-06-13 12:28:47,"%d-%m-%Y %H:%M:%S") Returns: 20-05-2024 05:07:51
FORMAT_TIME(Value,Military Time, Ignore Seconds, Default timezone('optional)) Returns Time based on the input
FORMAT_TIME('05:44:18',True,True,'America/Denver') Returns: 05:44 FORMAT_TIME("05:44:18 AM",False,True,"Pacific/Saipan")", "returns": "03:44 PM"} Returns: 1. AppSheet 2. Bubble
GENERATE_CHILD_RECORDS()
GENERATE_CHILD_RECORDS(table, record ID, prompt, number of records, enhance prompt) Generates child records based on the input prompt and table. The number of records and optimise prompt is optional.
GENERATE_CHILD_RECORDS("superheros", "72570e47-2dc6-477d-97e7-c7b410ddc487" ,"Add details for 3 superheroes from Marvel", 3, True) Returns: List of record IDs
GENERATE_IMAGE()
Returns a generated Image based on the input prompt
GENERATE_IMAGE("Cute Dog playing football ","512x512",1) Returns: Image
GENERATE_RECORDS()
GENERATE_RECORDS(table, prompt, number of records, enhance prompt) Generates records based on the input prompt and table. The number of records and optimise prompt is optional.
GENERATE_RECORDS("superheros", "Add details for 3 superheroes from Marvel", 3, True) Returns: List of record IDs
GENERATE_SIGNED_URL()
GENERATE_SIGNED_URL(url, [expiration=3600]) Returns a signed URL from GCS.
GENERATE_SIGNED_URL("bucket-name/example.png") Returns: signed URL
GENERATE_TEXT()
GENERATE_TEXT(prompt, context, datasource) Returns a generated text based on the input prompt. Pass a datastore path to be used for grounding.
GENERATE_TEXT("Give me a name for a blog website") Returns: Blogger's Home GENERATE_TEXT("Give two names for a tech product, list them in numbers") Returns: 1. AppSheet 2. Bubble
GENERATE_TEXT_WITH_IMAGE()
Returns a generated text with an image prompt and text prompt. Pass a datastore path to be used for grounding.
GENERATE_TEXT_WITH_IMAGE("image.jpg","Describe the image") Returns: Text
GET()
Returns a value from a dictionary or a list
GET([1,7,8],0) Returns: 1
HAS_PERMISSION()
Returns a YesNo expression
HAS_PERMISSION("send_mail") Returns: Yes HAS_PERMISSION("cases.create") Returns: No HAS_PERMISSION("cases.case_number.read") Returns: No
Returns one value if a condition is true, and another value if it is false
IF(True, "Yes", "No") Returns: Yes IF(False, "Yes", "No") Returns: No
IFS()
Returns one value if a condition is true, and another value if it is false for multiple conditions
IFS(True, "Yes", False, "No") Returns: Yes IFS(FALSE, "Yes", TRUE, "No") Returns: No
IMAGE()
IMAGE(url). Returns a signed URL from GCS.
IMAGE("bucket-name/example.png") Returns: signed URL
IN()
Returns a YesNo expression
IN("a", ["a", "b", "c"]) Returns: Yes IN("d", ["a", "b", "c"]) Returns: No
INDEX()
Returns the value at a specific position in a list. Indexes start at 1.
INDEX(["a", "b", "c"], 1) Returns: a INDEX(["a", "b", "c"], 2) Returns: b INDEX(["a", "b", "c"], 3) Returns: c INDEX(["a", "b", "c"], 4) Returns:
INT()
Converts a value to an integer
INT("3") Returns: 3 INT(2.718) Returns: 2
ISBLANK()
Returns a YesNo expression
ISBLANK("") Returns: Yes ISBLANK("a") Returns: No
ISDATE()
Returns a YesNo expression
ISDATE("2020-01-01") Returns: Yes ISDATE("a") Returns: No
ISNOTBLANK()
Returns a YesNo expression
ISNOTBLANK("") Returns: No ISNOTBLANK("a") Returns: Yes
ISNULL()
Returns a YesNo expression, if the value is null or None
ISNULL(1) Returns: No ISNULL(0) Returns: No ISNULL(None) Returns: Yes
ISNUMBER()
Returns a YesNo expression
ISNUMBER(1) Returns: Yes ISNUMBER("a") Returns: No
KG_SEARCH()
KG_SEARCH(query, [limit=10]). Returns a list of entities from Google's Knowledge Graph.
KG_SEARCH("Barack Obama") Returns: [{"name": "Barack Obama", "type": "Person", "description": "44th U.S. President", "url": "https://en.wikipedia.org/wiki/Barack_Obama"}]
LATLNG_TO_ADDRESS()
LATLNG_TO_ADDRESS(latitude, longitude). Returns an address from a latitude and longitude.
LATLNG_TO_ADDRESS(40.714224, -73.961452) Returns: 277 Bedford Ave, Brooklyn, NY 11211, USA
LEFT()
Returns the leftmost characters in a text string
LEFT("abc", 1) Returns: a LEFT("abc", 2) Returns: ab LEFT("abc", 3) Returns: abc LEFT("abc", 4) Returns: abc
Returns a list of values
LIST("a", "b", "c") Returns: ['a', 'b', 'c'] LIST(1, 2, 3) Returns: [1, 2, 3]
LOOKUP()
LOOKUP(value, object, field, return-column). Returns a single value from a table if found.
LOOKUP("admin@example.com", "users", "email", "name") Returns: List
LOWER()
Lowercase a string
LOWER("ABC") Returns: abc LOWER("aBc") Returns: abc
MARKDOWN_TO_HTML()
Converts Markdown to HTML
MARKDOWN_TO_HTML("# Hello") Returns:
Hello
MARKDOWN_TO_HTML("## Hello") Returns:
Hello
MAX()
Returns the largest value in a list of numbers
MAX([1, 2, 3]) Returns: 3 MAX([3, 2, 1]) Returns: 3 MAX([3.14, 2.71]) Returns: 3.14
MAXROW()
Returns the largest row number in a table
MAXROW("table", "field") Returns: 3
MID(arg, start, length)
Returns a specific number of characters from a text string starting at the position you specify.
MID("abc", 1, 1) Returns: a MID("abc", 1, 2) Returns: ab MID("abc", 1, 3) Returns: abc MID("abc", 1, 4) Returns: abc
MIN()
Returns the smallest value in a list of numbers
MIN([1, 2, 3]) Returns: 1 MIN([3, 2, 1]) Returns: 1 MIN([3.14, 2.71]) Returns: 2.71
MINROW()
Returns the smallest row number in a table
MINROW("table", "field") Returns: 1
MINUTE()
Returns the minute
MINUTE("2020-01-01 12:34:56") Returns: 34
MONTH()
Returns the month
MONTH("2020-01-01 12:34:56") Returns: 1
NLP_SENTIMENT()
NLP_SENTIMENT(text). Returns a sentiment score from -1 to 1.
NLP_SENTIMENT("I love this product") Returns: 0.9 NLP_SENTIMENT("I hate this product") Returns: -0.9
NOT()
Returns a YesNo expression
NOT(True) Returns: No NOT(No) Returns: Yes
NOW(timezone='UTC')
The datetime in %Y-%m-%d %H:%M:%S format. The timezone is optional with a default of UTC. Complete list of timezones can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
NOW() Returns: 2020-12-31 12:34:56 NOW("America/Denver") Returns: 2020-12-31 07:34:56
OR()
Returns a YesNo expression
OR(True, False) Returns: Yes OR(Yes, No) Returns: Yes OR(No, No) Returns: No
POWER()
Returns the result of a number raised to a power
POWER(2, 3) Returns: 8 POWER(3, 2) Returns: 9 POWER(3.14, 2) Returns: 9.8596
PREDICT()
PREDICT(model, input). Returns a prediction from a model.
PREDICT("my-model", {"sepal_length": 5.1, "sepal_width": 3.5, "petal_length": 1.4, "petal_width": 0.2}) Returns: setosa
RANDBETWEEN()
Returns a random number between the two numbers
RANDBETWEEN(1, 10) Returns: 5
RE_FIND()
Returns the first match of a regular expression
RE_FIND("([0-9]+)", "abc123def456") Returns: 123 RE_FIND("([a-z]+)", "abc123def456") Returns: abc
RE_FINDALL()
Returns a list of all matches of a regular expression
RE_FINDALL("([0-9]+)", "abc123def456") Returns: ['123', '456'] RE_FINDALL("([a-z]+)", "abc123def456") Returns: ['abc', 'def']
RE_MATCH()
Returns the first match of a regular expression at the beginning of a string
RE_MATCH("([0-9]+)", "123def456") Returns: 123 RE_MATCH("([a-z]+)", "abc123def456") Returns: abc
RE_SEARCH()
Returns the first match of a regular expression anywhere in a string
RE_SEARCH("([0-9]+)", "abc123def456") Returns: 123 RE_SEARCH("([a-z]+)", "abc123def456") Returns: abc
RE_SUB()
Returns a string with all matches of a regular expression replaced
RE_SUB("([0-9]+)", "X", "abc123def456") Returns: abcXdefX RE_SUB("([a-z]+)", "X", "abc123def456") Returns: X123X456
REF_LABEL()
Get Ref Label of record
REF_LABEL("permits", "1745c746-aaa5-4ecf-96e7-49392458d42c") Returns: ON-0017
REF_ROWS()
Define related table and column
REF_ROWS("users", "claim_id") Returns: ('users', 'claim_id')
REMOVE_HTML_TAGS()
Removes HTML tags from a string
REMOVE_HTML_TAGS("
Hello
") Returns: Hello REMOVE_HTML_TAGS("
Hello
") Returns: Hello
RIGHT()
Returns the rightmost characters from a string
RIGHT("abc", 1) Returns: c RIGHT("abc", 2) Returns: bc RIGHT("abc", 3) Returns: abc
ROUND()
Returns a number rounded to a specified number of decimal places
ROUND(3.14159, 2) Returns: 3.14 ROUND(3.14159, 3) Returns: 3.142 ROUND(3.14159, 4) Returns: 3.1416
SECOND()
Returns the second
SECOND("2020-01-01 12:34:56") Returns: 56
SELECT()
Returns a list of objects from DB table. Optional second parameter to specify fields. Optional third and foruth parameter to specify filter column and filter value. Optional fifth parameter to specify whether to flatten the list."
filters:- Optional parameter to apply multiple filters. It should be a list of tuples. Each tuple should have 2 elements. First element should be the column name and second element should be the value. For example, filters=[("column1", 10), ("column2", 20)] will return rows where column1 = 10 and column2 = 20.
order_by:- Optional parameter to specify the column name to sort the results. It should be a string. For example, order_by="column1" will sort the results by column1. If you want to sort in descending order, you can add a "-" in front of the column name. For example, order_by="-column1" will sort the results by column1 in descending order.
SELECT("table", "field") Returns: [{...}, {...}, ...] SELECT("table", "field,field2") Returns: [{...}, {...}, ...] SELECT("table", "field", "filter_column", "filter_value") Returns: [{...}, {...}, ...] SELECT("table", "field", "filter_column", "filter_value", True) Returns: [field, field, ...] SELECT("table", "*", filters=[("column1", 10), ("column2", 20)]) Returns: [(record1), (record2), ...] SELECT("table", "*", order_by="column1") Returns:
SENDER_EMAIL()
The email sender
SENDER_EMAIL() Returns: Default Email Sender
SENDER_EMAIL_NAME()
The email sender name
SENDER_EMAIL_NAME() Returns: Default Email Sender Name
SORT()
Returns a list of values sorted in ascending order. Optional second boolean parameter to sort in descending order.
SORT([3, 2, 1]) Returns: [1, 2, 3] SORT([1, 2, 3], True) Returns: [3, 2, 1]
SPEECH_TO_TEXT()
SPEECH_TO_TEXT(object,'en-us'). Returns a text string from a GCS object.
SPEECH_TO_TEXT("example.mp3","en-us") Returns: Hello World
SPLIT()
Returns a list of substrings from a text string, separated by a delimiter
SPLIT("Hello World", " ") Returns: ['Hello', 'World']
SQRT()
Returns the square root of a number
SQRT(4) Returns: 2 SQRT(9) Returns: 3 SQRT(9.0) Returns: 3.0
STARTSWITH()
Returns a YesNo expression
STARTSWITH("Hello World", "Hello") Returns: Yes STARTSWITH("Hello World", "World") Returns: No
STATIC_MAP()
STATIC_MAP(latitude, longitude, zoom, width, height, map_type). Returns a static map image from Google Maps. Maps Documentation. This returns a GCS blob URI. You can use the GENERATE_SIGNED_URL() function to display the image. map_type can be one of the following: roadmap, satellite, terrain, hybrid.
STATIC_MAP(40.714224, -73.961452, 12, 400, 400) Returns: signed URL STATIC_MAP(ADDRESS_TO_LATLNG("1616 Federal Blvd, Denver, CO 80204, USA"), None, 12, 400, 400) Returns: File
STREET_VIEW()
STREET_VIEW(latitude, longitude, heading, pitch, fov, width, height). Returns a street view image from Google Maps. Street View Documentation. This returns a GCS blob URI. You can use the GENERATE_SIGNED_URL() function to display the image.
STREET_VIEW(40.714224, -73.961452, 90, 0, 90, 400, 400) Returns: signed URL
SUBSTITUTE()
Returns a text string with all occurrences of a substring replaced with another substring
SUBSTITUTE("Hello World", "World", "Universe") Returns: Hello Universe
SUM()
Returns the sum of a list of numbers
SUM([1, 2, 3]) Returns: 6 SUM([1.1, 2.2, 3.3]) Returns: 6.6
SUMMARIZE_DOCUMENT(url)
SUMMARIZE_DOCUMENT(url) Returns a summarized text of the input document. Supports PDF files.
SUMMARIZE_DOCUMENT(url = pdf_url) Returns: Summarized text of the pdf
TEXT()
Returns a text string representation of a value
TEXT(123) Returns: 123 TEXT(123.45) Returns: 123.45
TEXT_TO_SPEECH()
TEXT_TO_SPEECH(text). Returns a GCS blob URI from a text string. You can use the GENERATE_SIGNED_URL() function to play the audio.
TEXT_TO_SPEECH("Hello World") Returns: signed URL TEXT_TO_SPEECH("Hello World", "FEMALE") Returns: signed URL TEXT_TO_SPEECH("Hello World", "MALE") Returns: signed URL TEXT_TO_SPEECH("Hello World", "NEUTRAL") Returns: signed URL
TIME()
Returns the time portion of a datetime
TIME("2020-01-01 12:34:56") Returns: 12:34:56 TIME(NOW()) Returns: 12:34:56
TIMENOW(timezone='UTC')
The time in %H:%M:%S format. Similar to TIME(NOW()). The timezone is optional with a default of UTC. Complete list of timezones can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TIMENOW() Returns: 12:34:56 TIMENOW("America/Denver") Returns: 07:34:56
TITLE()
Returns a text string in title case
TITLE("hello world") Returns: Hello World
TODAY(timezone='UTC')
The date in %Y-%m-%d format. The timezone is optional with a default of UTC. Complete list of timezones can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TODAY() Returns: 2020-01-01 TODAY("America/Denver") Returns: 2019-12-31
TOP()
Returns the first n items in a list
TOP([1, 2, 3], 2) Returns: [1, 2] TOP([1, 2, 3], 4) Returns: [1, 2, 3]
TOTALHOURS()
Returns the total number of hours in a time
TOTALHOURS("12:34:56") Returns: 12.582222222222223
TOTALMINUTES()
Returns the total number of minutes in a time
TOTALMINUTES("12:34:56") Returns: 754.9333333333333
TOTALSECONDS()
Returns the total number of seconds in a time
TOTALSECONDS("12:34:56") Returns: 45296.0
TRANSLATE_DOCUMENT()
TRANSLATE_DOCUMENT("URI", "source_language", "target_language"). Returns a translated document from a GCS URI.
TRANSLATE_DOCUMENT("gs://bucket-name/file-name", "en", "es") Returns: GCS URI
TRANSLATE_DOCUMENT_BATCH()
TRANSLATE_DOCUMENT_BATCH("URI", "source_language", "target_language"). Returns a translated document from a GCS URI.
TRANSLATE_DOCUMENT_BATCH("gs://bucket-name/file-name", "en", "es") Returns: GCS URI
TRANSLATE_TEXT()
TRANSLATE_TEXT(text, [source_language='auto', target_language='en']). Returns a translated string. Similar to the GOOGLETRANSLATE() function in Google Sheets.
TRANSLATE_TEXT("Hola Amigo") Returns: Hi friend TRANSLATE_TEXT("Hola Amigo", "es", "en") Returns: Hi friend
TRIM()
Returns a text string with whitespace removed from the start and end
TRIM(" Hello World ") Returns: Hello World TRIM("Hello World") Returns: Hello World
UNIQUE()
Returns a list of unique values from a list
UNIQUE([1, 2, 3, 1, 2, 3]) Returns: [1, 2, 3]
UPPER()
Uppercase a string
UPPER("Hello World") Returns: HELLO WORLD
URL_TO_PDF()
URL_TO_PDF(url). Returns a PDF file from a URL.
URL_TO_PDF("https://example.com") Returns: URI URL_TO_PDF("https://example.com","vendors") Returns: URI
USEREMAIL()
Returns the current user's email
USEREMAIL() Returns: email
USERID()
Returns the current user's ID
USERID() Returns: UUID
USERLOCALE()
The active locale e.g. en, de, es, zh
USERLOCALE() Returns: en, de, es, fr, or zh
USERNAME()
Returns the current user's fullname
USERNAME() Returns: Full Name
USERROLE()
Returns the current user's role ID
USERROLE() Returns: UUID
UTCNOW()
The datetime for UTC timezone in %Y-%m-%d %H:%M:%S format
UTCNOW() Returns: 2020-01-01 12:34:56
WEEKDAY()
Returns the day of the week for a date
WEEKDAY("2020-01-01") Returns: 1
YEAR()
Returns the year
YEAR("2020-01-01") Returns: 2020
APPEND_URL_SLIDE_DOC()
This function updates the URL of a module_item in the database based on its type.
If the type is "Slide", it converts the Google Slides URL to an embeddable format.
If the type is "Document", it appends /preview to the URL for viewing a Google Doc in preview mode.
APPEND_URL_SLIDE_DOC(id) Returns: Any
AUTO_POPULATING_PARTNER_ROLE_ID_AND_CONTACT()
None
Returns:
BUILD_FIELD_DATA()
None
BUILD_FIELD_DATA(q) Returns: Any
CALC_TIMEBASED_DISCHARGE()
None
Returns:
CALCULATE_CURRENT_PROGRESS()
None
CALCULATE_CURRENT_PROGRESS(questions) Returns: Any
CERTIFY_COURSE_COMPLETE()
Returns:
CHECK_ENV_USING_STATUS_API()
'rog-speed','dev.snapapp.me','31b458e0'
Returns:
CHECK_TENANT_DOMAIN_AND_EMAIL()
'bvai-testing','sumanta.debnath@bluevector.ai'
VALIDATES TENANT DOMAIN NAME AND EMAIL UNIQUENESS BY CHECKING EXISTING RECORDS AND RETURNS AN ERROR IF DUPLICATES ARE FOUND, OTHERWISE CONFIRMS AVAILABILITY.
Returns:
CREATING_SHARE_RECORDS_FOR_NEW_PARTNER_USERS()
None
Returns:
DELETE_TENANT_RECORD()
USE THIS DELETE FUNCTION IN SNAPAPP REGISTRATION PAGE
IF A CUSTOMER ENVIRONMENT IS ALREADY PROVISIONED AND CUSTOMER ATTEMPTS TO CREATE A NEW ENVIRONMENT WITH SAME SUBDOMAIN, THEN FIRESTORE WILL PROVIDE A API 404 ERROR BUT THE TENANT AND CUSTOMER PRODUCT WILL ALREADY BE CREATED, SO WHENEVER THE RESPONSE IS API 404 ERROR THEN SHOW THE MODAL IN FRONTEND WHICH SAYS 'SUBDOMAIN ALREADY IN USE!'
AND THEN EXECUTE THIS DELETE FUNCTION.
FUNCTION DOES:
DELETES ALL CUSTOMER PRODUCTS LINKED TO A TENANT AND THEN REMOVES THE TENANT RECORD
Returns:
DEPROVISION_CUSTOMER_ENVIRONMENT()
THIS FUNCTION AUTOMATICALLY DEPROVISIONS A CUSTOMER’S DEPLOYED ENVIRONMENT
GETS TENANT EMAIL USING USEREMAIL().
FINDS TENANT ID
USES THE TENANT ID TO FETCH THE CUSTOMER’S ENVIRONMENT FROM CUSTOMER_ENVIRONMENTS OBJECT
EXTRACTS THE INSTALL_ID OF THAT ENVIRONMENT.
GENERATES AUTH TOKEN
CALLS THE DEPROVISIONING CLOUD FUNCTION API WITH THE INSTALL_ID.
RETURNS SUCCESS IF THE API ACCEPTS THE REQUEST, OTHERWISE LOGS THE ERROR.
Returns:
EMAIL_CAMPAIGN_TESTING_DB_INSERT()
None
Returns:
EXPLORE_COURSES()
It fetches all the entries from a table called COURSES, applies a visibility filter based on user role and email, and returns only the courses visible to the current user in JSON format, with any non-serializable values (like datetime) safely converted to strings.
Returns:
EXPLORE_PATHS()
It fetches all the entries from a table called paths, applies a visibility filter based on user role and email, and returns only the paths visible to the current user in JSON format, with any non-serializable values (like datetime) safely converted to strings.
Returns:
EXPORT_COURSES_FOR_DATA_STORE()
None
Returns:
EXPORT_PATHS_FOR_DATA_STORE()
None
Returns:
EXPORT_PATHS_FOR_DATA_STORE_WITH_CONTENT()
None
Returns:
EXTRACT_NAME_FROM_URL()
this function extracts the name from the url
Returns:
FETCH_COURSES_ORG()
c473dab7-b9f8-4620-bbcd-bcdb2441cfdf
Returns:
FETCH_CUSTOMER_PRODUCTS()
e482ca24-9c30-4cda-949e-2833a175ecae
THIS FUNCTION ACCEPTS A TENANT ID AS INPUT AND RETURNS A JSON RESPONSE
THIS FUNCTION WILL
FETCH ALL CUSTOMER PRODUCTS ASSOCIATED WITH THE GIVEN TENANT
IDENTIFY THE LISTINGS LINKED TO EACH CUSTOMER PRODUCT USING LISTING_ID
RETRIEVE LISTING DETAILS INCLUDING PRIMARY IMAGE, TITLE, SUBTITLE, AND ACTIVE STATUS
COMPILE AND RETURN ALL ASSOCIATED LISTING INFORMATION IN A JSON DUMP FORMAT
THIS FUNCTION SUPPORTS MULTIPLE CUSTOMER PRODUCTS AND MULTIPLE LISTINGS PER TENANT
THIS FUNCTION SAFELY HANDLES CASES WHERE NO CUSTOMER PRODUCTS OR LISTINGS ARE FOUND
Returns:
FETCH_CUSTOMERSTORIES()
None
Returns:
FETCH_FAQS()
'7006dbe9-82ad-45b6-98fb-73800c7d0595'
Returns:
FETCH_KBS()
None
Returns:
FETCH_LISTINGS()
This function fetches active listings, generates secure signed URLs for images, and returns them as compact JSON while handling serialization of dates and complex objects automatically. It's designed for robust API responses with proper URL authentication.
Returns:
FETCH_LISTINGS_BASED_ON_ORG()
c473dab7-b9f8-4620-bbcd-bcdb2441cfdf
Returns:
FETCH_LOOKUP_ID()
None
Returns:
FETCH_NUMBER_ATTEMPTS()
SKILLS ( QUIZ )
'3312877c-3882-41bb-974a-81b17ed0b5af'
Returns:
FETCH_OAUTH_TOKEN()
None
Returns:
FETCH_ORGANIZATION_DETAILS()
'listings','4dcab899-de1f-4a93-bc99-bb4f41b22e8a'
Returns:
FETCH_PARTNERS()
None
Returns:
FETCH_PATHS_COURSES_BASED_ON_ORG()
c473dab7-b9f8-4620-bbcd-bcdb2441cfdf
Returns:
FETCH_PRODUCTS()
None
Returns:
FETCH_QUIZZES_DATA()
Fetching Quizzes Data in Final Assessmnet page | Consolidated every function to one function
GENERATE_KEYWORDS(user_id,website,start_date,end_date) Returns: Any
GENERATE_LISTING_REVIEWS()
Create a JSON schema for representing customer reviews, including fields for reviewer name, review title, rating (on a scale of 1 to 5), review text, and date of submission FOR A PARTICULAR LISTING.
'4dcab899-de1f-4a93-bc99-bb4f41b22e8a'
Returns:
GENERATE_MODULE_ITEMS_IN_SKILLS()
None
Returns:
GENERATE_MODULES_IN_SKILLS()
None
Returns:
GENERATE_ONE_PAGER()
{'id': '0f8d6642-d1b3-4b0b-b6a4-929fb1268d91', 'title': 'Conversational AI Solution', 'subtitle': 'The AI-Powered Citizen Experience'}
this is the course details of a function that Runs a query to join courses, modules, module items and user module items to to show course/module information applicable to the current user. '4761e7e4-c178-4892-bc22-ee7b99be8699'
GET_COURSE_DETAIL(course_id) Returns: List
GET_COURSE_DETAILS_101()
Returns:
GET_COURSE_HTML()
GET_COURSE_HTML(course_id,user_id) Returns: None
GET_CUST_ENV_DOMAIN_NAME()
None
Returns:
GET_CUSTOMER_ENVIRONMENTS()
15c86e38-10af-42c7-b9fe-a017250d1e13
Returns:
GET_KEYWORD_RANKING()
Returns:
GET_LAB_ENVIRONMENT_URL()
'[[course_uid]]','lab_environment'
Returns:
GET_MODULE_ITEM_TYPE_COUNT()
THIS FUNCTION GIVES THE MODULE ITEM TYPES COUNT FOR A SPECIFIC MODULE 'ffda5c6b-5d59-4a26-b95e-910491ea1041'
Returns:
GET_NAVIGATION_STRUCTURE()
2ed8ab89-0c71-4cec-a739-bbb96d6316aa
Returns:
GET_OAUTH_TOKEN()
GET_OUTH_TOKEN('google_apis',USERID()) Returns: The Decrypted Token
GET_OBJECT_RECORD_COUNT()
None
Returns:
GET_ORGANIZATION_ID()
None
Returns:
GET_OVERALL_QUIZ_STATUS()
None
Returns:
GET_PAGES()
Returns:
GET_PAGES_PUBLIC()
None
Returns:
GET_PATH_COURSES_LIST()
'bc7ef97f-c0b2-48eb-984c-b0af9f65b5cf'
Returns:
GET_PERCENTAGE()
None
Returns:
GET_PERFORMANCE_SCORE()
this function takes the url and returns the performance sore of the website using pagespeed insight API
Returns:
GET_PLAN_DETAILS_USAGE()
15c86e38-10af-42c7-b9fe-a017250d1e13
Returns:
GET_PRICE_PLANS()
Use this function to get a json dump of all active price plans
Returns:
GET_PROMO_CODES()
None
Returns:
GET_QUESTIONS()
None
GET_QUESTIONS(quiz_id) Returns: Any
GET_QUIZ_HTML()
Returns:
GET_QUIZ_VALUES()
Fetches a specific field value from a quiz template based on a given quiz ID : 'fa3634d3-43da-4631-a0ea-018d6dba0eb4','estimated_duration'
GET_QUIZ_VALUES(quiz_id,field) Returns: Any
GET_QUIZZES_QUESTIONS_PAGE()
Returns:
GET_RANDOM_KEYWORD()
Returns:
GET_RECENT_QUIZ()
None
Returns:
GET_RETAKE_VALUE()
'faa124d5-1e97-4f5f-a277-0e6e89145c5b'
Returns:
GET_SKILL_COURSES()
None
Returns:
GET_TENANT_ACCOUNT_ID()
None
Returns:
GET_URL_SUBTYPE()
None
Returns:
GET_URL_TYPE()
Returns:
GET_USER_COURSE_ID()
None
Returns:
GET_USER_COURSE_LIST()
This function takes courseId as input parameter and returns its associated course.
Returns:
GET_USER_MODULE_ITEM_LIST()
None
Returns:
GET_USER_MODULE_ITEMS()
Returns:
GET_USER_MODULE_LIST()
This function takes the module id and return the user module id
Returns:
GET_VENDOR_ID()
None
Returns:
GOOGLE_ADDRESS_AUTOCOMPLETION()
RETURNS GOOGLE PLACES AUTOCOMPLETE ADDRESS SUGGESTIONS IN JSON FORMAT FOR A GIVEN address USING THE MAPS API
RETURNS ONLY 5 ADDRESSES
Returns:
GOOGLE_SUPPORTED_LANGUAGES()
None
Returns:
HEALTH_CHECK_ENV()
'new-testing','dev.snapapp.me','2606fbf3'
CHECKS THE PROVISIONING STATUS OF INSTALL_ID AND CUSTOM SUBDOMAIN URLS BY POLLING THEIR HEALTH ENDPOINTS AND RETURNING HTTP STATUS CODES
Returns:
INSERT_JSON()
None
Returns:
INSERT_NEW_USERS_IN_QUEUE()
None
Returns:
INSERT_USER_MODULE_ITEMS()
This function creates user module items for each of the quizzes for the user when the user presses the "Start" courses button 29b02be2-ae86-467d-be96-c840805ca11b
WHEN CLICKING THE START COURSE BUTTON, IT CREATED THE USER_PATH AND USER_COUSE IF IT ALREADY NOT EXISTS
Returns:
INSERT_USER_TRACKING_PH2()
'd95ab2d3-485f-409f-b93d-dec464bfc85a'
Ensures that all paths for a given course are assigned to the current user in user_paths with progress initialized to 0, and guarantees the course itself is recorded in user_courses for the user if not already present.
Returns:
JSON_LD()
None
Returns:
JSON_LD_G()
None
Returns:
JSON_LD_H()
None
Returns:
JSON_LD_INSERT()
None
Returns:
JSON_LD_NEW()
None
Returns:
JSON_LD_UPDATED()
None
Returns:
KEYWORD_DETAILS()
This function returns the details for each keywords in the url
KEYWORD_DETAILS(user_id, url, start_date, end_date) Returns: Any
KEYWORD_RANKINGS()
This function generates keyword ranking
KEYWORD_RANKINGS(user_id, url, start_date, end_date) Returns: Any
LISTINGS_EDIT_FILTER()
'4dcab899-de1f-4a93-bc99-bb4f41b22e8a'
Returns:
LOWEST_PRODUCT_PRICE()
this function fetch the TYPE, USAGE_PRICE, FLAT_PRICE of the product so that it can be displayed
THIS FUNCTION GETS TRIGGERED WHEN CUSTOMER CLICKS ON "Checkout" BUTTON
THE FUNCTION PERFORMS THE FOLLOWING STEPS:
RECEIVES BILLING INTERVAL, QUANTITY, OPTIONAL PROMO CODE, PRICE PLAN ID, AND TENANT ID AS INPUT
FETCHES PRICE PLAN DETAILS INCLUDING PRICE, NAME, AND ANY ANNUAL DISCOUNT
FETCHES THE TENANT EMAIL TO ASSOCIATE THE STRIPE CHECKOUT SESSION WITH THE CUSTOMER
CALCULATES THE BASE UNIT AMOUNT BASED ON THE SELECTED BILLING INTERVAL (MONTHLY OR YEARLY)
APPLIES ANY ANNUAL DISCOUNT CONFIGURED IN THE PRICE PLAN
IF A PROMO CODE IS PROVIDED:
VALIDATES THE PROMO CODE AGAINST ACTIVE PROMOTIONS
APPLIES EITHER A PERCENTAGE-BASED OR FLAT AMOUNT DISCOUNT TO THE FINAL AMOUNT
ENSURES STRIPE MINIMUM CHARGE REQUIREMENTS ARE MET
CREATES A STRIPE CHECKOUT SESSION FOR A RECURRING SUBSCRIPTION WITH THE CALCULATED AMOUNT
CHECKS IF A CUSTOMER_PRODUCTS RECORD ALREADY EXISTS FOR THE TENANT
IF IT EXISTS, UPDATES THE BILLING CYCLE (MONTHLY OR YEARLY)
IF IT DOES NOT EXIST, CREATES A NEW CUSTOMER_PRODUCTS RECORD WITH THE BILLING CYCLE
IF A VALID PROMO CODE WAS USED, UPDATES THE TENANT RECORD WITH THE APPLIED PROMOTION
RETURNS THE STRIPE CHECKOUT SESSION URL FOR REDIRECTION
THIS FUNCTION ENSURES THAT PRICING, PROMOTIONS, BILLING CYCLE, AND TENANT STATE ARE ALL SYNCHRONIZED BEFORE REDIRECTING THE USER TO STRIPE CHECKOUT.
Returns:
STRIPE_UPDATE_ASSOCIATED_OBJECTS()
THIS FUNCTION IS TRIGGERED AFTER A STRIPE PAYMENT IS COMPLETED.
THE FUNCTION PERFORMS THE FOLLOWING ACTIONS:
FETCHES THE PAYMENT RECORD USING THE PROVIDED PAYMENT ID
EXTRACTS THE CUSTOMER ID, PAYMENT STATUS, AND ACTUAL AMOUNT FROM THE PAYMENT RECORD
UPDATES ALL CUSTOMER_PRODUCTS ASSOCIATED WITH THE CUSTOMER TO:
SET THE PROFESSIONAL PRICE PLAN
REMOVE ANY FREE TRIAL FLAGS AND TRIAL END DATES
SET THE PRODUCT TYPE TO PLATFORM
SET THE PLATFORM TO SNAPAPP APPLICATION BUILDER
MARK AS ACTIVE
INSERTS A NEW RECORD INTO THE PAYMENT_HISTORIES OBJECT TO LOG:
THE PAYMENT STATUS
THE CUSTOMER ID
THE PAID AMOUNT
RETURNS A SUCCESS RESPONSE WITH THE PAYMENT ID, CUSTOMER ID, AND NUMBER OF UPDATED CUSTOMER_PRODUCT RECORDS
THIS FUNCTION ENSURES THAT A SUCCESSFUL PAYMENT IMMEDIATELY ACTIVATES THE PLATFORM PRODUCT FOR THE CUSTOMER AND MAINTAINS A COMPLETE PAYMENT HISTORY FOR AUDITING AND BILLING PURPOSES.
Returns:
test_genai_summary()
None
Returns:
TOOL_AGENTIC_TEXTV2()
'Platform engineering and devops'Â --input
Returns:
TOOL_FETCH_CANVAS_VERSIONS()
'ba2f575c-f75d-41c2-a345-d9fdd5482996'
Returns:
TOOL_FETCH_CHATS()
'a0636e9d-6cfc-4a23-9e96-5dbedc265929'
Returns:
TOOL_FETCH_CONVOS()
This function fetches all the conversations of the user with agent on the homepage sidebar.
Returns:
TOOL_GEN_COURSE()
  """'build 1 module course on css' , """ """
//userip :'Building dialogflow agents'Â ,""" """Â
Generates concise course information in JSON format for SnapApp.
  Expected JSON structure:
  [
   {
    "name": str,
    "description": str,
    "level": str, # e.g. Introductory, Intermediate, Advanced
    "persona_course": set or list of enums,
    "progress": 0.0
   }
  ]
  """
Returns:
TOOL_GEN_PUBLISH_COURSE()
Here course_data is a json
{'name': 'Building Dialogflow Agents', 'description': 'This course provides a comprehensive introduction to building conversational AI agents using Dialogflow. You will learn how to design, develop, and deploy intelligent agents that can understand and respond to user input. The course covers key concepts such as intents, entities, contexts, and fulfillment. By the end of this course, you will be able to create your own Dialogflow agents for various applications.', 'level': 'Beginner', 'persona_course': ['Software Engineer', 'AI Developer', 'Chatbot Developer'], 'progress': 0.0, 'modules': [{'sequence': 1, 'name': '1. Dialogflow Fundamentals and Agent Creation', 'description': 'This module introduces the core concepts of Dialogflow, including intents, entities, contexts, and fulfillment. Students will learn how to create a basic Dialogflow agent from scratch, define intents to recognize user input, and extract relevant information using entities. The module will also cover how to use contexts to manage conversation flow and how to configure fulfillment to connect the agent to external services. By the end of this module, students will have a solid foundation for building more complex conversational AI agents.', 'items': [{'type': 'document', 'name': 'Introduction to Dialogflow Concepts', 'ai_summary': "This document provides an overview of core Dialogflow concepts such as intents, entities, contexts, and fulfillment, explaining their roles in building conversational AI agents. It serves as a foundational guide for understanding the module's key topics.", 'url': 'https://docs.google.com/document/d/1GBmZ7-Rgacatb02_4Gxk9SMzvjDs7vAuzWQTeCNXxaI/preview'}, {'type': 'lab', 'name': 'Creating Your First Dialogflow Agent', 'ai_summary': 'This lab guides students through the process of creating a basic Dialogflow agent from scratch, defining intents to recognize user input, and extracting relevant information using entities. It includes step-by-step instructions and practical exercises.', 'url': ''}, {'type': 'slides', 'name': 'Managing Conversation Flow with Contexts', 'ai_summary': 'These slides explain how to use contexts in Dialogflow to manage conversation flow and maintain state across multiple turns. They cover the concepts of input and output contexts, and how to use them to create more natural and engaging conversations.', 'url': 'https://docs.google.com/presentation/d/1ijMOYa_IEmg8ZEhBLYjv0rkbg899uCXsF4fSWspeuZo/embed'}, {'type': 'code_example', 'name': 'Fulfillment with Webhooks Example', 'ai_summary': 'This code example demonstrates how to configure fulfillment in Dialogflow to connect the agent to external services using webhooks. It provides a practical illustration of how to integrate the agent with APIs and databases.', 'url': ''}]}]}
Returns:
TOOL_GENERATE_TEXT()
"""" You are Snappy — a friendly AI assistant for a low-code app builder called SnapApp. Context: - current_agent_phase: documents_received - missing_documents: [] - recent_messages: 2025-12-02 08:06:45|User: Develop an app for organizations to request, process, and manage background checks, including secure document upload and status tracking. 2025-12-02 08:06:52|Agent: That sounds like a fantastic and impactful app idea for organizations! To ensure we build exactly what you need, the first step is to get a clear understanding of the project scope. Could you please provide the Statement of Work (SOW) for this background check application? The SOW will help us define the project's objectives, deliverables, timelines, and responsibilities, setting a solid foundation for development with SnapApp. 2025-12-02 08:09:17|User: submit 2025-12-02 08:09:26|Agent: It looks like you're ready to move forward! To proceed with developing your app for background checks, I still need the Statement of Work (SOW). Once you provide the SOW, I can start defining the project's objectives, deliverables, and timelines, which is crucial for building your app effectively with SnapApp. 2025-12-02 10:46:35|User: here 2025-12-02 10:46:45|Agent: Thanks for letting me know you're here! To move forward with developing your background check app, I'm still waiting for the Statement of Work (SOW). Once you provide the SOW, I can help you define the project's objectives, deliverables, and timelines, which is essential for building your app effectively with SnapApp. You can paste the content directly here or upload it as a file. 2025-12-02 11:28:23|User: Take it 2025-12-02 11:28:35|Agent: It sounds like you're ready to provide the Statement of Work (SOW)! That's great. To move forward with developing your background check app, please provide the content of the SOW. You can paste the text directly into our chat, or if it's a file, you can upload it here. Once I have the SOW, I can help you define the project's objectives, deliverables, and timelines, which is essential for building your app effectively with SnapApp. 2025-12-02 12:01:30|User: hi 2025-12-02 12:01:47|Agent: Hello again! It's Snappy. I see you're back! To keep moving forward with building your background check app, I'm still waiting for the Statement of Work (SOW). Once I have that, we can really start defining the project's objectives, deliverables, and timelines, which is crucial for building your app effectively with SnapApp. You can paste the content directly here or upload it as a file. Let me know when you're ready! 2025-12-02 12:07:14|User: here u go 2025-12-02 12:07:32|Agent: Sorry, I couldn't generate a response right now. Please try again. 2025-12-02 12:10:51|Agent: Fantastic! Thank you for providing the Statement of Work (SOW). I've successfully received it. Now that we have the SOW, we can move forward with defining the project's objectives, deliverables, and timelines for your background check application. This is a crucial step to ensure we build exactly what you need with SnapApp. Here are the next steps we'll take: - Draft Project Charter: We'll create a high-level document outlining the project's purpose, scope, objectives, and key stakeholders. - Generate Epics: Based on the charter, we'll break down the project into major functional areas or large user stories. - Generate User Stories: We'll then detail specific features and functionalities from the perspective of the end-user. I'm excited to get started on these! Let 2025-12-02 12:27:25|Agent: Sorry, I couldn't generate a response right now. Please try again. 2025-12-02 12:29:27|Agent: ```json { "ai_response": "Fantastic! It looks like we're all set with the Statement of Work (SOW). I've successfully received 2025-12-02 12:29:43|Agent: Sorry, I couldn't generate a response right now. Please try again. 2025-12-02 12:30:54|Agent: Fantastic! Thank you for providing the Statement of Work (SOW). I've successfully received it. This is a crucial step to ensure we build exactly what you need with SnapApp. Now that we have the SOW, we can move forward with defining the project's objectives, deliverables, and timelines for your background check application. Here are the next steps we'll take: - Draft Project Charter: We'll create a high-level document outlining the project's purpose, scope, objectives, and key stakeholders. - Generate Epics: Based on the charter, we'll break down the project into major functional areas or large user stories. - Generate User Stories: We'll then detail specific features and functionalities from the perspective of the end-user. I'm excited to get started on these! 2025-12-02 12:31:09|Agent: Fantastic! Thank you for providing the Statement of Work (SOW). I've successfully received it, and we're now ready to move forward with building your background check application with SnapApp. Now that we have the SOW, we can define the project's objectives, deliverables, and timelines. This is a crucial step to ensure we build exactly what you need. Here are the next steps we'll take: - Draft Project Charter: We'll create a high-level document outlining the project's purpose, scope, objectives, and key stakeholders. - Generate Epics: Based on the charter, we'll break down the project into major functional areas or large user stories. - Generate User Stories: We'll then detail specific features and functionalities from the perspective of the end-user. I'm excited to 2025-12-02 12:31:44|Agent: Sorry, I couldn't generate a response right now. Please try again. 2025-12-02 12:37:05|Agent: Fantastic! Thanks for that. It looks like we're all set with the Statement of Work (SOW). I've successfully received it, and we're now ready to move forward with building your background check application with SnapApp. Now that we have the SOW, we can define the project's objectives, deliverables, and timelines. This is a crucial step to ensure we build exactly what you need. ### Next Steps: Here are the next steps we'll take: - Draft Project Charter: We'll create a high-level document outlining the project's purpose, scope, objectives, and key stakeholders. - Generate Epics: Based on the charter, we'll break down the project into major functional areas or large user stories. - Generate User Stories: We'll then detail specific features and functionalities from User's latest message: "Here you go" Assistant thinking summary (internal): "The user says "here u go," which strongly suggests they're finally providing the SOW I've been waiting for. This is vital for defining the project's objectives and scope for their SnapApp, as it outlines everything we need to build. I need to carefully parse whatever they send next to extract all the critical details." OUTPUT SPEC (CRITICALLY IMPORTANT): Return exactly one JSON object. The JSON object must have exactly these top-level keys: - ai_response: a string containing the full user-facing reply in RICH MARKDOWN format. * YOU MUST use bold for emphasis (e.g., SOW, Project Charter). * Use `### Headings` if the response is long. * Use bullet lists (`-`) for clarity. - agent_tasks: an array of task objects (may be empty). Task object schema: { "title": "...", "description": "...", "command": "...", "status": "pending" } BEHAVIOR RULES: - If the user's message is a greeting, reply conversationally. Introduce Snappy using bold text. - If "SOW" is in missing_documents AND the user explicitly wants to start/work/build: * Do NOT create tasks. * In ai_response, ask for the SOW explicitly using bold text. * Set agent_tasks=[]. - If current_agent_phase == "documents_ready", include these tasks in order: 1) Draft Project Charter 2) Generate Epics 3) Generate User Stories You MUST NOT stop generating until: 1. All array entries are fully written, 2. All objects contain every required field, 3. A valid closing '}' for the entire JSON is emitted. Never truncate output. Never stop early. If the JSON object grows large, continue generating until complete.""",None
Returns:
TOTAL_QUIZ_SCORE()
None
TOTAL_QUIZ_SCORE(course_id) Returns: Any
UNSUBSCRIBE_EMAIL_UPDATES()
None
Returns:
UPDATE_COURSE_TOTAL_POINTS()
'20026698-7003-417c-bf8c-a9b32c153c30'
Returns:
UPDATE_HTML_PAGES_STRUCTURED_DATA_MARKUP()
None
Returns:
UPDATE_PATH_DURATION()
This script fetches all course durations linked to a learning path, sums them up, and returns the total duration as either hours (if under 40) or weeks (rounded, assuming 1 week = 40 hours).
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: Any
ANY()
Returns a random choice from a list
ANY(["a", "b", "c"]) Returns: a random value - a, b, or c ANY([1, 2, 3]) Returns: a random value - 1, 2, or 3
GET()
Returns a value from a dictionary or a list
GET([1,7,8],0) Returns: 1
IF()
Returns one value if a condition is true, and another value if it is false
IF(True, "Yes", "No") Returns: Yes IF(False, "Yes", "No") Returns: No
IFS()
Returns one value if a condition is true, and another value if it is false for multiple conditions
IFS(True, "Yes", False, "No") Returns: Yes IFS(FALSE, "Yes", TRUE, "No") Returns: No
LOOKUP()
LOOKUP(value, object, field, return-column). Returns a single value from a table if found.
LOOKUP("admin@example.com", "users", "email", "name") Returns: List
APPEND_URL_SLIDE_DOC()
This function updates the URL of a module_item in the database based on its type.
If the type is "Slide", it converts the Google Slides URL to an embeddable format.
If the type is "Document", it appends /preview to the URL for viewing a Google Doc in preview mode.
APPEND_URL_SLIDE_DOC(id) Returns: Any
AUTO_POPULATING_PARTNER_ROLE_ID_AND_CONTACT()
None
Returns:
BUILD_FIELD_DATA()
None
BUILD_FIELD_DATA(q) Returns: Any
CALCULATE_CURRENT_PROGRESS()
None
CALCULATE_CURRENT_PROGRESS(questions) Returns: Any
CERTIFY_COURSE_COMPLETE()
Returns:
CHECK_ENV_USING_STATUS_API()
'rog-speed','dev.snapapp.me','31b458e0'
Returns:
CHECK_TENANT_DOMAIN_AND_EMAIL()
'bvai-testing','sumanta.debnath@bluevector.ai'
VALIDATES TENANT DOMAIN NAME AND EMAIL UNIQUENESS BY CHECKING EXISTING RECORDS AND RETURNS AN ERROR IF DUPLICATES ARE FOUND, OTHERWISE CONFIRMS AVAILABILITY.
Returns:
CREATING_SHARE_RECORDS_FOR_NEW_PARTNER_USERS()
None
Returns:
DELETE_TENANT_RECORD()
USE THIS DELETE FUNCTION IN SNAPAPP REGISTRATION PAGE
IF A CUSTOMER ENVIRONMENT IS ALREADY PROVISIONED AND CUSTOMER ATTEMPTS TO CREATE A NEW ENVIRONMENT WITH SAME SUBDOMAIN, THEN FIRESTORE WILL PROVIDE A API 404 ERROR BUT THE TENANT AND CUSTOMER PRODUCT WILL ALREADY BE CREATED, SO WHENEVER THE RESPONSE IS API 404 ERROR THEN SHOW THE MODAL IN FRONTEND WHICH SAYS 'SUBDOMAIN ALREADY IN USE!'
AND THEN EXECUTE THIS DELETE FUNCTION.
FUNCTION DOES:
DELETES ALL CUSTOMER PRODUCTS LINKED TO A TENANT AND THEN REMOVES THE TENANT RECORD
Returns:
DEPROVISION_CUSTOMER_ENVIRONMENT()
THIS FUNCTION AUTOMATICALLY DEPROVISIONS A CUSTOMER’S DEPLOYED ENVIRONMENT
GETS TENANT EMAIL USING USEREMAIL().
FINDS TENANT ID
USES THE TENANT ID TO FETCH THE CUSTOMER’S ENVIRONMENT FROM CUSTOMER_ENVIRONMENTS OBJECT
EXTRACTS THE INSTALL_ID OF THAT ENVIRONMENT.
GENERATES AUTH TOKEN
CALLS THE DEPROVISIONING CLOUD FUNCTION API WITH THE INSTALL_ID.
RETURNS SUCCESS IF THE API ACCEPTS THE REQUEST, OTHERWISE LOGS THE ERROR.
Returns:
EMAIL_CAMPAIGN_TESTING_DB_INSERT()
None
Returns:
EXPLORE_COURSES()
It fetches all the entries from a table called COURSES, applies a visibility filter based on user role and email, and returns only the courses visible to the current user in JSON format, with any non-serializable values (like datetime) safely converted to strings.
Returns:
EXPLORE_PATHS()
It fetches all the entries from a table called paths, applies a visibility filter based on user role and email, and returns only the paths visible to the current user in JSON format, with any non-serializable values (like datetime) safely converted to strings.
Returns:
EXPORT_COURSES_FOR_DATA_STORE()
None
Returns:
EXPORT_PATHS_FOR_DATA_STORE()
None
Returns:
EXPORT_PATHS_FOR_DATA_STORE_WITH_CONTENT()
None
Returns:
EXTRACT_NAME_FROM_URL()
this function extracts the name from the url
Returns:
FETCH_COURSES_ORG()
c473dab7-b9f8-4620-bbcd-bcdb2441cfdf
Returns:
FETCH_CUSTOMER_PRODUCTS()
e482ca24-9c30-4cda-949e-2833a175ecae
THIS FUNCTION ACCEPTS A TENANT ID AS INPUT AND RETURNS A JSON RESPONSE
THIS FUNCTION WILL
FETCH ALL CUSTOMER PRODUCTS ASSOCIATED WITH THE GIVEN TENANT
IDENTIFY THE LISTINGS LINKED TO EACH CUSTOMER PRODUCT USING LISTING_ID
RETRIEVE LISTING DETAILS INCLUDING PRIMARY IMAGE, TITLE, SUBTITLE, AND ACTIVE STATUS
COMPILE AND RETURN ALL ASSOCIATED LISTING INFORMATION IN A JSON DUMP FORMAT
THIS FUNCTION SUPPORTS MULTIPLE CUSTOMER PRODUCTS AND MULTIPLE LISTINGS PER TENANT
THIS FUNCTION SAFELY HANDLES CASES WHERE NO CUSTOMER PRODUCTS OR LISTINGS ARE FOUND
Returns:
FETCH_CUSTOMERSTORIES()
None
Returns:
FETCH_FAQS()
'7006dbe9-82ad-45b6-98fb-73800c7d0595'
Returns:
FETCH_KBS()
None
Returns:
FETCH_LISTINGS()
This function fetches active listings, generates secure signed URLs for images, and returns them as compact JSON while handling serialization of dates and complex objects automatically. It's designed for robust API responses with proper URL authentication.
Returns:
FETCH_LISTINGS_BASED_ON_ORG()
c473dab7-b9f8-4620-bbcd-bcdb2441cfdf
Returns:
FETCH_LOOKUP_ID()
None
Returns:
FETCH_NUMBER_ATTEMPTS()
SKILLS ( QUIZ )
'3312877c-3882-41bb-974a-81b17ed0b5af'
Returns:
FETCH_OAUTH_TOKEN()
None
Returns:
FETCH_ORGANIZATION_DETAILS()
'listings','4dcab899-de1f-4a93-bc99-bb4f41b22e8a'
Returns:
FETCH_PARTNERS()
None
Returns:
FETCH_PATHS_COURSES_BASED_ON_ORG()
c473dab7-b9f8-4620-bbcd-bcdb2441cfdf
Returns:
FETCH_PRODUCTS()
None
Returns:
FETCH_QUIZZES_DATA()
Fetching Quizzes Data in Final Assessmnet page | Consolidated every function to one function
GENERATE_KEYWORDS(user_id,website,start_date,end_date) Returns: Any
GENERATE_LISTING_REVIEWS()
Create a JSON schema for representing customer reviews, including fields for reviewer name, review title, rating (on a scale of 1 to 5), review text, and date of submission FOR A PARTICULAR LISTING.
'4dcab899-de1f-4a93-bc99-bb4f41b22e8a'
Returns:
GENERATE_MODULE_ITEMS_IN_SKILLS()
None
Returns:
GENERATE_MODULES_IN_SKILLS()
None
Returns:
GENERATE_ONE_PAGER()
{'id': '0f8d6642-d1b3-4b0b-b6a4-929fb1268d91', 'title': 'Conversational AI Solution', 'subtitle': 'The AI-Powered Citizen Experience'}
THIS FUNCTION GIVES THE MODULE ITEM TYPES COUNT FOR A SPECIFIC MODULE 'ffda5c6b-5d59-4a26-b95e-910491ea1041'
Returns:
GET_NAVIGATION_STRUCTURE()
2ed8ab89-0c71-4cec-a739-bbb96d6316aa
Returns:
GET_OBJECT_RECORD_COUNT()
None
Returns:
GET_ORGANIZATION_ID()
None
Returns:
GET_OVERALL_QUIZ_STATUS()
None
Returns:
GET_PAGES()
Returns:
GET_PAGES_PUBLIC()
None
Returns:
GET_PATH_COURSES_LIST()
'bc7ef97f-c0b2-48eb-984c-b0af9f65b5cf'
Returns:
GET_PERCENTAGE()
None
Returns:
GET_PERFORMANCE_SCORE()
this function takes the url and returns the performance sore of the website using pagespeed insight API
Returns:
GET_PLAN_DETAILS_USAGE()
15c86e38-10af-42c7-b9fe-a017250d1e13
Returns:
GET_PRICE_PLANS()
Use this function to get a json dump of all active price plans
Returns:
GET_PROMO_CODES()
None
Returns:
GET_QUESTIONS()
None
GET_QUESTIONS(quiz_id) Returns: Any
GET_QUIZ_HTML()
Returns:
GET_QUIZ_VALUES()
Fetches a specific field value from a quiz template based on a given quiz ID : 'fa3634d3-43da-4631-a0ea-018d6dba0eb4','estimated_duration'
GET_QUIZ_VALUES(quiz_id,field) Returns: Any
GET_QUIZZES_QUESTIONS_PAGE()
Returns:
GET_RANDOM_KEYWORD()
Returns:
GET_RECENT_QUIZ()
None
Returns:
GET_RETAKE_VALUE()
'faa124d5-1e97-4f5f-a277-0e6e89145c5b'
Returns:
GET_SKILL_COURSES()
None
Returns:
GET_TENANT_ACCOUNT_ID()
None
Returns:
GET_URL_SUBTYPE()
None
Returns:
GET_URL_TYPE()
Returns:
GET_USER_COURSE_ID()
None
Returns:
GET_USER_COURSE_LIST()
This function takes courseId as input parameter and returns its associated course.
Returns:
GET_USER_MODULE_ITEMS()
Returns:
GET_VENDOR_ID()
None
Returns:
GOOGLE_ADDRESS_AUTOCOMPLETION()
RETURNS GOOGLE PLACES AUTOCOMPLETE ADDRESS SUGGESTIONS IN JSON FORMAT FOR A GIVEN address USING THE MAPS API
RETURNS ONLY 5 ADDRESSES
Returns:
GOOGLE_SUPPORTED_LANGUAGES()
None
Returns:
HEALTH_CHECK_ENV()
'new-testing','dev.snapapp.me','2606fbf3'
CHECKS THE PROVISIONING STATUS OF INSTALL_ID AND CUSTOM SUBDOMAIN URLS BY POLLING THEIR HEALTH ENDPOINTS AND RETURNING HTTP STATUS CODES
Returns:
INSERT_JSON()
None
Returns:
INSERT_NEW_USERS_IN_QUEUE()
None
Returns:
INSERT_USER_MODULE_ITEMS()
This function creates user module items for each of the quizzes for the user when the user presses the "Start" courses button 29b02be2-ae86-467d-be96-c840805ca11b
WHEN CLICKING THE START COURSE BUTTON, IT CREATED THE USER_PATH AND USER_COUSE IF IT ALREADY NOT EXISTS
Returns:
INSERT_USER_TRACKING_PH2()
'd95ab2d3-485f-409f-b93d-dec464bfc85a'
Ensures that all paths for a given course are assigned to the current user in user_paths with progress initialized to 0, and guarantees the course itself is recorded in user_courses for the user if not already present.
Returns:
JSON_LD()
None
Returns:
JSON_LD_G()
None
Returns:
JSON_LD_H()
None
Returns:
JSON_LD_INSERT()
None
Returns:
JSON_LD_NEW()
None
Returns:
JSON_LD_UPDATED()
None
Returns:
KEYWORD_DETAILS()
This function returns the details for each keywords in the url
KEYWORD_DETAILS(user_id, url, start_date, end_date) Returns: Any
KEYWORD_RANKINGS()
This function generates keyword ranking
KEYWORD_RANKINGS(user_id, url, start_date, end_date) Returns: Any
LISTINGS_EDIT_FILTER()
'4dcab899-de1f-4a93-bc99-bb4f41b22e8a'
Returns:
LOWEST_PRODUCT_PRICE()
this function fetch the TYPE, USAGE_PRICE, FLAT_PRICE of the product so that it can be displayed
THIS FUNCTION GETS TRIGGERED WHEN CUSTOMER CLICKS ON "Checkout" BUTTON
THE FUNCTION PERFORMS THE FOLLOWING STEPS:
RECEIVES BILLING INTERVAL, QUANTITY, OPTIONAL PROMO CODE, PRICE PLAN ID, AND TENANT ID AS INPUT
FETCHES PRICE PLAN DETAILS INCLUDING PRICE, NAME, AND ANY ANNUAL DISCOUNT
FETCHES THE TENANT EMAIL TO ASSOCIATE THE STRIPE CHECKOUT SESSION WITH THE CUSTOMER
CALCULATES THE BASE UNIT AMOUNT BASED ON THE SELECTED BILLING INTERVAL (MONTHLY OR YEARLY)
APPLIES ANY ANNUAL DISCOUNT CONFIGURED IN THE PRICE PLAN
IF A PROMO CODE IS PROVIDED:
VALIDATES THE PROMO CODE AGAINST ACTIVE PROMOTIONS
APPLIES EITHER A PERCENTAGE-BASED OR FLAT AMOUNT DISCOUNT TO THE FINAL AMOUNT
ENSURES STRIPE MINIMUM CHARGE REQUIREMENTS ARE MET
CREATES A STRIPE CHECKOUT SESSION FOR A RECURRING SUBSCRIPTION WITH THE CALCULATED AMOUNT
CHECKS IF A CUSTOMER_PRODUCTS RECORD ALREADY EXISTS FOR THE TENANT
IF IT EXISTS, UPDATES THE BILLING CYCLE (MONTHLY OR YEARLY)
IF IT DOES NOT EXIST, CREATES A NEW CUSTOMER_PRODUCTS RECORD WITH THE BILLING CYCLE
IF A VALID PROMO CODE WAS USED, UPDATES THE TENANT RECORD WITH THE APPLIED PROMOTION
RETURNS THE STRIPE CHECKOUT SESSION URL FOR REDIRECTION
THIS FUNCTION ENSURES THAT PRICING, PROMOTIONS, BILLING CYCLE, AND TENANT STATE ARE ALL SYNCHRONIZED BEFORE REDIRECTING THE USER TO STRIPE CHECKOUT.
Returns:
STRIPE_UPDATE_ASSOCIATED_OBJECTS()
THIS FUNCTION IS TRIGGERED AFTER A STRIPE PAYMENT IS COMPLETED.
THE FUNCTION PERFORMS THE FOLLOWING ACTIONS:
FETCHES THE PAYMENT RECORD USING THE PROVIDED PAYMENT ID
EXTRACTS THE CUSTOMER ID, PAYMENT STATUS, AND ACTUAL AMOUNT FROM THE PAYMENT RECORD
UPDATES ALL CUSTOMER_PRODUCTS ASSOCIATED WITH THE CUSTOMER TO:
SET THE PROFESSIONAL PRICE PLAN
REMOVE ANY FREE TRIAL FLAGS AND TRIAL END DATES
SET THE PRODUCT TYPE TO PLATFORM
SET THE PLATFORM TO SNAPAPP APPLICATION BUILDER
MARK AS ACTIVE
INSERTS A NEW RECORD INTO THE PAYMENT_HISTORIES OBJECT TO LOG:
THE PAYMENT STATUS
THE CUSTOMER ID
THE PAID AMOUNT
RETURNS A SUCCESS RESPONSE WITH THE PAYMENT ID, CUSTOMER ID, AND NUMBER OF UPDATED CUSTOMER_PRODUCT RECORDS
THIS FUNCTION ENSURES THAT A SUCCESSFUL PAYMENT IMMEDIATELY ACTIVATES THE PLATFORM PRODUCT FOR THE CUSTOMER AND MAINTAINS A COMPLETE PAYMENT HISTORY FOR AUDITING AND BILLING PURPOSES.
Returns:
test_genai_summary()
None
Returns:
TOOL_AGENTIC_TEXTV2()
'Platform engineering and devops'Â --input
Returns:
TOOL_FETCH_CANVAS_VERSIONS()
'ba2f575c-f75d-41c2-a345-d9fdd5482996'
Returns:
TOOL_FETCH_CHATS()
'a0636e9d-6cfc-4a23-9e96-5dbedc265929'
Returns:
TOOL_FETCH_CONVOS()
This function fetches all the conversations of the user with agent on the homepage sidebar.
Returns:
TOOL_GEN_COURSE()
  """'build 1 module course on css' , """ """
//userip :'Building dialogflow agents'Â ,""" """Â
Generates concise course information in JSON format for SnapApp.
  Expected JSON structure:
  [
   {
    "name": str,
    "description": str,
    "level": str, # e.g. Introductory, Intermediate, Advanced
    "persona_course": set or list of enums,
    "progress": 0.0
   }
  ]
  """
Returns:
TOOL_GEN_PUBLISH_COURSE()
Here course_data is a json
{'name': 'Building Dialogflow Agents', 'description': 'This course provides a comprehensive introduction to building conversational AI agents using Dialogflow. You will learn how to design, develop, and deploy intelligent agents that can understand and respond to user input. The course covers key concepts such as intents, entities, contexts, and fulfillment. By the end of this course, you will be able to create your own Dialogflow agents for various applications.', 'level': 'Beginner', 'persona_course': ['Software Engineer', 'AI Developer', 'Chatbot Developer'], 'progress': 0.0, 'modules': [{'sequence': 1, 'name': '1. Dialogflow Fundamentals and Agent Creation', 'description': 'This module introduces the core concepts of Dialogflow, including intents, entities, contexts, and fulfillment. Students will learn how to create a basic Dialogflow agent from scratch, define intents to recognize user input, and extract relevant information using entities. The module will also cover how to use contexts to manage conversation flow and how to configure fulfillment to connect the agent to external services. By the end of this module, students will have a solid foundation for building more complex conversational AI agents.', 'items': [{'type': 'document', 'name': 'Introduction to Dialogflow Concepts', 'ai_summary': "This document provides an overview of core Dialogflow concepts such as intents, entities, contexts, and fulfillment, explaining their roles in building conversational AI agents. It serves as a foundational guide for understanding the module's key topics.", 'url': 'https://docs.google.com/document/d/1GBmZ7-Rgacatb02_4Gxk9SMzvjDs7vAuzWQTeCNXxaI/preview'}, {'type': 'lab', 'name': 'Creating Your First Dialogflow Agent', 'ai_summary': 'This lab guides students through the process of creating a basic Dialogflow agent from scratch, defining intents to recognize user input, and extracting relevant information using entities. It includes step-by-step instructions and practical exercises.', 'url': ''}, {'type': 'slides', 'name': 'Managing Conversation Flow with Contexts', 'ai_summary': 'These slides explain how to use contexts in Dialogflow to manage conversation flow and maintain state across multiple turns. They cover the concepts of input and output contexts, and how to use them to create more natural and engaging conversations.', 'url': 'https://docs.google.com/presentation/d/1ijMOYa_IEmg8ZEhBLYjv0rkbg899uCXsF4fSWspeuZo/embed'}, {'type': 'code_example', 'name': 'Fulfillment with Webhooks Example', 'ai_summary': 'This code example demonstrates how to configure fulfillment in Dialogflow to connect the agent to external services using webhooks. It provides a practical illustration of how to integrate the agent with APIs and databases.', 'url': ''}]}]}
Returns:
TOOL_GENERATE_TEXT()
"""" You are Snappy — a friendly AI assistant for a low-code app builder called SnapApp. Context: - current_agent_phase: documents_received - missing_documents: [] - recent_messages: 2025-12-02 08:06:45|User: Develop an app for organizations to request, process, and manage background checks, including secure document upload and status tracking. 2025-12-02 08:06:52|Agent: That sounds like a fantastic and impactful app idea for organizations! To ensure we build exactly what you need, the first step is to get a clear understanding of the project scope. Could you please provide the Statement of Work (SOW) for this background check application? The SOW will help us define the project's objectives, deliverables, timelines, and responsibilities, setting a solid foundation for development with SnapApp. 2025-12-02 08:09:17|User: submit 2025-12-02 08:09:26|Agent: It looks like you're ready to move forward! To proceed with developing your app for background checks, I still need the Statement of Work (SOW). Once you provide the SOW, I can start defining the project's objectives, deliverables, and timelines, which is crucial for building your app effectively with SnapApp. 2025-12-02 10:46:35|User: here 2025-12-02 10:46:45|Agent: Thanks for letting me know you're here! To move forward with developing your background check app, I'm still waiting for the Statement of Work (SOW). Once you provide the SOW, I can help you define the project's objectives, deliverables, and timelines, which is essential for building your app effectively with SnapApp. You can paste the content directly here or upload it as a file. 2025-12-02 11:28:23|User: Take it 2025-12-02 11:28:35|Agent: It sounds like you're ready to provide the Statement of Work (SOW)! That's great. To move forward with developing your background check app, please provide the content of the SOW. You can paste the text directly into our chat, or if it's a file, you can upload it here. Once I have the SOW, I can help you define the project's objectives, deliverables, and timelines, which is essential for building your app effectively with SnapApp. 2025-12-02 12:01:30|User: hi 2025-12-02 12:01:47|Agent: Hello again! It's Snappy. I see you're back! To keep moving forward with building your background check app, I'm still waiting for the Statement of Work (SOW). Once I have that, we can really start defining the project's objectives, deliverables, and timelines, which is crucial for building your app effectively with SnapApp. You can paste the content directly here or upload it as a file. Let me know when you're ready! 2025-12-02 12:07:14|User: here u go 2025-12-02 12:07:32|Agent: Sorry, I couldn't generate a response right now. Please try again. 2025-12-02 12:10:51|Agent: Fantastic! Thank you for providing the Statement of Work (SOW). I've successfully received it. Now that we have the SOW, we can move forward with defining the project's objectives, deliverables, and timelines for your background check application. This is a crucial step to ensure we build exactly what you need with SnapApp. Here are the next steps we'll take: - Draft Project Charter: We'll create a high-level document outlining the project's purpose, scope, objectives, and key stakeholders. - Generate Epics: Based on the charter, we'll break down the project into major functional areas or large user stories. - Generate User Stories: We'll then detail specific features and functionalities from the perspective of the end-user. I'm excited to get started on these! Let 2025-12-02 12:27:25|Agent: Sorry, I couldn't generate a response right now. Please try again. 2025-12-02 12:29:27|Agent: ```json { "ai_response": "Fantastic! It looks like we're all set with the Statement of Work (SOW). I've successfully received 2025-12-02 12:29:43|Agent: Sorry, I couldn't generate a response right now. Please try again. 2025-12-02 12:30:54|Agent: Fantastic! Thank you for providing the Statement of Work (SOW). I've successfully received it. This is a crucial step to ensure we build exactly what you need with SnapApp. Now that we have the SOW, we can move forward with defining the project's objectives, deliverables, and timelines for your background check application. Here are the next steps we'll take: - Draft Project Charter: We'll create a high-level document outlining the project's purpose, scope, objectives, and key stakeholders. - Generate Epics: Based on the charter, we'll break down the project into major functional areas or large user stories. - Generate User Stories: We'll then detail specific features and functionalities from the perspective of the end-user. I'm excited to get started on these! 2025-12-02 12:31:09|Agent: Fantastic! Thank you for providing the Statement of Work (SOW). I've successfully received it, and we're now ready to move forward with building your background check application with SnapApp. Now that we have the SOW, we can define the project's objectives, deliverables, and timelines. This is a crucial step to ensure we build exactly what you need. Here are the next steps we'll take: - Draft Project Charter: We'll create a high-level document outlining the project's purpose, scope, objectives, and key stakeholders. - Generate Epics: Based on the charter, we'll break down the project into major functional areas or large user stories. - Generate User Stories: We'll then detail specific features and functionalities from the perspective of the end-user. I'm excited to 2025-12-02 12:31:44|Agent: Sorry, I couldn't generate a response right now. Please try again. 2025-12-02 12:37:05|Agent: Fantastic! Thanks for that. It looks like we're all set with the Statement of Work (SOW). I've successfully received it, and we're now ready to move forward with building your background check application with SnapApp. Now that we have the SOW, we can define the project's objectives, deliverables, and timelines. This is a crucial step to ensure we build exactly what you need. ### Next Steps: Here are the next steps we'll take: - Draft Project Charter: We'll create a high-level document outlining the project's purpose, scope, objectives, and key stakeholders. - Generate Epics: Based on the charter, we'll break down the project into major functional areas or large user stories. - Generate User Stories: We'll then detail specific features and functionalities from User's latest message: "Here you go" Assistant thinking summary (internal): "The user says "here u go," which strongly suggests they're finally providing the SOW I've been waiting for. This is vital for defining the project's objectives and scope for their SnapApp, as it outlines everything we need to build. I need to carefully parse whatever they send next to extract all the critical details." OUTPUT SPEC (CRITICALLY IMPORTANT): Return exactly one JSON object. The JSON object must have exactly these top-level keys: - ai_response: a string containing the full user-facing reply in RICH MARKDOWN format. * YOU MUST use bold for emphasis (e.g., SOW, Project Charter). * Use `### Headings` if the response is long. * Use bullet lists (`-`) for clarity. - agent_tasks: an array of task objects (may be empty). Task object schema: { "title": "...", "description": "...", "command": "...", "status": "pending" } BEHAVIOR RULES: - If the user's message is a greeting, reply conversationally. Introduce Snappy using bold text. - If "SOW" is in missing_documents AND the user explicitly wants to start/work/build: * Do NOT create tasks. * In ai_response, ask for the SOW explicitly using bold text. * Set agent_tasks=[]. - If current_agent_phase == "documents_ready", include these tasks in order: 1) Draft Project Charter 2) Generate Epics 3) Generate User Stories You MUST NOT stop generating until: 1. All array entries are fully written, 2. All objects contain every required field, 3. A valid closing '}' for the entire JSON is emitted. Never truncate output. Never stop early. If the JSON object grows large, continue generating until complete.""",None
Returns:
TOTAL_QUIZ_SCORE()
None
TOTAL_QUIZ_SCORE(course_id) Returns: Any
UNSUBSCRIBE_EMAIL_UPDATES()
None
Returns:
UPDATE_COURSE_TOTAL_POINTS()
'20026698-7003-417c-bf8c-a9b32c153c30'
Returns:
UPDATE_HTML_PAGES_STRUCTURED_DATA_MARKUP()
None
Returns:
UPDATE_PATH_DURATION()
This script fetches all course durations linked to a learning path, sums them up, and returns the total duration as either hours (if under 40) or weeks (rounded, assuming 1 week = 40 hours).
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: Date
DATE()
Returns a date from a string
DATE("2020-01-01") Returns: 2020-01-01 DATE("2020-01-01 00:00:00") Returns: 2020-01-01
DATEADD()
Adds a number of days
DATEADD("2020-01-01", 1) Returns: 2020-01-02 DATEADD("2020-01-01", -1) Returns: 2019-12-31
EOMONTH()
Returns the last day of the month
EOMONTH("2020-01-01") Returns: 2020-01-31 EOMONTH("2020-12-31") Returns: 2020-12-31
EOWEEK()
Returns the last day of the week
EOWEEK("2020-01-01") Returns: 2020-01-05 EOWEEK("2020-12-31") Returns: 2021-01-02
TODAY(timezone='UTC')
The date in %Y-%m-%d format. The timezone is optional with a default of UTC. Complete list of timezones can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TODAY() Returns: 2020-01-01 TODAY("America/Denver") Returns: 2019-12-31
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: DateTime
NOW(timezone='UTC')
The datetime in %Y-%m-%d %H:%M:%S format. The timezone is optional with a default of UTC. Complete list of timezones can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
NOW() Returns: 2020-12-31 12:34:56 NOW("America/Denver") Returns: 2020-12-31 07:34:56
UTCNOW()
The datetime for UTC timezone in %Y-%m-%d %H:%M:%S format
UTCNOW() Returns: 2020-01-01 12:34:56
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: File
STATIC_MAP()
STATIC_MAP(latitude, longitude, zoom, width, height, map_type). Returns a static map image from Google Maps. Maps Documentation. This returns a GCS blob URI. You can use the GENERATE_SIGNED_URL() function to display the image. map_type can be one of the following: roadmap, satellite, terrain, hybrid.
STATIC_MAP(40.714224, -73.961452, 12, 400, 400) Returns: signed URL STATIC_MAP(ADDRESS_TO_LATLNG("1616 Federal Blvd, Denver, CO 80204, USA"), None, 12, 400, 400) Returns: File
STREET_VIEW()
STREET_VIEW(latitude, longitude, heading, pitch, fov, width, height). Returns a street view image from Google Maps. Street View Documentation. This returns a GCS blob URI. You can use the GENERATE_SIGNED_URL() function to display the image.
STREET_VIEW(40.714224, -73.961452, 90, 0, 90, 400, 400) Returns: signed URL
TEXT_TO_SPEECH()
TEXT_TO_SPEECH(text). Returns a GCS blob URI from a text string. You can use the GENERATE_SIGNED_URL() function to play the audio.
TEXT_TO_SPEECH("Hello World") Returns: signed URL TEXT_TO_SPEECH("Hello World", "FEMALE") Returns: signed URL TEXT_TO_SPEECH("Hello World", "MALE") Returns: signed URL TEXT_TO_SPEECH("Hello World", "NEUTRAL") Returns: signed URL
URL_TO_PDF()
URL_TO_PDF(url). Returns a PDF file from a URL.
URL_TO_PDF("https://example.com") Returns: URI URL_TO_PDF("https://example.com","vendors") Returns: URI
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: JSON
KG_SEARCH()
KG_SEARCH(query, [limit=10]). Returns a list of entities from Google's Knowledge Graph.
KG_SEARCH("Barack Obama") Returns: [{"name": "Barack Obama", "type": "Person", "description": "44th U.S. President", "url": "https://en.wikipedia.org/wiki/Barack_Obama"}]
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: List
EXTRACTDATES()
Returns a list of dates from a string
EXTRACTDATES("2020-01-01, 2020-01-03") Returns: ['2020-01-01', '2020-01-03']
EXTRACTEMAILS()
Returns a list of emails from a string
EXTRACTEMAILS("admin@example.com hello@example.com") Returns: ['admin.example.com', 'hello@example.com']
EXTRACTNUMBERS()
Returns a list of numbers from a string
EXTRACTNUMBERS("1 2 3") Returns: [1, 2, 3]
EXTRACTPHONES()
Returns a list of phone numbers from a string
EXTRACTPHONES("123-456-7890") Returns: ['123-456-7890']
EXTRACTURLS()
Returns a list of URLs from a string
EXTRACTURLS("https://www.google.com") Returns: ['https://www.google.com'] EXTRACTURLS("https://www.google.com https://www.example.com") Returns: ['https://www.google.com', 'https://www.example.com']
GENERATE_CHILD_RECORDS()
GENERATE_CHILD_RECORDS(table, record ID, prompt, number of records, enhance prompt) Generates child records based on the input prompt and table. The number of records and optimise prompt is optional.
GENERATE_CHILD_RECORDS("superheros", "72570e47-2dc6-477d-97e7-c7b410ddc487" ,"Add details for 3 superheroes from Marvel", 3, True) Returns: List of record IDs
GENERATE_RECORDS()
GENERATE_RECORDS(table, prompt, number of records, enhance prompt) Generates records based on the input prompt and table. The number of records and optimise prompt is optional.
GENERATE_RECORDS("superheros", "Add details for 3 superheroes from Marvel", 3, True) Returns: List of record IDs
LIST()
Returns a list of values
LIST("a", "b", "c") Returns: ['a', 'b', 'c'] LIST(1, 2, 3) Returns: [1, 2, 3]
RE_FINDALL()
Returns a list of all matches of a regular expression
RE_FINDALL("([0-9]+)", "abc123def456") Returns: ['123', '456'] RE_FINDALL("([a-z]+)", "abc123def456") Returns: ['abc', 'def']
SELECT()
Returns a list of objects from DB table. Optional second parameter to specify fields. Optional third and foruth parameter to specify filter column and filter value. Optional fifth parameter to specify whether to flatten the list."
filters:- Optional parameter to apply multiple filters. It should be a list of tuples. Each tuple should have 2 elements. First element should be the column name and second element should be the value. For example, filters=[("column1", 10), ("column2", 20)] will return rows where column1 = 10 and column2 = 20.
order_by:- Optional parameter to specify the column name to sort the results. It should be a string. For example, order_by="column1" will sort the results by column1. If you want to sort in descending order, you can add a "-" in front of the column name. For example, order_by="-column1" will sort the results by column1 in descending order.
SELECT("table", "field") Returns: [{...}, {...}, ...] SELECT("table", "field,field2") Returns: [{...}, {...}, ...] SELECT("table", "field", "filter_column", "filter_value") Returns: [{...}, {...}, ...] SELECT("table", "field", "filter_column", "filter_value", True) Returns: [field, field, ...] SELECT("table", "*", filters=[("column1", 10), ("column2", 20)]) Returns: [(record1), (record2), ...] SELECT("table", "*", order_by="column1") Returns:
SORT()
Returns a list of values sorted in ascending order. Optional second boolean parameter to sort in descending order.
SORT([3, 2, 1]) Returns: [1, 2, 3] SORT([1, 2, 3], True) Returns: [3, 2, 1]
SPLIT()
Returns a list of substrings from a text string, separated by a delimiter
SPLIT("Hello World", " ") Returns: ['Hello', 'World']
TOP()
Returns the first n items in a list
TOP([1, 2, 3], 2) Returns: [1, 2] TOP([1, 2, 3], 4) Returns: [1, 2, 3]
UNIQUE()
Returns a list of unique values from a list
UNIQUE([1, 2, 3, 1, 2, 3]) Returns: [1, 2, 3]
GET_ACTIVE_USE_CASES()
None
Returns:
GET_COURSE_DETAIL()
this is the course details of a function that Runs a query to join courses, modules, module items and user module items to to show course/module information applicable to the current user. '4761e7e4-c178-4892-bc22-ee7b99be8699'
GET_COURSE_DETAIL(course_id) Returns: List
GET_USER_MODULE_ITEM_LIST()
None
Returns:
GET_USER_MODULE_LIST()
This function takes the module id and return the user module id
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: Number
ABS()
Arithmetic absolute value. If the value is a string, it will be converted to a number.
ABS("-3.14") Returns: 3.14 ABS(-2.718) Returns: 2.718
AVERAGE()
Returns mean of a list
AVERAGE([1, 2, 3]) Returns: 2 AVERAGE([3.14, 2.71, 1.41]) Returns: 2.42
CEILING()
Returns the smallest integer greater than or equal to a number
CEILING(3.14) Returns: 4 CEILING(-3.14) Returns: -3
COUNT()
Returns the number of items in an iterable. If the argument is a table name, it will return the number of rows.
COUNT([1, 2, 3]) Returns: 3 COUNT([3.14, 2.71, 1.41]) Returns: 3 COUNT_DB("table_name") Returns: Number
DATEDIFF()
Returns the number of days between two dates. DATEDIFF("2020-01-01", "2020-12-31") returns 365
DATEDIFF("2020-01-01", "2020-12-31") Returns: 365 DATEDIFF("2020-12-31", "2020-01-01") Returns: -365
DAY()
Returns the day of the month
DAY("2020-01-01") Returns: 1 DAY("2020-12-31") Returns: 31
FIND()
Returns the position of a substring. Returns -1 if not found.
FIND("needle", "needle in haystack") Returns: 0 FIND("rock", "in haystack") Returns: -1
FLOAT()
Converts a value to float
FLOAT("3.14") Returns: 3.14 FLOAT(3) Returns: 3.0
FLOOR()
Returns the largest integer less than or equal to a number
FLOOR(1.1) Returns: 1 FLOOR(1.9) Returns: 1
Returns the value at a specific position in a list. Indexes start at 1.
INDEX(["a", "b", "c"], 1) Returns: a INDEX(["a", "b", "c"], 2) Returns: b INDEX(["a", "b", "c"], 3) Returns: c INDEX(["a", "b", "c"], 4) Returns:
INT()
Converts a value to an integer
INT("3") Returns: 3 INT(2.718) Returns: 2
Returns the largest value in a list of numbers
MAX([1, 2, 3]) Returns: 3 MAX([3, 2, 1]) Returns: 3 MAX([3.14, 2.71]) Returns: 3.14
MAXROW()
Returns the largest row number in a table
MAXROW("table", "field") Returns: 3
MIN()
Returns the smallest value in a list of numbers
MIN([1, 2, 3]) Returns: 1 MIN([3, 2, 1]) Returns: 1 MIN([3.14, 2.71]) Returns: 2.71
MINROW()
Returns the smallest row number in a table
MINROW("table", "field") Returns: 1
MINUTE()
Returns the minute
MINUTE("2020-01-01 12:34:56") Returns: 34
MONTH()
Returns the month
MONTH("2020-01-01 12:34:56") Returns: 1
NLP_SENTIMENT()
NLP_SENTIMENT(text). Returns a sentiment score from -1 to 1.
NLP_SENTIMENT("I love this product") Returns: 0.9 NLP_SENTIMENT("I hate this product") Returns: -0.9
POWER()
Returns the result of a number raised to a power
POWER(2, 3) Returns: 8 POWER(3, 2) Returns: 9 POWER(3.14, 2) Returns: 9.8596
RANDBETWEEN()
Returns a random number between the two numbers
RANDBETWEEN(1, 10) Returns: 5
ROUND()
Returns a number rounded to a specified number of decimal places
ROUND(3.14159, 2) Returns: 3.14 ROUND(3.14159, 3) Returns: 3.142 ROUND(3.14159, 4) Returns: 3.1416
SECOND()
Returns the second
SECOND("2020-01-01 12:34:56") Returns: 56
SQRT()
Returns the square root of a number
SQRT(4) Returns: 2 SQRT(9) Returns: 3 SQRT(9.0) Returns: 3.0
SUM()
Returns the sum of a list of numbers
SUM([1, 2, 3]) Returns: 6 SUM([1.1, 2.2, 3.3]) Returns: 6.6
TOTALHOURS()
Returns the total number of hours in a time
TOTALHOURS("12:34:56") Returns: 12.582222222222223
TOTALMINUTES()
Returns the total number of minutes in a time
TOTALMINUTES("12:34:56") Returns: 754.9333333333333
TOTALSECONDS()
Returns the total number of seconds in a time
TOTALSECONDS("12:34:56") Returns: 45296.0
WEEKDAY()
Returns the day of the week for a date
WEEKDAY("2020-01-01") Returns: 1
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: Point
ADDRESS_TO_LATLNG()
Converts an address to latitude and longitude. A point is a tuple with 2 values: latitude and longitude.
ADDRESS_TO_LATLNG("1600 Amphitheatre Parkway, Mountain View, CA 94043") Returns: (37.4223878,-122.0841877)
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: Text
BASE_URL()
Returns the base URL of the app
BASE_URL() Returns: https://www.appsheet.com/
CONCAT()
Concatenates two or more text strings
CONCAT("Hello", " ", "World") Returns: Hello World CONCAT("Hello", " ", "World", "!") Returns: Hello World!
CONCAT_WS()
Concatenates two or more text strings with a separator
CONCAT_WS(" ", "Hello", "World") Returns: Hello World CONCAT_WS(" ", "Hello", "World", "!") Returns: Hello World !
CONCATENATE()
Concatenates two or more text strings
CONCATENATE("Hello", " ", "World") Returns: Hello World CONCATENATE("Hello", " ", "World", "!") Returns: Hello World!
FORMAT_TIME(Value,Military Time, Ignore Seconds, Default timezone('optional)) Returns Time based on the input
FORMAT_TIME('05:44:18',True,True,'America/Denver') Returns: 05:44 FORMAT_TIME("05:44:18 AM",False,True,"Pacific/Saipan")", "returns": "03:44 PM"} Returns: 1. AppSheet 2. Bubble
GENERATE_SIGNED_URL()
GENERATE_SIGNED_URL(url, [expiration=3600]) Returns a signed URL from GCS.
GENERATE_SIGNED_URL("bucket-name/example.png") Returns: signed URL
GENERATE_TEXT()
GENERATE_TEXT(prompt, context, datasource) Returns a generated text based on the input prompt. Pass a datastore path to be used for grounding.
GENERATE_TEXT("Give me a name for a blog website") Returns: Blogger's Home GENERATE_TEXT("Give two names for a tech product, list them in numbers") Returns: 1. AppSheet 2. Bubble
GENERATE_TEXT_WITH_IMAGE()
Returns a generated text with an image prompt and text prompt. Pass a datastore path to be used for grounding.
GENERATE_TEXT_WITH_IMAGE("image.jpg","Describe the image") Returns: Text
IMAGE()
IMAGE(url). Returns a signed URL from GCS.
IMAGE("bucket-name/example.png") Returns: signed URL
LATLNG_TO_ADDRESS()
LATLNG_TO_ADDRESS(latitude, longitude). Returns an address from a latitude and longitude.
LATLNG_TO_ADDRESS(40.714224, -73.961452) Returns: 277 Bedford Ave, Brooklyn, NY 11211, USA
LEFT()
Returns the leftmost characters in a text string
LEFT("abc", 1) Returns: a LEFT("abc", 2) Returns: ab LEFT("abc", 3) Returns: abc LEFT("abc", 4) Returns: abc
LOWER()
Lowercase a string
LOWER("ABC") Returns: abc LOWER("aBc") Returns: abc
MARKDOWN_TO_HTML()
Converts Markdown to HTML
MARKDOWN_TO_HTML("# Hello") Returns:
Hello
MARKDOWN_TO_HTML("## Hello") Returns:
Hello
MID(arg, start, length)
Returns a specific number of characters from a text string starting at the position you specify.
MID("abc", 1, 1) Returns: a MID("abc", 1, 2) Returns: ab MID("abc", 1, 3) Returns: abc MID("abc", 1, 4) Returns: abc
PREDICT()
PREDICT(model, input). Returns a prediction from a model.
PREDICT("my-model", {"sepal_length": 5.1, "sepal_width": 3.5, "petal_length": 1.4, "petal_width": 0.2}) Returns: setosa
RE_FIND()
Returns the first match of a regular expression
RE_FIND("([0-9]+)", "abc123def456") Returns: 123 RE_FIND("([a-z]+)", "abc123def456") Returns: abc
RE_MATCH()
Returns the first match of a regular expression at the beginning of a string
RE_MATCH("([0-9]+)", "123def456") Returns: 123 RE_MATCH("([a-z]+)", "abc123def456") Returns: abc
RE_SEARCH()
Returns the first match of a regular expression anywhere in a string
RE_SEARCH("([0-9]+)", "abc123def456") Returns: 123 RE_SEARCH("([a-z]+)", "abc123def456") Returns: abc
RE_SUB()
Returns a string with all matches of a regular expression replaced
RE_SUB("([0-9]+)", "X", "abc123def456") Returns: abcXdefX RE_SUB("([a-z]+)", "X", "abc123def456") Returns: X123X456
REF_LABEL()
Get Ref Label of record
REF_LABEL("permits", "1745c746-aaa5-4ecf-96e7-49392458d42c") Returns: ON-0017
REMOVE_HTML_TAGS()
Removes HTML tags from a string
REMOVE_HTML_TAGS("
Hello
") Returns: Hello REMOVE_HTML_TAGS("
Hello
") Returns: Hello
RIGHT()
Returns the rightmost characters from a string
RIGHT("abc", 1) Returns: c RIGHT("abc", 2) Returns: bc RIGHT("abc", 3) Returns: abc
SENDER_EMAIL_NAME()
The email sender name
SENDER_EMAIL_NAME() Returns: Default Email Sender Name
SPEECH_TO_TEXT()
SPEECH_TO_TEXT(object,'en-us'). Returns a text string from a GCS object.
SPEECH_TO_TEXT("example.mp3","en-us") Returns: Hello World
SUBSTITUTE()
Returns a text string with all occurrences of a substring replaced with another substring
SUBSTITUTE("Hello World", "World", "Universe") Returns: Hello Universe
SUMMARIZE_DOCUMENT(url)
SUMMARIZE_DOCUMENT(url) Returns a summarized text of the input document. Supports PDF files.
SUMMARIZE_DOCUMENT(url = pdf_url) Returns: Summarized text of the pdf
TEXT()
Returns a text string representation of a value
TEXT(123) Returns: 123 TEXT(123.45) Returns: 123.45
TITLE()
Returns a text string in title case
TITLE("hello world") Returns: Hello World
TRANSLATE_DOCUMENT()
TRANSLATE_DOCUMENT("URI", "source_language", "target_language"). Returns a translated document from a GCS URI.
TRANSLATE_DOCUMENT("gs://bucket-name/file-name", "en", "es") Returns: GCS URI
TRANSLATE_DOCUMENT_BATCH()
TRANSLATE_DOCUMENT_BATCH("URI", "source_language", "target_language"). Returns a translated document from a GCS URI.
TRANSLATE_DOCUMENT_BATCH("gs://bucket-name/file-name", "en", "es") Returns: GCS URI
TRANSLATE_TEXT()
TRANSLATE_TEXT(text, [source_language='auto', target_language='en']). Returns a translated string. Similar to the GOOGLETRANSLATE() function in Google Sheets.
TRANSLATE_TEXT("Hola Amigo") Returns: Hi friend TRANSLATE_TEXT("Hola Amigo", "es", "en") Returns: Hi friend
TRIM()
Returns a text string with whitespace removed from the start and end
TRIM(" Hello World ") Returns: Hello World TRIM("Hello World") Returns: Hello World
UPPER()
Uppercase a string
UPPER("Hello World") Returns: HELLO WORLD
USERLOCALE()
The active locale e.g. en, de, es, zh
USERLOCALE() Returns: en, de, es, fr, or zh
USERNAME()
Returns the current user's fullname
USERNAME() Returns: Full Name
GENERATE_PATH_TIMELINE()
Generate a timeline for a path and related courses.
GENERATE_PATH_TIMELINE(path_id,user_id) Returns: Text
GET_OAUTH_TOKEN()
GET_OUTH_TOKEN('google_apis',USERID()) Returns: The Decrypted Token
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: Time
TIME()
Returns the time portion of a datetime
TIME("2020-01-01 12:34:56") Returns: 12:34:56 TIME(NOW()) Returns: 12:34:56
TIMENOW(timezone='UTC')
The time in %H:%M:%S format. Similar to TIME(NOW()). The timezone is optional with a default of UTC. Complete list of timezones can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TIMENOW() Returns: 12:34:56 TIMENOW("America/Denver") Returns: 07:34:56
This table contains a list of expressions and their descriptions.
Name
Description
Action
Returns: YesNo
AND()
Returns a YesNo expression
AND(TRUE, TRUE) Returns: Yes AND(TRUE, FALSE) Returns: No AND(FALSE, TRUE) Returns: No AND(FALSE, FALSE) Returns: No
BOOLEAN() or BOOL()
Converts a value to a boolean
BOOLEAN("true") Returns: Yes BOOLEAN("false") Returns: No BOOLEAN(1) Returns: Yes BOOLEAN(0) Returns: No
CONTAINS()
Returns a YesNo expression
CONTAINS("Hello World", "World") Returns: Yes CONTAINS("Hello World", "World!") Returns: No
ENDSWITH()
Returns a YesNo expression
ENDSWITH("Hello World", "World") Returns: Yes ENDSWITH("Hello World", "World!") Returns: No
EXISTS()
Returns a YesNo expression
EXISTS("users", "id", 1) Returns: Yes EXISTS("users", "id", 999) Returns: No
HAS_PERMISSION()
Returns a YesNo expression
HAS_PERMISSION("send_mail") Returns: Yes HAS_PERMISSION("cases.create") Returns: No HAS_PERMISSION("cases.case_number.read") Returns: No
IN()
Returns a YesNo expression
IN("a", ["a", "b", "c"]) Returns: Yes IN("d", ["a", "b", "c"]) Returns: No
ISBLANK()
Returns a YesNo expression
ISBLANK("") Returns: Yes ISBLANK("a") Returns: No
ISDATE()
Returns a YesNo expression
ISDATE("2020-01-01") Returns: Yes ISDATE("a") Returns: No
ISNOTBLANK()
Returns a YesNo expression
ISNOTBLANK("") Returns: No ISNOTBLANK("a") Returns: Yes
ISNULL()
Returns a YesNo expression, if the value is null or None
ISNULL(1) Returns: No ISNULL(0) Returns: No ISNULL(None) Returns: Yes
ISNUMBER()
Returns a YesNo expression
ISNUMBER(1) Returns: Yes ISNUMBER("a") Returns: No
NOT()
Returns a YesNo expression
NOT(True) Returns: No NOT(No) Returns: Yes
OR()
Returns a YesNo expression
OR(True, False) Returns: Yes OR(Yes, No) Returns: Yes OR(No, No) Returns: No
STARTSWITH()
Returns a YesNo expression
STARTSWITH("Hello World", "Hello") Returns: Yes STARTSWITH("Hello World", "World") Returns: No
NOTAFREEMAIL()
Confirm email address is valid and is not from a free email domain (e.g. gmail.com, yahoo.com etc)
NOTAFREEMAIL(email) Returns: YesNo
PAYMENT_HISTORIES_SHOWIF()
ADD THIS FUNCTION IN THE PAYMENT HISTORY BUTTON IN PLAN DETAILS PAGE