Documentation Index
Fetch the complete documentation index at: https://mintlify.com/pixlcore/xyops/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Triggers in xyOps define when and how an event (or workflow) is allowed to run jobs. You compose one or more triggers on an event to describe automatic schedules, one-time launches, manual control, blackout windows, and optional behaviors like catch-up, delays, and sub-minute precision. The scheduler evaluates triggers once per minute (with optional second-level precision), launches matching jobs, and enforces any options.Each trigger is a small definition object with two core fields:
enabled and type. Extra fields depend on the type.Trigger Types
xyOps supports several trigger types that can be combined:- Launching Triggers:
manual,schedule,interval,single,magic,keyboard,startup - Modifier Triggers:
catchup,range,blackout,delay,precision,quiet,plugin
Manual Run
Allow the event to be launched on demand by users (UI) and API keys (API). Does not produce automatic runs.Schedule
Define a repeating schedule similar to Unix Cron using arrays of years, months, days, weekdays, hours, and minutes. Omitted fields mean “all” in that category.Parameters
| Name | Type | Description |
|---|---|---|
years | Array(Number) | Years in YYYY format |
months | Array(Number) | Months 1-12 (Jan=1, Dec=12) |
days | Array(Number) | Month days 1-31, or reverse days −1 to −7 |
weekdays | Array(Number) | Weekdays 0-6 (Sun=0, Sat=6) |
hours | Array(Number) | Hours 0-23 (24-hour clock) |
minutes | Array(Number) | Minutes 0-59 |
timezone | String | IANA timezone (defaults to server timezone) |
params | Object | Parameter overrides for event/plugin |
tags | Array | Tag IDs to add to job on start |
Examples
Twice Daily
Twice Daily
Run at 4:30 AM and 4:30 PM in New York:
Last Day of Month
Last Day of Month
Run on last day of every month at 23:55:
Weekday Mornings
Weekday Mornings
Run Monday-Friday at 9:00 AM:
Reverse month days allow “last day of month” style expressions: −1 = last day, −2 = second-to-last, etc.
Interval
Run the event on a fixed interval starting from a specific epoch. Timezone-agnostic and can launch multiple jobs within the current minute at second offsets.Parameters
| Name | Type | Description |
|---|---|---|
start | Number | Start time as Unix timestamp (seconds) |
duration | Number | Interval length in seconds (must be > 0) |
params | Object | Parameter overrides |
tags | Array | Tag IDs to add to job |
Example
Every 90 seconds starting at a specific time:Single Shot
Launch exactly once at the specified absolute timestamp.Magic Link
Generates a unique URL to start a job from a web request (incoming webhook). Authentication is built into the URL via a unique cryptographic token.Parameters
| Name | Type | Description |
|---|---|---|
key | String | Plain text key (client supplies, server hashes) |
token | String | Hashed token stored on server (generated from key) |
body | String | Custom Markdown for landing page |
- Direct link: Simple URL request (response is JSON)
- Landing page: Standalone HTML page for providing parameters and uploading files
Query string and POST parameters are passed directly into
Job.params for the running job.Keyboard
Bind the event to keyboard shortcuts so users can run jobs by hitting a key combo while logged into the UI.Parameters
| Name | Type | Description |
|---|---|---|
keys | Array | Keyboard shortcuts (e.g., ["ControlLeft+KeyA"]) |
watch | Boolean | Redirect to Job Details page on start |
params | Object | Parameter overrides |
tags | Array | Tag IDs to add |
Startup
Automatically run a job when xyOps starts up (process uptime < 5 minutes, avoiding failover runs).It’s highly recommended to add a Max Queue Limit when using startup triggers to ensure jobs queue if no target servers are available.
Catch-Up
Ensure events always run on schedule, even after downtime. When enabled, xyOps executes all scheduled jobs including missed ones.How It Works
Catch-up mode maintains a “cursor” in the database for every event:Cursor Advances
When a job runs on schedule, the cursor advances to the next minute, stopping at current time
Use Cases for Catch-Up
Use Cases for Catch-Up
- Shutting down the xyOps service
- Pausing the scheduler
- Disabling the scheduler or triggers
- Disabling the entire event
Range
Restrict scheduling to a date/time window. Prevents launches beforestart and after end. Endpoints are inclusive.
Parameters
| Name | Type | Description |
|---|---|---|
start | Number | Earliest allowed time (Unix seconds) |
end | Number | Latest allowed time (Unix seconds) |
Ranges may be open or closed. You can specify only
start, only end, or both. If both are set, start must be ≤ end.Blackout
Prevent any automatic launches during a specific date/time window. Useful for maintenance windows or holidays.Delay
Add a starting delay to all scheduler-launched jobs. Mutually exclusive withinterval and precision.
Precision
Launch within the scheduled minute at specific second offsets. Achieves sub-minute starts. Mutually exclusive withinterval and delay.
Multiple jobs may be launched in a single minute at the listed seconds.
Quiet
Configure jobs to run silently (invisible to UI) and/or ephemeral (self-delete upon completion).Parameters
| Name | Type | Description |
|---|---|---|
invisible | Boolean | Hide from UI (upcoming, queued, and running) |
ephemeral | Boolean | Auto-delete jobs upon completion |
Quiet Mode Behaviors
Quiet Mode Behaviors
- Invisible mode: Affects running, queued, and upcoming jobs in UI (still accessible via API)
- Ephemeral mode: Automatically disables if job produces output files
- Both modes pass down to child sub-jobs in workflows
Plugin
Use a custom Trigger Plugin to decide whether to launch a job or not. The plugin runs with configured parameters and returns a launch/no-launch decision.Parameters
| Name | Type | Description |
|---|---|---|
plugin_id | String | ID of configured Plugin of type scheduler |
params | Object | Plugin-defined configuration |
timezone | String | Timezone context for plugin |
At a high level, xyOps invokes the plugin once per scheduled run with context, and launches jobs if the plugin indicates so. Plugins can also request per-launch delay and provide input data/files.
Composition Rules
Some combinations are restricted to keep scheduling unambiguous:Uniqueness (Enabled)
Only one of each per event:manualcatchuprangeprecisiondelay
Mutual Exclusions (Enabled)
intervalandprecisionare mutually exclusiveintervalanddelayare mutually exclusiveprecisionanddelayare mutually exclusive
Launching Triggers
Only these produce launches:manualscheduleintervalsingle
Modifiers
- Range triggers only allow launches between start and end date/time
- Blackout triggers disallow launches between start and end date/time
- You may add multiple ranges and blackouts
Scheduler Implementation
The scheduler evaluates triggers every minute:Workflows and Triggers
Workflows use the same event trigger system. When a scheduled workflow launches, the scheduler records which trigger initiated the start so the workflow can reference it internally.Validation
When you save or run an event, xyOps validates triggers:- Types and required parameters must be present and well-formed
- Ranges:
start≤endwhere applicable - Blackout requires both start and end
- Schedule lists must contain numbers in valid ranges
- Enabled uniqueness and mutual exclusion rules are enforced
Related Documentation
Events
Learn about event configuration
Actions
Configure job completion actions
Limits
Set resource constraints
Workflows
Build visual job orchestration