067e19fec9
* Attach webhook to http endpoint * Create internal webhook handler job * Fix delivery * Add webhook trigger * Index webhooks * Fix webhook connect * Webhook activation * Rename to TriggerWebhook * Save webhooks to index * Extend register payload * Revert attachSource * Add update webhook helper * Use crud interface for registration * Remove filter from params * Destructure options * Missing ohash dep * Chainable trigger filter * Optional request verification * Handler call with context * Update config on register success * Rename to webhookData * Add basic key-value store * Improve kv store * Webhook trigger UI * Webhook delivery UI * Some fixes * Airtable experiments * Fix tabs transitions * Only run register if config differs * Use subtasks for delivery * Missing dep * Error handing and fixes * Namespace cursor * Fix hmac verification * Gut Airtable * Lockfile * Template optional api key * Template event sources and icons * Template remove filter from params * Fix models template * Template fixme * Fix webhook trigger header * Actually send params for registration.. * Add back oauthed client * Verify signature header encoding param * Fix delivery context * Webhook create retry with prior delete * Webhook source type fixes * Webhook config merge * Update webhook icon * Verify webhook task options * Rename handler to generateEvents * Send event icons * Shopify with webhooks * Shopify job-catalog entry * Lockfile * Add webhook migration * Better icons * Type fixes * Make param type optional * Scope type * More examples * More schemas * Trigger catalog * Bump versions * Just a few more events they said * Simplify session and config * Typed serializer * Fix payload type * Remove unused getters * Reduce logging output * Rest resource tasks * Lockfile * Bump version * Remaining triggers * Fix event types * Fix import * Link from webhook trigger to http endpoint * Use rest resource tasks for crud * Fix rest save type * Improve KV types * Improve attach webhook logging * Make header schema more lenient * Fix save type again * Final error callback * Shorten keys * Remove ohash diff * Disable Airtable webhooks * Webhook environments * Fix shopify error import * Link to integration and http endpoint * Integration catalog entry * Disable oauth * Require api key, simplify client secret * Move trigger types * Update catalog example * Small KV endpoint refactor * Fix custom migration * Webhook environment migration * Improve crud types * Remove unused schema * Fix crud context type * KV limits and HTTP verbs * KV improvements * Jobless webhook delivery * Airtable delivery fixes * Make deliveries sexy again * Some docs * Fix payload types.. again * Final payload pass * Schema cleanup * Refactor handler service * Remove more stale schemas * registerJobNamespace import * Expose KV on TriggerClient * Remove dummy click handler * Remove unused components * Fix delivery pagination * Enable registration rerun button * Comment out registration route action handler * Rename KV as not tied to IO anymore * Swap api with trigger client * Disabled fields param * KV docs * Changeset * Shopify docs fixes
103 lines
4.9 KiB
Plaintext
103 lines
4.9 KiB
Plaintext
---
|
|
title: "IO: Overview"
|
|
sidebarTitle: "Overview"
|
|
description: "The second parameter in a Job's `run()` function. It holds Integrations and useful actions you can perform."
|
|
---
|
|
|
|
## Integrations
|
|
|
|
Any Integrations that you added in the `integrations` param of the [Job constructor](/sdk/job) will be available on the `io` object in the `run()` function with the same name as the key. For example:
|
|
|
|
<Accordion title="How to pass in Integrations">
|
|
<Snippet file="how-to-pass-integrations.mdx" />
|
|
</Accordion>
|
|
|
|
View [the Integrations documentation](/integrations) for information on how to use Integrations.
|
|
|
|
## Properties
|
|
|
|
### [logger](/sdk/io/logger)
|
|
|
|
Used to send log messages to the [Run log](/documentation/guides/viewing-runs).
|
|
|
|
### [store](/sdk/io/store)
|
|
|
|
Exposes namespaced [Key-Value Stores](/sdk/io/store) you can access inside of your Jobs.
|
|
|
|
## Instance methods
|
|
|
|
### [runTask()](/sdk/io/runtask)
|
|
|
|
`io.runTask()` allows you to run a [Task](/documentation/concepts/tasks) from inside a Job run. A Task is a resumable unit of a Run that can be retried, resumed and is logged. [Integrations](/integrations) use Tasks internally to perform their actions.
|
|
|
|
### [sendEvent()](/sdk/io/sendevent)
|
|
|
|
`io.sendEvent()` allows you to send an event from inside a Job run. The sent even will trigger any Jobs that are listening for that event (based on the name).
|
|
|
|
If you want to send an event from outside a run (e.g. just from your backend) you can use [client.sendEvent()](/sdk/triggerclient/instancemethods/sendevent).
|
|
|
|
### [wait()](/sdk/io/wait)
|
|
|
|
Waits for a certain amount of time before continuing the Job. Delays works even if you're on a serverless platform with timeouts, or if your server goes down. They utilize [resumability](/documentation/concepts/resumability) to ensure that the Run can be resumed after the delay.
|
|
|
|
### [waitForEvent()](/sdk/io/wait-for-event)
|
|
|
|
`io.waitForEvent()` allows you to pause the execution of a run until an event is received, and receive the event data.
|
|
|
|
### [waitForRequest()](/sdk/io/wait-for-request)
|
|
|
|
`io.waitForRequest()` allows you to pause the execution of a run until the provided URL is requested, and receive the request data.
|
|
|
|
### [sendEvents()](/sdk/io/sendevents)
|
|
|
|
`io.sendEvents()` allows you to send multiple events from inside a Job run. The sent events will trigger any Jobs that are listening for those events (based on the name).
|
|
|
|
If you want to send multiple events from outside a run (e.g. just from your backend) you can use [client.sendEvents()](/sdk/triggerclient/instancemethods/sendevents).
|
|
|
|
### [backgroundFetch()](/sdk/io/backgroundfetch)
|
|
|
|
`io.backgroundFetch()` allows you to fetch data from a URL that can take longer that the serverless timeout. The actual `fetch` request is performed on the Trigger.dev platform, and the response is sent back to you. An example use case is fetching data from a slow API, like some AI endpoints.
|
|
|
|
### [backgroundPoll()](/sdk/io/background-poll)
|
|
|
|
`io.backgroundPoll()` allows you to fetch data from a URL on an interval, in the background.
|
|
|
|
### [random()](/sdk/io/random)
|
|
|
|
`io.random()` is identical to `Math.random()` when called without options but ensures your random numbers are not regenerated on resume or retry. It will return a pseudo-random floating-point number between optional `min` (default: 0, inclusive) and `max` (default: 1, exclusive). Can optionally `round` to the nearest integer.
|
|
|
|
### [try()](/sdk/io/try)
|
|
|
|
`io.try()` allows you to run Tasks and catch any errors that are thrown, it's similar to a normal `try/catch` block but works with [io.runTask()](/sdk/io/runtask).
|
|
|
|
### [registerInterval()](/sdk/io/registerinterval)
|
|
|
|
`io.registerInterval()` allows you to register a [DynamicSchedule](/sdk/dynamicschedule) that will run on a regular interval.
|
|
|
|
### [unregisterInterval()](/sdk/io/unregisterinterval)
|
|
|
|
`io.unregisterInterval()` allows you to unregister a [DynamicSchedule](/sdk/dynamicschedule) that was previously registered with `io.registerInterval()`.
|
|
|
|
### [registerCron()](/sdk/io/registercron)
|
|
|
|
`io.registerCron()` allows you to register a [DynamicSchedule](/sdk/dynamicschedule) that will run on a regular cron schedule.
|
|
|
|
### [unregisterCron()](/sdk/io/unregistercron)
|
|
|
|
`io.unregisterCron()` allows you to unregister a [DynamicSchedule](/sdk/dynamicschedule) that was previously registered with `io.registerCron()`.
|
|
|
|
### [registerTrigger()](/sdk/io/registertrigger)
|
|
|
|
`io.registerTrigger()` allows you to register a [DynamicTrigger](/sdk/dynamictrigger) with the specified trigger data.
|
|
|
|
### yield()
|
|
|
|
`io.yield()` allows you to yield the current run and resume it immediately in a different function execution context. Requires a single argument that defines the yield key which works similar to task keys.
|
|
|
|
### brb()
|
|
|
|
`io.brb()` is is alias for `io.yield()`.
|
|
|
|
{/* ### [unregisterTrigger()](/sdk/io/unregistertrigger) */}
|
|
{/* `io.unregisterTrigger()` allows you to unregister a [DynamicTrigger](/sdk/dynamictrigger) that was previously registered with `io.registerTrigger()`. */}
|