Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/iii-hq/sdk/llms.txt

Use this file to discover all available pages before exploring further.

Triggers allow functions to be invoked automatically when certain events occur. The III SDK provides types for configuring triggers and implementing trigger handlers.

TriggerConfig

Configuration passed to a trigger handler when a trigger is registered.
type TriggerConfig<TConfig> = {
  id: string
  function_id: string
  config: TConfig
}

Fields

id
string
required
Unique identifier for this trigger instance.
function_id
string
required
The function to invoke when the trigger fires.
config
TConfig
required
Custom configuration specific to this trigger type.

TriggerHandler

Interface for implementing custom trigger types.
type TriggerHandler<TConfig> = {
  registerTrigger(config: TriggerConfig<TConfig>): Promise<void>
  unregisterTrigger(config: TriggerConfig<TConfig>): Promise<void>
}

Methods

registerTrigger
function
required
Called when a trigger of this type is registered. Should set up the necessary resources or listeners.
unregisterTrigger
function
required
Called when a trigger is unregistered. Should clean up resources and stop listeners.

RegisterTriggerMessage

Message format for registering a trigger with the engine.
type RegisterTriggerMessage = {
  message_type: MessageType.RegisterTrigger
  id: string
  type: string
  function_id: string
  config: unknown
}

Fields

id
string
required
Unique identifier for this trigger instance (auto-generated).
type
string
required
The trigger type identifier (e.g., "http", "cron", "custom::event").
function_id
string
required
The function to invoke when this trigger fires.
config
any
required
Configuration specific to the trigger type.

Example: Custom Trigger Type

type TimerConfig = {
  interval_ms: number
}

const timerHandler: TriggerHandler<TimerConfig> = {
  async registerTrigger(config) {
    const timer = setInterval(async () => {
      await iii.trigger(config.function_id, { timestamp: Date.now() })
    }, config.config.interval_ms)
    
    // Store timer for cleanup
    timers.set(config.id, timer)
  },
  
  async unregisterTrigger(config) {
    const timer = timers.get(config.id)
    if (timer) {
      clearInterval(timer)
      timers.delete(config.id)
    }
  }
}

iii.registerTriggerType(
  { id: 'timer', description: 'Periodic timer trigger' },
  timerHandler
)

Build docs developers (and LLMs) love