Triggers

Explicit trigger (button)

triggers ({ on }) {
  return on('manual')
    .for('compose:record')
    .uiProp('app', 'compose')
},
triggers ({ on }) {
  return on('manual')
    .for('compose:record')
    .where('module', 'Module1')
    .uiProp('app', 'compose')
},

Implicit trigger (automatic)

// Before something
triggers ({ before }) {
  // You can pass in multiple events: create, update, delete
  return before('create', 'update')
      .for('compose:record')
      .where('module', 'Module1')
},

// After something
triggers ({ after }) {
  // You can pass in multiple events: create, update, delete
  return after('create', 'update')
      .for('compose:record')
      .where('module', 'Module1')
},

// After where record value 'Name' is 'John'
triggers ({ after }) {
  return after('create', 'update')
      .where('module', 'Module1')
      .where('record.values.Name', 'John')
},

// After user is created/updated, where email ends with @corteza.com
triggers ({ after }) {
  return after('create', 'update')
      .for('system:user')
      .where('user.email', '^[a-zA-Z0-9]{1,20}@corteza.com$')
},

Deferred (interval)

// Every day at 2AM
triggers ({ on }) {
  return on('interval')
    .every('0 2 * * *')
},

// Every 4th month at 12:00 AM
triggers ({ on }) {
  return on('interval')
    .every('00 12 1 */4 *')
},

Deferred (timestamp)

// On christmas eve
triggers ({ at }) {
    // You can pass multiple timestamps (timestamp1, timestamp2, ..., timestampN)
  return at('2020-12-24T21:00:00Z')
},

On HTTP request

// When POST request on a certain path is recieved
triggers ({ on }) {
  return on('request')
    .where('request.path', '/some/path/here')
    // HTTP protocol; GET, POST, PUT, PATCH, DELETE
    .where('request.method', 'POST')
    .for('system:sink'),
},

// If request.headers authorization is empty
triggers ({ on }) {
  return on('request')
    .where('request.path', '/some/path/here')
    // HTTP protocol; GET, POST, PUT, PATCH, DELETE
    .where('request.headers.authorization', '')
    .for('system:sink'),
},