스케줄러

API로 Scheduler 프로젝트를 생성하고 스케줄을 관리합니다. 하나의 프로젝트에 여러 스케줄을 두고 각각 추가, 수정, 일시 중지, 삭제하거나 필요할 때 즉시 실행할 수 있습니다.

POST/organizations/:orgId/projects

Scheduler 프로젝트를 생성합니다. 한 개의 기본 스케줄(매시간, UTC)로 시작하며 아래 엔드포인트로 관리합니다.

요청 본문
{
  "name": "nightly-report",
  "type": "cron"
}
응답
{
  "project": {
    "id": "p1234567-abcd-...",
    "name": "nightly-report",
    "description": null,
    "region": "us-east-1",
    "type": "cron",
    "createdAt": "2026-07-11T...",
    "updatedAt": "2026-07-11T..."
  }
}
GET/organizations/:orgId/projects/:projectId/schedules

프로젝트의 스케줄을 조회합니다.

응답
{
  "schedules": [
    {
      "id": 42,
      "expression": "0 * * * *",
      "timezone": "UTC",
      "enabled": true,
      "createdAt": "2026-07-11T...",
      "updatedAt": "2026-07-11T..."
    }
  ]
}
POST/organizations/:orgId/projects/:projectId/schedules

스케줄을 추가합니다. "expression"에는 표준 5필드 스케줄 표현식을 넣습니다. "timezone"과 "enabled"는 선택 항목이며, "timezone"에는 Asia/Seoul 같은 IANA 표준 시간대 이름을 사용합니다. 프로젝트당 최대 5개까지 추가할 수 있으며 초과하면 409가 반환됩니다.

요청 본문
{
  "expression": "0 9 * * MON-FRI",
  "timezone": "America/New_York",
  "enabled": true
}
응답
{
  "schedule": {
    "id": 43,
    "expression": "0 9 * * MON-FRI",
    "timezone": "America/New_York",
    "enabled": true,
    "createdAt": "2026-07-11T...",
    "updatedAt": "2026-07-11T..."
  }
}
PUT/organizations/:orgId/projects/:projectId/schedules/:scheduleId

하나의 스케줄을 수정합니다. "expression", "timezone", "enabled" 중 필요한 항목만 보내세요. 일시 중지하려면 "enabled"를 false, 재개하려면 true로 설정하세요.

요청 본문
{
  "expression": "30 6 * * *",
  "timezone": "America/New_York",
  "enabled": false
}
응답
{
  "schedule": {
    "id": 43,
    "expression": "30 6 * * *",
    "timezone": "America/New_York",
    "enabled": false,
    "updatedAt": "2026-07-11T..."
  }
}
DELETE/organizations/:orgId/projects/:projectId/schedules/:scheduleId

하나의 스케줄을 삭제합니다. 프로젝트에는 최소 하나가 남아야 하므로 마지막 스케줄을 삭제하면 400이 반환됩니다.

POST/organizations/:orgId/projects/:projectId/run

스케줄과 관계없이 즉시 한 번 실행합니다. 비동기 호출이므로 결과는 Logs에서 확인하세요.

응답
{
  "invoked": true
}