{ "$id": "schedule-trigger-common", "description": "Type definitions for all Schedule Trigger formats.", "definitions": { "commonFieldNames": { "enum": [ "formData", "formSchemaHash", "legacyWrapper", "firstRunAt", "nextRunAt", "stopRunningAt", "lastIntervalStart", "processMissedRuns", "locked", "waitFlag", "repeat" ] }, "commonFields": { "type": "object", "properties": { "type": { "const": "schedule" }, "formData": { "$ref": "trigger-common#/definitions/formData" }, "formSchemaHash": { "$ref": "trigger-common#/definitions/formSchemaHash" }, "legacyWrapper": { "description": "A boolean determining whether form data is wrapped in a 'formData' property", "type": "boolean" }, "firstRunAt": { "description": "A timestamp in milliseconds for the first scheduled run of this Trigger.", "type": "integer", "minimum": 0 }, "nextRunAt": { "description": "A timestamp in milliseconds for the next scheduled run of this Trigger.", "oneOf": [ { "type": "integer", "minimum": 0 }, { "type": "null" } ], "example": 1648829216268 }, "stopRunningAt": { "description": "A millisecond resolution timestamp denoting when to stop this schedule. This is calculated using repeatEnd and lastIntervalStart.", "oneOf": [ { "type": "integer", "minimum": 0 }, { "type": "null" } ] }, "lastIntervalStart": { "description": "A millisecond resolution timestamp denoting when the current run interval started. This is calculated using repeatEnd.", "oneOf": [ { "type": "integer", "minimum": 0 }, { "type": "null" } ] }, "processMissedRuns": { "description": "Describes how any missed job runs should be processed. A missed run is a job that was supposed to be ran at least 'n' seconds ago, but did not due to some issue with IAP (busy process, IAP was down, etc). 'none' means do not run any missed jobs. 'last' means only run the last missed job.", "type": "string", "enum": [ "none", "last" ] }, "locked": { "description": "backend use only", "type": "boolean" }, "waitFlag": { "description": "Deprecated, backend use only", "type": "boolean" }, "repeat": { "description": "A repetition pattern expressed as a tree of parent and child interval definitions.", "oneOf": [ { "type": "null" }, { "$ref": "schedule-trigger-common#/definitions/anyInterval" } ] } } }, "legacyInvariantPropertyNames": { "enum": [ "repeatInterval" ] }, "legacyInvariantProperties": { "type": "object", "properties": { "repeatInterval": { "description": "The interval between repeated jobs in milliseconds. This is calculated from repeatUnit and repeatFrequency.", "oneOf": [ { "type": "integer", "minimum": 0 }, { "type": "null" } ], "examples": [ 10000, 30000, 120000 ] } } }, "legacyCovariantPropertyNames": { "enum": [ "repeatUnit", "repeatFrequency" ] }, "legacyCovariantProperties": { "oneOf": [ { "type": "object", "properties": { "repeatUnit": { "type": "null" }, "repeatFrequency": { "type": "null" } } }, { "type": "object", "properties": { "repeatUnit": { "type": "string", "enum": [ "minute", "hour", "day", "week" ] }, "repeatFrequency": { "oneOf": [ { "type": "integer", "minimum": 0 }, { "type": "null" } ] } }, "required": [ "repeatUnit" ] }, { "type": "object", "properties": { "repeatUnit": { "const": "second" }, "repeatFrequency": { "oneOf": [ { "type": "integer", "minimum": 0, "multipleOf": 10 }, { "type": "null" } ] } }, "required": [ "repeatUnit", "repeatFrequency" ] } ] }, "dimensionedQuantitySeconds": { "type": "object", "properties": { "unit": { "const": "second" }, "quantity": { "type": "number", "minimum": 0, "multipleOf": 10, "examples": [ 30, 140, 2000 ] } } }, "dimensionedQuantityOther": { "type": "object", "properties": { "unit": { "enum": [ "minute", "hour", "day", "week" ] }, "quantity": { "type": "number", "minimum": 0, "examples": [ 1, 3, 5, 10 ] } } }, "implicitMsQuantity": { "$comment": "Implicit unit of milliseconds", "type": "number", "minimum": 0, "multipleOf": 10000, "examples": [ 10000, 30000, 100000 ] }, "intervalDuration": { "oneOf": [ { "$ref": "#/definitions/dimensionedQuantitySeconds" }, { "$ref": "#/definitions/dimensionedQuantityOther" }, { "$ref": "#/definitions/implicitMsQuantity" } ] }, "intervalAction": { "type": "object", "properties": { "action": { "enum": [ "execute", "wait" ] } }, "required": [ "action" ] }, "intervalComponents": { "type": "object", "properties": { "components": { "type": "array", "items": { "$ref": "#/definitions/anyInterval" } } }, "required": [ "components" ] }, "anyIntervalDirective": { "oneOf": [ { "$ref": "#/definitions/intervalAction" }, { "$ref": "#/definitions/intervalComponents" } ] }, "standardInterval": { "allOf": [ { "type": "object", "properties": { "type": { "enum": [ "repeating", "terminating" ] }, "duration": { "$ref": "#/definitions/intervalDuration" } } }, { "$ref": "#/definitions/anyIntervalDirective" } ] }, "countShorthandInterval": { "allOf": [ { "type": "object", "properties": { "type": { "const": "count" }, "duration": { "$ref": "#/definitions/intervalDuration" }, "count": { "type": "integer", "minimum": 0, "examples": [ 2, 5, 10, 25 ] } } }, { "$ref": "#/definitions/anyIntervalDirective" } ] }, "dateRangeShorthandInterval": { "allOf": [ { "type": "object", "properties": { "type": { "const": "date-range" }, "start": { "$ref": "common#/definitions/iso-date-string" }, "end": { "$ref": "common#/definitions/iso-date-string" } } }, { "$ref": "#/definitions/intervalComponents" } ] }, "anyInterval": { "oneOf": [ { "$ref": "#/definitions/standardInterval" }, { "$ref": "#/definitions/dateRangeShorthandInterval" }, { "$ref": "#/definitions/countShorthandInterval" } ] } } }