// Update an existing Workflow returns "Successfully updated a workflow." response
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)
func main() {
// there is a valid "workflow" in the system
WorkflowDataID := os.Getenv("WORKFLOW_DATA_ID")
body := datadogV2.UpdateWorkflowRequest{
Data: datadogV2.WorkflowDataUpdate{
Attributes: datadogV2.WorkflowDataUpdateAttributes{
Description: datadog.PtrString("A sample workflow."),
Name: datadog.PtrString("Example Workflow"),
Published: datadog.PtrBool(true),
Spec: &datadogV2.Spec{
ConnectionEnvs: []datadogV2.ConnectionEnv{
{
Connections: []datadogV2.Connection{
{
ConnectionId: "11111111-1111-1111-1111-111111111111",
Label: "INTEGRATION_DATADOG",
},
},
Env: datadogV2.CONNECTIONENVENV_DEFAULT,
},
},
Handle: datadog.PtrString("my-handle"),
InputSchema: &datadogV2.InputSchema{
Parameters: []datadogV2.InputSchemaParameters{
{
DefaultValue: "default",
Name: "input",
Type: datadogV2.INPUTSCHEMAPARAMETERSTYPE_STRING,
},
},
},
OutputSchema: &datadogV2.OutputSchema{
Parameters: []datadogV2.OutputSchemaParameters{
{
Name: "output",
Type: datadogV2.OUTPUTSCHEMAPARAMETERSTYPE_ARRAY_OBJECT,
Value: "outputValue",
},
},
},
Steps: []datadogV2.Step{
{
ActionId: "com.datadoghq.dd.monitor.listMonitors",
ConnectionLabel: datadog.PtrString("INTEGRATION_DATADOG"),
Name: "Step1",
OutboundEdges: []datadogV2.OutboundEdge{
{
BranchName: "main",
NextStepName: "Step2",
},
},
Parameters: []datadogV2.Parameter{
{
Name: "tags",
Value: "service:monitoring",
},
},
},
{
ActionId: "com.datadoghq.core.noop",
Name: "Step2",
},
},
Triggers: []datadogV2.Trigger{
datadogV2.Trigger{
MonitorTriggerWrapper: &datadogV2.MonitorTriggerWrapper{
MonitorTrigger: datadogV2.MonitorTrigger{
RateLimit: &datadogV2.TriggerRateLimit{
Count: datadog.PtrInt64(1),
Interval: datadog.PtrString("3600s"),
},
},
StartStepNames: []string{
"Step1",
},
}},
datadogV2.Trigger{
GithubWebhookTriggerWrapper: &datadogV2.GithubWebhookTriggerWrapper{
StartStepNames: []string{
"Step1",
},
GithubWebhookTrigger: datadogV2.GithubWebhookTrigger{},
}},
},
},
Tags: []string{
"team:infra",
"service:monitoring",
"foo:bar",
},
},
Id: datadog.PtrString("22222222-2222-2222-2222-222222222222"),
Type: datadogV2.WORKFLOWDATATYPE_WORKFLOWS,
},
}
ctx := datadog.NewDefaultContext(context.Background())
configuration := datadog.NewConfiguration()
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewWorkflowAutomationApi(apiClient)
resp, r, err := api.UpdateWorkflow(ctx, WorkflowDataID, body)
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `WorkflowAutomationApi.UpdateWorkflow`: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
responseContent, _ := json.MarshalIndent(resp, "", " ")
fmt.Fprintf(os.Stdout, "Response from `WorkflowAutomationApi.UpdateWorkflow`:\n%s\n", responseContent)
}