read_server cron_validate rejects valid cron expressions #15

Closed
opened 2026-09-19 08:21:40 +01:00 by gronod · 1 comment
Owner

Summary

read_server cron_validate reports valid cron expressions as invalid for both 5-field and 6-field syntax — the action never returns valid: true.

Environment

Reproduction

read_server {"action":"cron_validate","expression":"0 0 * * *"}     // valid:false
read_server {"action":"cron_validate","expression":"0 0 0 * * *"}   // valid:false

Both return {"name":"valid","value":false} with message CRON Expression ... is not valid.

Expected

valid:true for a well-formed cron expression (Ombi uses NCrontab 6-field format; 0 0 0 * * * is a valid daily-midnight schedule).

Actual

Every expression tested is reported invalid.

Likely cause

The handler POSTs {"expression": "..."} to /api/v1/Settings/testcron. The upstream endpoint may expect a different body shape (e.g. a raw JSON string rather than an object), or a different field name — the rejection message format suggests the expression reached upstream, but a wrong wire shape would produce exactly this result. Needs wire-level verification of the expected request body.

Correlation IDs

bd66ed33b8b08b1a41526dc0, 9245d403a6ddeafdbcbbf0c5

## Summary `read_server` `cron_validate` reports valid cron expressions as invalid for both 5-field and 6-field syntax — the action never returns `valid: true`. ## Environment - Binary: deployed darwin-amd64 build from `develop` @ `d047d76` - Ombi: 4.53.10 (https://ombi.i3omb.com), JWT auth ## Reproduction ```json read_server {"action":"cron_validate","expression":"0 0 * * *"} // valid:false read_server {"action":"cron_validate","expression":"0 0 0 * * *"} // valid:false ``` Both return `{"name":"valid","value":false}` with message `CRON Expression ... is not valid`. ## Expected `valid:true` for a well-formed cron expression (Ombi uses NCrontab 6-field format; `0 0 0 * * *` is a valid daily-midnight schedule). ## Actual Every expression tested is reported invalid. ## Likely cause The handler POSTs `{"expression": "..."}` to `/api/v1/Settings/testcron`. The upstream endpoint may expect a different body shape (e.g. a raw JSON string rather than an object), or a different field name — the rejection message format suggests the expression reached upstream, but a wrong wire shape would produce exactly this result. Needs wire-level verification of the expected request body. ## Correlation IDs `bd66ed33b8b08b1a41526dc0`, `9245d403a6ddeafdbcbbf0c5`
gronod added this to the M7 — Admin/server wire contracts milestone 2026-09-19 08:57:53 +01:00
Author
Owner

Verified against Ombi 4.53.10 / Quartz.NET semantics: the upstream rejection was correct for the expressions tested. Quartz requires 6–7 fields and ? in one of the two day fields, so 0 0 0 * * * is invalid (both day fields are *), while 0 0 0 * * ? validates. The adapter now documents this and adds a hint when validation returns false.

Verified against Ombi 4.53.10 / Quartz.NET semantics: the upstream rejection was correct for the expressions tested. Quartz requires 6–7 fields and `?` in one of the two day fields, so `0 0 0 * * *` is invalid (both day fields are `*`), while `0 0 0 * * ?` validates. The adapter now documents this and adds a hint when validation returns false.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gronod/ombi-mcp#15