Skip to content
Start here

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.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Accepted Permissions (at least one required)
Workers Scripts Write
ParametersExpand Collapse
workflowName string
maxLength64
minLength1
params WorkflowUpdateParams
AccountID param.Field[string]

Path param

ClassName param.Field[string]

Body param

maxLength255
minLength1
ScriptName param.Field[string]

Body param

maxLength255
minLength1
Concurrency param.Field[WorkflowUpdateParamsConcurrency]Optional

Body param

Limit int64Optional

Maximum number of instances of this workflow that can run concurrently. Additional instances are queued and started as running instances complete. Must not exceed the account concurrency limit.

maximum9007199254740991
minimum1
DefaultRetention param.Field[WorkflowUpdateParamsDefaultRetention]Optional

Body param: Default retention applied to instances of this version when they do not set their own retention.

ErrorRetention WorkflowUpdateParamsDefaultRetentionErrorRetentionUnionOptional

Specifies the duration in milliseconds or as a string like ‘5 minutes’.

One of the following:
UnionInt
UnionString
SuccessRetention WorkflowUpdateParamsDefaultRetentionSuccessRetentionUnionOptional

Specifies the duration in milliseconds or as a string like ‘5 minutes’.

One of the following:
UnionInt
UnionString
Jurisdiction param.Field[WorkflowUpdateParamsJurisdiction]Optional

Body param: Jurisdiction where instances of this workflow run and store data. Can only be set when the workflow is created and cannot be changed afterwards; omit it to keep the existing jurisdiction.

const WorkflowUpdateParamsJurisdictionEu WorkflowUpdateParamsJurisdiction = "eu"
const WorkflowUpdateParamsJurisdictionFedramp WorkflowUpdateParamsJurisdiction = "fedramp"
const WorkflowUpdateParamsJurisdictionUs WorkflowUpdateParamsJurisdiction = "us"
Limits param.Field[WorkflowUpdateParamsLimits]Optional

Body param

Steps int64Optional
maximum9007199254740991
minimum1
Schedules param.Field[[]WorkflowUpdateParamsSchedule]Optional

Body param

Cron string
maxLength256
minLength1
ReturnsExpand Collapse
type WorkflowUpdateResponse struct{…}
ID string
formatuuid
ClassName string
CreatedOn Time
formatdate-time
IsDeleted float64
ModifiedOn Time
formatdate-time
Name string
maxLength64
minLength1
ScriptName string
TerminatorRunning float64
TriggeredOn Time
formatdate-time
VersionID string
formatuuid
Jurisdiction WorkflowUpdateResponseJurisdictionOptional

Jurisdiction where instances of this workflow run and store data. Set when the workflow is created and cannot be changed.

One of the following:
const WorkflowUpdateResponseJurisdictionEu WorkflowUpdateResponseJurisdiction = "eu"
const WorkflowUpdateResponseJurisdictionFedramp WorkflowUpdateResponseJurisdiction = "fedramp"
const WorkflowUpdateResponseJurisdictionUs WorkflowUpdateResponseJurisdiction = "us"

Create/modify Workflow

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)
}
{
  "errors": [],
  "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",
    "jurisdiction": "eu"
  },
  "success": true,
  "result_info": {
    "count": 0,
    "per_page": 0,
    "total_count": 0,
    "cursor": "cursor",
    "page": 0,
    "total_pages": 0
  }
}
Returns Examples
{
  "errors": [],
  "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",
    "jurisdiction": "eu"
  },
  "success": true,
  "result_info": {
    "count": 0,
    "per_page": 0,
    "total_count": 0,
    "cursor": "cursor",
    "page": 0,
    "total_pages": 0
  }
}