A Job is used to define the Trigger, metadata, and what happens when it runs.

You can define a job in one of two ways, using the new Job constructor or by using the TriggerClient.defineJob instance method.

new Job(client, {
  id: "slack-kpi-summary",
  name: "Slack kpi summary",
  version: "0.1.1",
  integrations: {
    slack,
  },
  trigger: cronTrigger({
    cron: "0 9 * * *", // 9am every day (UTC)
  }),
  run: async (payload, io, ctx) => {
    const { revenue } = await db.getKpiSummary(payload.ts);
    const response = await io.slack.postMessage("Slack 📝", {
      text: `Yesterday's revenue was $${revenue}`,
      channel: "C04GWUTDC3W",
    });

    return response;
  },
});

Constructor

Parameters

clientrequired
object

An instance of TriggerClient that is used to send events to the Trigger API.

optionsrequired
object
idrequired
string

The id property is used to uniquely identify the Job. Only change this if you want to create a new Job.

namerequired
string

The name of the Job that you want to appear in the dashboard and logs. You can change this without creating a new Job.

versionrequired
string

The version property is used to version your Job. A new version will be created if you change this property. We recommend using semantic versioning, e.g. 1.0.3.

triggerrequired
object

The trigger property is used to define when the Job should run. There are currently the following Trigger types:

runrequired
function

This function gets called automatically when a Run is Triggered. It has three parameters:

  1. payload – The payload that was sent to the Trigger API.
  2. io – An object that contains the integrations that you specified in the integrations property and other useful functions like delays and running Tasks.
  3. context – An object that contains information about the Organization, Job, Run and more.

This is where you put the code you want to run for a Job. You can use normal code in here and you can also use Tasks.

You can return a value from this function and it will be sent back to the Trigger API.

integrations
object

Imports the specified integrations into the Job. The integrations will be available on the io object in the run() function with the same name as the key. For example:

client.defineJob({
  //... other options
  integrations: {
    slack,
    gh: github,
  },
  run: async (payload, io, ctx) => {
    //slack is available on io.slack
    io.slack.postMessage(...);
    //github is available on io.gh
    io.gh.addIssueLabels(...);
  }
});
enabled
boolean

The enabled property is an optional property that specifies whether the Job is enabled or not. The Job will be enabled by default if you omit this property. When a job is disabled, no new runs will be triggered or resumed. In progress runs will continue to run until they are finished or delayed by using io.wait.

logLevel
log | error | warn | info | debug

The logLevel property is an optional property that specifies the level of logging for the Job. The level is inherited from the client if you omit this property.

  • log - logs only essential messages
  • error - logs error messages
  • warn - logs errors and warning messages
  • info - logs errors, warnings and info messages
  • debug - logs everything with full verbosity

Returns

Job instance
Job