# Instances ## List of workflow instances `client.Workflows.Instances.List(ctx, workflowName, params) (*V4PagePaginationArray[InstanceListResponse], error)` **get** `/accounts/{account_id}/workflows/{workflow_name}/instances` Lists all instances of a workflow with their execution status. ### Parameters - `workflowName string` - `params InstanceListParams` - `AccountID param.Field[string]` Path param - `Cursor param.Field[string]` Query param: `page` and `cursor` are mutually exclusive, use one or the other. - `DateEnd param.Field[Time]` Query param: Accepts ISO 8601 with no timezone offsets and in UTC. - `DateStart param.Field[Time]` Query param: Accepts ISO 8601 with no timezone offsets and in UTC. - `Direction param.Field[InstanceListParamsDirection]` Query param: should only be used when `cursor` is used, defines a new direction for the cursor - `const InstanceListParamsDirectionAsc InstanceListParamsDirection = "asc"` - `const InstanceListParamsDirectionDesc InstanceListParamsDirection = "desc"` - `Page param.Field[float64]` Query param: `page` and `cursor` are mutually exclusive, use one or the other. - `PerPage param.Field[float64]` Query param - `Status param.Field[InstanceListParamsStatus]` Query param - `const InstanceListParamsStatusQueued InstanceListParamsStatus = "queued"` - `const InstanceListParamsStatusRunning InstanceListParamsStatus = "running"` - `const InstanceListParamsStatusPaused InstanceListParamsStatus = "paused"` - `const InstanceListParamsStatusErrored InstanceListParamsStatus = "errored"` - `const InstanceListParamsStatusTerminated InstanceListParamsStatus = "terminated"` - `const InstanceListParamsStatusComplete InstanceListParamsStatus = "complete"` - `const InstanceListParamsStatusWaitingForPause InstanceListParamsStatus = "waitingForPause"` - `const InstanceListParamsStatusWaiting InstanceListParamsStatus = "waiting"` ### Returns - `type InstanceListResponse struct{…}` - `ID string` - `CreatedOn Time` - `EndedOn Time` - `ModifiedOn Time` - `StartedOn Time` - `Status InstanceListResponseStatus` - `const InstanceListResponseStatusQueued InstanceListResponseStatus = "queued"` - `const InstanceListResponseStatusRunning InstanceListResponseStatus = "running"` - `const InstanceListResponseStatusPaused InstanceListResponseStatus = "paused"` - `const InstanceListResponseStatusErrored InstanceListResponseStatus = "errored"` - `const InstanceListResponseStatusTerminated InstanceListResponseStatus = "terminated"` - `const InstanceListResponseStatusComplete InstanceListResponseStatus = "complete"` - `const InstanceListResponseStatusWaitingForPause InstanceListResponseStatus = "waitingForPause"` - `const InstanceListResponseStatusWaiting InstanceListResponseStatus = "waiting"` - `VersionID string` - `WorkflowID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/workflows" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.Workflows.Instances.List( context.TODO(), "x", workflows.InstanceListParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": [ { "id": "x", "created_on": "2019-12-27T18:11:19.117Z", "ended_on": "2019-12-27T18:11:19.117Z", "modified_on": "2019-12-27T18:11:19.117Z", "started_on": "2019-12-27T18:11:19.117Z", "status": "queued", "version_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "workflow_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" } ], "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0 } } ``` ## Get logs and status from instance `client.Workflows.Instances.Get(ctx, workflowName, instanceID, params) (*InstanceGetResponse, error)` **get** `/accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}` Retrieves logs and execution status for a specific workflow instance. ### Parameters - `workflowName string` - `instanceID string` - `params InstanceGetParams` - `AccountID param.Field[string]` Path param - `Order param.Field[InstanceGetParamsOrder]` Query param: Step ordering: "asc" (default, oldest first) or "desc" (newest first). - `const InstanceGetParamsOrderAsc InstanceGetParamsOrder = "asc"` - `const InstanceGetParamsOrderDesc InstanceGetParamsOrder = "desc"` - `Simple param.Field[InstanceGetParamsSimple]` Query param: When true, omits step details and returns only metadata with step_count. - `const InstanceGetParamsSimpleTrue InstanceGetParamsSimple = "true"` - `const InstanceGetParamsSimpleFalse InstanceGetParamsSimple = "false"` ### Returns - `type InstanceGetResponse struct{…}` - `End Time` - `Error InstanceGetResponseError` - `Message string` - `Name string` - `Output InstanceGetResponseOutputUnion` - `UnionString` - `UnionFloat` - `Params unknown` - `Queued Time` - `Start Time` - `Status InstanceGetResponseStatus` - `const InstanceGetResponseStatusQueued InstanceGetResponseStatus = "queued"` - `const InstanceGetResponseStatusRunning InstanceGetResponseStatus = "running"` - `const InstanceGetResponseStatusPaused InstanceGetResponseStatus = "paused"` - `const InstanceGetResponseStatusErrored InstanceGetResponseStatus = "errored"` - `const InstanceGetResponseStatusTerminated InstanceGetResponseStatus = "terminated"` - `const InstanceGetResponseStatusComplete InstanceGetResponseStatus = "complete"` - `const InstanceGetResponseStatusWaitingForPause InstanceGetResponseStatus = "waitingForPause"` - `const InstanceGetResponseStatusWaiting InstanceGetResponseStatus = "waiting"` - `StepCount int64` - `Steps []InstanceGetResponseStep` - `type InstanceGetResponseStepsObject struct{…}` - `Attempts []InstanceGetResponseStepsObjectAttempt` - `End Time` - `Error InstanceGetResponseStepsObjectAttemptsError` - `Message string` - `Name string` - `Start Time` - `Success bool` - `Config InstanceGetResponseStepsObjectConfig` - `Retries InstanceGetResponseStepsObjectConfigRetries` - `Delay InstanceGetResponseStepsObjectConfigRetriesDelayUnion` Specifies the delay duration. - `UnionString` - `UnionFloat` - `Limit float64` - `Backoff InstanceGetResponseStepsObjectConfigRetriesBackoff` - `const InstanceGetResponseStepsObjectConfigRetriesBackoffConstant InstanceGetResponseStepsObjectConfigRetriesBackoff = "constant"` - `const InstanceGetResponseStepsObjectConfigRetriesBackoffLinear InstanceGetResponseStepsObjectConfigRetriesBackoff = "linear"` - `const InstanceGetResponseStepsObjectConfigRetriesBackoffExponential InstanceGetResponseStepsObjectConfigRetriesBackoff = "exponential"` - `Timeout InstanceGetResponseStepsObjectConfigTimeoutUnion` Specifies the timeout duration. - `UnionString` - `UnionFloat` - `End Time` - `Name string` - `Output string` - `Start Time` - `Success bool` - `Type InstanceGetResponseStepsObjectType` - `const InstanceGetResponseStepsObjectTypeStep InstanceGetResponseStepsObjectType = "step"` - `type InstanceGetResponseStepsObject struct{…}` - `End Time` - `Error InstanceGetResponseStepsObjectError` - `Message string` - `Name string` - `Finished bool` - `Name string` - `Start Time` - `Type InstanceGetResponseStepsObjectType` - `const InstanceGetResponseStepsObjectTypeSleep InstanceGetResponseStepsObjectType = "sleep"` - `type InstanceGetResponseStepsObject struct{…}` - `Trigger InstanceGetResponseStepsObjectTrigger` - `Source string` - `Type InstanceGetResponseStepsObjectType` - `const InstanceGetResponseStepsObjectTypeTermination InstanceGetResponseStepsObjectType = "termination"` - `type InstanceGetResponseStepsObject struct{…}` - `End Time` - `Error InstanceGetResponseStepsObjectError` - `Message string` - `Name string` - `Finished bool` - `Name string` - `Start Time` - `Type InstanceGetResponseStepsObjectType` - `const InstanceGetResponseStepsObjectTypeWaitForEvent InstanceGetResponseStepsObjectType = "waitForEvent"` - `Output string` - `Success bool` - `Trigger InstanceGetResponseTrigger` - `Source InstanceGetResponseTriggerSource` - `const InstanceGetResponseTriggerSourceUnknown InstanceGetResponseTriggerSource = "unknown"` - `const InstanceGetResponseTriggerSourceAPI InstanceGetResponseTriggerSource = "api"` - `const InstanceGetResponseTriggerSourceBinding InstanceGetResponseTriggerSource = "binding"` - `const InstanceGetResponseTriggerSourceEvent InstanceGetResponseTriggerSource = "event"` - `const InstanceGetResponseTriggerSourceCron InstanceGetResponseTriggerSource = "cron"` - `VersionID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/workflows" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) instance, err := client.Workflows.Instances.Get( context.TODO(), "x", "x", workflows.InstanceGetParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", instance.End) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "end": "2019-12-27T18:11:19.117Z", "error": { "message": "message", "name": "name" }, "output": "string", "params": {}, "queued": "2019-12-27T18:11:19.117Z", "start": "2019-12-27T18:11:19.117Z", "status": "queued", "step_count": 0, "steps": [ { "attempts": [ { "end": "2019-12-27T18:11:19.117Z", "error": { "message": "message", "name": "name" }, "start": "2019-12-27T18:11:19.117Z", "success": true } ], "config": { "retries": { "delay": "string", "limit": 0, "backoff": "constant" }, "timeout": "string" }, "end": "2019-12-27T18:11:19.117Z", "name": "name", "output": "output", "start": "2019-12-27T18:11:19.117Z", "success": true, "type": "step" } ], "success": true, "trigger": { "source": "unknown" }, "versionId": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0 } } ``` ## Create a new workflow instance `client.Workflows.Instances.New(ctx, workflowName, params) (*InstanceNewResponse, error)` **post** `/accounts/{account_id}/workflows/{workflow_name}/instances` Creates a new instance of a workflow, starting its execution. ### Parameters - `workflowName string` - `params InstanceNewParams` - `AccountID param.Field[string]` Path param - `InstanceID param.Field[string]` Body param - `InstanceRetention param.Field[InstanceNewParamsInstanceRetention]` Body param - `ErrorRetention InstanceNewParamsInstanceRetentionErrorRetentionUnion` Specifies the duration in milliseconds or as a string like '5 minutes'. - `UnionInt` - `UnionString` - `SuccessRetention InstanceNewParamsInstanceRetentionSuccessRetentionUnion` Specifies the duration in milliseconds or as a string like '5 minutes'. - `UnionInt` - `UnionString` - `Params param.Field[unknown]` Body param ### Returns - `type InstanceNewResponse struct{…}` - `ID string` - `Status InstanceNewResponseStatus` - `const InstanceNewResponseStatusQueued InstanceNewResponseStatus = "queued"` - `const InstanceNewResponseStatusRunning InstanceNewResponseStatus = "running"` - `const InstanceNewResponseStatusPaused InstanceNewResponseStatus = "paused"` - `const InstanceNewResponseStatusErrored InstanceNewResponseStatus = "errored"` - `const InstanceNewResponseStatusTerminated InstanceNewResponseStatus = "terminated"` - `const InstanceNewResponseStatusComplete InstanceNewResponseStatus = "complete"` - `const InstanceNewResponseStatusWaitingForPause InstanceNewResponseStatus = "waitingForPause"` - `const InstanceNewResponseStatusWaiting InstanceNewResponseStatus = "waiting"` - `VersionID string` - `WorkflowID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/workflows" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) instance, err := client.Workflows.Instances.New( context.TODO(), "x", workflows.InstanceNewParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", instance.ID) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "id": "x", "status": "queued", "version_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "workflow_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0 } } ``` ## Batch create new Workflow instances `client.Workflows.Instances.Bulk(ctx, workflowName, params) (*SinglePage[InstanceBulkResponse], error)` **post** `/accounts/{account_id}/workflows/{workflow_name}/instances/batch` Creates multiple workflow instances in a single batch operation. ### Parameters - `workflowName string` - `params InstanceBulkParams` - `AccountID param.Field[string]` Path param - `Body param.Field[[]InstanceBulkParamsBody]` Body param - `InstanceID string` - `InstanceRetention InstanceBulkParamsBodyInstanceRetention` - `ErrorRetention InstanceBulkParamsBodyInstanceRetentionErrorRetentionUnion` Specifies the duration in milliseconds or as a string like '5 minutes'. - `UnionInt` - `UnionString` - `SuccessRetention InstanceBulkParamsBodyInstanceRetentionSuccessRetentionUnion` Specifies the duration in milliseconds or as a string like '5 minutes'. - `UnionInt` - `UnionString` - `Params unknown` ### Returns - `type InstanceBulkResponse struct{…}` - `ID string` - `Status InstanceBulkResponseStatus` - `const InstanceBulkResponseStatusQueued InstanceBulkResponseStatus = "queued"` - `const InstanceBulkResponseStatusRunning InstanceBulkResponseStatus = "running"` - `const InstanceBulkResponseStatusPaused InstanceBulkResponseStatus = "paused"` - `const InstanceBulkResponseStatusErrored InstanceBulkResponseStatus = "errored"` - `const InstanceBulkResponseStatusTerminated InstanceBulkResponseStatus = "terminated"` - `const InstanceBulkResponseStatusComplete InstanceBulkResponseStatus = "complete"` - `const InstanceBulkResponseStatusWaitingForPause InstanceBulkResponseStatus = "waitingForPause"` - `const InstanceBulkResponseStatusWaiting InstanceBulkResponseStatus = "waiting"` - `VersionID string` - `WorkflowID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/workflows" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.Workflows.Instances.Bulk( context.TODO(), "x", workflows.InstanceBulkParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": [ { "id": "x", "status": "queued", "version_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "workflow_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" } ], "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0 } } ``` # Status ## Change status of instance `client.Workflows.Instances.Status.Edit(ctx, workflowName, instanceID, params) (*InstanceStatusEditResponse, error)` **patch** `/accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}/status` Changes the execution status of a workflow instance (e.g., pause, resume, terminate). ### Parameters - `workflowName string` - `instanceID string` - `params InstanceStatusEditParams` - `AccountID param.Field[string]` Path param - `Status param.Field[InstanceStatusEditParamsStatus]` Body param: Apply action to instance. - `const InstanceStatusEditParamsStatusResume InstanceStatusEditParamsStatus = "resume"` - `const InstanceStatusEditParamsStatusPause InstanceStatusEditParamsStatus = "pause"` - `const InstanceStatusEditParamsStatusTerminate InstanceStatusEditParamsStatus = "terminate"` - `const InstanceStatusEditParamsStatusRestart InstanceStatusEditParamsStatus = "restart"` ### Returns - `type InstanceStatusEditResponse struct{…}` - `Status InstanceStatusEditResponseStatus` - `const InstanceStatusEditResponseStatusQueued InstanceStatusEditResponseStatus = "queued"` - `const InstanceStatusEditResponseStatusRunning InstanceStatusEditResponseStatus = "running"` - `const InstanceStatusEditResponseStatusPaused InstanceStatusEditResponseStatus = "paused"` - `const InstanceStatusEditResponseStatusErrored InstanceStatusEditResponseStatus = "errored"` - `const InstanceStatusEditResponseStatusTerminated InstanceStatusEditResponseStatus = "terminated"` - `const InstanceStatusEditResponseStatusComplete InstanceStatusEditResponseStatus = "complete"` - `const InstanceStatusEditResponseStatusWaitingForPause InstanceStatusEditResponseStatus = "waitingForPause"` - `const InstanceStatusEditResponseStatusWaiting InstanceStatusEditResponseStatus = "waiting"` - `Timestamp Time` Accepts ISO 8601 with no timezone offsets and in UTC. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/workflows" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Workflows.Instances.Status.Edit( context.TODO(), "x", "x", workflows.InstanceStatusEditParams{ AccountID: cloudflare.F("account_id"), Status: cloudflare.F(workflows.InstanceStatusEditParamsStatusResume), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Status) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "status": "queued", "timestamp": "2019-12-27T18:11:19.117Z" }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0 } } ``` # Events ## Send event to instance `client.Workflows.Instances.Events.New(ctx, workflowName, instanceID, eventType, params) (*InstanceEventNewResponse, error)` **post** `/accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}/events/{event_type}` Sends an event to a running workflow instance to trigger state transitions. ### Parameters - `workflowName string` - `instanceID string` - `eventType string` - `params InstanceEventNewParams` - `AccountID param.Field[string]` Path param - `Body param.Field[unknown]` Body param ### Returns - `type InstanceEventNewResponse interface{…}` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/workflows" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) event, err := client.Workflows.Instances.Events.New( context.TODO(), "x", "x", "x", workflows.InstanceEventNewParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", event) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "success": true, "result": {}, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0 } } ```