# Schedules ## List worker schedules `client.Workers.Schedules.List(ctx, workerID) (*WorkerScheduleListResponse, error)` **get** `/api/workers/{workerId}/schedules` List scheduled tasks for a worker. ### Parameters - `workerID string` ### Returns - `type WorkerScheduleListResponse struct{…}` - `Schedules []WorkerScheduleUnion` - `type WorkerScheduleScheduled struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleScheduledBudgetLow WorkerScheduleScheduledBudget = "low"` - `const WorkerScheduleScheduledBudgetStandard WorkerScheduleScheduledBudget = "standard"` - `const WorkerScheduleScheduledBudgetHigh WorkerScheduleScheduledBudget = "high"` - `const WorkerScheduleScheduledBudgetUnlimited WorkerScheduleScheduledBudget = "unlimited"` - `Input string` - `NextRunAt Time` - `Type Scheduled` - `const ScheduledScheduled Scheduled = "scheduled"` - `type WorkerScheduleDelayed struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleDelayedBudgetLow WorkerScheduleDelayedBudget = "low"` - `const WorkerScheduleDelayedBudgetStandard WorkerScheduleDelayedBudget = "standard"` - `const WorkerScheduleDelayedBudgetHigh WorkerScheduleDelayedBudget = "high"` - `const WorkerScheduleDelayedBudgetUnlimited WorkerScheduleDelayedBudget = "unlimited"` - `DelayInSeconds int64` - `Input string` - `NextRunAt Time` - `Type Delayed` - `const DelayedDelayed Delayed = "delayed"` - `type WorkerScheduleCron struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleCronBudgetLow WorkerScheduleCronBudget = "low"` - `const WorkerScheduleCronBudgetStandard WorkerScheduleCronBudget = "standard"` - `const WorkerScheduleCronBudgetHigh WorkerScheduleCronBudget = "high"` - `const WorkerScheduleCronBudgetUnlimited WorkerScheduleCronBudget = "unlimited"` - `Cron string` - `Input string` - `NextRunAt Time` - `Type Cron` - `const CronCron Cron = "cron"` - `type WorkerScheduleInterval struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleIntervalBudgetLow WorkerScheduleIntervalBudget = "low"` - `const WorkerScheduleIntervalBudgetStandard WorkerScheduleIntervalBudget = "standard"` - `const WorkerScheduleIntervalBudgetHigh WorkerScheduleIntervalBudget = "high"` - `const WorkerScheduleIntervalBudgetUnlimited WorkerScheduleIntervalBudget = "unlimited"` - `Input string` - `IntervalSeconds int64` - `NextRunAt Time` - `Type Interval` - `const IntervalInterval Interval = "interval"` - `WorkerID string` ### Example ```go package main import ( "context" "fmt" "github.com/Ramensoft/handinger-go" "github.com/Ramensoft/handinger-go/option" ) func main() { client := handinger.NewClient( option.WithAPIKey("My API Key"), ) schedules, err := client.Workers.Schedules.List(context.TODO(), "t_org_123_w_01HZY2ZJQ8G7K42W2D7WF6V4GM") if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", schedules.Schedules) } ``` #### Response ```json { "schedules": [ { "id": "id", "budget": "low", "input": "input", "nextRunAt": "2019-12-27T18:11:19.117Z", "type": "scheduled" } ], "workerId": "workerId" } ``` ## Create a worker schedule `client.Workers.Schedules.New(ctx, workerID, body) (*WorkerScheduleUnion, error)` **post** `/api/workers/{workerId}/schedules` Schedule a worker instruction for a future or recurring run. ### Parameters - `workerID string` - `body WorkerScheduleNewParams` - `Input param.Field[string]` - `When param.Field[WorkerScheduleNewParamsWhenUnion]` - `type WorkerScheduleNewParamsWhenScheduled struct{…}` - `Date Time` - `Type Scheduled` - `const ScheduledScheduled Scheduled = "scheduled"` - `type WorkerScheduleNewParamsWhenDelayed struct{…}` - `DelayInSeconds int64` - `Type Delayed` - `const DelayedDelayed Delayed = "delayed"` - `type WorkerScheduleNewParamsWhenCron struct{…}` - `Cron string` - `Type Cron` - `const CronCron Cron = "cron"` - `type WorkerScheduleNewParamsWhenInterval struct{…}` - `IntervalSeconds int64` - `Type Interval` - `const IntervalInterval Interval = "interval"` - `Budget param.Field[WorkerScheduleNewParamsBudget]` - `const WorkerScheduleNewParamsBudgetLow WorkerScheduleNewParamsBudget = "low"` - `const WorkerScheduleNewParamsBudgetStandard WorkerScheduleNewParamsBudget = "standard"` - `const WorkerScheduleNewParamsBudgetHigh WorkerScheduleNewParamsBudget = "high"` - `const WorkerScheduleNewParamsBudgetUnlimited WorkerScheduleNewParamsBudget = "unlimited"` ### Returns - `type WorkerScheduleUnion interface{…}` - `type WorkerScheduleScheduled struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleScheduledBudgetLow WorkerScheduleScheduledBudget = "low"` - `const WorkerScheduleScheduledBudgetStandard WorkerScheduleScheduledBudget = "standard"` - `const WorkerScheduleScheduledBudgetHigh WorkerScheduleScheduledBudget = "high"` - `const WorkerScheduleScheduledBudgetUnlimited WorkerScheduleScheduledBudget = "unlimited"` - `Input string` - `NextRunAt Time` - `Type Scheduled` - `const ScheduledScheduled Scheduled = "scheduled"` - `type WorkerScheduleDelayed struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleDelayedBudgetLow WorkerScheduleDelayedBudget = "low"` - `const WorkerScheduleDelayedBudgetStandard WorkerScheduleDelayedBudget = "standard"` - `const WorkerScheduleDelayedBudgetHigh WorkerScheduleDelayedBudget = "high"` - `const WorkerScheduleDelayedBudgetUnlimited WorkerScheduleDelayedBudget = "unlimited"` - `DelayInSeconds int64` - `Input string` - `NextRunAt Time` - `Type Delayed` - `const DelayedDelayed Delayed = "delayed"` - `type WorkerScheduleCron struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleCronBudgetLow WorkerScheduleCronBudget = "low"` - `const WorkerScheduleCronBudgetStandard WorkerScheduleCronBudget = "standard"` - `const WorkerScheduleCronBudgetHigh WorkerScheduleCronBudget = "high"` - `const WorkerScheduleCronBudgetUnlimited WorkerScheduleCronBudget = "unlimited"` - `Cron string` - `Input string` - `NextRunAt Time` - `Type Cron` - `const CronCron Cron = "cron"` - `type WorkerScheduleInterval struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleIntervalBudgetLow WorkerScheduleIntervalBudget = "low"` - `const WorkerScheduleIntervalBudgetStandard WorkerScheduleIntervalBudget = "standard"` - `const WorkerScheduleIntervalBudgetHigh WorkerScheduleIntervalBudget = "high"` - `const WorkerScheduleIntervalBudgetUnlimited WorkerScheduleIntervalBudget = "unlimited"` - `Input string` - `IntervalSeconds int64` - `NextRunAt Time` - `Type Interval` - `const IntervalInterval Interval = "interval"` ### Example ```go package main import ( "context" "fmt" "time" "github.com/Ramensoft/handinger-go" "github.com/Ramensoft/handinger-go/option" ) func main() { client := handinger.NewClient( option.WithAPIKey("My API Key"), ) workerSchedule, err := client.Workers.Schedules.New( context.TODO(), "t_org_123_w_01HZY2ZJQ8G7K42W2D7WF6V4GM", handinger.WorkerScheduleNewParams{ Input: "x", When: handinger.WorkerScheduleNewParamsWhenUnion{ OfScheduled: &handinger.WorkerScheduleNewParamsWhenScheduled{ Date: time.Now(), }, }, }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", workerSchedule) } ``` #### Response ```json { "id": "id", "budget": "low", "input": "input", "nextRunAt": "2019-12-27T18:11:19.117Z", "type": "scheduled" } ``` ## Cancel a worker schedule `client.Workers.Schedules.Cancel(ctx, scheduleID, body) (*WorkerScheduleCancelResponse, error)` **delete** `/api/workers/{workerId}/schedules/{scheduleId}` Cancel a scheduled task for a worker. ### Parameters - `scheduleID string` - `body WorkerScheduleCancelParams` - `WorkerID param.Field[string]` Worker id returned by the create worker endpoint. ### Returns - `type WorkerScheduleCancelResponse struct{…}` - `Cancelled bool` ### Example ```go package main import ( "context" "fmt" "github.com/Ramensoft/handinger-go" "github.com/Ramensoft/handinger-go/option" ) func main() { client := handinger.NewClient( option.WithAPIKey("My API Key"), ) response, err := client.Workers.Schedules.Cancel( context.TODO(), "sch_01HZY31W2SZJ8MJ2FQTR3M1K9D", handinger.WorkerScheduleCancelParams{ WorkerID: "t_org_123_w_01HZY2ZJQ8G7K42W2D7WF6V4GM", }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Cancelled) } ``` #### Response ```json { "cancelled": true } ``` ## Domain Types ### Worker Schedule - `type WorkerScheduleUnion interface{…}` - `type WorkerScheduleScheduled struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleScheduledBudgetLow WorkerScheduleScheduledBudget = "low"` - `const WorkerScheduleScheduledBudgetStandard WorkerScheduleScheduledBudget = "standard"` - `const WorkerScheduleScheduledBudgetHigh WorkerScheduleScheduledBudget = "high"` - `const WorkerScheduleScheduledBudgetUnlimited WorkerScheduleScheduledBudget = "unlimited"` - `Input string` - `NextRunAt Time` - `Type Scheduled` - `const ScheduledScheduled Scheduled = "scheduled"` - `type WorkerScheduleDelayed struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleDelayedBudgetLow WorkerScheduleDelayedBudget = "low"` - `const WorkerScheduleDelayedBudgetStandard WorkerScheduleDelayedBudget = "standard"` - `const WorkerScheduleDelayedBudgetHigh WorkerScheduleDelayedBudget = "high"` - `const WorkerScheduleDelayedBudgetUnlimited WorkerScheduleDelayedBudget = "unlimited"` - `DelayInSeconds int64` - `Input string` - `NextRunAt Time` - `Type Delayed` - `const DelayedDelayed Delayed = "delayed"` - `type WorkerScheduleCron struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleCronBudgetLow WorkerScheduleCronBudget = "low"` - `const WorkerScheduleCronBudgetStandard WorkerScheduleCronBudget = "standard"` - `const WorkerScheduleCronBudgetHigh WorkerScheduleCronBudget = "high"` - `const WorkerScheduleCronBudgetUnlimited WorkerScheduleCronBudget = "unlimited"` - `Cron string` - `Input string` - `NextRunAt Time` - `Type Cron` - `const CronCron Cron = "cron"` - `type WorkerScheduleInterval struct{…}` - `ID string` - `Budget string` - `const WorkerScheduleIntervalBudgetLow WorkerScheduleIntervalBudget = "low"` - `const WorkerScheduleIntervalBudgetStandard WorkerScheduleIntervalBudget = "standard"` - `const WorkerScheduleIntervalBudgetHigh WorkerScheduleIntervalBudget = "high"` - `const WorkerScheduleIntervalBudgetUnlimited WorkerScheduleIntervalBudget = "unlimited"` - `Input string` - `IntervalSeconds int64` - `NextRunAt Time` - `Type Interval` - `const IntervalInterval Interval = "interval"`