Cron-задачи

Cron-задачи выполняются регулярно по заданному расписанию. Используйте стандартный формат cron-выражений.

Эндпоинты

GET
/cron-tasks

Список всех cron-задач

POST
/cron-tasks

Создание новой задачи

GET
/cron-tasks/{id}

Получение задачи по ID

PATCH
/cron-tasks/{id}

Обновление задачи

DELETE
/cron-tasks/{id}

Удаление задачи

POST
/cron-tasks/{id}/pause

Приостановка задачи

POST
/cron-tasks/{id}/unpause

Возобновление задачи

Создание задачи

curl -X POST https://api.cronbox.ru/v1/cron-tasks \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Синхронизация данных",
    "url": "https://your-api.com/sync",
    "method": "POST",
    "cron_expression": "0 */6 * * *",
    "headers": {
      "Content-Type": "application/json",
      "X-API-Key": "your-api-key"
    },
    "body": "{\"action\": \"sync\"}",
    "timeout_seconds": 30,
    "retry_count": 3
  }'

Формат cron-выражений

Используется стандартный 5-полевой формат cron:

┌───────────── минута (0 - 59)
│ ┌───────────── час (0 - 23)
│ │ ┌───────────── день месяца (1 - 31)
│ │ │ ┌───────────── месяц (1 - 12)
│ │ │ │ ┌───────────── день недели (0 - 6, 0 = воскресенье)
│ │ │ │ │
* * * * *

Примеры:

  • */5 * * * * - каждые 5 минут
  • 0 */2 * * * - каждые 2 часа
  • 0 9 * * 1-5 - в 9:00 по будням
  • 0 0 1 * * - первого числа каждого месяца

Проверки ответа (assertions)

По умолчанию выполнение считается успешным, если код ответа входит в expected_status_codes. Но эндпоинт может ответить 200 OK с ошибкой в теле. Для таких случаев задаче можно добавить список проверок: они выполняются по порядку, первая непройденная делает выполнение неуспешным, и срабатывают retry и уведомления.

"assertions": [
  {"type": "status_in",              "value": [200, 201]},
  {"type": "body_contains",          "value": "\"ok\":true"},
  {"type": "body_not_contains",      "value": "traceback"},
  {"type": "body_regex",             "value": "\"id\"\\s*:\\s*\\d+"},
  {"type": "jsonpath_equals",        "path": "$.status", "value": "ok"},
  {"type": "jsonpath_exists",        "path": "$.data.id"},
  {"type": "response_time_ms_below", "value": 1500},
  {"type": "header_equals",          "path": "Content-Type", "value": "application/json"}
]

jsonpath_equals сравнивает первое совпадение с value (любое JSON-значение),header_equals ищет заголовок без учёта регистра. Для проверки доступно до 64 КБ тела ответа.