Skip to content

Data model of the API & Plugin platform

These tables live in the workspace DB and are only created the first time the API or plugins are used (a machine that never uses them has no such tables). Generated automatically from src/services/api/dbSchema.ts.

api_keys

Column Type / constraints
id TEXT PRIMARY KEY
name TEXT NOT NULL
key_prefix TEXT NOT NULL
key_hash TEXT NOT NULL
scopes_json TEXT NOT NULL DEFAULT '[]'
account_ids_json TEXT DEFAULT NULL
allowed_ips_json TEXT DEFAULT NULL
rate_limit_per_min INTEGER NOT NULL DEFAULT 0
erp_role TEXT NOT NULL DEFAULT 'manager'
plugin_id TEXT DEFAULT NULL
note TEXT NOT NULL DEFAULT ''
created_by TEXT NOT NULL DEFAULT 'boss'
created_at INTEGER NOT NULL
last_used_at INTEGER DEFAULT NULL
last_used_ip TEXT DEFAULT NULL
expires_at INTEGER DEFAULT NULL
revoked_at INTEGER DEFAULT NULL

api_request_logs

Column Type / constraints
id INTEGER PRIMARY KEY AUTOINCREMENT
principal_id TEXT NOT NULL
method TEXT NOT NULL
route TEXT NOT NULL
status INTEGER NOT NULL
took_ms INTEGER NOT NULL
ip TEXT DEFAULT ''
request_id TEXT DEFAULT ''
error_code TEXT DEFAULT NULL
created_at INTEGER NOT NULL

api_events

Column Type / constraints
seq INTEGER PRIMARY KEY AUTOINCREMENT
event_id TEXT NOT NULL UNIQUE
type TEXT NOT NULL
account_id TEXT DEFAULT ''
channel TEXT DEFAULT ''
payload_json TEXT NOT NULL
created_at INTEGER NOT NULL

webhook_subscriptions

Column Type / constraints
id TEXT PRIMARY KEY
key_id TEXT DEFAULT NULL
name TEXT NOT NULL DEFAULT ''
url TEXT NOT NULL
secret TEXT NOT NULL
events_json TEXT NOT NULL DEFAULT '["*"]'
account_ids_json TEXT DEFAULT NULL
active INTEGER NOT NULL DEFAULT 1
consecutive_failures INTEGER NOT NULL DEFAULT 0
disabled_reason TEXT DEFAULT NULL
allow_private INTEGER NOT NULL DEFAULT 0
last_delivery_at INTEGER DEFAULT NULL
created_at INTEGER NOT NULL
updated_at INTEGER NOT NULL

webhook_deliveries

Column Type / constraints
id TEXT PRIMARY KEY
subscription_id TEXT NOT NULL
event_seq INTEGER NOT NULL
event_type TEXT NOT NULL
payload_json TEXT NOT NULL
attempt INTEGER NOT NULL DEFAULT 0
status TEXT NOT NULL DEFAULT 'pending'
response_status INTEGER DEFAULT NULL
response_body TEXT DEFAULT NULL
error TEXT DEFAULT NULL
next_retry_at INTEGER DEFAULT NULL
created_at INTEGER NOT NULL
delivered_at INTEGER DEFAULT NULL

plugins

Column Type / constraints
id TEXT PRIMARY KEY
name TEXT NOT NULL
version TEXT NOT NULL
runtime TEXT NOT NULL
source_type TEXT NOT NULL
install_path TEXT NOT NULL
manifest_json TEXT NOT NULL
granted_permissions_json TEXT NOT NULL DEFAULT '[]'
account_ids_json TEXT DEFAULT NULL
settings_json TEXT NOT NULL DEFAULT '{}'
status TEXT NOT NULL DEFAULT 'disabled'
status_reason TEXT DEFAULT NULL
installed_at INTEGER NOT NULL
updated_at INTEGER NOT NULL

plugin_storage

Column Type / constraints
plugin_id TEXT NOT NULL
key TEXT NOT NULL
value_json TEXT NOT NULL
updated_at INTEGER NOT NULL

plugin_logs

Column Type / constraints
id INTEGER PRIMARY KEY AUTOINCREMENT
plugin_id TEXT NOT NULL
level TEXT NOT NULL DEFAULT 'info'
message TEXT NOT NULL
created_at INTEGER NOT NULL

Didn't find your answer?

Message us on Telegram