# Workflows ## List all Workflows `client.Workflows.List(ctx, params) (*V4PagePaginationArray[WorkflowListResponse], error)` **get** `/accounts/{account_id}/workflows` Lists all workflows configured for the account. ### Parameters - `params WorkflowListParams` - `AccountID param.Field[string]` Path param - `Page param.Field[float64]` Query param - `PerPage param.Field[float64]` Query param - `Search param.Field[string]` Query param: Allows filtering workflows` name. ### Returns - `type WorkflowListResponse struct{…}` - `ID string` - `ClassName string` - `CreatedOn Time` - `Instances WorkflowListResponseInstances` - `Complete float64` - `Errored float64` - `Paused float64` - `Queued float64` - `RollingBack float64` - `Running float64` - `Terminated float64` - `Waiting float64` - `WaitingForPause float64` - `ModifiedOn Time` - `Name string` - `ScriptName string` - `TriggeredOn Time` - `Schedules []WorkflowListResponseSchedule` - `Cron string` - `NextInstance 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.List(context.TODO(), workflows.WorkflowListParams{ 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": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "class_name": "class_name", "created_on": "2019-12-27T18:11:19.117Z", "instances": { "complete": 0, "errored": 0, "paused": 0, "queued": 0, "rollingBack": 0, "running": 0, "terminated": 0, "waiting": 0, "waitingForPause": 0 }, "modified_on": "2019-12-27T18:11:19.117Z", "name": "x", "script_name": "script_name", "triggered_on": "2019-12-27T18:11:19.117Z", "schedules": [ { "cron": "cron", "next_instance": "next_instance" } ] } ], "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 0 } } ``` ## Get Workflow details `client.Workflows.Get(ctx, workflowName, query) (*WorkflowGetResponse, error)` **get** `/accounts/{account_id}/workflows/{workflow_name}` Retrieves configuration and metadata for a specific workflow. ### Parameters - `workflowName string` - `query WorkflowGetParams` - `AccountID param.Field[string]` ### Returns - `type WorkflowGetResponse struct{…}` - `ID string` - `ClassName string` - `CreatedOn Time` - `Instances WorkflowGetResponseInstances` - `Complete float64` - `Errored float64` - `Paused float64` - `Queued float64` - `RollingBack float64` - `Running float64` - `Terminated float64` - `Waiting float64` - `WaitingForPause float64` - `ModifiedOn Time` - `Name string` - `ScriptName string` - `TriggeredOn Time` - `Schedules []WorkflowGetResponseSchedule` - `Cron string` - `NextInstance 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"), ) workflow, err := client.Workflows.Get( context.TODO(), "x", workflows.WorkflowGetParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", workflow.ID) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "class_name": "class_name", "created_on": "2019-12-27T18:11:19.117Z", "instances": { "complete": 0, "errored": 0, "paused": 0, "queued": 0, "rollingBack": 0, "running": 0, "terminated": 0, "waiting": 0, "waitingForPause": 0 }, "modified_on": "2019-12-27T18:11:19.117Z", "name": "x", "script_name": "script_name", "triggered_on": "2019-12-27T18:11:19.117Z", "schedules": [ { "cron": "cron", "next_instance": "next_instance" } ] }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 0 } } ``` ## Create/modify Workflow `client.Workflows.Update(ctx, workflowName, params) (*WorkflowUpdateResponse, error)` **put** `/accounts/{account_id}/workflows/{workflow_name}` Creates a new workflow or updates an existing workflow definition. ### Parameters - `workflowName string` - `params WorkflowUpdateParams` - `AccountID param.Field[string]` Path param - `ClassName param.Field[string]` Body param - `ScriptName param.Field[string]` Body param - `Limits param.Field[WorkflowUpdateParamsLimits]` Body param - `Steps int64` - `Schedules param.Field[[]WorkflowUpdateParamsSchedule]` Body param - `Cron string` ### Returns - `type WorkflowUpdateResponse struct{…}` - `ID string` - `ClassName string` - `CreatedOn Time` - `IsDeleted float64` - `ModifiedOn Time` - `Name string` - `ScriptName string` - `TerminatorRunning float64` - `TriggeredOn Time` - `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"), ) workflow, err := client.Workflows.Update( context.TODO(), "x", workflows.WorkflowUpdateParams{ AccountID: cloudflare.F("account_id"), ClassName: cloudflare.F("x"), ScriptName: cloudflare.F("x"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", workflow.ID) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "class_name": "class_name", "created_on": "2019-12-27T18:11:19.117Z", "is_deleted": 0, "modified_on": "2019-12-27T18:11:19.117Z", "name": "x", "script_name": "script_name", "terminator_running": 0, "triggered_on": "2019-12-27T18:11:19.117Z", "version_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 0 } } ``` ## Deletes a Workflow `client.Workflows.Delete(ctx, workflowName, body) (*WorkflowDeleteResponse, error)` **delete** `/accounts/{account_id}/workflows/{workflow_name}` Deletes a Workflow. This only deletes the Workflow and does not delete or modify any Worker associated to this Workflow or bounded to it. ### Parameters - `workflowName string` - `body WorkflowDeleteParams` - `AccountID param.Field[string]` ### Returns - `type WorkflowDeleteResponse struct{…}` - `Status WorkflowDeleteResponseStatus` - `const WorkflowDeleteResponseStatusOk WorkflowDeleteResponseStatus = "ok"` - `Success bool` ### 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"), ) workflow, err := client.Workflows.Delete( context.TODO(), "x", workflows.WorkflowDeleteParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", workflow.Status) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "status": "ok", "success": true }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 0 } } ``` # 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: Opaque token for cursor-based pagination. Mutually exclusive with `page`. - `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: Defines the direction for cursor-based pagination. - `const InstanceListParamsDirectionAsc InstanceListParamsDirection = "asc"` - `const InstanceListParamsDirectionDesc InstanceListParamsDirection = "desc"` - `Page param.Field[float64]` Query param: Deprecated: use `cursor` for pagination instead. - `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"` - `const InstanceListParamsStatusRollingBack InstanceListParamsStatus = "rollingBack"` ### 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"` - `const InstanceListResponseStatusRollingBack InstanceListResponseStatus = "rollingBack"` - `VersionID string` - `WorkflowID string` - `TriggerSource InstanceListResponseTriggerSource` - `const InstanceListResponseTriggerSourceUnknown InstanceListResponseTriggerSource = "unknown"` - `const InstanceListResponseTriggerSourceAPI InstanceListResponseTriggerSource = "api"` - `const InstanceListResponseTriggerSourceBinding InstanceListResponseTriggerSource = "binding"` - `const InstanceListResponseTriggerSourceEvent InstanceListResponseTriggerSource = "event"` - `const InstanceListResponseTriggerSourceCron InstanceListResponseTriggerSource = "cron"` ### 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", "trigger_source": "unknown" } ], "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 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` Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression. - `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` - `Rollback InstanceGetResponseRollback` - `Error InstanceGetResponseRollbackError` - `Message string` - `Name string` - `Outcome InstanceGetResponseRollbackOutcome` - `const InstanceGetResponseRollbackOutcomeComplete InstanceGetResponseRollbackOutcome = "complete"` - `const InstanceGetResponseRollbackOutcomeFailed InstanceGetResponseRollbackOutcome = "failed"` - `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"` - `const InstanceGetResponseStatusRollingBack InstanceGetResponseStatus = "rollingBack"` - `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. '[dynamic]' indicates the delay is computed by a user-supplied function. - `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` - `Sensitive InstanceGetResponseStepsObjectConfigSensitive` When set to 'output', step output is redacted from log and step output responses. - `const InstanceGetResponseStepsObjectConfigSensitiveOutput InstanceGetResponseStepsObjectConfigSensitive = "output"` - `End Time` - `Name string` - `Output string` - `Start Time` - `Success bool` - `Type InstanceGetResponseStepsObjectType` - `const InstanceGetResponseStepsObjectTypeStep InstanceGetResponseStepsObjectType = "step"` - `const InstanceGetResponseStepsObjectTypeRollback InstanceGetResponseStepsObjectType = "rollback"` - `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` - `Schedule InstanceGetResponseSchedule` - `Cron string` - `ScheduledTime float64` ### 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", "rollback": { "error": { "message": "message", "name": "name" }, "outcome": "complete" }, "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", "sensitive": "output" }, "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", "schedule": { "cron": "cron", "scheduledTime": 0 } }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 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"` - `const InstanceNewResponseStatusRollingBack InstanceNewResponseStatus = "rollingBack"` - `VersionID string` - `WorkflowID string` - `TriggerSource InstanceNewResponseTriggerSource` - `const InstanceNewResponseTriggerSourceUnknown InstanceNewResponseTriggerSource = "unknown"` - `const InstanceNewResponseTriggerSourceAPI InstanceNewResponseTriggerSource = "api"` - `const InstanceNewResponseTriggerSourceBinding InstanceNewResponseTriggerSource = "binding"` - `const InstanceNewResponseTriggerSourceEvent InstanceNewResponseTriggerSource = "event"` - `const InstanceNewResponseTriggerSourceCron InstanceNewResponseTriggerSource = "cron"` ### 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", "trigger_source": "unknown" }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 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"` - `const InstanceBulkResponseStatusRollingBack InstanceBulkResponseStatus = "rollingBack"` - `VersionID string` - `WorkflowID string` - `TriggerSource InstanceBulkResponseTriggerSource` - `const InstanceBulkResponseTriggerSourceUnknown InstanceBulkResponseTriggerSource = "unknown"` - `const InstanceBulkResponseTriggerSourceAPI InstanceBulkResponseTriggerSource = "api"` - `const InstanceBulkResponseTriggerSourceBinding InstanceBulkResponseTriggerSource = "binding"` - `const InstanceBulkResponseTriggerSourceEvent InstanceBulkResponseTriggerSource = "event"` - `const InstanceBulkResponseTriggerSourceCron InstanceBulkResponseTriggerSource = "cron"` ### 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", "trigger_source": "unknown" } ], "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 0 } } ``` ## Get full step output from instance `client.Workflows.Instances.Step(ctx, workflowName, instanceID, params) (*InstanceStepResponse, error)` **get** `/accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}/step` Retrieves the full, untruncated output for a specific step on a workflow instance. Returns a flat status-shaped JSON body with step `status` ('running' | 'waiting' | 'complete' | 'errored'), `error` (nullable), and `output` (the step value, or null while running/waiting/errored). When the step returned a ReadableStream from step.do, the response is served as 'application/octet-stream' with the raw bytes as the body instead of JSON. A `status='running'` response with non-null `error` indicates the step is currently retrying after a prior attempt failed. ### Parameters - `workflowName string` - `instanceID string` Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression. - `params InstanceStepParams` - `AccountID param.Field[string]` Path param - `Name param.Field[string]` Query param: Exact step name from the instance logs response, including the generated counter suffix. - `Type param.Field[InstanceStepParamsType]` Query param: Step type to disambiguate step.do and waitForEvent entries that share the same name. - `const InstanceStepParamsTypeStep InstanceStepParamsType = "step"` - `const InstanceStepParamsTypeWaitForEvent InstanceStepParamsType = "waitForEvent"` - `Attempt param.Field[int64]` Query param: Specific attempt number to retrieve output or error for. ### Returns - `type InstanceStepResponse struct{…}` - `Error InstanceStepResponseError` Error details when status='errored'; null otherwise. - `Message string` - `Name string` - `Status InstanceStepResponseStatus` - `const InstanceStepResponseStatusQueued InstanceStepResponseStatus = "queued"` - `const InstanceStepResponseStatusRunning InstanceStepResponseStatus = "running"` - `const InstanceStepResponseStatusPaused InstanceStepResponseStatus = "paused"` - `const InstanceStepResponseStatusErrored InstanceStepResponseStatus = "errored"` - `const InstanceStepResponseStatusTerminated InstanceStepResponseStatus = "terminated"` - `const InstanceStepResponseStatusComplete InstanceStepResponseStatus = "complete"` - `const InstanceStepResponseStatusWaitingForPause InstanceStepResponseStatus = "waitingForPause"` - `const InstanceStepResponseStatusWaiting InstanceStepResponseStatus = "waiting"` - `const InstanceStepResponseStatusRollingBack InstanceStepResponseStatus = "rollingBack"` - `Output unknown` Full step output or waitForEvent payload without truncation. Sensitive outputs are returned as '[REDACTED]'. Populated when status='complete'. May be a ReadableStream when the step returned one from step.do; stream outputs are served as application/octet-stream rather than JSON. ### 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.Step( context.TODO(), "x", "x", workflows.InstanceStepParams{ AccountID: cloudflare.F("account_id"), Name: cloudflare.F("x"), Type: cloudflare.F(workflows.InstanceStepParamsTypeStep), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Error) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "error": { "message": "message", "name": "name" }, "status": "queued", "output": {} }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 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` Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression. - `params InstanceStatusEditParams` - `AccountID param.Field[string]` Path param - `Status param.Field[InstanceStatusEditParamsVariant0Status]` Body param - `const InstanceStatusEditParamsVariant0StatusPause InstanceStatusEditParamsVariant0Status = "pause"` ### 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"` - `const InstanceStatusEditResponseStatusRollingBack InstanceStatusEditResponseStatus = "rollingBack"` - `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"), }, ) 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, "total_pages": 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` Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression. - `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, "total_pages": 0 } } ``` # Versions ## List deployed Workflow versions `client.Workflows.Versions.List(ctx, workflowName, params) (*V4PagePaginationArray[VersionListResponse], error)` **get** `/accounts/{account_id}/workflows/{workflow_name}/versions` Lists all deployed versions of a workflow. ### Parameters - `workflowName string` - `params VersionListParams` - `AccountID param.Field[string]` Path param - `Page param.Field[float64]` Query param - `PerPage param.Field[float64]` Query param ### Returns - `type VersionListResponse struct{…}` - `ID string` - `ClassName string` - `CreatedOn Time` - `HasDag bool` - `Language VersionListResponseLanguage` The programming language of the workflow implementation - `const VersionListResponseLanguageJavascript VersionListResponseLanguage = "javascript"` - `const VersionListResponseLanguagePython VersionListResponseLanguage = "python"` - `ModifiedOn Time` - `WorkflowID string` - `Limits VersionListResponseLimits` - `Steps int64` ### 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.Versions.List( context.TODO(), "x", workflows.VersionListParams{ 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": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "class_name": "class_name", "created_on": "2019-12-27T18:11:19.117Z", "has_dag": true, "language": "javascript", "modified_on": "2019-12-27T18:11:19.117Z", "workflow_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "limits": { "steps": 1 } } ], "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 0 } } ``` ## Get Workflow version details `client.Workflows.Versions.Get(ctx, workflowName, versionID, query) (*VersionGetResponse, error)` **get** `/accounts/{account_id}/workflows/{workflow_name}/versions/{version_id}` Retrieves details for a specific deployed workflow version. ### Parameters - `workflowName string` - `versionID string` - `query VersionGetParams` - `AccountID param.Field[string]` ### Returns - `type VersionGetResponse struct{…}` - `ID string` - `ClassName string` - `CreatedOn Time` - `HasDag bool` - `Language VersionGetResponseLanguage` The programming language of the workflow implementation - `const VersionGetResponseLanguageJavascript VersionGetResponseLanguage = "javascript"` - `const VersionGetResponseLanguagePython VersionGetResponseLanguage = "python"` - `ModifiedOn Time` - `WorkflowID string` - `Limits VersionGetResponseLimits` - `Steps int64` ### 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"), ) version, err := client.Workflows.Versions.Get( context.TODO(), "x", "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", workflows.VersionGetParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", version.ID) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "class_name": "class_name", "created_on": "2019-12-27T18:11:19.117Z", "has_dag": true, "language": "javascript", "modified_on": "2019-12-27T18:11:19.117Z", "workflow_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "limits": { "steps": 1 } }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 0 } } ``` ## Get Workflow version graph `client.Workflows.Versions.Graph(ctx, workflowName, versionID, query) (*VersionGraphResponse, error)` **get** `/accounts/{account_id}/workflows/{workflow_name}/versions/{version_id}/graph` Retrieves the graph visualization of a workflow version. ### Parameters - `workflowName string` - `versionID string` - `query VersionGraphParams` - `AccountID param.Field[string]` ### Returns - `type VersionGraphResponse struct{…}` - `ID string` - `ClassName string` - `CreatedOn Time` - `Graph VersionGraphResponseGraph` Versioned workflow graph payload. - `Version float64` - `Workflow VersionGraphResponseGraphWorkflow` A parsed workflow entrypoint with its step graph. - `ClassName string` - `Functions map[string, VersionGraphResponseGraphWorkflowFunction]` - `Name string` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowFunctionsType` - `const VersionGraphResponseGraphWorkflowFunctionsTypeFunctionDef VersionGraphResponseGraphWorkflowFunctionsType = "function_def"` - `Nodes []VersionGraphResponseGraphWorkflowNode` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Duration VersionGraphResponseGraphWorkflowNodesObjectDurationUnion` Duration as milliseconds (number) or human-readable string. - `UnionFloat` - `UnionString` - `Name string` - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeStepSleep VersionGraphResponseGraphWorkflowNodesObjectType = "step_sleep"` - `Resolves float64` - `Starts float64` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Config VersionGraphResponseGraphWorkflowNodesObjectConfig` Configuration for a step (retries and timeout). - `Retries VersionGraphResponseGraphWorkflowNodesObjectConfigRetries` Retry policy for a step. - `Backoff VersionGraphResponseGraphWorkflowNodesObjectConfigRetriesBackoff` Backoff strategy for step retries. - `const VersionGraphResponseGraphWorkflowNodesObjectConfigRetriesBackoffConstant VersionGraphResponseGraphWorkflowNodesObjectConfigRetriesBackoff = "constant"` - `const VersionGraphResponseGraphWorkflowNodesObjectConfigRetriesBackoffLinear VersionGraphResponseGraphWorkflowNodesObjectConfigRetriesBackoff = "linear"` - `const VersionGraphResponseGraphWorkflowNodesObjectConfigRetriesBackoffExponential VersionGraphResponseGraphWorkflowNodesObjectConfigRetriesBackoff = "exponential"` - `Delay VersionGraphResponseGraphWorkflowNodesObjectConfigRetriesDelayUnion` Duration as milliseconds (number) or human-readable string. - `UnionFloat` - `UnionString` - `Limit float64` - `Timeout VersionGraphResponseGraphWorkflowNodesObjectConfigTimeoutUnion` Duration as milliseconds (number) or human-readable string. - `UnionFloat` - `UnionString` - `Name string` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeStepDo VersionGraphResponseGraphWorkflowNodesObjectType = "step_do"` - `Resolves float64` - `Starts float64` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Name string` - `Options VersionGraphResponseGraphWorkflowNodesObjectOptions` Options for a waitForEvent step. - `EventType string` - `Timeout VersionGraphResponseGraphWorkflowNodesObjectOptionsTimeoutUnion` Duration as milliseconds (number) or human-readable string. - `UnionFloat` - `UnionString` - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeStepWaitForEvent VersionGraphResponseGraphWorkflowNodesObjectType = "step_wait_for_event"` - `Payload VersionGraphResponseGraphWorkflowNodesObjectPayload` Shape descriptor for JSON payloads. - `type VersionGraphResponseGraphWorkflowNodesObjectPayloadType struct{…}` - `Type VersionGraphResponseGraphWorkflowNodesObjectPayloadTypeType` - `const VersionGraphResponseGraphWorkflowNodesObjectPayloadTypeTypeUnknown VersionGraphResponseGraphWorkflowNodesObjectPayloadTypeType = "unknown"` - `type VersionGraphResponseGraphWorkflowNodesObjectPayloadObject struct{…}` - `Fields map[string, unknown]` Nested JsonShape fields (recursive structure). - `Type VersionGraphResponseGraphWorkflowNodesObjectPayloadObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectPayloadObjectTypeObject VersionGraphResponseGraphWorkflowNodesObjectPayloadObjectType = "object"` - `Resolves float64` - `Starts float64` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Name string` - `Timestamp string` - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeStepSleepUntil VersionGraphResponseGraphWorkflowNodesObjectType = "step_sleep_until"` - `Resolves float64` - `Starts float64` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeLoop VersionGraphResponseGraphWorkflowNodesObjectType = "loop"` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Kind VersionGraphResponseGraphWorkflowNodesObjectKind` Parallel execution strategy. - `const VersionGraphResponseGraphWorkflowNodesObjectKindAll VersionGraphResponseGraphWorkflowNodesObjectKind = "all"` - `const VersionGraphResponseGraphWorkflowNodesObjectKindAny VersionGraphResponseGraphWorkflowNodesObjectKind = "any"` - `const VersionGraphResponseGraphWorkflowNodesObjectKindAllSettled VersionGraphResponseGraphWorkflowNodesObjectKind = "all_settled"` - `const VersionGraphResponseGraphWorkflowNodesObjectKindRace VersionGraphResponseGraphWorkflowNodesObjectKind = "race"` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeParallel VersionGraphResponseGraphWorkflowNodesObjectType = "parallel"` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `CatchBlock VersionGraphResponseGraphWorkflowNodesObjectCatchBlock` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowNodesObjectCatchBlockType` - `const VersionGraphResponseGraphWorkflowNodesObjectCatchBlockTypeBlock VersionGraphResponseGraphWorkflowNodesObjectCatchBlockType = "block"` - `FinallyBlock VersionGraphResponseGraphWorkflowNodesObjectFinallyBlock` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowNodesObjectFinallyBlockType` - `const VersionGraphResponseGraphWorkflowNodesObjectFinallyBlockTypeBlock VersionGraphResponseGraphWorkflowNodesObjectFinallyBlockType = "block"` - `TryBlock VersionGraphResponseGraphWorkflowNodesObjectTryBlock` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowNodesObjectTryBlockType` - `const VersionGraphResponseGraphWorkflowNodesObjectTryBlockTypeBlock VersionGraphResponseGraphWorkflowNodesObjectTryBlockType = "block"` - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeTry VersionGraphResponseGraphWorkflowNodesObjectType = "try"` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeBlock VersionGraphResponseGraphWorkflowNodesObjectType = "block"` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Branches []VersionGraphResponseGraphWorkflowNodesObjectBranch` - `Condition string` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeIf VersionGraphResponseGraphWorkflowNodesObjectType = "if"` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Branches []VersionGraphResponseGraphWorkflowNodesObjectBranch` - `Condition string` - `Nodes []unknown` Child nodes (recursive). - `Discriminant string` - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeSwitch VersionGraphResponseGraphWorkflowNodesObjectType = "switch"` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `ClassName string` - `Functions map[string, VersionGraphResponseGraphWorkflowNodesObjectFunction]` - `Name string` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowNodesObjectFunctionsType` - `const VersionGraphResponseGraphWorkflowNodesObjectFunctionsTypeFunctionDef VersionGraphResponseGraphWorkflowNodesObjectFunctionsType = "function_def"` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeStart VersionGraphResponseGraphWorkflowNodesObjectType = "start"` - `Payload VersionGraphResponseGraphWorkflowNodesObjectPayload` Shape descriptor for JSON payloads. - `type VersionGraphResponseGraphWorkflowNodesObjectPayloadType struct{…}` - `Type VersionGraphResponseGraphWorkflowNodesObjectPayloadTypeType` - `const VersionGraphResponseGraphWorkflowNodesObjectPayloadTypeTypeUnknown VersionGraphResponseGraphWorkflowNodesObjectPayloadTypeType = "unknown"` - `type VersionGraphResponseGraphWorkflowNodesObjectPayloadObject struct{…}` - `Fields map[string, unknown]` Nested JsonShape fields (recursive structure). - `Type VersionGraphResponseGraphWorkflowNodesObjectPayloadObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectPayloadObjectTypeObject VersionGraphResponseGraphWorkflowNodesObjectPayloadObjectType = "object"` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Name string` - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeFunctionCall VersionGraphResponseGraphWorkflowNodesObjectType = "function_call"` - `Resolves float64` - `Starts float64` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Name string` - `Nodes []unknown` Child nodes (recursive). - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeFunctionDef VersionGraphResponseGraphWorkflowNodesObjectType = "function_def"` - `type VersionGraphResponseGraphWorkflowNodesObject struct{…}` - `Kind VersionGraphResponseGraphWorkflowNodesObjectKind` Break or return from a loop. - `const VersionGraphResponseGraphWorkflowNodesObjectKindBreak VersionGraphResponseGraphWorkflowNodesObjectKind = "break"` - `const VersionGraphResponseGraphWorkflowNodesObjectKindReturn VersionGraphResponseGraphWorkflowNodesObjectKind = "return"` - `Type VersionGraphResponseGraphWorkflowNodesObjectType` - `const VersionGraphResponseGraphWorkflowNodesObjectTypeBreak VersionGraphResponseGraphWorkflowNodesObjectType = "break"` - `Payload VersionGraphResponseGraphWorkflowPayload` Shape descriptor for JSON payloads. - `type VersionGraphResponseGraphWorkflowPayloadType struct{…}` - `Type VersionGraphResponseGraphWorkflowPayloadTypeType` - `const VersionGraphResponseGraphWorkflowPayloadTypeTypeUnknown VersionGraphResponseGraphWorkflowPayloadTypeType = "unknown"` - `type VersionGraphResponseGraphWorkflowPayloadObject struct{…}` - `Fields map[string, unknown]` Nested JsonShape fields (recursive structure). - `Type VersionGraphResponseGraphWorkflowPayloadObjectType` - `const VersionGraphResponseGraphWorkflowPayloadObjectTypeObject VersionGraphResponseGraphWorkflowPayloadObjectType = "object"` - `ModifiedOn Time` - `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"), ) response, err := client.Workflows.Versions.Graph( context.TODO(), "x", "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", workflows.VersionGraphParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.ID) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "class_name": "class_name", "created_on": "2019-12-27T18:11:19.117Z", "graph": { "version": 0, "workflow": { "class_name": "class_name", "functions": { "foo": { "name": "name", "nodes": [ {} ], "type": "function_def" } }, "nodes": [ { "duration": 0, "name": "name", "type": "step_sleep", "resolves": 0, "starts": 0 } ], "payload": { "type": "unknown" } } }, "modified_on": "2019-12-27T18:11:19.117Z", "workflow_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 0 } } ```