SDK reference
The Node SDK is an API integration layer. It validates payloads, sends HTTP requests, applies timeouts and retries, propagates correlation IDs, and returns structured API responses. It does not run rules, policies, models, or optimization locally.
@decisionslayer/ingestion-ts. The name is
ingestion-oriented for compatibility; the client covers ingestion,
workspace, analytics, observability, alerts, intelligence, and
optimization APIs.
Create a client
Use API keys for machine ingestion and read paths. Use bearer sessions for authenticated workspace administration flows.
import { createDecisionIngestionClient } from "@decisionslayer/ingestion-ts";
const apiClient = createDecisionIngestionClient({
baseUrl: "https://api.decisionslayer.com",
apiKey: process.env.DL_API_KEY,
timeoutMs: 5000,
});
const userClient = createDecisionIngestionClient({
baseUrl: "https://api.decisionslayer.com",
accessToken: process.env.DL_ACCESS_TOKEN,
tenantId: process.env.DL_TENANT_ID,
timeoutMs: 5000,
});
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
baseUrl |
string | Yes | https://api.decisionslayer.com or private deployment URL | API origin. |
apiKey |
string | No | dl_live_... or dl_test_... | Server-side API key for machine calls. |
accessToken |
string | No | JWT access token | Bearer token for user/workspace administration. |
tenantId |
string | No | Tenant/workspace ID | Required with bearer workspace calls. |
timeoutMs |
number | No | Default 5000 | Request timeout in milliseconds. |
Health
apiClient.health.get()
Checks service reachability.
Auth. None.
Returns. Health status object.
const health = await apiClient.health.get();
Auth
userClient.auth.signup(body)
Creates a user and initial workspace.
Auth. None.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
name |
string | Yes | 1-120 chars | User display name. |
email |
string | Yes | Valid email | Login email. |
password |
string | Yes | Minimum policy length and complexity | User password. |
workspace_name |
string | Yes | 1-120 chars | Initial workspace name. |
Returns. User, workspace, and session tokens.
const signup = await userClient.auth.signup({ name, email, password, workspace_name });
userClient.auth.login(body)
Creates an authenticated user session.
Auth. None.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
email |
string | Yes | Valid email | Login email. |
password |
string | Yes | Password | User password. |
Returns. Access token, refresh token, user, and workspace context.
const login = await userClient.auth.login({ email, password });
userClient.auth.refresh(body)
Refreshes an access token.
Auth. None.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
refresh_token |
string | Yes | Refresh token from login | Long-lived refresh credential. |
Returns. New token pair.
const refreshed = await userClient.auth.refresh({ refresh_token });
userClient.auth.logout()
Ends the current session.
Auth. Bearer.
Returns. Empty success response.
await userClient.auth.logout();
userClient.auth.me()
Returns the current user profile.
Auth. Bearer plus tenant context when available.
Returns. User profile object.
const profile = await userClient.auth.me();
userClient.auth.updateMe(body)
Updates the current user profile.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
name |
string | No | 1-120 chars | Display name. |
Returns. Updated profile.
const profile = await userClient.auth.updateMe({ name: "Ada L." });
userClient.auth.workspaces()
Lists workspaces available to the current user.
Auth. Bearer.
Returns. Workspace list.
const workspaces = await userClient.auth.workspaces();
userClient.auth.forgotPassword(body)
Starts password reset.
Auth. None.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
email |
string | Yes | Valid email | Account email. |
Returns. Accepted reset request.
await userClient.auth.forgotPassword({ email });
userClient.auth.resetPassword(body)
Completes password reset.
Auth. None.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
token |
string | Yes | Reset token | Token from email. |
password |
string | Yes | New password | Replacement password. |
Returns. Updated password confirmation.
await userClient.auth.resetPassword({ token, password });
userClient.auth.verifyEmail(body)
Verifies a user email address.
Auth. None.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
token |
string | Yes | Email verification token | Token from email. |
Returns. Verification confirmation.
await userClient.auth.verifyEmail({ token });
userClient.auth.acceptInvitation(body)
Accepts a workspace invitation.
Auth. None.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
token |
string | Yes | Invitation token | Invitation token. |
name |
string | Yes | 1-120 chars | User display name. |
password |
string | Yes | Password | New account password. |
Returns. Accepted invitation and session.
const accepted = await userClient.auth.acceptInvitation({ token, name, password });
Decisions
apiClient.decisions.log(body)
Writes one append-only decision event. Replays with the same external_decision_id are idempotent.
Auth. API key.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
external_decision_id |
string | No | Unique per tenant when supplied | Your stable decision identifier. Used for idempotent replay detection. |
decision_type |
string | Yes | Workspace taxonomy such as transaction_review, kyc_check, claim_review | Groups decisions for analytics and configuration. |
subject.type |
string | Yes | Customer-defined type such as transaction, customer, claim, listing | The entity class the decision is about. |
subject.id |
string | Yes | Stable subject identifier | The entity identifier in your system. |
decision.action |
string | Yes | Workspace configured action such as allow, approve, deny, reject, review, escalate | The action taken by the decision system. |
decision.status |
string | Yes | draft, pending, final, superseded | Lifecycle status for the decision record. |
actors[] |
array<object> | No | type, id, version, role | Models, rules, services, or people involved in the decision. |
evidence[] |
array<object> | No | type, key, name, value, weight, source | Signals, scores, rules, policy references, or provider results that influenced the decision. |
context |
object | No | JSON object | Operational context such as channel, region, queue, source system, or experiment. |
inputs |
object | No | JSON object | Input values used by the decision system. |
metadata |
object | No | JSON object | Additional customer-defined metadata. |
occurred_at |
string | Yes | ISO 8601 timestamp | When the decision happened. |
Returns. Decision ID, status, idempotency metadata.
const decision = await apiClient.decisions.log(decisionPayload);
apiClient.decisions.logBatch(items)
Writes multiple decision events in one request.
Auth. API key.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
items[] |
array<object> | Yes | Decision payload objects | Each item follows the decision schema. |
Returns. Batch result with per-record status.
const batch = await apiClient.decisions.logBatch([decisionPayload]);
apiClient.decisions.get(decisionId)
Fetches one decision by platform ID.
Auth. API key.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
decisionId |
string | Yes | Decision UUID | Platform decision ID. |
Returns. Decision detail.
const detail = await apiClient.decisions.get(decision.id);
apiClient.decisions.list(filters)
Searches decisions by taxonomy, subject, actor, time range, and pagination.
Auth. API key.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
decision_type |
string | No | Workspace decision type | Filter by decision type. |
subject_type |
string | No | Subject type | Filter by subject type. |
subject_id |
string | No | Subject ID | Filter by subject ID. |
actor_id |
string | No | Actor ID | Filter by actor. |
from |
string | No | ISO 8601 | Start time. |
to |
string | No | ISO 8601 | End time. |
page_size |
number | No | 1-100 | Page size. |
cursor |
string | No | Opaque cursor | Pagination cursor. |
Returns. Decision list and next cursor.
const list = await apiClient.decisions.list({ decision_type: "transaction_review", page_size: 25 });
apiClient.decisions.timeline(subjectType, subjectId)
Returns all decisions and outcomes for a subject.
Auth. API key.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
subjectType |
string | Yes | Subject type | Subject type. |
subjectId |
string | Yes | Subject ID | Subject ID. |
Returns. Timeline records.
const timeline = await apiClient.decisions.timeline("transaction", "txn_123");
apiClient.outcomes.log(decisionId, body)
Attaches one outcome to a decision.
Auth. API key.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
decisionId |
string | Yes | Decision UUID | Platform decision ID. |
outcome_type |
string | Yes | Workspace taxonomy such as review_result, fraud_resolution, conversion, chargeback | The kind of downstream result being attached. |
outcome_value |
string | Yes | Customer-defined value such as approved, rejected, true_positive, false_positive, converted | The observed result value. |
payload |
object | No | JSON object | Supporting details about the outcome. |
metadata |
object | No | JSON object | Additional outcome metadata. |
occurred_at |
string | No | ISO 8601 timestamp | When the outcome happened. Defaults to server receive time if omitted. |
Returns. Outcome record.
const outcome = await apiClient.outcomes.log(decision.id, outcomePayload);
apiClient.outcomes.logBatch(items)
Attaches outcomes to multiple decisions.
Auth. API key.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
items[].decisionId |
string | Yes | Decision UUID | Target decision. |
items[].event |
object | Yes | Outcome payload | Outcome fields. |
Returns. Batch result with per-record status.
const batch = await apiClient.outcomes.logBatch([{ decisionId, event: outcomePayload }]);
Workspace
userClient.workspace.labelSuggestions(filters)
Returns label suggestions for workspace configuration and decision metadata.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
q |
string | No | Search text | Search query. |
Returns. Suggested labels.
const labels = await userClient.workspace.labelSuggestions({ q: "review" });
userClient.workspace.getSettings()
Returns workspace settings.
Auth. Bearer.
Returns. Workspace settings.
const settings = await userClient.workspace.getSettings();
userClient.workspace.updateSettings(body)
Updates workspace settings.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
workspace_name |
string | No | 1-120 characters | Human-readable workspace name. |
default_timezone |
string | No | IANA timezone such as UTC, America/New_York, Asia/Kathmandu | Default timezone used for reporting windows. |
data_retention_days |
number | No | Plan-dependent positive integer | Retention period for workspace records. |
Returns. Updated settings.
const settings = await userClient.workspace.updateSettings({ default_timezone: "UTC" });
userClient.workspace.listMembers()
Lists workspace users.
Auth. Bearer.
Returns. Member list.
const members = await userClient.workspace.listMembers();
userClient.workspace.updateMemberRole(userId, body)
Changes a member role.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
userId |
string | Yes | User UUID | Member ID. |
role_id |
string | Yes | Role UUID | New role. |
Returns. Updated membership.
await userClient.workspace.updateMemberRole(userId, { role_id });
userClient.workspace.deactivateMember(userId)
Deactivates a workspace member.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
userId |
string | Yes | User UUID | Member ID. |
Returns. Deactivation confirmation.
await userClient.workspace.deactivateMember(userId);
userClient.workspace.listInvitations()
Lists workspace invitations.
Auth. Bearer.
Returns. Invitation list.
const invitations = await userClient.workspace.listInvitations();
userClient.workspace.createInvitation(body)
Invites a user to the workspace.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
email |
string | Yes | Valid email | Invitee email. |
role_id |
string | Yes | Role UUID | Assigned role. |
Returns. Invitation record.
const invite = await userClient.workspace.createInvitation({ email, role_id });
userClient.workspace.resendInvitation(invitationId)
Resends an invitation email.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
invitationId |
string | Yes | Invitation UUID | Invitation ID. |
Returns. Invitation record.
await userClient.workspace.resendInvitation(invitationId);
userClient.workspace.revokeInvitation(invitationId)
Revokes an invitation.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
invitationId |
string | Yes | Invitation UUID | Invitation ID. |
Returns. Revocation confirmation.
await userClient.workspace.revokeInvitation(invitationId);
userClient.workspace.listRoles()
Lists workspace roles.
Auth. Bearer.
Returns. Role list.
const roles = await userClient.workspace.listRoles();
userClient.workspace.createRole(body)
Creates a workspace role.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
name |
string | Yes | 1-120 chars | Role name. |
permissions |
array<string> | Yes | decisions:read, decisions:write, analytics:read, alerts:write, workspace:admin, optimization:read, optimization:write | Granted permissions. |
Returns. Role record.
const role = await userClient.workspace.createRole({ name, permissions });
userClient.workspace.updateRole(roleId, body)
Updates a role.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
roleId |
string | Yes | Role UUID | Role ID. |
name |
string | No | 1-120 chars | Role name. |
permissions |
array<string> | No | Permission strings | Granted permissions. |
Returns. Updated role.
const role = await userClient.workspace.updateRole(roleId, { permissions });
userClient.workspace.deleteRole(roleId)
Deletes a role.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
roleId |
string | Yes | Role UUID | Role ID. |
Returns. Deletion confirmation.
await userClient.workspace.deleteRole(roleId);
userClient.workspace.listApiKeys()
Lists workspace API keys without secret values.
Auth. Bearer.
Returns. API key metadata list.
const keys = await userClient.workspace.listApiKeys();
userClient.workspace.createApiKey(body)
Creates an API key.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
name |
string | Yes | 1-120 chars | Key label. |
scopes |
array<string> | Yes | decisions:write, decisions:read, analytics:read, observability:read, intelligence:read | Allowed scopes. |
Returns. API key metadata and one-time secret.
const apiKey = await userClient.workspace.createApiKey({ name, scopes });
userClient.workspace.rotateApiKey(apiKeyId)
Rotates an API key secret.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
apiKeyId |
string | Yes | API key UUID | Key ID. |
Returns. New one-time secret.
const rotated = await userClient.workspace.rotateApiKey(apiKeyId);
userClient.workspace.revokeApiKey(apiKeyId)
Revokes an API key.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
apiKeyId |
string | Yes | API key UUID | Key ID. |
Returns. Revocation confirmation.
await userClient.workspace.revokeApiKey(apiKeyId);
userClient.workspace.listAudit(filters)
Lists workspace audit events.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
actor_id |
string | No | User or API key ID | Filter by actor. |
event_type |
string | No | Audit event type | Filter by event. |
from/to |
string | No | ISO 8601 | Time range. |
Returns. Audit event list.
const audit = await userClient.workspace.listAudit();
Decision config
userClient.workspace.getDecisionConfig()
Returns active workspace decision configuration.
Auth. Bearer.
Returns. Configuration record and version.
const record = await userClient.workspace.getDecisionConfig();
userClient.workspace.saveDecisionConfig(body)
Creates a new version of workspace decision configuration.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
config.actions.permissive |
array<string> | No | Workspace actions such as allow, approve | Actions interpreted as permissive. |
config.actions.restrictive |
array<string> | No | Workspace actions such as deny, reject, block | Actions interpreted as restrictive. |
config.actions.review |
array<string> | No | Workspace actions such as review, escalate | Actions interpreted as manual or deferred review. |
config.outcome_mappings |
object | No | positive, neutral, negative buckets | Maps downstream outcome values into quality semantics. |
config.quality_policy |
object | No | score weights and windows | Controls quality score calculations. |
config.observability_thresholds |
object | No | metric thresholds | Controls dashboard and alert thresholds. |
config.optimization_guardrails |
object | No | limits and safety constraints | Controls recommendation and experiment safety bounds. |
completed |
boolean | No | true, false | Marks configuration onboarding as complete. |
change_summary |
string | No | Free text | Audit summary for the configuration change. |
Returns. Saved config record.
const saved = await userClient.workspace.saveDecisionConfig(configPayload);
userClient.workspace.getDecisionConfigDefaults()
Returns default configuration values.
Auth. Bearer.
Returns. Default config object.
const defaults = await userClient.workspace.getDecisionConfigDefaults();
userClient.workspace.validateDecisionConfig(body)
Validates a proposed configuration without saving it.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
config |
object | Yes | Decision config object | Candidate config. |
Returns. Validation result with errors and warnings.
const validation = await userClient.workspace.validateDecisionConfig({ config });
userClient.workspace.previewDecisionQuality(body)
Previews quality calculations under a proposed config.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
action |
string | Yes | Workspace action | Action to score. |
outcome_type |
string | Yes | Outcome type | Outcome taxonomy. |
outcome_value |
string | Yes | Outcome value | Observed result. |
age_hours |
number | No | Positive number | Outcome age. |
Returns. Quality preview.
const preview = await userClient.workspace.previewDecisionQuality(body);
userClient.workspace.previewDecisionSimulation(body)
Previews optimization simulation behavior under a proposed config.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
recommendation_id |
string | No | Recommendation ID | Recommendation being simulated. |
simulation_type |
string | Yes | threshold_shift, routing_change, policy_change, holdout_replay | Simulation strategy. |
candidate_definition |
object | Yes | JSON object | Candidate settings to evaluate. |
sample_decision_ids |
array<string> | No | Decision IDs | Optional explicit replay sample. |
Returns. Simulation preview.
const preview = await userClient.workspace.previewDecisionSimulation(body);
userClient.workspace.getDecisionConfigCoverage()
Returns configuration coverage across observed decisions, actions, outcomes, actors, and evidence labels.
Auth. Bearer.
Returns. Coverage report.
const coverage = await userClient.workspace.getDecisionConfigCoverage();
Analytics
apiClient.analytics.dashboard(filters)
Returns high-level decision, outcome, quality, and volume metrics.
Auth. API key.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
decision_type |
string | No | Decision type | Filter by decision type. |
from/to |
string | No | ISO 8601 | Time range. |
Returns. Dashboard metrics.
const dashboard = await apiClient.analytics.dashboard();
apiClient.analytics.effectiveness(filters)
Returns effectiveness metrics by decision type and outcome.
Auth. API key.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
decision_type |
string | No | Decision type | Filter by decision type. |
Returns. Effectiveness metrics.
const effectiveness = await apiClient.analytics.effectiveness({ decision_type });
apiClient.observability.summary(filters)
Returns current observability summary metrics.
Auth. API key.
Returns. Summary metrics.
const summary = await apiClient.observability.summary();
apiClient.observability.trends(filters)
Returns trend series for observability metrics.
Auth. API key.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
metric |
string | No | volume, quality_score, latency, restrictive_action_rate, review_rate | Metric to trend. |
interval |
string | No | hour, day, week | Bucket size. |
Returns. Trend series.
const trends = await apiClient.observability.trends();
apiClient.observability.evidence(filters)
Returns evidence usage and quality information.
Auth. API key.
Returns. Evidence metrics.
const evidence = await apiClient.observability.evidence();
apiClient.observability.actors(filters)
Returns actor-level observability metrics.
Auth. API key.
Returns. Actor metrics.
const actors = await apiClient.observability.actors();
apiClient.observability.latency(filters)
Returns latency metrics for decision ingestion and processing.
Auth. API key.
Returns. Latency percentiles.
const latency = await apiClient.observability.latency();
Alerts
userClient.anomalies.list(filters)
Lists detected anomalies.
Auth. API key or bearer depending on workspace policy.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
status |
string | No | open, acknowledged, resolved | Anomaly status. |
Returns. Anomaly list.
const anomalies = await userClient.anomalies.list({ status: "open" });
userClient.anomalies.get(anomalyId)
Gets one anomaly.
Auth. API key or bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
anomalyId |
string | Yes | Anomaly UUID | Anomaly ID. |
Returns. Anomaly detail.
const anomaly = await userClient.anomalies.get(anomalyId);
userClient.anomalies.acknowledge(anomalyId)
Acknowledges an anomaly.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
anomalyId |
string | Yes | Anomaly UUID | Anomaly ID. |
Returns. Updated anomaly.
await userClient.anomalies.acknowledge(anomalyId);
userClient.anomalies.resolve(anomalyId)
Resolves an anomaly.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
anomalyId |
string | Yes | Anomaly UUID | Anomaly ID. |
Returns. Updated anomaly.
await userClient.anomalies.resolve(anomalyId);
userClient.alerts.listRules()
Lists alert rules.
Auth. Bearer.
Returns. Alert rule list.
const rules = await userClient.alerts.listRules();
userClient.alerts.createRule(body)
Creates an alert rule.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
name |
string | Yes | 1-120 characters | Alert rule display name. |
metric_name |
string | Yes | restrictive_action_rate, review_rate, anomaly_count, latency_p95, quality_score | Metric evaluated by the rule. |
threshold |
number | Yes | Numeric threshold | Value compared against the metric. |
comparison |
string | Yes | gt, gte, lt, lte, eq | Comparison operator. |
window |
string | Yes | 5m, 15m, 1h, 6h, 24h, 7d | Rolling evaluation window. |
enabled |
boolean | No | true, false | Whether the rule should evaluate immediately. |
Returns. Alert rule.
const rule = await userClient.alerts.createRule(alertRulePayload);
userClient.alerts.updateRule(ruleId, body)
Updates an alert rule.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
ruleId |
string | Yes | Alert rule UUID | Rule ID. |
name |
string | No | 1-120 characters | Alert rule display name. |
metric_name |
string | No | restrictive_action_rate, review_rate, anomaly_count, latency_p95, quality_score | Metric evaluated by the rule. |
threshold |
number | No | Numeric threshold | Value compared against the metric. |
comparison |
string | No | gt, gte, lt, lte, eq | Comparison operator. |
window |
string | No | 5m, 15m, 1h, 6h, 24h, 7d | Rolling evaluation window. |
enabled |
boolean | No | true, false | Whether the rule should evaluate immediately. |
Returns. Updated alert rule.
const rule = await userClient.alerts.updateRule(ruleId, { threshold: 30 });
userClient.alerts.disableRule(ruleId)
Disables an alert rule.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
ruleId |
string | Yes | Alert rule UUID | Rule ID. |
Returns. Updated alert rule.
await userClient.alerts.disableRule(ruleId);
userClient.alerts.enableRule(ruleId)
Enables an alert rule.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
ruleId |
string | Yes | Alert rule UUID | Rule ID. |
Returns. Updated alert rule.
await userClient.alerts.enableRule(ruleId);
userClient.alerts.listEvents(filters)
Lists alert events.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
status |
string | No | open, acknowledged, resolved | Event status. |
Returns. Alert event list.
const events = await userClient.alerts.listEvents({ status: "open" });
userClient.alerts.getEvent(eventId)
Gets one alert event.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
eventId |
string | Yes | Alert event UUID | Event ID. |
Returns. Alert event detail.
const event = await userClient.alerts.getEvent(eventId);
userClient.alerts.acknowledgeEvent(eventId)
Acknowledges an alert event.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
eventId |
string | Yes | Alert event UUID | Event ID. |
Returns. Updated alert event.
await userClient.alerts.acknowledgeEvent(eventId);
userClient.alerts.resolveEvent(eventId)
Resolves an alert event.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
eventId |
string | Yes | Alert event UUID | Event ID. |
Returns. Updated alert event.
await userClient.alerts.resolveEvent(eventId);
Intelligence
apiClient.intelligence.decisionQuality(decisionId)
Returns quality details for one decision.
Auth. API key.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
decisionId |
string | Yes | Decision UUID | Decision ID. |
Returns. Decision quality details.
const quality = await apiClient.intelligence.decisionQuality(decisionId);
apiClient.intelligence.qualitySummary(filters)
Returns quality summary metrics.
Auth. API key.
Returns. Quality summary.
const summary = await apiClient.intelligence.qualitySummary();
apiClient.intelligence.qualityTrends(filters)
Returns quality trend series.
Auth. API key.
Returns. Quality trend series.
const trends = await apiClient.intelligence.qualityTrends();
apiClient.intelligence.evidenceCorrelation(filters)
Returns correlations between evidence and outcomes.
Auth. API key.
Returns. Correlation metrics.
const correlation = await apiClient.intelligence.evidenceCorrelation();
apiClient.intelligence.compareActors(filters)
Compares decision actors.
Auth. API key.
Returns. Actor comparison.
const comparison = await apiClient.intelligence.compareActors();
apiClient.intelligence.patterns(filters)
Returns repeated decision patterns.
Auth. API key.
Returns. Pattern list.
const patterns = await apiClient.intelligence.patterns();
userClient.intelligence.segments()
Lists intelligence segments.
Auth. Bearer.
Returns. Segment list.
const segments = await userClient.intelligence.segments();
userClient.intelligence.createSegment(body)
Creates a segment.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
name |
string | Yes | 1-120 characters | Segment display name. |
filter |
object | Yes | JSON filter over decision, subject, actor, context, evidence, outcome fields | Criteria that define the segment. |
Returns. Segment record.
const segment = await userClient.intelligence.createSegment(segmentPayload);
userClient.intelligence.updateSegment(segmentId, body)
Updates a segment.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
segmentId |
string | Yes | Segment UUID | Segment ID. |
name |
string | No | 1-120 characters | Segment display name. |
filter |
object | No | JSON filter over decision, subject, actor, context, evidence, outcome fields | Criteria that define the segment. |
Returns. Updated segment.
const segment = await userClient.intelligence.updateSegment(segmentId, { name });
userClient.intelligence.segmentDetail(segmentId)
Returns segment detail.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
segmentId |
string | Yes | Segment UUID | Segment ID. |
Returns. Segment detail.
const segment = await userClient.intelligence.segmentDetail(segmentId);
userClient.intelligence.qualityDrift(filters)
Lists quality drift items.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
status |
string | No | open, acknowledged, resolved | Drift status. |
Returns. Drift list.
const drift = await userClient.intelligence.qualityDrift({ status: "open" });
userClient.intelligence.qualityDriftById(driftId)
Gets one quality drift item.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
driftId |
string | Yes | Drift UUID | Drift ID. |
Returns. Drift detail.
const drift = await userClient.intelligence.qualityDriftById(driftId);
userClient.intelligence.acknowledgeQualityDrift(driftId)
Acknowledges a quality drift item.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
driftId |
string | Yes | Drift UUID | Drift ID. |
Returns. Updated drift item.
await userClient.intelligence.acknowledgeQualityDrift(driftId);
userClient.intelligence.resolveQualityDrift(driftId)
Resolves a quality drift item.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
driftId |
string | Yes | Drift UUID | Drift ID. |
Returns. Updated drift item.
await userClient.intelligence.resolveQualityDrift(driftId);
userClient.intelligence.outcomeInterpretationRules()
Lists outcome interpretation rules.
Auth. Bearer.
Returns. Outcome rule list.
const rules = await userClient.intelligence.outcomeInterpretationRules();
userClient.intelligence.createOutcomeInterpretationRule(body)
Creates an outcome interpretation rule.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
outcome_type |
string | Yes | Outcome type | Outcome taxonomy. |
outcome_value |
string | Yes | Outcome value | Outcome value. |
interpretation_bucket |
string | Yes | positive_resolution, negative_resolution, neutral, unresolved | Semantic bucket. |
quality_impact |
string | Yes | strongly_positive, positive, neutral, negative, strongly_negative | Quality score effect. |
Returns. Outcome rule.
const rule = await userClient.intelligence.createOutcomeInterpretationRule(rulePayload);
userClient.intelligence.updateOutcomeInterpretationRule(ruleId,
body)
Updates an outcome interpretation rule.
Auth. Bearer.
Returns. Updated outcome rule.
const rule = await userClient.intelligence.updateOutcomeInterpretationRule(ruleId, { quality_impact: "positive" });
userClient.intelligence.disableOutcomeInterpretationRule(ruleId)
Disables an outcome interpretation rule.
Auth. Bearer.
Returns. Updated outcome rule.
await userClient.intelligence.disableOutcomeInterpretationRule(ruleId);
userClient.intelligence.enableOutcomeInterpretationRule(ruleId)
Enables an outcome interpretation rule.
Auth. Bearer.
Returns. Updated outcome rule.
await userClient.intelligence.enableOutcomeInterpretationRule(ruleId);
Optimization
userClient.optimization.opportunities(filters)
Lists optimization opportunities.
Auth. Bearer.
Returns. Opportunity list.
const opportunities = await userClient.optimization.opportunities();
userClient.optimization.opportunity(opportunityId)
Gets one optimization opportunity.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
opportunityId |
string | Yes | Opportunity UUID | Opportunity ID. |
Returns. Opportunity detail.
const opportunity = await userClient.optimization.opportunity(opportunityId);
userClient.optimization.recommendations(filters)
Lists recommendations.
Auth. Bearer.
Returns. Recommendation list.
const recommendations = await userClient.optimization.recommendations();
userClient.optimization.createRecommendation(body)
Creates a recommendation.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
opportunity_id |
string | No | Optimization opportunity ID | Opportunity this recommendation responds to. |
recommendation_type |
string | Yes | threshold_increase, threshold_decrease, routing_change, evidence_addition, policy_change, experiment | The optimization action being proposed. |
target_scope |
object | Yes | { type, key } | Decision type, segment, actor, or policy area affected. |
proposed_change |
object | Yes | JSON object | Candidate change to test or roll out. |
status |
string | No | draft, reviewing, approved, rejected, archived | Review lifecycle status. |
Returns. Recommendation record.
const recommendation = await userClient.optimization.createRecommendation(recommendationPayload);
userClient.optimization.recommendation(recommendationId)
Gets one recommendation.
Auth. Bearer.
Returns. Recommendation detail.
const detail = await userClient.optimization.recommendation(recommendationId);
userClient.optimization.updateRecommendation(recommendationId,
body)
Updates a recommendation.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
opportunity_id |
string | No | Optimization opportunity ID | Opportunity this recommendation responds to. |
recommendation_type |
string | No | threshold_increase, threshold_decrease, routing_change, evidence_addition, policy_change, experiment | The optimization action being proposed. |
target_scope |
object | No | { type, key } | Decision type, segment, actor, or policy area affected. |
proposed_change |
object | No | JSON object | Candidate change to test or roll out. |
status |
string | No | draft, reviewing, approved, rejected, archived | Review lifecycle status. |
Returns. Updated recommendation.
const recommendation = await userClient.optimization.updateRecommendation(id, { status: "reviewing" });
userClient.optimization.reviewRecommendation(recommendationId,
body)
Adds a review note and moves a recommendation into review.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
review_note |
string | No | Free text | Review note. |
Returns. Updated recommendation.
await userClient.optimization.reviewRecommendation(id, { review_note });
userClient.optimization.approveRecommendation(recommendationId)
Approves a recommendation.
Auth. Bearer.
Returns. Updated recommendation.
await userClient.optimization.approveRecommendation(id);
userClient.optimization.rejectRecommendation(recommendationId,
body)
Rejects a recommendation.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
reason |
string | No | Free text | Rejection reason. |
Returns. Updated recommendation.
await userClient.optimization.rejectRecommendation(id, { reason });
userClient.optimization.archiveRecommendation(recommendationId)
Archives a recommendation.
Auth. Bearer.
Returns. Updated recommendation.
await userClient.optimization.archiveRecommendation(id);
userClient.optimization.simulations(filters)
Lists simulations.
Auth. Bearer.
Returns. Simulation list.
const simulations = await userClient.optimization.simulations();
userClient.optimization.createSimulation(body)
Creates a simulation.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
recommendation_id |
string | No | Recommendation ID | Recommendation being simulated. |
simulation_type |
string | Yes | threshold_shift, routing_change, policy_change, holdout_replay | Simulation strategy. |
candidate_definition |
object | Yes | JSON object | Candidate settings to evaluate. |
sample_decision_ids |
array<string> | No | Decision IDs | Optional explicit replay sample. |
Returns. Simulation record.
const simulation = await userClient.optimization.createSimulation(simulationPayload);
userClient.optimization.simulation(simulationId)
Gets one simulation.
Auth. Bearer.
Returns. Simulation detail.
const simulation = await userClient.optimization.simulation(simulationId);
userClient.optimization.experiments(filters)
Lists experiments.
Auth. Bearer.
Returns. Experiment list.
const experiments = await userClient.optimization.experiments();
userClient.optimization.createExperiment(body)
Creates an experiment.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
recommendation_id |
string | No | Recommendation ID | Recommendation being tested. |
simulation_id |
string | No | Simulation ID | Simulation supporting the experiment. |
name |
string | Yes | 1-120 characters | Experiment name. |
traffic_percentage |
number | No | 0-100 | Traffic allocated to candidate behavior. |
guardrails |
object | No | JSON object | Quality, latency, and business constraints. |
Returns. Experiment record.
const experiment = await userClient.optimization.createExperiment(experimentPayload);
userClient.optimization.experiment(experimentId)
Gets one experiment.
Auth. Bearer.
Returns. Experiment detail.
const experiment = await userClient.optimization.experiment(experimentId);
userClient.optimization.updateExperiment(experimentId,
body)
Updates an experiment.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
recommendation_id |
string | No | Recommendation ID | Recommendation being tested. |
simulation_id |
string | No | Simulation ID | Simulation supporting the experiment. |
name |
string | No | 1-120 characters | Experiment name. |
traffic_percentage |
number | No | 0-100 | Traffic allocated to candidate behavior. |
guardrails |
object | No | JSON object | Quality, latency, and business constraints. |
Returns. Updated experiment.
const experiment = await userClient.optimization.updateExperiment(id, { name });
userClient.optimization.approveExperiment(experimentId)
Approves an experiment.
Auth. Bearer.
Returns. Updated experiment.
await userClient.optimization.approveExperiment(id);
userClient.optimization.startExperiment(experimentId)
Starts an experiment.
Auth. Bearer.
Returns. Updated experiment.
await userClient.optimization.startExperiment(id);
userClient.optimization.pauseExperiment(experimentId)
Pauses an experiment.
Auth. Bearer.
Returns. Updated experiment.
await userClient.optimization.pauseExperiment(id);
userClient.optimization.stopExperiment(experimentId)
Stops an experiment.
Auth. Bearer.
Returns. Updated experiment.
await userClient.optimization.stopExperiment(id);
userClient.optimization.completeExperiment(experimentId,
body)
Completes an experiment.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
summary |
string | No | Free text | Completion summary. |
Returns. Updated experiment.
await userClient.optimization.completeExperiment(id, { summary });
userClient.optimization.experimentSnapshots(experimentId)
Lists experiment snapshots.
Auth. Bearer.
Returns. Snapshot list.
const snapshots = await userClient.optimization.experimentSnapshots(id);
userClient.optimization.rolloutDecisions(filters)
Lists rollout decisions.
Auth. Bearer.
Returns. Rollout decision list.
const rollouts = await userClient.optimization.rolloutDecisions();
userClient.optimization.createRolloutDecision(body)
Creates a rollout decision.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
experiment_id |
string | No | Experiment ID | Experiment informing the rollout decision. |
decision |
string | Yes | rollout, hold, rollback, continue_experiment | Rollout action. |
reason |
string | No | Free text | Reviewer rationale. |
Returns. Rollout decision record.
const rollout = await userClient.optimization.createRolloutDecision(rolloutPayload);
userClient.optimization.rolloutDecision(rolloutDecisionId)
Gets one rollout decision.
Auth. Bearer.
Returns. Rollout decision detail.
const rollout = await userClient.optimization.rolloutDecision(id);
userClient.optimization.impact(filters)
Returns impact summaries.
Auth. Bearer.
Returns. Impact summary.
const impact = await userClient.optimization.impact();
userClient.optimization.impactByEntity(entityType,
entityId)
Returns impact for a recommendation, simulation, experiment, or rollout decision.
Auth. Bearer.
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
entityType |
string | Yes | recommendation, simulation, experiment, rollout_decision | Entity type. |
entityId |
string | Yes | Entity UUID | Entity ID. |
Returns. Entity impact.
const impact = await userClient.optimization.impactByEntity("recommendation", id);
userClient.optimization.audit(filters)
Returns optimization audit events.
Auth. Bearer.
Returns. Audit event list.
const audit = await userClient.optimization.audit();
Errors and retries
| Key | Type | Required | Values / format | Description |
|---|---|---|---|---|
ValidationError |
Error | No | Client-side validation | Payload is missing required data or has an invalid known field. |
ApiError |
Error | No | HTTP 4xx/5xx response | Includes status, code, details, request ID, and correlation ID. |
TransportError |
Error | No | Network failure | Network or connection failure after retries. |
RetryExhaustedError |
Error | No | Retry budget consumed | Retries exhausted for retryable failures. |
Retry behavior: 5xx and connection errors retry with jittered exponential backoff capped at 30 seconds. 4xx validation and authorization responses fail immediately.