Schedules

Schedules automate recurring test execution. Assign tests to a schedule, set a daily run time, and the system runs them on a rotating basis, most-overdue first.

Overview

A schedule ties a set of tests and test plans to a recurring cadence. You define when to run (time of day, which days of the week) and the system launches every item at that time. There is no selection or rotation logic — a schedule is a cron: what's on it runs, every time.

Schedule items

Each schedule contains a list of items. An item targets exactly one runnable entity — a test or a test plan. Every item is launched on every run.

Email digest

Schedules can be configured to send an email digest after each run. The digest summarizes the results of all agents that ran and can be set to send always or only when failures occur. Configure recipients and optionally filter by finding severity.

GET /api/v1/schedules

List schedules

Parameters

ParameterTypeInRequiredDescription
project_iduuidqueryNoRestrict schedules to one project.
limitintegerqueryNoMaximum schedules to return.
afteruuidqueryNoContinue below this schedule ID.

Example Request

curl
curl "http://app.aiqaramba.com/api/v1/schedules" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Tenant schedules.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
schedulesobject[]
schedules[].iduuid
schedules[].tenant_iduuid
schedules[].project_iduuid
schedules[].namestring
schedules[].run_atstring
schedules[].run_daysinteger[]
schedules[].enabledboolean
schedules[].digest_configobjectDelivery and severity settings for schedule digests.
schedules[].digest_config.enabledboolean
schedules[].digest_config.channelsstring[]
schedules[].digest_config.notify_onstringValues: always, failures_only.
schedules[].digest_config.recipientsstring[]
schedules[].digest_config.min_severitystringValues: critical, high, medium, low.
schedules[].last_tick_atdate-time
schedules[].patternobjectWeekly, monthly-weekday, or one-time fire pattern.
schedules[].pattern.kindstringValues: weekly, monthly_weekday, once.
schedules[].pattern.daysinteger[]
schedules[].pattern.ordinalstringValues: first, second, third, fourth, last.
schedules[].pattern.weekdayinteger
schedules[].pattern.offset_daysinteger
schedules[].pattern.datedate
schedules[].timezonestring
schedules[].variablesobject
schedules[].created_atdate-time
schedules[].updated_atdate-time
next_cursoruuid
POST /api/v1/schedules

Create a schedule

Request Body (application/json)

FieldTypeRequiredDescription
project_iduuidYesProject ID
namestringYesSchedule name
run_atstringNoTime of day the schedule fires, formatted HH:MM in the schedule timezone. Defaults to 09:00.
run_daysjsonNoISO day numbers to run on (Mon=1..Sun=7). Default: all days. Example: [1,2,3,4,5] for weekdays. Compatibility alias for a weekly pattern.
patternjsonNoWeekly, monthly-weekday, or one-time fire pattern.
timezonestringNoIANA timezone for fire evaluation (e.g. Europe/Brussels). Empty = tenant timezone.
variablesjsonNoStatic string variables forwarded to scheduled test-plan runs, merged under the per-fire built-ins fire_date and fire_id. Applied only where the plan declares the variable. Example: {"environment": "staging"}.
test_idsstring[]NoTest IDs to include
digest_configjsonNoDelivery and severity settings for schedule digests.

Example Request

curl
curl -X POST "http://app.aiqaramba.com/api/v1/schedules" \
  -H "Authorization: Bearer $AIQA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "project_id": "<uuid>",
    "name": "<string>"
  }'

Status Codes

CodeDescription
201Schedule created.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (201)

FieldTypeDescription
scheduleobjectRecurring automation configuration.
schedule.iduuid
schedule.tenant_iduuid
schedule.project_iduuid
schedule.namestring
schedule.run_atstring
schedule.run_daysinteger[]
schedule.enabledboolean
schedule.digest_configobjectDelivery and severity settings for schedule digests.
schedule.digest_config.enabledboolean
schedule.digest_config.channelsstring[]
schedule.digest_config.notify_onstringValues: always, failures_only.
schedule.digest_config.recipientsstring[]
schedule.digest_config.min_severitystringValues: critical, high, medium, low.
schedule.last_tick_atdate-time
schedule.patternobjectWeekly, monthly-weekday, or one-time fire pattern.
schedule.pattern.kindstringValues: weekly, monthly_weekday, once.
schedule.pattern.daysinteger[]
schedule.pattern.ordinalstringValues: first, second, third, fourth, last.
schedule.pattern.weekdayinteger
schedule.pattern.offset_daysinteger
schedule.pattern.datedate
schedule.timezonestring
schedule.variablesobject
schedule.created_atdate-time
schedule.updated_atdate-time
itemsobject[]
items[].iduuid
items[].schedule_iduuid
items[].test_iduuid
items[].test_plan_iduuid
items[].created_atdate-time
GET /api/v1/schedules/{id}

Get a schedule

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesSchedule ID.

Example Request

curl
curl "http://app.aiqaramba.com/api/v1/schedules/<id>" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Schedule with items and recent runs.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
iduuid
tenant_iduuid
project_iduuid
namestring
run_atstring
run_daysinteger[]
enabledboolean
digest_configobjectDelivery and severity settings for schedule digests.
digest_config.enabledboolean
digest_config.channelsstring[]
digest_config.notify_onstringValues: always, failures_only.
digest_config.recipientsstring[]
digest_config.min_severitystringValues: critical, high, medium, low.
last_tick_atdate-time
patternobjectWeekly, monthly-weekday, or one-time fire pattern.
pattern.kindstringValues: weekly, monthly_weekday, once.
pattern.daysinteger[]
pattern.ordinalstringValues: first, second, third, fourth, last.
pattern.weekdayinteger
pattern.offset_daysinteger
pattern.datedate
timezonestring
variablesobject
created_atdate-time
updated_atdate-time
itemsobject[]
items[].iduuid
items[].schedule_iduuid
items[].test_iduuid
items[].test_plan_iduuid
items[].created_atdate-time
runsobject[]
runs[].agent_iduuid
runs[].test_iduuid
runs[].plan_run_iduuid
runs[].triggered_atdate-time
runs[].statusstring
DELETE /api/v1/schedules/{id}

Delete a schedule

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesSchedule ID.

Example Request

curl
curl -X DELETE "http://app.aiqaramba.com/api/v1/schedules/<id>" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
204Schedule deleted.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.
PATCH /api/v1/schedules/{id}

Update a schedule

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesSchedule ID.

Request Body (application/json)

FieldTypeRequiredDescription
namestringNoNew name
run_atstringNoTime of day the schedule fires, formatted HH:MM in the schedule timezone.
run_daysjsonNoISO day numbers (Mon=1..Sun=7). Compatibility alias for a weekly pattern.
enabledbooleanNoEnable or disable
patternjsonNoWeekly, monthly-weekday, or one-time fire pattern.
timezonestringNoIANA timezone for fire evaluation. Empty string reverts to the tenant timezone.
variablesjsonNoStatic variables for scheduled test-plan runs. Empty object clears them.
digest_configjsonNoEmail digest settings (see Create for shape). Set to null to disable.

Example Request

curl
curl -X PATCH "http://app.aiqaramba.com/api/v1/schedules/<id>" \
  -H "Authorization: Bearer $AIQA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "<string>",
    "run_at": "<string>",
    "run_days": {},
    "enabled": true,
    "pattern": {},
    "timezone": "<string>",
    "variables": {},
    "digest_config": {}
  }'

Status Codes

CodeDescription
200Updated schedule.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
iduuid
tenant_iduuid
project_iduuid
namestring
run_atstring
run_daysinteger[]
enabledboolean
digest_configobjectDelivery and severity settings for schedule digests.
digest_config.enabledboolean
digest_config.channelsstring[]
digest_config.notify_onstringValues: always, failures_only.
digest_config.recipientsstring[]
digest_config.min_severitystringValues: critical, high, medium, low.
last_tick_atdate-time
patternobjectWeekly, monthly-weekday, or one-time fire pattern.
pattern.kindstringValues: weekly, monthly_weekday, once.
pattern.daysinteger[]
pattern.ordinalstringValues: first, second, third, fourth, last.
pattern.weekdayinteger
pattern.offset_daysinteger
pattern.datedate
timezonestring
variablesobject
created_atdate-time
updated_atdate-time
GET /api/v1/schedules/{id}/digest

Preview a schedule digest

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesSchedule ID.

Example Request

curl
curl "http://app.aiqaramba.com/api/v1/schedules/<id>/digest" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Structured digest preview.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
schedule_iduuid
schedule_namestring
project_iduuid
project_namestring
agent_idsuuid[]
digestobject
reasonstring
POST /api/v1/schedules/{id}/digest

Send a schedule digest now

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesSchedule ID.

Example Request

curl
curl -X POST "http://app.aiqaramba.com/api/v1/schedules/<id>/digest" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Digest queued.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
queuedboolean
agent_idsuuid[]
POST /api/v1/schedules/{id}/items

Add a schedule target

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesSchedule ID.

Request Body (application/json)

FieldTypeRequiredDescription
test_iduuidNoTest to add. Mutually exclusive with test_plan_id.
test_plan_iduuidNoTest plan to add. Mutually exclusive with test_id.

Example Request

curl
curl -X POST "http://app.aiqaramba.com/api/v1/schedules/<id>/items" \
  -H "Authorization: Bearer $AIQA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "test_id": "<uuid>",
    "test_plan_id": "<uuid>"
  }'

Status Codes

CodeDescription
201Target added.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (201)

FieldTypeDescription
iduuid
schedule_iduuid
test_iduuid
test_plan_iduuid
created_atdate-time
DELETE /api/v1/schedules/{id}/items/{itemId}

Remove a schedule target

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesSchedule ID.
itemIduuidpathYesSchedule item ID.

Example Request

curl
curl -X DELETE "http://app.aiqaramba.com/api/v1/schedules/<id>/items/<itemId>" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
204Target removed.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.
GET /api/v1/schedules/{id}/next-fires

Preview schedule fire times

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesSchedule ID.
nintegerqueryNoNumber of future fires.

Example Request

curl
curl "http://app.aiqaramba.com/api/v1/schedules/<id>/next-fires" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Upcoming fire moments.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
schedule_iduuid
timezonestring
descriptionstring
next_firesdate-time[]
GET /api/v1/schedules/{id}/runs

List schedule runs

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesSchedule ID.
limitintegerqueryNoMaximum runs to return.

Example Request

curl
curl "http://app.aiqaramba.com/api/v1/schedules/<id>/runs" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Recent schedule-launched agents.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
runsobject[]
runs[].agent_iduuid
runs[].test_iduuid
runs[].plan_run_iduuid
runs[].triggered_atdate-time
runs[].statusstring
POST /api/v1/schedules/{id}/trigger

Trigger a schedule now

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesSchedule ID.

Request Body (application/json)

FieldTypeRequiredDescription
variablesjsonNoExtra per-fire variables for this trigger only, overriding schedule variables and built-ins. Example: {"run_tag": "release-42"}.

Example Request

curl
curl -X POST "http://app.aiqaramba.com/api/v1/schedules/<id>/trigger" \
  -H "Authorization: Bearer $AIQA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "variables": {}
  }'

Status Codes

CodeDescription
200Trigger result.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
iduuid
tenant_iduuid
project_iduuid
namestring
run_atstring
run_daysinteger[]
enabledboolean
digest_configobjectDelivery and severity settings for schedule digests.
digest_config.enabledboolean
digest_config.channelsstring[]
digest_config.notify_onstringValues: always, failures_only.
digest_config.recipientsstring[]
digest_config.min_severitystringValues: critical, high, medium, low.
last_tick_atdate-time
patternobjectWeekly, monthly-weekday, or one-time fire pattern.
pattern.kindstringValues: weekly, monthly_weekday, once.
pattern.daysinteger[]
pattern.ordinalstringValues: first, second, third, fourth, last.
pattern.weekdayinteger
pattern.offset_daysinteger
pattern.datedate
timezonestring
variablesobject
created_atdate-time
updated_atdate-time
launchedinteger
failedinteger