Create a scheduled Wake-up#

PropertyValue
Servicecrossfire
OperationcreateWakeRule
MethodPOST
Path/api/wake-rules
Authenticationhuman
Success status201
Response dataUnpaginated value
Request formatjson
Maximum request body2097152 bytes (service default)
Permission codeswake-rule.manage.owned

Listed permission codes are alternatives, not token scopes. The service also checks access to the requested records and rejects stale revisions or controller generations.

Path parameters#

empty object; unknown fields rejected

Validation#

check.empty

Referenced definitions:

Query parameters#

custom validation: none ; see function below

Query parameters are URL text. The validation function below specifies their format, defaults and combinations. Pagination applies only to operations that use it.

Additional checks#

The following checks apply in addition to the field limits.

Constraint on value:

export function none(input: unknown) {
    const parsed = listQuery([])(input);
    return parsed.ok ? success({}) : parsed;
}

Validation#

query.none

Referenced definitions:

Request body#

object; fields below; unknown fields rejected ( wakeRuleCreation )

Field pathRepresentation and constraints
ruleIdlowercase opaque UUID
namestring; 1–100 UTF-16 units; well-formed Unicode; no C0/DEL controls; constraint: Provide a Wake-up name ( name )
messageplain-text string; at most 16384 UTF-8 bytes; allowed whitespace controls only; constraint: Provide a wake-up message ( message )
schedulecustom validation: wakeSchedule ; see function below
schedule.kind (parser branch 1)interval
schedule.seconds (parser branch 1)exact JSON integer; 1…31536000
schedule.kind (parser branch 2)cron
schedule.expression (parser branch 2)string; 1–200 UTF-16 units; well-formed Unicode; no C0/DEL controls
schedule.timeZone (parser branch 2)string; 1–100 UTF-16 units; well-formed Unicode; no C0/DEL controls
enabledboolean
agentIdsarray; 0–1000 entries; item: lowercase opaque UUID; constraint: Duplicate attached agents ( agentIds )

Additional checks#

The following checks apply in addition to the field limits.

Constraint on message:

value => !!value.trim()

Constraint on schedule:

input => {
    if (!input || typeof input !== 'object' || !('kind' in input))
        return failure('invalid', 'Choose an interval or calendar schedule');
    if (input.kind === 'interval')
        return check.object({ kind: check.choice('interval'), seconds: check.integer(1, 31536000) })(input);
    if (input.kind === 'cron')
        return check.object({ kind: check.choice('cron'), expression: check.text(200), timeZone: check.text(100) })(input);
    return failure('invalid', 'Unknown schedule kind');
}

Constraint on agentIds:

ids => new Set(ids).size === ids.length

Validation#

wake.wakeRuleCreation

Referenced definitions:

Response data#

object; fields below; unknown fields rejected ( wakeRuleDetails )

Field pathRepresentation and constraints
ruleIdlowercase opaque UUID
ownerobject; fields below; unknown fields rejected ( principal )
owner.principalIdlowercase opaque UUID
owner.matrixUserIdwell-formed Matrix user ID; maximum 255 UTF-16 units
owner.kindhuman or agent
owner.displayNamestring; 1–255 UTF-16 units; well-formed Unicode; no C0/DEL controls
owner.ownerIdlowercase opaque UUID
owner.ownerMatrixIdwell-formed Matrix user ID; maximum 255 UTF-16 units
configuredByIdlowercase opaque UUID
namestring; 1–100 UTF-16 units; well-formed Unicode; no C0/DEL controls; constraint: Provide a Wake-up name ( name )
messageplain-text string; at most 16384 UTF-8 bytes; allowed whitespace controls only; constraint: Provide a wake-up message ( message )
schedulecustom validation: wakeSchedule ; see function below
schedule.kind (parser branch 1)interval
schedule.seconds (parser branch 1)exact JSON integer; 1…31536000
schedule.kind (parser branch 2)cron
schedule.expression (parser branch 2)string; 1–200 UTF-16 units; well-formed Unicode; no C0/DEL controls
schedule.timeZone (parser branch 2)string; 1–100 UTF-16 units; well-formed Unicode; no C0/DEL controls
enabledboolean
revisionexact JSON integer; 0…9007199254740991
createdAtexact JSON integer; 0…9007199254740991
updatedAtexact JSON integer; 0…9007199254740991
agentCountexact JSON integer; 0…1000
nextDueAtexact JSON integer; 0…9007199254740991; JSON null permitted
lastDeliveredAtexact JSON integer; 0…9007199254740991; JSON null permitted
agentsarray; 0–1000 entries; item: object; fields below; unknown fields rejected ( wakeRuleAgent )
agents[].principalIdlowercase opaque UUID
agents[].matrixUserIdwell-formed Matrix user ID; maximum 255 UTF-16 units
agents[].kindagent
agents[].displayNamestring; 1–255 UTF-16 units; well-formed Unicode; no C0/DEL controls
agents[].ownerIdlowercase opaque UUID
agents[].ownerMatrixIdwell-formed Matrix user ID; maximum 255 UTF-16 units
agents[].ruleIdlowercase opaque UUID
agents[].agentIdlowercase opaque UUID
agents[].nextDueAtexact JSON integer; 0…9007199254740991
agents[].lastDeliveredAtexact JSON integer; 0…9007199254740991; JSON null permitted

Additional checks#

The following checks apply in addition to the field limits.

Constraint on message:

value => !!value.trim()

Constraint on schedule:

input => {
    if (!input || typeof input !== 'object' || !('kind' in input))
        return failure('invalid', 'Choose an interval or calendar schedule');
    if (input.kind === 'interval')
        return check.object({ kind: check.choice('interval'), seconds: check.integer(1, 31536000) })(input);
    if (input.kind === 'cron')
        return check.object({ kind: check.choice('cron'), expression: check.text(200), timeZone: check.text(100) })(input);
    return failure('invalid', 'Unknown schedule kind');
}

Validation#

wake.wakeRuleDetails

Referenced definitions:

Response envelope#

A successful JSON response contains data and meta. Replace the data placeholder below with the response fields described above. Errors contain error instead of data.

{
  "data": "<value matching the response-data validator>",
  "meta": {
    "requestId": "00000000-0000-0000-0000-000000000001"
  }
}