Session State
Per-user key-value store that persists across page navigations for the session duration.
EXEC sp_api_modal_set @name, @value -- store (NULL = delete)
EXEC sp_api_modal_get @name, @value OUT -- retrieve
Common session keys
| Key | Purpose |
workdate | Current working date |
last_access_date | Tracks daily first-access |
statusbar_1 / statusbar_2 | Statusbar slot content |
statusbar_all_* | Full-bar override colours |
forcedRole | Temporarily impersonate a role |
nightmode | UI theme toggle |
get/set = persistent session state across actions. pre_declare/get_value = transient modal state within a single render cycle.
T‑SQL
-- Store and read
EXEC sp_api_modal_set N'workdate', N'2025-03-15'
DECLARE @workdate nvarchar(128)
EXEC sp_api_modal_get N'workdate', @workdate OUT
DECLARE @workdate_msg nvarchar(200) = CONCAT(N'Workdate: ', @workdate)
EXEC sp_api_toast @workdate_msg
-- Toggle pattern
DECLARE @flag nvarchar(10)
EXEC sp_api_modal_get N'my_feature_flag', @flag OUT
IF @flag IS NOT NULL EXEC sp_api_modal_set N'my_feature_flag', NULL
ELSE EXEC sp_api_modal_set N'my_feature_flag', N'on'
-- Daily reset
DECLARE @last nvarchar(128)
EXEC sp_api_modal_get N'last_access_date', @last OUT
IF @last IS NULL OR @last <> dbo.strdate(NULL)
BEGIN
EXEC sp_api_modal_set N'workdate', NULL
EXEC sp_api_modal_set N'last_access_date', dbo.strdate(NULL)
EXEC sp_api_toast N'Good morning!'
END
sessionstatesp_api_modal_setsp_api_modal_getworkdatepersist
Session State
Create records from T-SQL using the same pipeline as a normal form save.
EXEC sp_api_modal_post @card, @column, @value, @id -- set field (0 = new)
EXEC @new_id = sp_api_modal_save @card, @id -- commit, returns new id
Before creating a new record, clear any unfinished draft:
DELETE FROM api_storage
WHERE card_id = (SELECT id FROM api_card WHERE name = N'orders')
AND child_id = 0 AND user_id = @user_id
T‑SQL
-- Create a new record and navigate to it
DELETE FROM api_storage
WHERE card_id = (SELECT id FROM api_card WHERE name = N'orders')
AND child_id = 0 AND user_id = @user_id
EXEC sp_api_modal_post N'orders', N'customer_id', @selected_id, 0
EXEC sp_api_modal_post N'orders', N'status', N'draft', 0
EXEC sp_api_modal_post N'orders', N'created_by', @user_name, 0
DECLARE @new_id nvarchar(32)
EXEC @new_id = sp_api_modal_save N'orders', 0
DECLARE @nav_path nvarchar(256) = CONCAT(N'/orders/', @new_id)
EXEC sp_api_goto @nav_path
sessionpostsavesp_api_modal_postsp_api_modal_savecreaterecord