//this Job subscribes to an event called new.user
export const exampleJob = client.defineJob({
  id: "example-job",
  name: "Example job",
  version: "1.0.1",
  trigger: invokeTrigger({
    //the expected payload shape
    schema: z.object({
      userId: z.string(),
      tier: z.union([z.literal("free"), z.literal("pro")]),
    }),
    //(optional) example payload object
    examples: [
      {
        id: "issue.opened",
        name: "Issue opened",
        payload: {
          userId: "1234",
          tier: "free",
        },
        //optional
        icon: "github",
      },
    ],
  }),
  run: async (payload, io, ctx) => {
    // do something with the payload
  },
});

Setting invokeTrigger() on a job allows you to manually trigger the job using Job.invoke(), either from your backend or from inside another job. See our Invoke Trigger guide for more info.

Parameters

options
object
required
schema
object

A Zod schema that defines the shape of the job payload. The default is z.any() which is any. This will be used to correctly type the Job.invoke() method.

examples
array

Used to provide example payloads that are accepted by the job.

This will be available in the dashboard and can be used to trigger test runs.

id
string
required

The example’s ID.

name
string
required

The name that’s displayed in the dashboard.

payload
object
required

The payload that’s accepted by the job.

icon
string

The icon to use for this example in the dashboard.