published on Wednesday, Oct 21, 2026 by incident-io
published on Wednesday, Oct 21, 2026 by incident-io
This resource is used to manage Workflows.
We’d generally recommend building workflows in our web dashboard, and using the ‘Export’ flow to generate your Terraform, as it’s easier to see what you’ve configured. You can also make changes to an existing workflow and copy the resulting Terraform without persisting it.
Example - Assign the incident lead when an escalation is acked
import * as pulumi from "@pulumi/pulumi";
import * as incident from "@incident-io/pulumi";
// Teams are catalog entries, so an owning team is resolved through the catalog
// rather than by pasting in its ID. The identifier is matched against entry
// names, external IDs and aliases, so the team's name is enough.
const team = incident.getCatalogType({
name: "Team",
});
const platform = team.then(team => incident.getCatalogEntry({
catalogTypeId: team.id,
identifier: "Platform",
}));
// Look the incident lead role up by name, rather than pinning its ID into the
// workflow below. The ID differs between workspaces, so a name keeps the config
// portable.
const incidentLead = incident.getIncidentRole({
name: "Incident Lead",
});
// This is a workflow that automatically assigns the incident lead role to the user who acked an escalation.
const autoassignIncidentLead = new incident.Workflow("autoassign_incident_lead", {
name: "Auto-assign incident leader",
trigger: "escalation.acked",
expressions: [],
conditionGroups: [{
conditions: [{
subject: "user",
operation: "is_set",
paramBindings: [],
}],
}],
steps: [{
id: "01HY0QG9WT62CEYJN8JD74MJNR",
name: "incident.assign_role",
paramBindings: [
{
value: {
reference: "incident",
},
},
{
value: {
literal: incidentLead.then(incidentLead => incidentLead.id),
},
},
{
value: {
reference: "user",
},
},
],
}],
onceFors: ["incident"],
owningTeamIds: [platform.then(platform => platform.id)],
privateIncidentScope: "none",
continueOnStepError: false,
runsOnIncidents: "newly_created_and_active",
runsOnIncidentModes: ["standard"],
state: "draft",
});
import pulumi
import pulumi_incident as incident
# Teams are catalog entries, so an owning team is resolved through the catalog
# rather than by pasting in its ID. The identifier is matched against entry
# names, external IDs and aliases, so the team's name is enough.
team = incident.get_catalog_type(name="Team")
platform = incident.get_catalog_entry(catalog_type_id=team.id,
identifier="Platform")
# Look the incident lead role up by name, rather than pinning its ID into the
# workflow below. The ID differs between workspaces, so a name keeps the config
# portable.
incident_lead = incident.get_incident_role(name="Incident Lead")
# This is a workflow that automatically assigns the incident lead role to the user who acked an escalation.
autoassign_incident_lead = incident.Workflow("autoassign_incident_lead",
name="Auto-assign incident leader",
trigger="escalation.acked",
expressions=[],
condition_groups=[{
"conditions": [{
"subject": "user",
"operation": "is_set",
"param_bindings": [],
}],
}],
steps=[{
"id": "01HY0QG9WT62CEYJN8JD74MJNR",
"name": "incident.assign_role",
"param_bindings": [
{
"value": {
"reference": "incident",
},
},
{
"value": {
"literal": incident_lead.id,
},
},
{
"value": {
"reference": "user",
},
},
],
}],
once_fors=["incident"],
owning_team_ids=[platform.id],
private_incident_scope="none",
continue_on_step_error=False,
runs_on_incidents="newly_created_and_active",
runs_on_incident_modes=["standard"],
state="draft")
package main
import (
"github.com/incident-io/pulumi-incident/sdk/go/incident"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Teams are catalog entries, so an owning team is resolved through the catalog
// rather than by pasting in its ID. The identifier is matched against entry
// names, external IDs and aliases, so the team's name is enough.
team, err := incident.GetCatalogType(ctx, &incident.LookupCatalogTypeArgs{
Name: pulumi.StringRef("Team"),
}, nil)
if err != nil {
return err
}
platform, err := incident.GetCatalogEntry(ctx, &incident.LookupCatalogEntryArgs{
CatalogTypeId: team.Id,
Identifier: "Platform",
}, nil)
if err != nil {
return err
}
// Look the incident lead role up by name, rather than pinning its ID into the
// workflow below. The ID differs between workspaces, so a name keeps the config
// portable.
incidentLead, err := incident.GetIncidentRole(ctx, &incident.LookupIncidentRoleArgs{
Name: pulumi.StringRef("Incident Lead"),
}, nil)
if err != nil {
return err
}
// This is a workflow that automatically assigns the incident lead role to the user who acked an escalation.
_, err = incident.NewWorkflow(ctx, "autoassign_incident_lead", &incident.WorkflowArgs{
Name: pulumi.String("Auto-assign incident leader"),
Trigger: pulumi.String("escalation.acked"),
Expressions: incident.WorkflowExpressionArray{},
ConditionGroups: incident.WorkflowConditionGroupArray{
&incident.WorkflowConditionGroupArgs{
Conditions: incident.WorkflowConditionGroupConditionArray{
&incident.WorkflowConditionGroupConditionArgs{
Subject: pulumi.String("user"),
Operation: pulumi.String("is_set"),
ParamBindings: incident.WorkflowConditionGroupConditionParamBindingArray{},
},
},
},
},
Steps: incident.WorkflowStepArray{
&incident.WorkflowStepArgs{
Id: pulumi.String("01HY0QG9WT62CEYJN8JD74MJNR"),
Name: pulumi.String("incident.assign_role"),
ParamBindings: incident.WorkflowStepParamBindingArray{
&incident.WorkflowStepParamBindingArgs{
Value: &incident.WorkflowStepParamBindingValueArgs{
Reference: pulumi.String("incident"),
},
},
&incident.WorkflowStepParamBindingArgs{
Value: &incident.WorkflowStepParamBindingValueArgs{
Literal: pulumi.String(incidentLead.Id),
},
},
&incident.WorkflowStepParamBindingArgs{
Value: &incident.WorkflowStepParamBindingValueArgs{
Reference: pulumi.String("user"),
},
},
},
},
},
OnceFors: pulumi.StringArray{
pulumi.String("incident"),
},
OwningTeamIds: pulumi.StringArray{
pulumi.String(platform.Id),
},
PrivateIncidentScope: pulumi.String("none"),
ContinueOnStepError: pulumi.Bool(false),
RunsOnIncidents: pulumi.String("newly_created_and_active"),
RunsOnIncidentModes: pulumi.StringArray{
pulumi.String("standard"),
},
State: pulumi.String("draft"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Incident = Pulumi.Incident;
return await Deployment.RunAsync(() =>
{
// Teams are catalog entries, so an owning team is resolved through the catalog
// rather than by pasting in its ID. The identifier is matched against entry
// names, external IDs and aliases, so the team's name is enough.
var team = Incident.GetCatalogType.Invoke(new()
{
Name = "Team",
});
var platform = Incident.GetCatalogEntry.Invoke(new()
{
CatalogTypeId = team.Apply(getCatalogTypeResult => getCatalogTypeResult.Id),
Identifier = "Platform",
});
// Look the incident lead role up by name, rather than pinning its ID into the
// workflow below. The ID differs between workspaces, so a name keeps the config
// portable.
var incidentLead = Incident.GetIncidentRole.Invoke(new()
{
Name = "Incident Lead",
});
// This is a workflow that automatically assigns the incident lead role to the user who acked an escalation.
var autoassignIncidentLead = new Incident.Workflow("autoassign_incident_lead", new()
{
Name = "Auto-assign incident leader",
Trigger = "escalation.acked",
Expressions = new[] {},
ConditionGroups = new[]
{
new Incident.Inputs.WorkflowConditionGroupArgs
{
Conditions = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionArgs
{
Subject = "user",
Operation = "is_set",
ParamBindings = new() { },
},
},
},
},
Steps = new[]
{
new Incident.Inputs.WorkflowStepArgs
{
Id = "01HY0QG9WT62CEYJN8JD74MJNR",
Name = "incident.assign_role",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowStepParamBindingArgs
{
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Reference = "incident",
},
},
new Incident.Inputs.WorkflowStepParamBindingArgs
{
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Literal = incidentLead.Apply(getIncidentRoleResult => getIncidentRoleResult.Id),
},
},
new Incident.Inputs.WorkflowStepParamBindingArgs
{
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Reference = "user",
},
},
},
},
},
OnceFors = new[]
{
"incident",
},
OwningTeamIds = new[]
{
platform.Apply(getCatalogEntryResult => getCatalogEntryResult.Id),
},
PrivateIncidentScope = "none",
ContinueOnStepError = false,
RunsOnIncidents = "newly_created_and_active",
RunsOnIncidentModes = new[]
{
"standard",
},
State = "draft",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.incident.IncidentFunctions;
import com.pulumi.incident.inputs.GetCatalogTypeArgs;
import com.pulumi.incident.inputs.GetCatalogEntryArgs;
import com.pulumi.incident.inputs.GetIncidentRoleArgs;
import com.pulumi.incident.Workflow;
import com.pulumi.incident.WorkflowArgs;
import com.pulumi.incident.inputs.WorkflowConditionGroupArgs;
import com.pulumi.incident.inputs.WorkflowConditionGroupConditionArgs;
import com.pulumi.incident.inputs.WorkflowStepArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingValueArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Teams are catalog entries, so an owning team is resolved through the catalog
// rather than by pasting in its ID. The identifier is matched against entry
// names, external IDs and aliases, so the team's name is enough.
final var team = IncidentFunctions.getCatalogType(GetCatalogTypeArgs.builder()
.name("Team")
.build());
final var platform = IncidentFunctions.getCatalogEntry(GetCatalogEntryArgs.builder()
.catalogTypeId(team.id())
.identifier("Platform")
.build());
// Look the incident lead role up by name, rather than pinning its ID into the
// workflow below. The ID differs between workspaces, so a name keeps the config
// portable.
final var incidentLead = IncidentFunctions.getIncidentRole(GetIncidentRoleArgs.builder()
.name("Incident Lead")
.build());
// This is a workflow that automatically assigns the incident lead role to the user who acked an escalation.
var autoassignIncidentLead = new Workflow("autoassignIncidentLead", WorkflowArgs.builder()
.name("Auto-assign incident leader")
.trigger("escalation.acked")
.expressions()
.conditionGroups(WorkflowConditionGroupArgs.builder()
.conditions(WorkflowConditionGroupConditionArgs.builder()
.subject("user")
.operation("is_set")
.paramBindings()
.build())
.build())
.steps(WorkflowStepArgs.builder()
.id("01HY0QG9WT62CEYJN8JD74MJNR")
.name("incident.assign_role")
.paramBindings(
WorkflowStepParamBindingArgs.builder()
.value(WorkflowStepParamBindingValueArgs.builder()
.reference("incident")
.build())
.build(),
WorkflowStepParamBindingArgs.builder()
.value(WorkflowStepParamBindingValueArgs.builder()
.literal(incidentLead.id())
.build())
.build(),
WorkflowStepParamBindingArgs.builder()
.value(WorkflowStepParamBindingValueArgs.builder()
.reference("user")
.build())
.build())
.build())
.onceFors("incident")
.owningTeamIds(platform.id())
.privateIncidentScope("none")
.continueOnStepError(false)
.runsOnIncidents("newly_created_and_active")
.runsOnIncidentModes("standard")
.state("draft")
.build());
}
}
resources:
# This is a workflow that automatically assigns the incident lead role to the user who acked an escalation.
autoassignIncidentLead:
type: incident:Workflow
name: autoassign_incident_lead
properties:
name: Auto-assign incident leader
trigger: escalation.acked
expressions: []
conditionGroups:
- conditions:
- subject: user
operation: is_set
paramBindings: []
steps:
- id: 01HY0QG9WT62CEYJN8JD74MJNR
name: incident.assign_role
paramBindings:
- value:
reference: incident
- value:
literal: ${incidentLead.id}
- value:
reference: user
onceFors:
- incident
owningTeamIds:
- ${platform.id}
privateIncidentScope: none
continueOnStepError: false
runsOnIncidents: newly_created_and_active
runsOnIncidentModes:
- standard
state: draft
variables:
# Teams are catalog entries, so an owning team is resolved through the catalog
# rather than by pasting in its ID. The identifier is matched against entry
# names, external IDs and aliases, so the team's name is enough.
team:
fn::invoke:
function: incident:getCatalogType
arguments:
name: Team
platform:
fn::invoke:
function: incident:getCatalogEntry
arguments:
catalogTypeId: ${team.id}
identifier: Platform
# Look the incident lead role up by name, rather than pinning its ID into the
# workflow below. The ID differs between workspaces, so a name keeps the config
# portable.
incidentLead:
fn::invoke:
function: incident:getIncidentRole
arguments:
name: Incident Lead
pulumi {
required_providers {
incident = {
source = "pulumi/incident"
}
}
}
data "incident_getcatalogtype" "team" {
name = "Team"
}
data "incident_getcatalogentry" "platform" {
catalog_type_id = data.incident_getcatalogtype.team.id
identifier = "Platform"
}
data "incident_getincidentrole" "incidentLead" {
name = "Incident Lead"
}
# This is a workflow that automatically assigns the incident lead role to the user who acked an escalation.
resource "incident_workflow" "autoassign_incident_lead" {
name = "Auto-assign incident leader"
trigger = "escalation.acked"
condition_groups {
conditions {
subject = "user"
operation = "is_set"
}
}
steps {
id = "01HY0QG9WT62CEYJN8JD74MJNR"
name = "incident.assign_role"
param_bindings {
value = {
reference = "incident"
}
}
param_bindings {
value = {
literal = data.incident_getincidentrole.incidentLead.id
}
}
param_bindings {
value = {
reference = "user"
}
}
}
once_fors = ["incident"]
owning_team_ids = [data.incident_getcatalogentry.platform.id]
private_incident_scope = "none"
continue_on_step_error = false
runs_on_incidents = "newly_created_and_active"
runs_on_incident_modes = ["standard"]
state = "draft"
}
# Teams are catalog entries, so an owning team is resolved through the catalog
# rather than by pasting in its ID. The identifier is matched against entry
# names, external IDs and aliases, so the team's name is enough.
# Look the incident lead role up by name, rather than pinning its ID into the
# workflow below. The ID differs between workspaces, so a name keeps the config
# portable.
Example - Page execs from a manual workflow, using form fields
import * as pulumi from "@pulumi/pulumi";
import * as incident from "@incident-io/pulumi";
// Rich text fields hold a document, not a string, so build one from markdown
// rather than writing the JSON by hand. Variables written as {{ }} become
// references into the workflow scope when the message is sent - a plain string
// literal is stored as literal text and won't interpolate. The feature set must
// match the field it's going into: a Slack message is "mrkdwn".
const execPage = incident.getRichText({
markdown: `**Exec page for {{ incident.name }}**
{{ form.reason }}
Join the incident channel: {{ incident.slack_channel }}`,
featureSet: "mrkdwn",
});
// This is a manually triggered workflow that collects information from the user
// via form fields when they run it. Each field's value is available in the
// workflow scope as `form.<key>`, for both conditions and steps to bind
// against - as the message below does with `form.reason`. That's the prefix the
// dashboard shows as "Form → <title>".
//
// The order of the list is the order the fields appear in the form. Either
// form_fields = [] or omitting the attribute clears any existing fields.
//
// A field's `id` is computed, never written: the provider correlates fields
// across applies by `key`, so retitling a field keeps its identity (and any
// in-flight runs), while changing its key replaces it. That's also why the key,
// not the title, is what the scope reference uses.
const pageExecs = new incident.Workflow("page_execs", {
name: "Page execs",
trigger: "manual",
expressions: [],
conditionGroups: [],
steps: [{
id: "01KG1326KD7DT1Z785SYVXXP98",
name: "slack.send_message",
paramBindings: [
{
arrayValue: [{
reference: "form.execs",
}],
},
{
value: {
literal: execPage.then(execPage => execPage.json),
},
},
{},
],
}],
formFields: [
{
key: "reason",
title: "Reason for paging",
type: "String",
description: "Why are we paging the execs?",
array: false,
required: true,
},
{
key: "execs",
title: "Who should we page?",
type: "User",
description: "The execs to message. Leave the on-call exec out, they're paged already.",
array: true,
required: true,
},
],
onceFors: ["incident"],
privateIncidentScope: "none",
continueOnStepError: false,
runsOnIncidents: "newly_created_and_active",
runsOnIncidentModes: ["standard"],
state: "draft",
});
import pulumi
import pulumi_incident as incident
# Rich text fields hold a document, not a string, so build one from markdown
# rather than writing the JSON by hand. Variables written as {{ }} become
# references into the workflow scope when the message is sent - a plain string
# literal is stored as literal text and won't interpolate. The feature set must
# match the field it's going into: a Slack message is "mrkdwn".
exec_page = incident.get_rich_text(markdown="""**Exec page for {{ incident.name }}**
{{ form.reason }}
Join the incident channel: {{ incident.slack_channel }}""",
feature_set="mrkdwn")
# This is a manually triggered workflow that collects information from the user
# via form fields when they run it. Each field's value is available in the
# workflow scope as `form.<key>`, for both conditions and steps to bind
# against - as the message below does with `form.reason`. That's the prefix the
# dashboard shows as "Form → <title>".
#
# The order of the list is the order the fields appear in the form. Either
# form_fields = [] or omitting the attribute clears any existing fields.
#
# A field's `id` is computed, never written: the provider correlates fields
# across applies by `key`, so retitling a field keeps its identity (and any
# in-flight runs), while changing its key replaces it. That's also why the key,
# not the title, is what the scope reference uses.
page_execs = incident.Workflow("page_execs",
name="Page execs",
trigger="manual",
expressions=[],
condition_groups=[],
steps=[{
"id": "01KG1326KD7DT1Z785SYVXXP98",
"name": "slack.send_message",
"param_bindings": [
{
"array_value": [{
"reference": "form.execs",
}],
},
{
"value": {
"literal": exec_page.json,
},
},
{},
],
}],
form_fields=[
{
"key": "reason",
"title": "Reason for paging",
"type": "String",
"description": "Why are we paging the execs?",
"array": False,
"required": True,
},
{
"key": "execs",
"title": "Who should we page?",
"type": "User",
"description": "The execs to message. Leave the on-call exec out, they're paged already.",
"array": True,
"required": True,
},
],
once_fors=["incident"],
private_incident_scope="none",
continue_on_step_error=False,
runs_on_incidents="newly_created_and_active",
runs_on_incident_modes=["standard"],
state="draft")
package main
import (
"github.com/incident-io/pulumi-incident/sdk/go/incident"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Rich text fields hold a document, not a string, so build one from markdown
// rather than writing the JSON by hand. Variables written as {{ }} become
// references into the workflow scope when the message is sent - a plain string
// literal is stored as literal text and won't interpolate. The feature set must
// match the field it's going into: a Slack message is "mrkdwn".
execPage, err := incident.GetRichText(ctx, &incident.GetRichTextArgs{
Markdown: "**Exec page for {{ incident.name }}**\n\n{{ form.reason }}\n\nJoin the incident channel: {{ incident.slack_channel }}",
FeatureSet: "mrkdwn",
}, nil)
if err != nil {
return err
}
// This is a manually triggered workflow that collects information from the user
// via form fields when they run it. Each field's value is available in the
// workflow scope as `form.<key>`, for both conditions and steps to bind
// against - as the message below does with `form.reason`. That's the prefix the
// dashboard shows as "Form → <title>".
//
// The order of the list is the order the fields appear in the form. Either
// form_fields = [] or omitting the attribute clears any existing fields.
//
// A field's `id` is computed, never written: the provider correlates fields
// across applies by `key`, so retitling a field keeps its identity (and any
// in-flight runs), while changing its key replaces it. That's also why the key,
// not the title, is what the scope reference uses.
_, err = incident.NewWorkflow(ctx, "page_execs", &incident.WorkflowArgs{
Name: pulumi.String("Page execs"),
Trigger: pulumi.String("manual"),
Expressions: incident.WorkflowExpressionArray{},
ConditionGroups: incident.WorkflowConditionGroupArray{},
Steps: incident.WorkflowStepArray{
&incident.WorkflowStepArgs{
Id: pulumi.String("01KG1326KD7DT1Z785SYVXXP98"),
Name: pulumi.String("slack.send_message"),
ParamBindings: incident.WorkflowStepParamBindingArray{
&incident.WorkflowStepParamBindingArgs{
ArrayValue: []map[string]string{
{
"reference": "form.execs",
},
},
},
&incident.WorkflowStepParamBindingArgs{
Value: &incident.WorkflowStepParamBindingValueArgs{
Literal: pulumi.String(execPage.Json),
},
},
&incident.WorkflowStepParamBindingArgs{},
},
},
},
FormFields: incident.WorkflowFormFieldArray{
&incident.WorkflowFormFieldArgs{
Key: pulumi.String("reason"),
Title: pulumi.String("Reason for paging"),
Type: pulumi.String("String"),
Description: pulumi.String("Why are we paging the execs?"),
Array: pulumi.Bool(false),
Required: pulumi.Bool(true),
},
&incident.WorkflowFormFieldArgs{
Key: pulumi.String("execs"),
Title: pulumi.String("Who should we page?"),
Type: pulumi.String("User"),
Description: pulumi.String("The execs to message. Leave the on-call exec out, they're paged already."),
Array: pulumi.Bool(true),
Required: pulumi.Bool(true),
},
},
OnceFors: pulumi.StringArray{
pulumi.String("incident"),
},
PrivateIncidentScope: pulumi.String("none"),
ContinueOnStepError: pulumi.Bool(false),
RunsOnIncidents: pulumi.String("newly_created_and_active"),
RunsOnIncidentModes: pulumi.StringArray{
pulumi.String("standard"),
},
State: pulumi.String("draft"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Incident = Pulumi.Incident;
return await Deployment.RunAsync(() =>
{
// Rich text fields hold a document, not a string, so build one from markdown
// rather than writing the JSON by hand. Variables written as {{ }} become
// references into the workflow scope when the message is sent - a plain string
// literal is stored as literal text and won't interpolate. The feature set must
// match the field it's going into: a Slack message is "mrkdwn".
var execPage = Incident.GetRichText.Invoke(new()
{
Markdown = @"**Exec page for {{ incident.name }}**
{{ form.reason }}
Join the incident channel: {{ incident.slack_channel }}",
FeatureSet = "mrkdwn",
});
// This is a manually triggered workflow that collects information from the user
// via form fields when they run it. Each field's value is available in the
// workflow scope as `form.<key>`, for both conditions and steps to bind
// against - as the message below does with `form.reason`. That's the prefix the
// dashboard shows as "Form → <title>".
//
// The order of the list is the order the fields appear in the form. Either
// form_fields = [] or omitting the attribute clears any existing fields.
//
// A field's `id` is computed, never written: the provider correlates fields
// across applies by `key`, so retitling a field keeps its identity (and any
// in-flight runs), while changing its key replaces it. That's also why the key,
// not the title, is what the scope reference uses.
var pageExecs = new Incident.Workflow("page_execs", new()
{
Name = "Page execs",
Trigger = "manual",
Expressions = new[] {},
ConditionGroups = new[] {},
Steps = new[]
{
new Incident.Inputs.WorkflowStepArgs
{
Id = "01KG1326KD7DT1Z785SYVXXP98",
Name = "slack.send_message",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowStepParamBindingArgs
{
ArrayValue = new[]
{
{
{ "reference", "form.execs" },
},
},
},
new Incident.Inputs.WorkflowStepParamBindingArgs
{
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Literal = execPage.Apply(getRichTextResult => getRichTextResult.Json),
},
},
null,
},
},
},
FormFields = new[]
{
new Incident.Inputs.WorkflowFormFieldArgs
{
Key = "reason",
Title = "Reason for paging",
Type = "String",
Description = "Why are we paging the execs?",
Array = false,
Required = true,
},
new Incident.Inputs.WorkflowFormFieldArgs
{
Key = "execs",
Title = "Who should we page?",
Type = "User",
Description = "The execs to message. Leave the on-call exec out, they're paged already.",
Array = true,
Required = true,
},
},
OnceFors = new[]
{
"incident",
},
PrivateIncidentScope = "none",
ContinueOnStepError = false,
RunsOnIncidents = "newly_created_and_active",
RunsOnIncidentModes = new[]
{
"standard",
},
State = "draft",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.incident.IncidentFunctions;
import com.pulumi.incident.inputs.GetRichTextArgs;
import com.pulumi.incident.Workflow;
import com.pulumi.incident.WorkflowArgs;
import com.pulumi.incident.inputs.WorkflowStepArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingValueArgs;
import com.pulumi.incident.inputs.WorkflowFormFieldArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Rich text fields hold a document, not a string, so build one from markdown
// rather than writing the JSON by hand. Variables written as {{ }} become
// references into the workflow scope when the message is sent - a plain string
// literal is stored as literal text and won't interpolate. The feature set must
// match the field it's going into: a Slack message is "mrkdwn".
final var execPage = IncidentFunctions.getRichText(GetRichTextArgs.builder()
.markdown("""
**Exec page for {{ incident.name }}**
{{ form.reason }}
Join the incident channel: {{ incident.slack_channel }} """)
.featureSet("mrkdwn")
.build());
// This is a manually triggered workflow that collects information from the user
// via form fields when they run it. Each field's value is available in the
// workflow scope as `form.<key>`, for both conditions and steps to bind
// against - as the message below does with `form.reason`. That's the prefix the
// dashboard shows as "Form → <title>".
//
// The order of the list is the order the fields appear in the form. Either
// form_fields = [] or omitting the attribute clears any existing fields.
//
// A field's `id` is computed, never written: the provider correlates fields
// across applies by `key`, so retitling a field keeps its identity (and any
// in-flight runs), while changing its key replaces it. That's also why the key,
// not the title, is what the scope reference uses.
var pageExecs = new Workflow("pageExecs", WorkflowArgs.builder()
.name("Page execs")
.trigger("manual")
.expressions()
.conditionGroups()
.steps(WorkflowStepArgs.builder()
.id("01KG1326KD7DT1Z785SYVXXP98")
.name("slack.send_message")
.paramBindings(
WorkflowStepParamBindingArgs.builder()
.arrayValue(Arrays.asList(Map.of("reference", "form.execs")))
.build(),
WorkflowStepParamBindingArgs.builder()
.value(WorkflowStepParamBindingValueArgs.builder()
.literal(execPage.json())
.build())
.build(),
WorkflowStepParamBindingArgs.builder()
.build())
.build())
.formFields(
WorkflowFormFieldArgs.builder()
.key("reason")
.title("Reason for paging")
.type("String")
.description("Why are we paging the execs?")
.array(false)
.required(true)
.build(),
WorkflowFormFieldArgs.builder()
.key("execs")
.title("Who should we page?")
.type("User")
.description("The execs to message. Leave the on-call exec out, they're paged already.")
.array(true)
.required(true)
.build())
.onceFors("incident")
.privateIncidentScope("none")
.continueOnStepError(false)
.runsOnIncidents("newly_created_and_active")
.runsOnIncidentModes("standard")
.state("draft")
.build());
}
}
resources:
# This is a manually triggered workflow that collects information from the user
# via form fields when they run it. Each field's value is available in the
# workflow scope as `form.<key>`, for both conditions and steps to bind
# against - as the message below does with `form.reason`. That's the prefix the
# dashboard shows as "Form → <title>".
#
# The order of the list is the order the fields appear in the form. Either
# form_fields = [] or omitting the attribute clears any existing fields.
#
# A field's `id` is computed, never written: the provider correlates fields
# across applies by `key`, so retitling a field keeps its identity (and any
# in-flight runs), while changing its key replaces it. That's also why the key,
# not the title, is what the scope reference uses.
pageExecs:
type: incident:Workflow
name: page_execs
properties:
name: Page execs
trigger: manual
expressions: []
conditionGroups: []
steps:
- id: 01KG1326KD7DT1Z785SYVXXP98
name: slack.send_message
paramBindings:
- arrayValue:
- reference: form.execs
- value:
literal: ${execPage.json}
- {}
formFields:
- key: reason
title: Reason for paging
type: String
description: Why are we paging the execs?
array: false
required: true
- key: execs
title: Who should we page?
type: User
description: The execs to message. Leave the on-call exec out, they're paged already.
array: true
required: true
onceFors:
- incident
privateIncidentScope: none
continueOnStepError: false
runsOnIncidents: newly_created_and_active
runsOnIncidentModes:
- standard
state: draft
variables:
# Rich text fields hold a document, not a string, so build one from markdown
# rather than writing the JSON by hand. Variables written as {{ }} become
# references into the workflow scope when the message is sent - a plain string
# literal is stored as literal text and won't interpolate. The feature set must
# match the field it's going into: a Slack message is "mrkdwn".
execPage:
fn::invoke:
function: incident:getRichText
arguments:
markdown: |-
**Exec page for {{ incident.name }}**
{{ form.reason }}
Join the incident channel: {{ incident.slack_channel }}
featureSet: mrkdwn
pulumi {
required_providers {
incident = {
source = "pulumi/incident"
}
}
}
data "incident_getrichtext" "execPage" {
markdown = "**Exec page for {{ incident.name }}**\n\n{{ form.reason }}\n\nJoin the incident channel: {{ incident.slack_channel }}"
feature_set = "mrkdwn"
}
# This is a manually triggered workflow that collects information from the user
# via form fields when they run it. Each field's value is available in the
# workflow scope as `form.<key>`, for both conditions and steps to bind
# against - as the message below does with `form.reason`. That's the prefix the
# dashboard shows as "Form → <title>".
#
# The order of the list is the order the fields appear in the form. Either
# form_fields = [] or omitting the attribute clears any existing fields.
#
# A field's `id` is computed, never written: the provider correlates fields
# across applies by `key`, so retitling a field keeps its identity (and any
# in-flight runs), while changing its key replaces it. That's also why the key,
# not the title, is what the scope reference uses.
resource "incident_workflow" "page_execs" {
name = "Page execs"
trigger = "manual"
steps {
id = "01KG1326KD7DT1Z785SYVXXP98"
name = "slack.send_message"
param_bindings {
array_value = [{
"reference" = "form.execs"
}]
}
param_bindings {
value = {
literal = data.incident_getrichtext.execPage.json
}
}
param_bindings {
}
}
form_fields {
key = "reason"
title = "Reason for paging"
type = "String"
description = "Why are we paging the execs?"
array = false
required = true
}
form_fields {
key = "execs"
title = "Who should we page?"
type = "User"
description = "The execs to message. Leave the on-call exec out, they're paged already."
array = true
required = true
}
once_fors = ["incident"]
private_incident_scope = "none"
continue_on_step_error = false
runs_on_incidents = "newly_created_and_active"
runs_on_incident_modes = ["standard"]
state = "draft"
}
# Rich text fields hold a document, not a string, so build one from markdown
# rather than writing the JSON by hand. Variables written as {{ }} become
# references into the workflow scope when the message is sent - a plain string
# literal is stored as literal text and won't interpolate. The feature set must
# match the field it's going into: a Slack message is "mrkdwn".
Example - Create the postmortem follow-up when an incident closes
import * as pulumi from "@pulumi/pulumi";
import * as incident from "@incident-io/pulumi";
// Statuses are managed by incident.io, so look one up by name rather than pasting
// the ULID an export gives you: the ID differs between workspaces, the name is
// what you see in the dashboard.
const closed = incident.getStatus({
name: "Closed",
});
// This workflow runs when someone moves an incident into Closed, and creates the
// postmortem follow-up assigned to whoever closed it.
//
// The trigger's scope carries three references to bind against: "incident",
// "previous-status" (the status the incident moved out of) and
// "user-who-changed-the-status".
//
// Note that building this in the dashboard pre-fills a "status category is
// Active" condition, which would stop this workflow ever running, Closed not
// being an active category. Terraform writes conditions explicitly so there's
// nothing to remove here, but check for that condition if you export a
// status-driven workflow from the dashboard.
const postmortemWhenClosed = new incident.Workflow("postmortem_when_closed", {
name: "Create the postmortem follow-up when an incident closes",
trigger: "incident.status-changed",
expressions: [],
conditionGroups: [{
conditions: [{
subject: "incident.status",
operation: "one_of",
paramBindings: [{
arrayValue: [{
literal: closed.then(closed => closed.id),
}],
}],
}],
}],
steps: [{
id: "01KT8B9QQH67GF9S6SW4A7DNEX",
name: "incident.create_follow_ups",
paramBindings: [
{
value: {
reference: "incident",
},
},
{
arrayValue: [{
literal: "Write the postmortem",
}],
},
{
value: {
reference: "user-who-changed-the-status",
},
},
{},
{},
{},
],
}],
onceFors: ["incident"],
privateIncidentScope: "none",
continueOnStepError: false,
runsOnIncidents: "newly_created_and_active",
runsOnIncidentModes: ["standard"],
state: "draft",
});
import pulumi
import pulumi_incident as incident
# Statuses are managed by incident.io, so look one up by name rather than pasting
# the ULID an export gives you: the ID differs between workspaces, the name is
# what you see in the dashboard.
closed = incident.get_status(name="Closed")
# This workflow runs when someone moves an incident into Closed, and creates the
# postmortem follow-up assigned to whoever closed it.
#
# The trigger's scope carries three references to bind against: "incident",
# "previous-status" (the status the incident moved out of) and
# "user-who-changed-the-status".
#
# Note that building this in the dashboard pre-fills a "status category is
# Active" condition, which would stop this workflow ever running, Closed not
# being an active category. Terraform writes conditions explicitly so there's
# nothing to remove here, but check for that condition if you export a
# status-driven workflow from the dashboard.
postmortem_when_closed = incident.Workflow("postmortem_when_closed",
name="Create the postmortem follow-up when an incident closes",
trigger="incident.status-changed",
expressions=[],
condition_groups=[{
"conditions": [{
"subject": "incident.status",
"operation": "one_of",
"param_bindings": [{
"array_value": [{
"literal": closed.id,
}],
}],
}],
}],
steps=[{
"id": "01KT8B9QQH67GF9S6SW4A7DNEX",
"name": "incident.create_follow_ups",
"param_bindings": [
{
"value": {
"reference": "incident",
},
},
{
"array_value": [{
"literal": "Write the postmortem",
}],
},
{
"value": {
"reference": "user-who-changed-the-status",
},
},
{},
{},
{},
],
}],
once_fors=["incident"],
private_incident_scope="none",
continue_on_step_error=False,
runs_on_incidents="newly_created_and_active",
runs_on_incident_modes=["standard"],
state="draft")
package main
import (
"github.com/incident-io/pulumi-incident/sdk/go/incident"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Statuses are managed by incident.io, so look one up by name rather than pasting
// the ULID an export gives you: the ID differs between workspaces, the name is
// what you see in the dashboard.
closed, err := incident.GetStatus(ctx, &incident.LookupStatusArgs{
Name: pulumi.StringRef("Closed"),
}, nil)
if err != nil {
return err
}
// This workflow runs when someone moves an incident into Closed, and creates the
// postmortem follow-up assigned to whoever closed it.
//
// The trigger's scope carries three references to bind against: "incident",
// "previous-status" (the status the incident moved out of) and
// "user-who-changed-the-status".
//
// Note that building this in the dashboard pre-fills a "status category is
// Active" condition, which would stop this workflow ever running, Closed not
// being an active category. Terraform writes conditions explicitly so there's
// nothing to remove here, but check for that condition if you export a
// status-driven workflow from the dashboard.
_, err = incident.NewWorkflow(ctx, "postmortem_when_closed", &incident.WorkflowArgs{
Name: pulumi.String("Create the postmortem follow-up when an incident closes"),
Trigger: pulumi.String("incident.status-changed"),
Expressions: incident.WorkflowExpressionArray{},
ConditionGroups: incident.WorkflowConditionGroupArray{
&incident.WorkflowConditionGroupArgs{
Conditions: incident.WorkflowConditionGroupConditionArray{
&incident.WorkflowConditionGroupConditionArgs{
Subject: pulumi.String("incident.status"),
Operation: pulumi.String("one_of"),
ParamBindings: incident.WorkflowConditionGroupConditionParamBindingArray{
&incident.WorkflowConditionGroupConditionParamBindingArgs{
ArrayValue: []map[string]interface{}{
map[string]interface{}{
"literal": closed.Id,
},
},
},
},
},
},
},
},
Steps: incident.WorkflowStepArray{
&incident.WorkflowStepArgs{
Id: pulumi.String("01KT8B9QQH67GF9S6SW4A7DNEX"),
Name: pulumi.String("incident.create_follow_ups"),
ParamBindings: incident.WorkflowStepParamBindingArray{
&incident.WorkflowStepParamBindingArgs{
Value: &incident.WorkflowStepParamBindingValueArgs{
Reference: pulumi.String("incident"),
},
},
&incident.WorkflowStepParamBindingArgs{
ArrayValue: []map[string]string{
{
"literal": "Write the postmortem",
},
},
},
&incident.WorkflowStepParamBindingArgs{
Value: &incident.WorkflowStepParamBindingValueArgs{
Reference: pulumi.String("user-who-changed-the-status"),
},
},
&incident.WorkflowStepParamBindingArgs{},
&incident.WorkflowStepParamBindingArgs{},
&incident.WorkflowStepParamBindingArgs{},
},
},
},
OnceFors: pulumi.StringArray{
pulumi.String("incident"),
},
PrivateIncidentScope: pulumi.String("none"),
ContinueOnStepError: pulumi.Bool(false),
RunsOnIncidents: pulumi.String("newly_created_and_active"),
RunsOnIncidentModes: pulumi.StringArray{
pulumi.String("standard"),
},
State: pulumi.String("draft"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Incident = Pulumi.Incident;
return await Deployment.RunAsync(() =>
{
// Statuses are managed by incident.io, so look one up by name rather than pasting
// the ULID an export gives you: the ID differs between workspaces, the name is
// what you see in the dashboard.
var closed = Incident.GetStatus.Invoke(new()
{
Name = "Closed",
});
// This workflow runs when someone moves an incident into Closed, and creates the
// postmortem follow-up assigned to whoever closed it.
//
// The trigger's scope carries three references to bind against: "incident",
// "previous-status" (the status the incident moved out of) and
// "user-who-changed-the-status".
//
// Note that building this in the dashboard pre-fills a "status category is
// Active" condition, which would stop this workflow ever running, Closed not
// being an active category. Terraform writes conditions explicitly so there's
// nothing to remove here, but check for that condition if you export a
// status-driven workflow from the dashboard.
var postmortemWhenClosed = new Incident.Workflow("postmortem_when_closed", new()
{
Name = "Create the postmortem follow-up when an incident closes",
Trigger = "incident.status-changed",
Expressions = new[] {},
ConditionGroups = new[]
{
new Incident.Inputs.WorkflowConditionGroupArgs
{
Conditions = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionArgs
{
Subject = "incident.status",
Operation = "one_of",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionParamBindingArgs
{
ArrayValue = new[]
{
{
{ "literal", closed.Apply(getStatusResult => getStatusResult.Id) },
},
},
},
},
},
},
},
},
Steps = new[]
{
new Incident.Inputs.WorkflowStepArgs
{
Id = "01KT8B9QQH67GF9S6SW4A7DNEX",
Name = "incident.create_follow_ups",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowStepParamBindingArgs
{
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Reference = "incident",
},
},
new Incident.Inputs.WorkflowStepParamBindingArgs
{
ArrayValue = new[]
{
{
{ "literal", "Write the postmortem" },
},
},
},
new Incident.Inputs.WorkflowStepParamBindingArgs
{
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Reference = "user-who-changed-the-status",
},
},
null,
null,
null,
},
},
},
OnceFors = new[]
{
"incident",
},
PrivateIncidentScope = "none",
ContinueOnStepError = false,
RunsOnIncidents = "newly_created_and_active",
RunsOnIncidentModes = new[]
{
"standard",
},
State = "draft",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.incident.IncidentFunctions;
import com.pulumi.incident.inputs.GetStatusArgs;
import com.pulumi.incident.Workflow;
import com.pulumi.incident.WorkflowArgs;
import com.pulumi.incident.inputs.WorkflowConditionGroupArgs;
import com.pulumi.incident.inputs.WorkflowConditionGroupConditionArgs;
import com.pulumi.incident.inputs.WorkflowConditionGroupConditionParamBindingArgs;
import com.pulumi.incident.inputs.WorkflowStepArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingValueArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Statuses are managed by incident.io, so look one up by name rather than pasting
// the ULID an export gives you: the ID differs between workspaces, the name is
// what you see in the dashboard.
final var closed = IncidentFunctions.getStatus(GetStatusArgs.builder()
.name("Closed")
.build());
// This workflow runs when someone moves an incident into Closed, and creates the
// postmortem follow-up assigned to whoever closed it.
//
// The trigger's scope carries three references to bind against: "incident",
// "previous-status" (the status the incident moved out of) and
// "user-who-changed-the-status".
//
// Note that building this in the dashboard pre-fills a "status category is
// Active" condition, which would stop this workflow ever running, Closed not
// being an active category. Terraform writes conditions explicitly so there's
// nothing to remove here, but check for that condition if you export a
// status-driven workflow from the dashboard.
var postmortemWhenClosed = new Workflow("postmortemWhenClosed", WorkflowArgs.builder()
.name("Create the postmortem follow-up when an incident closes")
.trigger("incident.status-changed")
.expressions()
.conditionGroups(WorkflowConditionGroupArgs.builder()
.conditions(WorkflowConditionGroupConditionArgs.builder()
.subject("incident.status")
.operation("one_of")
.paramBindings(WorkflowConditionGroupConditionParamBindingArgs.builder()
.arrayValue(Arrays.asList(Map.of("literal", closed.id())))
.build())
.build())
.build())
.steps(WorkflowStepArgs.builder()
.id("01KT8B9QQH67GF9S6SW4A7DNEX")
.name("incident.create_follow_ups")
.paramBindings(
WorkflowStepParamBindingArgs.builder()
.value(WorkflowStepParamBindingValueArgs.builder()
.reference("incident")
.build())
.build(),
WorkflowStepParamBindingArgs.builder()
.arrayValue(Arrays.asList(Map.of("literal", "Write the postmortem")))
.build(),
WorkflowStepParamBindingArgs.builder()
.value(WorkflowStepParamBindingValueArgs.builder()
.reference("user-who-changed-the-status")
.build())
.build(),
WorkflowStepParamBindingArgs.builder()
.build(),
WorkflowStepParamBindingArgs.builder()
.build(),
WorkflowStepParamBindingArgs.builder()
.build())
.build())
.onceFors("incident")
.privateIncidentScope("none")
.continueOnStepError(false)
.runsOnIncidents("newly_created_and_active")
.runsOnIncidentModes("standard")
.state("draft")
.build());
}
}
resources:
# This workflow runs when someone moves an incident into Closed, and creates the
# postmortem follow-up assigned to whoever closed it.
#
# The trigger's scope carries three references to bind against: "incident",
# "previous-status" (the status the incident moved out of) and
# "user-who-changed-the-status".
#
# Note that building this in the dashboard pre-fills a "status category is
# Active" condition, which would stop this workflow ever running, Closed not
# being an active category. Terraform writes conditions explicitly so there's
# nothing to remove here, but check for that condition if you export a
# status-driven workflow from the dashboard.
postmortemWhenClosed:
type: incident:Workflow
name: postmortem_when_closed
properties:
name: Create the postmortem follow-up when an incident closes
trigger: incident.status-changed
expressions: []
conditionGroups:
- conditions:
- subject: incident.status
operation: one_of
paramBindings:
- arrayValue:
- literal: ${closed.id}
steps:
- id: 01KT8B9QQH67GF9S6SW4A7DNEX
name: incident.create_follow_ups
paramBindings:
- value:
reference: incident
- arrayValue:
- literal: Write the postmortem
- value:
reference: user-who-changed-the-status
- {}
- {}
- {}
onceFors:
- incident
privateIncidentScope: none
continueOnStepError: false
runsOnIncidents: newly_created_and_active
runsOnIncidentModes:
- standard
state: draft
variables:
# Statuses are managed by incident.io, so look one up by name rather than pasting
# the ULID an export gives you: the ID differs between workspaces, the name is
# what you see in the dashboard.
closed:
fn::invoke:
function: incident:getStatus
arguments:
name: Closed
pulumi {
required_providers {
incident = {
source = "pulumi/incident"
}
}
}
data "incident_getstatus" "closed" {
name = "Closed"
}
# This workflow runs when someone moves an incident into Closed, and creates the
# postmortem follow-up assigned to whoever closed it.
#
# The trigger's scope carries three references to bind against: "incident",
# "previous-status" (the status the incident moved out of) and
# "user-who-changed-the-status".
#
# Note that building this in the dashboard pre-fills a "status category is
# Active" condition, which would stop this workflow ever running, Closed not
# being an active category. Terraform writes conditions explicitly so there's
# nothing to remove here, but check for that condition if you export a
# status-driven workflow from the dashboard.
resource "incident_workflow" "postmortem_when_closed" {
name = "Create the postmortem follow-up when an incident closes"
trigger = "incident.status-changed"
condition_groups {
conditions {
subject = "incident.status"
operation = "one_of"
param_bindings {
array_value = [{
"literal" = data.incident_getstatus.closed.id
}]
}
}
}
steps {
id = "01KT8B9QQH67GF9S6SW4A7DNEX"
name = "incident.create_follow_ups"
param_bindings {
value = {
reference = "incident"
}
}
param_bindings {
array_value = [{
"literal" = "Write the postmortem"
}]
}
param_bindings {
value = {
reference = "user-who-changed-the-status"
}
}
param_bindings {
}
param_bindings {
}
param_bindings {
}
}
once_fors = ["incident"]
private_incident_scope = "none"
continue_on_step_error = false
runs_on_incidents = "newly_created_and_active"
runs_on_incident_modes = ["standard"]
state = "draft"
}
# Statuses are managed by incident.io, so look one up by name rather than pasting
# the ULID an export gives you: the ID differs between workspaces, the name is
# what you see in the dashboard.
Example - Invite the security responders to an incident
import * as pulumi from "@pulumi/pulumi";
import * as incident from "@incident-io/pulumi";
// Users have a data source, so a config doesn't need the ULIDs an export writes
// for them: look people up by the email address they use with incident.io.
const securityLead = incident.getUser({
email: "security-lead@example.com",
});
// Slack user groups reach the engine through the catalog, as entries of the
// managed "Slack User Group" type. The identifier matches an entry's name,
// external ID or aliases, so the group's handle is enough.
const slackUserGroup = incident.getCatalogType({
name: "Slack User Group",
});
const securityResponders = slackUserGroup.then(slackUserGroup => incident.getCatalogEntry({
catalogTypeId: slackUserGroup.id,
identifier: "security-responders",
}));
// This workflow pulls the security responders into an incident's channel as soon
// as the incident becomes active.
//
// Four steps sound alike but do different things, so pick deliberately:
//
// slack.invite_user invites users and Slack user groups to
// the incident's channel (this one)
// incident.add_member grants access to a private incident, and
// does nothing on a public one
// incident.assign_role gives someone an incident role, such as
// Incident Lead
// incident.subscribe_user_to_incident subscribes someone to updates without
// making them a participant
//
// Narrow this with conditions on whatever marks the incidents you care about -
// a custom field, the incident's type, or its severity.
const inviteSecurityResponders = new incident.Workflow("invite_security_responders", {
name: "Invite security responders",
trigger: "incident.updated",
expressions: [],
conditionGroups: [{
conditions: [{
subject: "incident.status.category",
operation: "one_of",
paramBindings: [{
arrayValue: [{
literal: "active",
}],
}],
}],
}],
steps: [{
id: "01KFD47KKJS93YXR3W53MQSFVC",
name: "slack.invite_user",
paramBindings: [
{
value: {
reference: "incident",
},
},
{
arrayValue: [{
literal: securityLead.then(securityLead => securityLead.id),
}],
},
{
arrayValue: [{
literal: securityResponders.then(securityResponders => securityResponders.id),
}],
},
],
}],
onceFors: ["incident"],
privateIncidentScope: "none",
autoRunMode: "confirm_before_running",
continueOnStepError: false,
runsOnIncidents: "newly_created_and_active",
runsOnIncidentModes: ["standard"],
state: "draft",
});
import pulumi
import pulumi_incident as incident
# Users have a data source, so a config doesn't need the ULIDs an export writes
# for them: look people up by the email address they use with incident.io.
security_lead = incident.get_user(email="security-lead@example.com")
# Slack user groups reach the engine through the catalog, as entries of the
# managed "Slack User Group" type. The identifier matches an entry's name,
# external ID or aliases, so the group's handle is enough.
slack_user_group = incident.get_catalog_type(name="Slack User Group")
security_responders = incident.get_catalog_entry(catalog_type_id=slack_user_group.id,
identifier="security-responders")
# This workflow pulls the security responders into an incident's channel as soon
# as the incident becomes active.
#
# Four steps sound alike but do different things, so pick deliberately:
#
# slack.invite_user invites users and Slack user groups to
# the incident's channel (this one)
# incident.add_member grants access to a private incident, and
# does nothing on a public one
# incident.assign_role gives someone an incident role, such as
# Incident Lead
# incident.subscribe_user_to_incident subscribes someone to updates without
# making them a participant
#
# Narrow this with conditions on whatever marks the incidents you care about -
# a custom field, the incident's type, or its severity.
invite_security_responders = incident.Workflow("invite_security_responders",
name="Invite security responders",
trigger="incident.updated",
expressions=[],
condition_groups=[{
"conditions": [{
"subject": "incident.status.category",
"operation": "one_of",
"param_bindings": [{
"array_value": [{
"literal": "active",
}],
}],
}],
}],
steps=[{
"id": "01KFD47KKJS93YXR3W53MQSFVC",
"name": "slack.invite_user",
"param_bindings": [
{
"value": {
"reference": "incident",
},
},
{
"array_value": [{
"literal": security_lead.id,
}],
},
{
"array_value": [{
"literal": security_responders.id,
}],
},
],
}],
once_fors=["incident"],
private_incident_scope="none",
auto_run_mode="confirm_before_running",
continue_on_step_error=False,
runs_on_incidents="newly_created_and_active",
runs_on_incident_modes=["standard"],
state="draft")
package main
import (
"github.com/incident-io/pulumi-incident/sdk/go/incident"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Users have a data source, so a config doesn't need the ULIDs an export writes
// for them: look people up by the email address they use with incident.io.
securityLead, err := incident.GetUser(ctx, &incident.GetUserArgs{
Email: pulumi.StringRef("security-lead@example.com"),
}, nil)
if err != nil {
return err
}
// Slack user groups reach the engine through the catalog, as entries of the
// managed "Slack User Group" type. The identifier matches an entry's name,
// external ID or aliases, so the group's handle is enough.
slackUserGroup, err := incident.GetCatalogType(ctx, &incident.LookupCatalogTypeArgs{
Name: pulumi.StringRef("Slack User Group"),
}, nil)
if err != nil {
return err
}
securityResponders, err := incident.GetCatalogEntry(ctx, &incident.LookupCatalogEntryArgs{
CatalogTypeId: slackUserGroup.Id,
Identifier: "security-responders",
}, nil)
if err != nil {
return err
}
// This workflow pulls the security responders into an incident's channel as soon
// as the incident becomes active.
//
// Four steps sound alike but do different things, so pick deliberately:
//
// slack.invite_user invites users and Slack user groups to
// the incident's channel (this one)
// incident.add_member grants access to a private incident, and
// does nothing on a public one
// incident.assign_role gives someone an incident role, such as
// Incident Lead
// incident.subscribe_user_to_incident subscribes someone to updates without
// making them a participant
//
// Narrow this with conditions on whatever marks the incidents you care about -
// a custom field, the incident's type, or its severity.
_, err = incident.NewWorkflow(ctx, "invite_security_responders", &incident.WorkflowArgs{
Name: pulumi.String("Invite security responders"),
Trigger: pulumi.String("incident.updated"),
Expressions: incident.WorkflowExpressionArray{},
ConditionGroups: incident.WorkflowConditionGroupArray{
&incident.WorkflowConditionGroupArgs{
Conditions: incident.WorkflowConditionGroupConditionArray{
&incident.WorkflowConditionGroupConditionArgs{
Subject: pulumi.String("incident.status.category"),
Operation: pulumi.String("one_of"),
ParamBindings: incident.WorkflowConditionGroupConditionParamBindingArray{
&incident.WorkflowConditionGroupConditionParamBindingArgs{
ArrayValue: []map[string]string{
{
"literal": "active",
},
},
},
},
},
},
},
},
Steps: incident.WorkflowStepArray{
&incident.WorkflowStepArgs{
Id: pulumi.String("01KFD47KKJS93YXR3W53MQSFVC"),
Name: pulumi.String("slack.invite_user"),
ParamBindings: incident.WorkflowStepParamBindingArray{
&incident.WorkflowStepParamBindingArgs{
Value: &incident.WorkflowStepParamBindingValueArgs{
Reference: pulumi.String("incident"),
},
},
&incident.WorkflowStepParamBindingArgs{
ArrayValue: []map[string]interface{}{
map[string]interface{}{
"literal": securityLead.Id,
},
},
},
&incident.WorkflowStepParamBindingArgs{
ArrayValue: []map[string]interface{}{
map[string]interface{}{
"literal": securityResponders.Id,
},
},
},
},
},
},
OnceFors: pulumi.StringArray{
pulumi.String("incident"),
},
PrivateIncidentScope: pulumi.String("none"),
AutoRunMode: pulumi.String("confirm_before_running"),
ContinueOnStepError: pulumi.Bool(false),
RunsOnIncidents: pulumi.String("newly_created_and_active"),
RunsOnIncidentModes: pulumi.StringArray{
pulumi.String("standard"),
},
State: pulumi.String("draft"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Incident = Pulumi.Incident;
return await Deployment.RunAsync(() =>
{
// Users have a data source, so a config doesn't need the ULIDs an export writes
// for them: look people up by the email address they use with incident.io.
var securityLead = Incident.GetUser.Invoke(new()
{
Email = "security-lead@example.com",
});
// Slack user groups reach the engine through the catalog, as entries of the
// managed "Slack User Group" type. The identifier matches an entry's name,
// external ID or aliases, so the group's handle is enough.
var slackUserGroup = Incident.GetCatalogType.Invoke(new()
{
Name = "Slack User Group",
});
var securityResponders = Incident.GetCatalogEntry.Invoke(new()
{
CatalogTypeId = slackUserGroup.Apply(getCatalogTypeResult => getCatalogTypeResult.Id),
Identifier = "security-responders",
});
// This workflow pulls the security responders into an incident's channel as soon
// as the incident becomes active.
//
// Four steps sound alike but do different things, so pick deliberately:
//
// slack.invite_user invites users and Slack user groups to
// the incident's channel (this one)
// incident.add_member grants access to a private incident, and
// does nothing on a public one
// incident.assign_role gives someone an incident role, such as
// Incident Lead
// incident.subscribe_user_to_incident subscribes someone to updates without
// making them a participant
//
// Narrow this with conditions on whatever marks the incidents you care about -
// a custom field, the incident's type, or its severity.
var inviteSecurityResponders = new Incident.Workflow("invite_security_responders", new()
{
Name = "Invite security responders",
Trigger = "incident.updated",
Expressions = new[] {},
ConditionGroups = new[]
{
new Incident.Inputs.WorkflowConditionGroupArgs
{
Conditions = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionArgs
{
Subject = "incident.status.category",
Operation = "one_of",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionParamBindingArgs
{
ArrayValue = new[]
{
{
{ "literal", "active" },
},
},
},
},
},
},
},
},
Steps = new[]
{
new Incident.Inputs.WorkflowStepArgs
{
Id = "01KFD47KKJS93YXR3W53MQSFVC",
Name = "slack.invite_user",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowStepParamBindingArgs
{
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Reference = "incident",
},
},
new Incident.Inputs.WorkflowStepParamBindingArgs
{
ArrayValue = new[]
{
{
{ "literal", securityLead.Apply(getUserResult => getUserResult.Id) },
},
},
},
new Incident.Inputs.WorkflowStepParamBindingArgs
{
ArrayValue = new[]
{
{
{ "literal", securityResponders.Apply(getCatalogEntryResult => getCatalogEntryResult.Id) },
},
},
},
},
},
},
OnceFors = new[]
{
"incident",
},
PrivateIncidentScope = "none",
AutoRunMode = "confirm_before_running",
ContinueOnStepError = false,
RunsOnIncidents = "newly_created_and_active",
RunsOnIncidentModes = new[]
{
"standard",
},
State = "draft",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.incident.IncidentFunctions;
import com.pulumi.incident.inputs.GetUserArgs;
import com.pulumi.incident.inputs.GetCatalogTypeArgs;
import com.pulumi.incident.inputs.GetCatalogEntryArgs;
import com.pulumi.incident.Workflow;
import com.pulumi.incident.WorkflowArgs;
import com.pulumi.incident.inputs.WorkflowConditionGroupArgs;
import com.pulumi.incident.inputs.WorkflowConditionGroupConditionArgs;
import com.pulumi.incident.inputs.WorkflowConditionGroupConditionParamBindingArgs;
import com.pulumi.incident.inputs.WorkflowStepArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingValueArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Users have a data source, so a config doesn't need the ULIDs an export writes
// for them: look people up by the email address they use with incident.io.
final var securityLead = IncidentFunctions.getUser(GetUserArgs.builder()
.email("security-lead@example.com")
.build());
// Slack user groups reach the engine through the catalog, as entries of the
// managed "Slack User Group" type. The identifier matches an entry's name,
// external ID or aliases, so the group's handle is enough.
final var slackUserGroup = IncidentFunctions.getCatalogType(GetCatalogTypeArgs.builder()
.name("Slack User Group")
.build());
final var securityResponders = IncidentFunctions.getCatalogEntry(GetCatalogEntryArgs.builder()
.catalogTypeId(slackUserGroup.id())
.identifier("security-responders")
.build());
// This workflow pulls the security responders into an incident's channel as soon
// as the incident becomes active.
//
// Four steps sound alike but do different things, so pick deliberately:
//
// slack.invite_user invites users and Slack user groups to
// the incident's channel (this one)
// incident.add_member grants access to a private incident, and
// does nothing on a public one
// incident.assign_role gives someone an incident role, such as
// Incident Lead
// incident.subscribe_user_to_incident subscribes someone to updates without
// making them a participant
//
// Narrow this with conditions on whatever marks the incidents you care about -
// a custom field, the incident's type, or its severity.
var inviteSecurityResponders = new Workflow("inviteSecurityResponders", WorkflowArgs.builder()
.name("Invite security responders")
.trigger("incident.updated")
.expressions()
.conditionGroups(WorkflowConditionGroupArgs.builder()
.conditions(WorkflowConditionGroupConditionArgs.builder()
.subject("incident.status.category")
.operation("one_of")
.paramBindings(WorkflowConditionGroupConditionParamBindingArgs.builder()
.arrayValue(Arrays.asList(Map.of("literal", "active")))
.build())
.build())
.build())
.steps(WorkflowStepArgs.builder()
.id("01KFD47KKJS93YXR3W53MQSFVC")
.name("slack.invite_user")
.paramBindings(
WorkflowStepParamBindingArgs.builder()
.value(WorkflowStepParamBindingValueArgs.builder()
.reference("incident")
.build())
.build(),
WorkflowStepParamBindingArgs.builder()
.arrayValue(Arrays.asList(Map.of("literal", securityLead.id())))
.build(),
WorkflowStepParamBindingArgs.builder()
.arrayValue(Arrays.asList(Map.of("literal", securityResponders.id())))
.build())
.build())
.onceFors("incident")
.privateIncidentScope("none")
.autoRunMode("confirm_before_running")
.continueOnStepError(false)
.runsOnIncidents("newly_created_and_active")
.runsOnIncidentModes("standard")
.state("draft")
.build());
}
}
resources:
# This workflow pulls the security responders into an incident's channel as soon
# as the incident becomes active.
#
# Four steps sound alike but do different things, so pick deliberately:
#
# slack.invite_user invites users and Slack user groups to
# the incident's channel (this one)
# incident.add_member grants access to a private incident, and
# does nothing on a public one
# incident.assign_role gives someone an incident role, such as
# Incident Lead
# incident.subscribe_user_to_incident subscribes someone to updates without
# making them a participant
#
# Narrow this with conditions on whatever marks the incidents you care about -
# a custom field, the incident's type, or its severity.
inviteSecurityResponders:
type: incident:Workflow
name: invite_security_responders
properties:
name: Invite security responders
trigger: incident.updated
expressions: []
conditionGroups:
- conditions:
- subject: incident.status.category
operation: one_of
paramBindings:
- arrayValue:
- literal: active
steps:
- id: 01KFD47KKJS93YXR3W53MQSFVC
name: slack.invite_user
paramBindings:
- value:
reference: incident
- arrayValue:
- literal: ${securityLead.id}
- arrayValue:
- literal: ${securityResponders.id}
onceFors:
- incident
privateIncidentScope: none
autoRunMode: confirm_before_running
continueOnStepError: false
runsOnIncidents: newly_created_and_active
runsOnIncidentModes:
- standard
state: draft
variables:
# Users have a data source, so a config doesn't need the ULIDs an export writes
# for them: look people up by the email address they use with incident.io.
securityLead:
fn::invoke:
function: incident:getUser
arguments:
email: security-lead@example.com
# Slack user groups reach the engine through the catalog, as entries of the
# managed "Slack User Group" type. The identifier matches an entry's name,
# external ID or aliases, so the group's handle is enough.
slackUserGroup:
fn::invoke:
function: incident:getCatalogType
arguments:
name: Slack User Group
securityResponders:
fn::invoke:
function: incident:getCatalogEntry
arguments:
catalogTypeId: ${slackUserGroup.id}
identifier: security-responders
pulumi {
required_providers {
incident = {
source = "pulumi/incident"
}
}
}
data "incident_getuser" "securityLead" {
email = "security-lead@example.com"
}
data "incident_getcatalogtype" "slackUserGroup" {
name = "Slack User Group"
}
data "incident_getcatalogentry" "securityResponders" {
catalog_type_id = data.incident_getcatalogtype.slackUserGroup.id
identifier = "security-responders"
}
# This workflow pulls the security responders into an incident's channel as soon
# as the incident becomes active.
#
# Four steps sound alike but do different things, so pick deliberately:
#
# slack.invite_user invites users and Slack user groups to
# the incident's channel (this one)
# incident.add_member grants access to a private incident, and
# does nothing on a public one
# incident.assign_role gives someone an incident role, such as
# Incident Lead
# incident.subscribe_user_to_incident subscribes someone to updates without
# making them a participant
#
# Narrow this with conditions on whatever marks the incidents you care about -
# a custom field, the incident's type, or its severity.
resource "incident_workflow" "invite_security_responders" {
name = "Invite security responders"
trigger = "incident.updated"
condition_groups {
conditions {
subject = "incident.status.category"
operation = "one_of"
param_bindings {
array_value = [{
"literal" = "active"
}]
}
}
}
steps {
id = "01KFD47KKJS93YXR3W53MQSFVC"
name = "slack.invite_user"
param_bindings {
value = {
reference = "incident"
}
}
param_bindings {
array_value = [{
"literal" = data.incident_getuser.securityLead.id
}]
}
param_bindings {
array_value = [{
"literal" = data.incident_getcatalogentry.securityResponders.id
}]
}
}
once_fors = ["incident"]
private_incident_scope = "none"
auto_run_mode = "confirm_before_running"
continue_on_step_error = false
runs_on_incidents = "newly_created_and_active"
runs_on_incident_modes = ["standard"]
state = "draft"
}
# Users have a data source, so a config doesn't need the ULIDs an export writes
# for them: look people up by the email address they use with incident.io.
# Slack user groups reach the engine through the catalog, as entries of the
# managed "Slack User Group" type. The identifier matches an entry's name,
# external ID or aliases, so the group's handle is enough.
Example - Share incident updates with leadership
import * as pulumi from "@pulumi/pulumi";
import * as incident from "@incident-io/pulumi";
// A message body is a rich text document, so build it from markdown here rather
// than pasting the JSON an export produces. Anything the feature set can't hold
// is dropped and listed in dropped_content, which you can output to see what
// went missing.
const leadershipUpdate = incident.getRichText({
markdown: `**{{ incident.name }}** — update from {{ update.author }}
{{ update.message }}
Now at {{ update.to_status }}, severity {{ update.to_severity }}. Follow along in {{ incident.slack_channel }}.
`,
featureSet: "mrkdwn",
});
// This workflow mirrors every incident update into a leadership channel.
//
// Three Slack steps send messages, and they take different first parameters:
//
// slack.post_message posts to a channel, which is where this one goes
// slack.send_message sends a DM to users
// slack.reply_in_thread replies to a message already in the scope
//
// On Microsoft Teams the equivalent is ms_teams.post_message, whose channel
// parameter takes a MicrosoftTeamsChatChannel and defaults to
// `incident.ms_teams_channel`. Only the steps for your workspace's primary
// comms platform are available, so a config written for one won't apply to the
// other.
const shareUpdatesWithLeadership = new incident.Workflow("share_updates_with_leadership", {
name: "Share incident updates with leadership",
trigger: "incident.update_shared",
expressions: [],
conditionGroups: [],
steps: [{
id: "01K5TSNDBF7KBZY9AFDKYXJM3M",
name: "slack.post_message",
paramBindings: [
{
value: {
literal: "C02A1FSNEKC",
},
},
{
value: {
literal: leadershipUpdate.then(leadershipUpdate => leadershipUpdate.json),
},
},
{},
{
value: {
literal: "Europe/London",
},
},
],
}],
onceFors: [],
privateIncidentScope: "none",
continueOnStepError: false,
runsOnIncidents: "newly_created_and_active",
runsOnIncidentModes: ["standard"],
state: "draft",
});
import pulumi
import pulumi_incident as incident
# A message body is a rich text document, so build it from markdown here rather
# than pasting the JSON an export produces. Anything the feature set can't hold
# is dropped and listed in dropped_content, which you can output to see what
# went missing.
leadership_update = incident.get_rich_text(markdown="""**{{ incident.name }}** — update from {{ update.author }}
{{ update.message }}
Now at {{ update.to_status }}, severity {{ update.to_severity }}. Follow along in {{ incident.slack_channel }}.
""",
feature_set="mrkdwn")
# This workflow mirrors every incident update into a leadership channel.
#
# Three Slack steps send messages, and they take different first parameters:
#
# slack.post_message posts to a channel, which is where this one goes
# slack.send_message sends a DM to users
# slack.reply_in_thread replies to a message already in the scope
#
# On Microsoft Teams the equivalent is ms_teams.post_message, whose channel
# parameter takes a MicrosoftTeamsChatChannel and defaults to
# `incident.ms_teams_channel`. Only the steps for your workspace's primary
# comms platform are available, so a config written for one won't apply to the
# other.
share_updates_with_leadership = incident.Workflow("share_updates_with_leadership",
name="Share incident updates with leadership",
trigger="incident.update_shared",
expressions=[],
condition_groups=[],
steps=[{
"id": "01K5TSNDBF7KBZY9AFDKYXJM3M",
"name": "slack.post_message",
"param_bindings": [
{
"value": {
"literal": "C02A1FSNEKC",
},
},
{
"value": {
"literal": leadership_update.json,
},
},
{},
{
"value": {
"literal": "Europe/London",
},
},
],
}],
once_fors=[],
private_incident_scope="none",
continue_on_step_error=False,
runs_on_incidents="newly_created_and_active",
runs_on_incident_modes=["standard"],
state="draft")
package main
import (
"github.com/incident-io/pulumi-incident/sdk/go/incident"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// A message body is a rich text document, so build it from markdown here rather
// than pasting the JSON an export produces. Anything the feature set can't hold
// is dropped and listed in dropped_content, which you can output to see what
// went missing.
leadershipUpdate, err := incident.GetRichText(ctx, &incident.GetRichTextArgs{
Markdown: `**{{ incident.name }}** — update from {{ update.author }}
{{ update.message }}
Now at {{ update.to_status }}, severity {{ update.to_severity }}. Follow along in {{ incident.slack_channel }}.
`,
FeatureSet: "mrkdwn",
}, nil)
if err != nil {
return err
}
// This workflow mirrors every incident update into a leadership channel.
//
// Three Slack steps send messages, and they take different first parameters:
//
// slack.post_message posts to a channel, which is where this one goes
// slack.send_message sends a DM to users
// slack.reply_in_thread replies to a message already in the scope
//
// On Microsoft Teams the equivalent is ms_teams.post_message, whose channel
// parameter takes a MicrosoftTeamsChatChannel and defaults to
// `incident.ms_teams_channel`. Only the steps for your workspace's primary
// comms platform are available, so a config written for one won't apply to the
// other.
_, err = incident.NewWorkflow(ctx, "share_updates_with_leadership", &incident.WorkflowArgs{
Name: pulumi.String("Share incident updates with leadership"),
Trigger: pulumi.String("incident.update_shared"),
Expressions: incident.WorkflowExpressionArray{},
ConditionGroups: incident.WorkflowConditionGroupArray{},
Steps: incident.WorkflowStepArray{
&incident.WorkflowStepArgs{
Id: pulumi.String("01K5TSNDBF7KBZY9AFDKYXJM3M"),
Name: pulumi.String("slack.post_message"),
ParamBindings: incident.WorkflowStepParamBindingArray{
&incident.WorkflowStepParamBindingArgs{
Value: &incident.WorkflowStepParamBindingValueArgs{
Literal: pulumi.String("C02A1FSNEKC"),
},
},
&incident.WorkflowStepParamBindingArgs{
Value: &incident.WorkflowStepParamBindingValueArgs{
Literal: pulumi.String(leadershipUpdate.Json),
},
},
&incident.WorkflowStepParamBindingArgs{},
&incident.WorkflowStepParamBindingArgs{
Value: &incident.WorkflowStepParamBindingValueArgs{
Literal: pulumi.String("Europe/London"),
},
},
},
},
},
OnceFors: pulumi.StringArray{},
PrivateIncidentScope: pulumi.String("none"),
ContinueOnStepError: pulumi.Bool(false),
RunsOnIncidents: pulumi.String("newly_created_and_active"),
RunsOnIncidentModes: pulumi.StringArray{
pulumi.String("standard"),
},
State: pulumi.String("draft"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Incident = Pulumi.Incident;
return await Deployment.RunAsync(() =>
{
// A message body is a rich text document, so build it from markdown here rather
// than pasting the JSON an export produces. Anything the feature set can't hold
// is dropped and listed in dropped_content, which you can output to see what
// went missing.
var leadershipUpdate = Incident.GetRichText.Invoke(new()
{
Markdown = @"**{{ incident.name }}** — update from {{ update.author }}
{{ update.message }}
Now at {{ update.to_status }}, severity {{ update.to_severity }}. Follow along in {{ incident.slack_channel }}.
",
FeatureSet = "mrkdwn",
});
// This workflow mirrors every incident update into a leadership channel.
//
// Three Slack steps send messages, and they take different first parameters:
//
// slack.post_message posts to a channel, which is where this one goes
// slack.send_message sends a DM to users
// slack.reply_in_thread replies to a message already in the scope
//
// On Microsoft Teams the equivalent is ms_teams.post_message, whose channel
// parameter takes a MicrosoftTeamsChatChannel and defaults to
// `incident.ms_teams_channel`. Only the steps for your workspace's primary
// comms platform are available, so a config written for one won't apply to the
// other.
var shareUpdatesWithLeadership = new Incident.Workflow("share_updates_with_leadership", new()
{
Name = "Share incident updates with leadership",
Trigger = "incident.update_shared",
Expressions = new[] {},
ConditionGroups = new[] {},
Steps = new[]
{
new Incident.Inputs.WorkflowStepArgs
{
Id = "01K5TSNDBF7KBZY9AFDKYXJM3M",
Name = "slack.post_message",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowStepParamBindingArgs
{
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Literal = "C02A1FSNEKC",
},
},
new Incident.Inputs.WorkflowStepParamBindingArgs
{
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Literal = leadershipUpdate.Apply(getRichTextResult => getRichTextResult.Json),
},
},
null,
new Incident.Inputs.WorkflowStepParamBindingArgs
{
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Literal = "Europe/London",
},
},
},
},
},
OnceFors = new[] {},
PrivateIncidentScope = "none",
ContinueOnStepError = false,
RunsOnIncidents = "newly_created_and_active",
RunsOnIncidentModes = new[]
{
"standard",
},
State = "draft",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.incident.IncidentFunctions;
import com.pulumi.incident.inputs.GetRichTextArgs;
import com.pulumi.incident.Workflow;
import com.pulumi.incident.WorkflowArgs;
import com.pulumi.incident.inputs.WorkflowStepArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingValueArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// A message body is a rich text document, so build it from markdown here rather
// than pasting the JSON an export produces. Anything the feature set can't hold
// is dropped and listed in dropped_content, which you can output to see what
// went missing.
final var leadershipUpdate = IncidentFunctions.getRichText(GetRichTextArgs.builder()
.markdown("""
**{{ incident.name }}** — update from {{ update.author }}
{{ update.message }}
Now at {{ update.to_status }}, severity {{ update.to_severity }}. Follow along in {{ incident.slack_channel }}.
""")
.featureSet("mrkdwn")
.build());
// This workflow mirrors every incident update into a leadership channel.
//
// Three Slack steps send messages, and they take different first parameters:
//
// slack.post_message posts to a channel, which is where this one goes
// slack.send_message sends a DM to users
// slack.reply_in_thread replies to a message already in the scope
//
// On Microsoft Teams the equivalent is ms_teams.post_message, whose channel
// parameter takes a MicrosoftTeamsChatChannel and defaults to
// `incident.ms_teams_channel`. Only the steps for your workspace's primary
// comms platform are available, so a config written for one won't apply to the
// other.
var shareUpdatesWithLeadership = new Workflow("shareUpdatesWithLeadership", WorkflowArgs.builder()
.name("Share incident updates with leadership")
.trigger("incident.update_shared")
.expressions()
.conditionGroups()
.steps(WorkflowStepArgs.builder()
.id("01K5TSNDBF7KBZY9AFDKYXJM3M")
.name("slack.post_message")
.paramBindings(
WorkflowStepParamBindingArgs.builder()
.value(WorkflowStepParamBindingValueArgs.builder()
.literal("C02A1FSNEKC")
.build())
.build(),
WorkflowStepParamBindingArgs.builder()
.value(WorkflowStepParamBindingValueArgs.builder()
.literal(leadershipUpdate.json())
.build())
.build(),
WorkflowStepParamBindingArgs.builder()
.build(),
WorkflowStepParamBindingArgs.builder()
.value(WorkflowStepParamBindingValueArgs.builder()
.literal("Europe/London")
.build())
.build())
.build())
.onceFors()
.privateIncidentScope("none")
.continueOnStepError(false)
.runsOnIncidents("newly_created_and_active")
.runsOnIncidentModes("standard")
.state("draft")
.build());
}
}
resources:
# This workflow mirrors every incident update into a leadership channel.
#
# Three Slack steps send messages, and they take different first parameters:
#
# slack.post_message posts to a channel, which is where this one goes
# slack.send_message sends a DM to users
# slack.reply_in_thread replies to a message already in the scope
#
# On Microsoft Teams the equivalent is ms_teams.post_message, whose channel
# parameter takes a MicrosoftTeamsChatChannel and defaults to
# `incident.ms_teams_channel`. Only the steps for your workspace's primary
# comms platform are available, so a config written for one won't apply to the
# other.
shareUpdatesWithLeadership:
type: incident:Workflow
name: share_updates_with_leadership
properties:
name: Share incident updates with leadership
trigger: incident.update_shared
expressions: []
conditionGroups: []
steps:
- id: 01K5TSNDBF7KBZY9AFDKYXJM3M
name: slack.post_message
paramBindings:
- value:
literal: C02A1FSNEKC
- value:
literal: ${leadershipUpdate.json}
- {}
- value:
literal: Europe/London
onceFors: []
privateIncidentScope: none
continueOnStepError: false
runsOnIncidents: newly_created_and_active
runsOnIncidentModes:
- standard
state: draft
variables:
# A message body is a rich text document, so build it from markdown here rather
# than pasting the JSON an export produces. Anything the feature set can't hold
# is dropped and listed in dropped_content, which you can output to see what
# went missing.
leadershipUpdate:
fn::invoke:
function: incident:getRichText
arguments:
markdown: |
**{{ incident.name }}** — update from {{ update.author }}
{{ update.message }}
Now at {{ update.to_status }}, severity {{ update.to_severity }}. Follow along in {{ incident.slack_channel }}.
featureSet: mrkdwn
pulumi {
required_providers {
incident = {
source = "pulumi/incident"
}
}
}
data "incident_getrichtext" "leadershipUpdate" {
markdown = "**{{ incident.name }}** — update from {{ update.author }}\n\n{{ update.message }}\n\nNow at {{ update.to_status }}, severity {{ update.to_severity }}. Follow along in {{ incident.slack_channel }}.\n"
feature_set = "mrkdwn"
}
# This workflow mirrors every incident update into a leadership channel.
#
# Three Slack steps send messages, and they take different first parameters:
#
# slack.post_message posts to a channel, which is where this one goes
# slack.send_message sends a DM to users
# slack.reply_in_thread replies to a message already in the scope
#
# On Microsoft Teams the equivalent is ms_teams.post_message, whose channel
# parameter takes a MicrosoftTeamsChatChannel and defaults to
# `incident.ms_teams_channel`. Only the steps for your workspace's primary
# comms platform are available, so a config written for one won't apply to the
# other.
resource "incident_workflow" "share_updates_with_leadership" {
name = "Share incident updates with leadership"
trigger = "incident.update_shared"
steps {
id = "01K5TSNDBF7KBZY9AFDKYXJM3M"
name = "slack.post_message"
param_bindings {
value = {
literal = "C02A1FSNEKC"
}
}
param_bindings {
value = {
literal = data.incident_getrichtext.leadershipUpdate.json
}
}
param_bindings {
}
param_bindings {
value = {
literal = "Europe/London"
}
}
}
once_fors = []
private_incident_scope = "none"
continue_on_step_error = false
runs_on_incidents = "newly_created_and_active"
runs_on_incident_modes = ["standard"]
state = "draft"
}
# A message body is a rich text document, so build it from markdown here rather
# than pasting the JSON an export produces. Anything the feature set can't hold
# is dropped and listed in dropped_content, which you can output to see what
# went missing.
Example - Subscribe CSMs to customer-facing incidents
import * as pulumi from "@pulumi/pulumi";
import * as incident from "@incident-io/pulumi";
// Custom fields and their options both have data sources, so a condition on one
// needs no ULIDs: look the field up by name, and each option by its value.
const affectedCustomers = incident.getCustomField({
name: "Affected customers",
});
const allCustomers = affectedCustomers.then(affectedCustomers => incident.getCustomFieldOption({
customFieldId: affectedCustomers.id,
value: "All customers",
}));
const csmLead = incident.getUser({
email: "csm-lead@example.com",
});
const csmDeputy = incident.getUser({
email: "csm-deputy@example.com",
});
// This is the workflow we run ourselves: subscribe the CSM team to every
// Critical incident, and to Major incidents that affect all customers.
//
// It's the clearest example of how condition groups combine. Conditions within
// a group are ANDed, and the groups are ORed with each other, so this reads as:
//
// severity is Critical
// OR (severity is Major AND affected customers is All customers)
//
// Two conditions that must both hold go in one group. Two alternatives, as
// here, need a group each - putting all three conditions in a single group
// would subscribe nobody, since no incident is both Critical and Major.
const subscribeCsms = new incident.Workflow("subscribe_csms", {
name: "Subscribe CSMs to customer-facing incidents",
trigger: "incident.updated",
expressions: [],
conditionGroups: [
{
conditions: [{
subject: "incident.severity",
operation: "one_of",
paramBindings: [{
arrayValue: [{
literal: "01K675152G91VK4S8YYT7NKPAE",
}],
}],
}],
},
{
conditions: [
{
subject: "incident.severity",
operation: "one_of",
paramBindings: [{
arrayValue: [{
literal: "01KCZFEB7DPVCQQM262JTKN5RH",
}],
}],
},
{
subject: affectedCustomers.then(affectedCustomers => `incident.custom_field["${affectedCustomers.id}"]`),
operation: "one_of",
paramBindings: [{
arrayValue: [{
literal: allCustomers.then(allCustomers => allCustomers.id),
}],
}],
},
],
},
],
steps: [{
id: "01KDEMWQCS30P3GHAVNG9VGKWS",
name: "incident.subscribe_user_to_incident",
paramBindings: [
{
value: {
reference: "incident",
},
},
{
arrayValue: [
{
literal: csmLead.then(csmLead => csmLead.id),
},
{
literal: csmDeputy.then(csmDeputy => csmDeputy.id),
},
],
},
],
}],
onceFors: ["incident"],
privateIncidentScope: "none",
continueOnStepError: false,
runsOnIncidents: "newly_created_and_active",
runsOnIncidentModes: ["standard"],
state: "draft",
});
import pulumi
import pulumi_incident as incident
# Custom fields and their options both have data sources, so a condition on one
# needs no ULIDs: look the field up by name, and each option by its value.
affected_customers = incident.get_custom_field(name="Affected customers")
all_customers = incident.get_custom_field_option(custom_field_id=affected_customers.id,
value="All customers")
csm_lead = incident.get_user(email="csm-lead@example.com")
csm_deputy = incident.get_user(email="csm-deputy@example.com")
# This is the workflow we run ourselves: subscribe the CSM team to every
# Critical incident, and to Major incidents that affect all customers.
#
# It's the clearest example of how condition groups combine. Conditions within
# a group are ANDed, and the groups are ORed with each other, so this reads as:
#
# severity is Critical
# OR (severity is Major AND affected customers is All customers)
#
# Two conditions that must both hold go in one group. Two alternatives, as
# here, need a group each - putting all three conditions in a single group
# would subscribe nobody, since no incident is both Critical and Major.
subscribe_csms = incident.Workflow("subscribe_csms",
name="Subscribe CSMs to customer-facing incidents",
trigger="incident.updated",
expressions=[],
condition_groups=[
{
"conditions": [{
"subject": "incident.severity",
"operation": "one_of",
"param_bindings": [{
"array_value": [{
"literal": "01K675152G91VK4S8YYT7NKPAE",
}],
}],
}],
},
{
"conditions": [
{
"subject": "incident.severity",
"operation": "one_of",
"param_bindings": [{
"array_value": [{
"literal": "01KCZFEB7DPVCQQM262JTKN5RH",
}],
}],
},
{
"subject": f"incident.custom_field[\"{affected_customers.id}\"]",
"operation": "one_of",
"param_bindings": [{
"array_value": [{
"literal": all_customers.id,
}],
}],
},
],
},
],
steps=[{
"id": "01KDEMWQCS30P3GHAVNG9VGKWS",
"name": "incident.subscribe_user_to_incident",
"param_bindings": [
{
"value": {
"reference": "incident",
},
},
{
"array_value": [
{
"literal": csm_lead.id,
},
{
"literal": csm_deputy.id,
},
],
},
],
}],
once_fors=["incident"],
private_incident_scope="none",
continue_on_step_error=False,
runs_on_incidents="newly_created_and_active",
runs_on_incident_modes=["standard"],
state="draft")
package main
import (
"github.com/incident-io/pulumi-incident/sdk/go/incident"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Custom fields and their options both have data sources, so a condition on one
// needs no ULIDs: look the field up by name, and each option by its value.
affectedCustomers, err := incident.GetCustomField(ctx, &incident.LookupCustomFieldArgs{
Name: "Affected customers",
}, nil)
if err != nil {
return err
}
allCustomers, err := incident.GetCustomFieldOption(ctx, &incident.LookupCustomFieldOptionArgs{
CustomFieldId: affectedCustomers.Id,
Value: "All customers",
}, nil)
if err != nil {
return err
}
csmLead, err := incident.GetUser(ctx, &incident.GetUserArgs{
Email: pulumi.StringRef("csm-lead@example.com"),
}, nil)
if err != nil {
return err
}
csmDeputy, err := incident.GetUser(ctx, &incident.GetUserArgs{
Email: pulumi.StringRef("csm-deputy@example.com"),
}, nil)
if err != nil {
return err
}
// This is the workflow we run ourselves: subscribe the CSM team to every
// Critical incident, and to Major incidents that affect all customers.
//
// It's the clearest example of how condition groups combine. Conditions within
// a group are ANDed, and the groups are ORed with each other, so this reads as:
//
// severity is Critical
// OR (severity is Major AND affected customers is All customers)
//
// Two conditions that must both hold go in one group. Two alternatives, as
// here, need a group each - putting all three conditions in a single group
// would subscribe nobody, since no incident is both Critical and Major.
_, err = incident.NewWorkflow(ctx, "subscribe_csms", &incident.WorkflowArgs{
Name: pulumi.String("Subscribe CSMs to customer-facing incidents"),
Trigger: pulumi.String("incident.updated"),
Expressions: incident.WorkflowExpressionArray{},
ConditionGroups: incident.WorkflowConditionGroupArray{
&incident.WorkflowConditionGroupArgs{
Conditions: incident.WorkflowConditionGroupConditionArray{
&incident.WorkflowConditionGroupConditionArgs{
Subject: pulumi.String("incident.severity"),
Operation: pulumi.String("one_of"),
ParamBindings: incident.WorkflowConditionGroupConditionParamBindingArray{
&incident.WorkflowConditionGroupConditionParamBindingArgs{
ArrayValue: []map[string]string{
{
"literal": "01K675152G91VK4S8YYT7NKPAE",
},
},
},
},
},
},
},
&incident.WorkflowConditionGroupArgs{
Conditions: incident.WorkflowConditionGroupConditionArray{
&incident.WorkflowConditionGroupConditionArgs{
Subject: pulumi.String("incident.severity"),
Operation: pulumi.String("one_of"),
ParamBindings: incident.WorkflowConditionGroupConditionParamBindingArray{
&incident.WorkflowConditionGroupConditionParamBindingArgs{
ArrayValue: []map[string]string{
{
"literal": "01KCZFEB7DPVCQQM262JTKN5RH",
},
},
},
},
},
&incident.WorkflowConditionGroupConditionArgs{
Subject: pulumi.Sprintf("incident.custom_field[\"%v\"]", affectedCustomers.Id),
Operation: pulumi.String("one_of"),
ParamBindings: incident.WorkflowConditionGroupConditionParamBindingArray{
&incident.WorkflowConditionGroupConditionParamBindingArgs{
ArrayValue: []map[string]interface{}{
map[string]interface{}{
"literal": allCustomers.Id,
},
},
},
},
},
},
},
},
Steps: incident.WorkflowStepArray{
&incident.WorkflowStepArgs{
Id: pulumi.String("01KDEMWQCS30P3GHAVNG9VGKWS"),
Name: pulumi.String("incident.subscribe_user_to_incident"),
ParamBindings: incident.WorkflowStepParamBindingArray{
&incident.WorkflowStepParamBindingArgs{
Value: &incident.WorkflowStepParamBindingValueArgs{
Reference: pulumi.String("incident"),
},
},
&incident.WorkflowStepParamBindingArgs{
ArrayValue: []map[string]interface{}{
map[string]interface{}{
"literal": csmLead.Id,
},
map[string]interface{}{
"literal": csmDeputy.Id,
},
},
},
},
},
},
OnceFors: pulumi.StringArray{
pulumi.String("incident"),
},
PrivateIncidentScope: pulumi.String("none"),
ContinueOnStepError: pulumi.Bool(false),
RunsOnIncidents: pulumi.String("newly_created_and_active"),
RunsOnIncidentModes: pulumi.StringArray{
pulumi.String("standard"),
},
State: pulumi.String("draft"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Incident = Pulumi.Incident;
return await Deployment.RunAsync(() =>
{
// Custom fields and their options both have data sources, so a condition on one
// needs no ULIDs: look the field up by name, and each option by its value.
var affectedCustomers = Incident.GetCustomField.Invoke(new()
{
Name = "Affected customers",
});
var allCustomers = Incident.GetCustomFieldOption.Invoke(new()
{
CustomFieldId = affectedCustomers.Apply(getCustomFieldResult => getCustomFieldResult.Id),
Value = "All customers",
});
var csmLead = Incident.GetUser.Invoke(new()
{
Email = "csm-lead@example.com",
});
var csmDeputy = Incident.GetUser.Invoke(new()
{
Email = "csm-deputy@example.com",
});
// This is the workflow we run ourselves: subscribe the CSM team to every
// Critical incident, and to Major incidents that affect all customers.
//
// It's the clearest example of how condition groups combine. Conditions within
// a group are ANDed, and the groups are ORed with each other, so this reads as:
//
// severity is Critical
// OR (severity is Major AND affected customers is All customers)
//
// Two conditions that must both hold go in one group. Two alternatives, as
// here, need a group each - putting all three conditions in a single group
// would subscribe nobody, since no incident is both Critical and Major.
var subscribeCsms = new Incident.Workflow("subscribe_csms", new()
{
Name = "Subscribe CSMs to customer-facing incidents",
Trigger = "incident.updated",
Expressions = new[] {},
ConditionGroups = new[]
{
new Incident.Inputs.WorkflowConditionGroupArgs
{
Conditions = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionArgs
{
Subject = "incident.severity",
Operation = "one_of",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionParamBindingArgs
{
ArrayValue = new[]
{
{
{ "literal", "01K675152G91VK4S8YYT7NKPAE" },
},
},
},
},
},
},
},
new Incident.Inputs.WorkflowConditionGroupArgs
{
Conditions = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionArgs
{
Subject = "incident.severity",
Operation = "one_of",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionParamBindingArgs
{
ArrayValue = new[]
{
{
{ "literal", "01KCZFEB7DPVCQQM262JTKN5RH" },
},
},
},
},
},
new Incident.Inputs.WorkflowConditionGroupConditionArgs
{
Subject = $"incident.custom_field[\"{affectedCustomers.Apply(getCustomFieldResult => getCustomFieldResult.Id)}\"]",
Operation = "one_of",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionParamBindingArgs
{
ArrayValue = new[]
{
{
{ "literal", allCustomers.Apply(getCustomFieldOptionResult => getCustomFieldOptionResult.Id) },
},
},
},
},
},
},
},
},
Steps = new[]
{
new Incident.Inputs.WorkflowStepArgs
{
Id = "01KDEMWQCS30P3GHAVNG9VGKWS",
Name = "incident.subscribe_user_to_incident",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowStepParamBindingArgs
{
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Reference = "incident",
},
},
new Incident.Inputs.WorkflowStepParamBindingArgs
{
ArrayValue = new[]
{
{
{ "literal", csmLead.Apply(getUserResult => getUserResult.Id) },
},
{
{ "literal", csmDeputy.Apply(getUserResult => getUserResult.Id) },
},
},
},
},
},
},
OnceFors = new[]
{
"incident",
},
PrivateIncidentScope = "none",
ContinueOnStepError = false,
RunsOnIncidents = "newly_created_and_active",
RunsOnIncidentModes = new[]
{
"standard",
},
State = "draft",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.incident.IncidentFunctions;
import com.pulumi.incident.inputs.GetCustomFieldArgs;
import com.pulumi.incident.inputs.GetCustomFieldOptionArgs;
import com.pulumi.incident.inputs.GetUserArgs;
import com.pulumi.incident.Workflow;
import com.pulumi.incident.WorkflowArgs;
import com.pulumi.incident.inputs.WorkflowConditionGroupArgs;
import com.pulumi.incident.inputs.WorkflowConditionGroupConditionArgs;
import com.pulumi.incident.inputs.WorkflowConditionGroupConditionParamBindingArgs;
import com.pulumi.incident.inputs.WorkflowStepArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingArgs;
import com.pulumi.incident.inputs.WorkflowStepParamBindingValueArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Custom fields and their options both have data sources, so a condition on one
// needs no ULIDs: look the field up by name, and each option by its value.
final var affectedCustomers = IncidentFunctions.getCustomField(GetCustomFieldArgs.builder()
.name("Affected customers")
.build());
final var allCustomers = IncidentFunctions.getCustomFieldOption(GetCustomFieldOptionArgs.builder()
.customFieldId(affectedCustomers.id())
.value("All customers")
.build());
final var csmLead = IncidentFunctions.getUser(GetUserArgs.builder()
.email("csm-lead@example.com")
.build());
final var csmDeputy = IncidentFunctions.getUser(GetUserArgs.builder()
.email("csm-deputy@example.com")
.build());
// This is the workflow we run ourselves: subscribe the CSM team to every
// Critical incident, and to Major incidents that affect all customers.
//
// It's the clearest example of how condition groups combine. Conditions within
// a group are ANDed, and the groups are ORed with each other, so this reads as:
//
// severity is Critical
// OR (severity is Major AND affected customers is All customers)
//
// Two conditions that must both hold go in one group. Two alternatives, as
// here, need a group each - putting all three conditions in a single group
// would subscribe nobody, since no incident is both Critical and Major.
var subscribeCsms = new Workflow("subscribeCsms", WorkflowArgs.builder()
.name("Subscribe CSMs to customer-facing incidents")
.trigger("incident.updated")
.expressions()
.conditionGroups(
WorkflowConditionGroupArgs.builder()
.conditions(WorkflowConditionGroupConditionArgs.builder()
.subject("incident.severity")
.operation("one_of")
.paramBindings(WorkflowConditionGroupConditionParamBindingArgs.builder()
.arrayValue(Arrays.asList(Map.of("literal", "01K675152G91VK4S8YYT7NKPAE")))
.build())
.build())
.build(),
WorkflowConditionGroupArgs.builder()
.conditions(
WorkflowConditionGroupConditionArgs.builder()
.subject("incident.severity")
.operation("one_of")
.paramBindings(WorkflowConditionGroupConditionParamBindingArgs.builder()
.arrayValue(Arrays.asList(Map.of("literal", "01KCZFEB7DPVCQQM262JTKN5RH")))
.build())
.build(),
WorkflowConditionGroupConditionArgs.builder()
.subject(String.format("incident.custom_field[\"%s\"]", affectedCustomers.id()))
.operation("one_of")
.paramBindings(WorkflowConditionGroupConditionParamBindingArgs.builder()
.arrayValue(Arrays.asList(Map.of("literal", allCustomers.id())))
.build())
.build())
.build())
.steps(WorkflowStepArgs.builder()
.id("01KDEMWQCS30P3GHAVNG9VGKWS")
.name("incident.subscribe_user_to_incident")
.paramBindings(
WorkflowStepParamBindingArgs.builder()
.value(WorkflowStepParamBindingValueArgs.builder()
.reference("incident")
.build())
.build(),
WorkflowStepParamBindingArgs.builder()
.arrayValue(Arrays.asList(
Map.of("literal", csmLead.id()),
Map.of("literal", csmDeputy.id())))
.build())
.build())
.onceFors("incident")
.privateIncidentScope("none")
.continueOnStepError(false)
.runsOnIncidents("newly_created_and_active")
.runsOnIncidentModes("standard")
.state("draft")
.build());
}
}
resources:
# This is the workflow we run ourselves: subscribe the CSM team to every
# Critical incident, and to Major incidents that affect all customers.
#
# It's the clearest example of how condition groups combine. Conditions within
# a group are ANDed, and the groups are ORed with each other, so this reads as:
#
# severity is Critical
# OR (severity is Major AND affected customers is All customers)
#
# Two conditions that must both hold go in one group. Two alternatives, as
# here, need a group each - putting all three conditions in a single group
# would subscribe nobody, since no incident is both Critical and Major.
subscribeCsms:
type: incident:Workflow
name: subscribe_csms
properties:
name: Subscribe CSMs to customer-facing incidents
trigger: incident.updated
expressions: []
conditionGroups:
- conditions:
- subject: incident.severity
operation: one_of
paramBindings:
- arrayValue:
- literal: 01K675152G91VK4S8YYT7NKPAE
- conditions:
- subject: incident.severity
operation: one_of
paramBindings:
- arrayValue:
- literal: 01KCZFEB7DPVCQQM262JTKN5RH
- subject: incident.custom_field["${affectedCustomers.id}"]
operation: one_of
paramBindings:
- arrayValue:
- literal: ${allCustomers.id}
steps:
- id: 01KDEMWQCS30P3GHAVNG9VGKWS
name: incident.subscribe_user_to_incident
paramBindings:
- value:
reference: incident
- arrayValue:
- literal: ${csmLead.id}
- literal: ${csmDeputy.id}
onceFors:
- incident
privateIncidentScope: none
continueOnStepError: false
runsOnIncidents: newly_created_and_active
runsOnIncidentModes:
- standard
state: draft
variables:
# Custom fields and their options both have data sources, so a condition on one
# needs no ULIDs: look the field up by name, and each option by its value.
affectedCustomers:
fn::invoke:
function: incident:getCustomField
arguments:
name: Affected customers
allCustomers:
fn::invoke:
function: incident:getCustomFieldOption
arguments:
customFieldId: ${affectedCustomers.id}
value: All customers
csmLead:
fn::invoke:
function: incident:getUser
arguments:
email: csm-lead@example.com
csmDeputy:
fn::invoke:
function: incident:getUser
arguments:
email: csm-deputy@example.com
pulumi {
required_providers {
incident = {
source = "pulumi/incident"
}
}
}
data "incident_getcustomfield" "affectedCustomers" {
name = "Affected customers"
}
data "incident_getcustomfieldoption" "allCustomers" {
custom_field_id = data.incident_getcustomfield.affectedCustomers.id
value = "All customers"
}
data "incident_getuser" "csmLead" {
email = "csm-lead@example.com"
}
data "incident_getuser" "csmDeputy" {
email = "csm-deputy@example.com"
}
# This is the workflow we run ourselves: subscribe the CSM team to every
# Critical incident, and to Major incidents that affect all customers.
#
# It's the clearest example of how condition groups combine. Conditions within
# a group are ANDed, and the groups are ORed with each other, so this reads as:
#
# severity is Critical
# OR (severity is Major AND affected customers is All customers)
#
# Two conditions that must both hold go in one group. Two alternatives, as
# here, need a group each - putting all three conditions in a single group
# would subscribe nobody, since no incident is both Critical and Major.
resource "incident_workflow" "subscribe_csms" {
name = "Subscribe CSMs to customer-facing incidents"
trigger = "incident.updated"
condition_groups {
conditions {
subject = "incident.severity"
operation = "one_of"
param_bindings {
array_value = [{
"literal" = "01K675152G91VK4S8YYT7NKPAE"
}]
}
}
}
condition_groups {
conditions {
subject = "incident.severity"
operation = "one_of"
param_bindings {
array_value = [{
"literal" = "01KCZFEB7DPVCQQM262JTKN5RH"
}]
}
}
conditions {
subject ="incident.custom_field["${data.incident_getcustomfield.affectedCustomers.id}"]"
operation = "one_of"
param_bindings {
array_value = [{
"literal" = data.incident_getcustomfieldoption.allCustomers.id
}]
}
}
}
steps {
id = "01KDEMWQCS30P3GHAVNG9VGKWS"
name = "incident.subscribe_user_to_incident"
param_bindings {
value = {
reference = "incident"
}
}
param_bindings {
array_value = [{
"literal" = data.incident_getuser.csmLead.id
}, {
"literal" = data.incident_getuser.csmDeputy.id
}]
}
}
once_fors = ["incident"]
private_incident_scope = "none"
continue_on_step_error = false
runs_on_incidents = "newly_created_and_active"
runs_on_incident_modes = ["standard"]
state = "draft"
}
# Custom fields and their options both have data sources, so a condition on one
# needs no ULIDs: look the field up by name, and each option by its value.
Create Workflow Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new Workflow(name: string, args: WorkflowArgs, opts?: CustomResourceOptions);@overload
def Workflow(resource_name: str,
args: WorkflowArgs,
opts: Optional[ResourceOptions] = None)
@overload
def Workflow(resource_name: str,
opts: Optional[ResourceOptions] = None,
once_fors: Optional[Sequence[str]] = None,
condition_groups: Optional[Sequence[WorkflowConditionGroupArgs]] = None,
continue_on_step_error: Optional[bool] = None,
trigger: Optional[str] = None,
expressions: Optional[Sequence[WorkflowExpressionArgs]] = None,
steps: Optional[Sequence[WorkflowStepArgs]] = None,
state: Optional[str] = None,
runs_on_incidents: Optional[str] = None,
runs_on_incident_modes: Optional[Sequence[str]] = None,
folder: Optional[str] = None,
name: Optional[str] = None,
owning_team_ids: Optional[Sequence[str]] = None,
private_incident_scope: Optional[str] = None,
include_private_incidents: Optional[bool] = None,
include_private_escalations: Optional[bool] = None,
shortform: Optional[str] = None,
form_fields: Optional[Sequence[WorkflowFormFieldArgs]] = None,
auto_run_mode: Optional[str] = None,
delay: Optional[WorkflowDelayArgs] = None,
unlock_in_dashboard: Optional[bool] = None)func NewWorkflow(ctx *Context, name string, args WorkflowArgs, opts ...ResourceOption) (*Workflow, error)public Workflow(string name, WorkflowArgs args, CustomResourceOptions? opts = null)
public Workflow(String name, WorkflowArgs args)
public Workflow(String name, WorkflowArgs args, CustomResourceOptions options)
type: incident:Workflow
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
resource "incident_workflow" "name" {
# resource properties
}Parameters
- name string
- The unique name of the resource.
- args WorkflowArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args WorkflowArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args WorkflowArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args WorkflowArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args WorkflowArgs
- The arguments to resource properties.
- options CustomResourceOptions
- Bag of options to control resource's behavior.
Constructor example
The following reference example uses placeholder values for all input properties.
var workflowResource = new Incident.Workflow("workflowResource", new()
{
OnceFors = new[]
{
"string",
},
ConditionGroups = new[]
{
new Incident.Inputs.WorkflowConditionGroupArgs
{
Conditions = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionArgs
{
Operation = "string",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionParamBindingArgs
{
ArrayValues = new[]
{
new Incident.Inputs.WorkflowConditionGroupConditionParamBindingArrayValueArgs
{
Literal = "string",
Reference = "string",
},
},
ExpressionRef = "string",
Value = new Incident.Inputs.WorkflowConditionGroupConditionParamBindingValueArgs
{
Literal = "string",
Reference = "string",
},
ValueLiteral = "string",
ValueReference = "string",
Values = new[]
{
"string",
},
},
},
Subject = "string",
},
},
},
},
ContinueOnStepError = false,
Trigger = "string",
Expressions = new[]
{
new Incident.Inputs.WorkflowExpressionArgs
{
Label = "string",
Operations = new[]
{
new Incident.Inputs.WorkflowExpressionOperationArgs
{
OperationType = "string",
Branches = new Incident.Inputs.WorkflowExpressionOperationBranchesArgs
{
Branches = new[]
{
new Incident.Inputs.WorkflowExpressionOperationBranchesBranchArgs
{
ConditionGroups = new[]
{
new Incident.Inputs.WorkflowExpressionOperationBranchesBranchConditionGroupArgs
{
Conditions = new[]
{
new Incident.Inputs.WorkflowExpressionOperationBranchesBranchConditionGroupConditionArgs
{
Operation = "string",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArgs
{
ArrayValues = new[]
{
new Incident.Inputs.WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValueArgs
{
Literal = "string",
Reference = "string",
},
},
ExpressionRef = "string",
Value = new Incident.Inputs.WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValueArgs
{
Literal = "string",
Reference = "string",
},
ValueLiteral = "string",
ValueReference = "string",
Values = new[]
{
"string",
},
},
},
Subject = "string",
},
},
},
},
Result = new Incident.Inputs.WorkflowExpressionOperationBranchesBranchResultArgs
{
ArrayValues = new[]
{
new Incident.Inputs.WorkflowExpressionOperationBranchesBranchResultArrayValueArgs
{
Literal = "string",
Reference = "string",
},
},
ExpressionRef = "string",
Value = new Incident.Inputs.WorkflowExpressionOperationBranchesBranchResultValueArgs
{
Literal = "string",
Reference = "string",
},
ValueLiteral = "string",
ValueReference = "string",
Values = new[]
{
"string",
},
},
},
},
Returns = new Incident.Inputs.WorkflowExpressionOperationBranchesReturnsArgs
{
Array = false,
Type = "string",
},
},
Cast = new Incident.Inputs.WorkflowExpressionOperationCastArgs
{
Returns = new Incident.Inputs.WorkflowExpressionOperationCastReturnsArgs
{
Array = false,
Type = "string",
},
},
Concatenate = new Incident.Inputs.WorkflowExpressionOperationConcatenateArgs
{
Reference = "string",
},
Filter = new Incident.Inputs.WorkflowExpressionOperationFilterArgs
{
ConditionGroups = new[]
{
new Incident.Inputs.WorkflowExpressionOperationFilterConditionGroupArgs
{
Conditions = new[]
{
new Incident.Inputs.WorkflowExpressionOperationFilterConditionGroupConditionArgs
{
Operation = "string",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArgs
{
ArrayValues = new[]
{
new Incident.Inputs.WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValueArgs
{
Literal = "string",
Reference = "string",
},
},
ExpressionRef = "string",
Value = new Incident.Inputs.WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValueArgs
{
Literal = "string",
Reference = "string",
},
ValueLiteral = "string",
ValueReference = "string",
Values = new[]
{
"string",
},
},
},
Subject = "string",
},
},
},
},
},
Navigate = new Incident.Inputs.WorkflowExpressionOperationNavigateArgs
{
Reference = "string",
},
Parse = new Incident.Inputs.WorkflowExpressionOperationParseArgs
{
Returns = new Incident.Inputs.WorkflowExpressionOperationParseReturnsArgs
{
Array = false,
Type = "string",
},
Source = "string",
},
},
},
Reference = "string",
RootReference = "string",
ElseBranch = new Incident.Inputs.WorkflowExpressionElseBranchArgs
{
Result = new Incident.Inputs.WorkflowExpressionElseBranchResultArgs
{
ArrayValues = new[]
{
new Incident.Inputs.WorkflowExpressionElseBranchResultArrayValueArgs
{
Literal = "string",
Reference = "string",
},
},
ExpressionRef = "string",
Value = new Incident.Inputs.WorkflowExpressionElseBranchResultValueArgs
{
Literal = "string",
Reference = "string",
},
ValueLiteral = "string",
ValueReference = "string",
Values = new[]
{
"string",
},
},
},
},
},
Steps = new[]
{
new Incident.Inputs.WorkflowStepArgs
{
Id = "string",
Name = "string",
ParamBindings = new[]
{
new Incident.Inputs.WorkflowStepParamBindingArgs
{
ArrayValues = new[]
{
new Incident.Inputs.WorkflowStepParamBindingArrayValueArgs
{
Literal = "string",
Reference = "string",
},
},
ExpressionRef = "string",
Value = new Incident.Inputs.WorkflowStepParamBindingValueArgs
{
Literal = "string",
Reference = "string",
},
ValueLiteral = "string",
ValueReference = "string",
Values = new[]
{
"string",
},
},
},
ForEach = "string",
},
},
State = "string",
RunsOnIncidents = "string",
RunsOnIncidentModes = new[]
{
"string",
},
Folder = "string",
Name = "string",
OwningTeamIds = new[]
{
"string",
},
PrivateIncidentScope = "string",
IncludePrivateEscalations = false,
Shortform = "string",
FormFields = new[]
{
new Incident.Inputs.WorkflowFormFieldArgs
{
Array = false,
Key = "string",
Required = false,
Title = "string",
Type = "string",
Description = "string",
Id = "string",
},
},
AutoRunMode = "string",
Delay = new Incident.Inputs.WorkflowDelayArgs
{
ConditionsApplyOverDelay = false,
ForSeconds = 0,
},
UnlockInDashboard = false,
});
example, err := incident.NewWorkflow(ctx, "workflowResource", &incident.WorkflowArgs{
OnceFors: pulumi.StringArray{
pulumi.String("string"),
},
ConditionGroups: incident.WorkflowConditionGroupArray{
&incident.WorkflowConditionGroupArgs{
Conditions: incident.WorkflowConditionGroupConditionArray{
&incident.WorkflowConditionGroupConditionArgs{
Operation: pulumi.String("string"),
ParamBindings: incident.WorkflowConditionGroupConditionParamBindingArray{
&incident.WorkflowConditionGroupConditionParamBindingArgs{
ArrayValues: incident.WorkflowConditionGroupConditionParamBindingArrayValueArray{
&incident.WorkflowConditionGroupConditionParamBindingArrayValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
},
ExpressionRef: pulumi.String("string"),
Value: &incident.WorkflowConditionGroupConditionParamBindingValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
ValueLiteral: pulumi.String("string"),
ValueReference: pulumi.String("string"),
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
},
Subject: pulumi.String("string"),
},
},
},
},
ContinueOnStepError: pulumi.Bool(false),
Trigger: pulumi.String("string"),
Expressions: incident.WorkflowExpressionArray{
&incident.WorkflowExpressionArgs{
Label: pulumi.String("string"),
Operations: incident.WorkflowExpressionOperationArray{
&incident.WorkflowExpressionOperationArgs{
OperationType: pulumi.String("string"),
Branches: &incident.WorkflowExpressionOperationBranchesArgs{
Branches: incident.WorkflowExpressionOperationBranchesBranchArray{
&incident.WorkflowExpressionOperationBranchesBranchArgs{
ConditionGroups: incident.WorkflowExpressionOperationBranchesBranchConditionGroupArray{
&incident.WorkflowExpressionOperationBranchesBranchConditionGroupArgs{
Conditions: incident.WorkflowExpressionOperationBranchesBranchConditionGroupConditionArray{
&incident.WorkflowExpressionOperationBranchesBranchConditionGroupConditionArgs{
Operation: pulumi.String("string"),
ParamBindings: incident.WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArray{
&incident.WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArgs{
ArrayValues: incident.WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValueArray{
&incident.WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
},
ExpressionRef: pulumi.String("string"),
Value: &incident.WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
ValueLiteral: pulumi.String("string"),
ValueReference: pulumi.String("string"),
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
},
Subject: pulumi.String("string"),
},
},
},
},
Result: &incident.WorkflowExpressionOperationBranchesBranchResultArgs{
ArrayValues: incident.WorkflowExpressionOperationBranchesBranchResultArrayValueArray{
&incident.WorkflowExpressionOperationBranchesBranchResultArrayValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
},
ExpressionRef: pulumi.String("string"),
Value: &incident.WorkflowExpressionOperationBranchesBranchResultValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
ValueLiteral: pulumi.String("string"),
ValueReference: pulumi.String("string"),
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
},
},
Returns: &incident.WorkflowExpressionOperationBranchesReturnsArgs{
Array: pulumi.Bool(false),
Type: pulumi.String("string"),
},
},
Cast: &incident.WorkflowExpressionOperationCastArgs{
Returns: &incident.WorkflowExpressionOperationCastReturnsArgs{
Array: pulumi.Bool(false),
Type: pulumi.String("string"),
},
},
Concatenate: &incident.WorkflowExpressionOperationConcatenateArgs{
Reference: pulumi.String("string"),
},
Filter: &incident.WorkflowExpressionOperationFilterArgs{
ConditionGroups: incident.WorkflowExpressionOperationFilterConditionGroupArray{
&incident.WorkflowExpressionOperationFilterConditionGroupArgs{
Conditions: incident.WorkflowExpressionOperationFilterConditionGroupConditionArray{
&incident.WorkflowExpressionOperationFilterConditionGroupConditionArgs{
Operation: pulumi.String("string"),
ParamBindings: incident.WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArray{
&incident.WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArgs{
ArrayValues: incident.WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValueArray{
&incident.WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
},
ExpressionRef: pulumi.String("string"),
Value: &incident.WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
ValueLiteral: pulumi.String("string"),
ValueReference: pulumi.String("string"),
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
},
Subject: pulumi.String("string"),
},
},
},
},
},
Navigate: &incident.WorkflowExpressionOperationNavigateArgs{
Reference: pulumi.String("string"),
},
Parse: &incident.WorkflowExpressionOperationParseArgs{
Returns: &incident.WorkflowExpressionOperationParseReturnsArgs{
Array: pulumi.Bool(false),
Type: pulumi.String("string"),
},
Source: pulumi.String("string"),
},
},
},
Reference: pulumi.String("string"),
RootReference: pulumi.String("string"),
ElseBranch: &incident.WorkflowExpressionElseBranchArgs{
Result: &incident.WorkflowExpressionElseBranchResultArgs{
ArrayValues: incident.WorkflowExpressionElseBranchResultArrayValueArray{
&incident.WorkflowExpressionElseBranchResultArrayValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
},
ExpressionRef: pulumi.String("string"),
Value: &incident.WorkflowExpressionElseBranchResultValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
ValueLiteral: pulumi.String("string"),
ValueReference: pulumi.String("string"),
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
},
},
},
Steps: incident.WorkflowStepArray{
&incident.WorkflowStepArgs{
Id: pulumi.String("string"),
Name: pulumi.String("string"),
ParamBindings: incident.WorkflowStepParamBindingArray{
&incident.WorkflowStepParamBindingArgs{
ArrayValues: incident.WorkflowStepParamBindingArrayValueArray{
&incident.WorkflowStepParamBindingArrayValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
},
ExpressionRef: pulumi.String("string"),
Value: &incident.WorkflowStepParamBindingValueArgs{
Literal: pulumi.String("string"),
Reference: pulumi.String("string"),
},
ValueLiteral: pulumi.String("string"),
ValueReference: pulumi.String("string"),
Values: pulumi.StringArray{
pulumi.String("string"),
},
},
},
ForEach: pulumi.String("string"),
},
},
State: pulumi.String("string"),
RunsOnIncidents: pulumi.String("string"),
RunsOnIncidentModes: pulumi.StringArray{
pulumi.String("string"),
},
Folder: pulumi.String("string"),
Name: pulumi.String("string"),
OwningTeamIds: pulumi.StringArray{
pulumi.String("string"),
},
PrivateIncidentScope: pulumi.String("string"),
IncludePrivateEscalations: pulumi.Bool(false),
Shortform: pulumi.String("string"),
FormFields: incident.WorkflowFormFieldArray{
&incident.WorkflowFormFieldArgs{
Array: pulumi.Bool(false),
Key: pulumi.String("string"),
Required: pulumi.Bool(false),
Title: pulumi.String("string"),
Type: pulumi.String("string"),
Description: pulumi.String("string"),
Id: pulumi.String("string"),
},
},
AutoRunMode: pulumi.String("string"),
Delay: &incident.WorkflowDelayArgs{
ConditionsApplyOverDelay: pulumi.Bool(false),
ForSeconds: pulumi.Int(0),
},
UnlockInDashboard: pulumi.Bool(false),
})
resource "incident_workflow" "workflowResource" {
lifecycle {
create_before_destroy = true
}
once_fors = ["string"]
condition_groups {
conditions {
operation = "string"
param_bindings {
array_values {
literal = "string"
reference = "string"
}
expression_ref = "string"
value = {
literal = "string"
reference = "string"
}
value_literal = "string"
value_reference = "string"
values = ["string"]
}
subject = "string"
}
}
continue_on_step_error = false
trigger = "string"
expressions {
label = "string"
operations {
operation_type = "string"
branches = {
branches = [{
condition_groups = [{
conditions = [{
operation = "string"
param_bindings = [{
array_values = [{
literal = "string"
reference = "string"
}]
expression_ref = "string"
value = {
literal = "string"
reference = "string"
}
value_literal = "string"
value_reference = "string"
values = ["string"]
}]
subject = "string"
}]
}]
result = {
array_values = [{
literal = "string"
reference = "string"
}]
expression_ref = "string"
value = {
literal = "string"
reference = "string"
}
value_literal = "string"
value_reference = "string"
values = ["string"]
}
}]
returns = {
array = false
type = "string"
}
}
cast = {
returns = {
array = false
type = "string"
}
}
concatenate = {
reference = "string"
}
filter = {
condition_groups = [{
conditions = [{
operation = "string"
param_bindings = [{
array_values = [{
literal = "string"
reference = "string"
}]
expression_ref = "string"
value = {
literal = "string"
reference = "string"
}
value_literal = "string"
value_reference = "string"
values = ["string"]
}]
subject = "string"
}]
}]
}
navigate = {
reference = "string"
}
parse = {
returns = {
array = false
type = "string"
}
source = "string"
}
}
reference = "string"
root_reference = "string"
else_branch = {
result = {
array_values = [{
literal = "string"
reference = "string"
}]
expression_ref = "string"
value = {
literal = "string"
reference = "string"
}
value_literal = "string"
value_reference = "string"
values = ["string"]
}
}
}
steps {
id = "string"
name = "string"
param_bindings {
array_values {
literal = "string"
reference = "string"
}
expression_ref = "string"
value = {
literal = "string"
reference = "string"
}
value_literal = "string"
value_reference = "string"
values = ["string"]
}
for_each = "string"
}
state = "string"
runs_on_incidents = "string"
runs_on_incident_modes = ["string"]
folder = "string"
name = "string"
owning_team_ids = ["string"]
private_incident_scope = "string"
include_private_escalations = false
shortform = "string"
form_fields {
array = false
key = "string"
required = false
title = "string"
type = "string"
description = "string"
id = "string"
}
auto_run_mode = "string"
delay = {
conditions_apply_over_delay = false
for_seconds = 0
}
unlock_in_dashboard = false
}
var workflowResource = new Workflow("workflowResource", WorkflowArgs.builder()
.onceFors("string")
.conditionGroups(WorkflowConditionGroupArgs.builder()
.conditions(WorkflowConditionGroupConditionArgs.builder()
.operation("string")
.paramBindings(WorkflowConditionGroupConditionParamBindingArgs.builder()
.arrayValues(WorkflowConditionGroupConditionParamBindingArrayValueArgs.builder()
.literal("string")
.reference("string")
.build())
.expressionRef("string")
.value(WorkflowConditionGroupConditionParamBindingValueArgs.builder()
.literal("string")
.reference("string")
.build())
.valueLiteral("string")
.valueReference("string")
.values("string")
.build())
.subject("string")
.build())
.build())
.continueOnStepError(false)
.trigger("string")
.expressions(WorkflowExpressionArgs.builder()
.label("string")
.operations(WorkflowExpressionOperationArgs.builder()
.operationType("string")
.branches(WorkflowExpressionOperationBranchesArgs.builder()
.branches(WorkflowExpressionOperationBranchesBranchArgs.builder()
.conditionGroups(WorkflowExpressionOperationBranchesBranchConditionGroupArgs.builder()
.conditions(WorkflowExpressionOperationBranchesBranchConditionGroupConditionArgs.builder()
.operation("string")
.paramBindings(WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArgs.builder()
.arrayValues(WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValueArgs.builder()
.literal("string")
.reference("string")
.build())
.expressionRef("string")
.value(WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValueArgs.builder()
.literal("string")
.reference("string")
.build())
.valueLiteral("string")
.valueReference("string")
.values("string")
.build())
.subject("string")
.build())
.build())
.result(WorkflowExpressionOperationBranchesBranchResultArgs.builder()
.arrayValues(WorkflowExpressionOperationBranchesBranchResultArrayValueArgs.builder()
.literal("string")
.reference("string")
.build())
.expressionRef("string")
.value(WorkflowExpressionOperationBranchesBranchResultValueArgs.builder()
.literal("string")
.reference("string")
.build())
.valueLiteral("string")
.valueReference("string")
.values("string")
.build())
.build())
.returns(WorkflowExpressionOperationBranchesReturnsArgs.builder()
.array(false)
.type("string")
.build())
.build())
.cast(WorkflowExpressionOperationCastArgs.builder()
.returns(WorkflowExpressionOperationCastReturnsArgs.builder()
.array(false)
.type("string")
.build())
.build())
.concatenate(WorkflowExpressionOperationConcatenateArgs.builder()
.reference("string")
.build())
.filter(WorkflowExpressionOperationFilterArgs.builder()
.conditionGroups(WorkflowExpressionOperationFilterConditionGroupArgs.builder()
.conditions(WorkflowExpressionOperationFilterConditionGroupConditionArgs.builder()
.operation("string")
.paramBindings(WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArgs.builder()
.arrayValues(WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValueArgs.builder()
.literal("string")
.reference("string")
.build())
.expressionRef("string")
.value(WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValueArgs.builder()
.literal("string")
.reference("string")
.build())
.valueLiteral("string")
.valueReference("string")
.values("string")
.build())
.subject("string")
.build())
.build())
.build())
.navigate(WorkflowExpressionOperationNavigateArgs.builder()
.reference("string")
.build())
.parse(WorkflowExpressionOperationParseArgs.builder()
.returns(WorkflowExpressionOperationParseReturnsArgs.builder()
.array(false)
.type("string")
.build())
.source("string")
.build())
.build())
.reference("string")
.rootReference("string")
.elseBranch(WorkflowExpressionElseBranchArgs.builder()
.result(WorkflowExpressionElseBranchResultArgs.builder()
.arrayValues(WorkflowExpressionElseBranchResultArrayValueArgs.builder()
.literal("string")
.reference("string")
.build())
.expressionRef("string")
.value(WorkflowExpressionElseBranchResultValueArgs.builder()
.literal("string")
.reference("string")
.build())
.valueLiteral("string")
.valueReference("string")
.values("string")
.build())
.build())
.build())
.steps(WorkflowStepArgs.builder()
.id("string")
.name("string")
.paramBindings(WorkflowStepParamBindingArgs.builder()
.arrayValues(WorkflowStepParamBindingArrayValueArgs.builder()
.literal("string")
.reference("string")
.build())
.expressionRef("string")
.value(WorkflowStepParamBindingValueArgs.builder()
.literal("string")
.reference("string")
.build())
.valueLiteral("string")
.valueReference("string")
.values("string")
.build())
.forEach("string")
.build())
.state("string")
.runsOnIncidents("string")
.runsOnIncidentModes("string")
.folder("string")
.name("string")
.owningTeamIds("string")
.privateIncidentScope("string")
.includePrivateEscalations(false)
.shortform("string")
.formFields(WorkflowFormFieldArgs.builder()
.array(false)
.key("string")
.required(false)
.title("string")
.type("string")
.description("string")
.id("string")
.build())
.autoRunMode("string")
.delay(WorkflowDelayArgs.builder()
.conditionsApplyOverDelay(false)
.forSeconds(0)
.build())
.unlockInDashboard(false)
.build());
workflow_resource = incident.Workflow("workflowResource",
once_fors=["string"],
condition_groups=[{
"conditions": [{
"operation": "string",
"param_bindings": [{
"array_values": [{
"literal": "string",
"reference": "string",
}],
"expression_ref": "string",
"value": {
"literal": "string",
"reference": "string",
},
"value_literal": "string",
"value_reference": "string",
"values": ["string"],
}],
"subject": "string",
}],
}],
continue_on_step_error=False,
trigger="string",
expressions=[{
"label": "string",
"operations": [{
"operation_type": "string",
"branches": {
"branches": [{
"condition_groups": [{
"conditions": [{
"operation": "string",
"param_bindings": [{
"array_values": [{
"literal": "string",
"reference": "string",
}],
"expression_ref": "string",
"value": {
"literal": "string",
"reference": "string",
},
"value_literal": "string",
"value_reference": "string",
"values": ["string"],
}],
"subject": "string",
}],
}],
"result": {
"array_values": [{
"literal": "string",
"reference": "string",
}],
"expression_ref": "string",
"value": {
"literal": "string",
"reference": "string",
},
"value_literal": "string",
"value_reference": "string",
"values": ["string"],
},
}],
"returns": {
"array": False,
"type": "string",
},
},
"cast": {
"returns": {
"array": False,
"type": "string",
},
},
"concatenate": {
"reference": "string",
},
"filter": {
"condition_groups": [{
"conditions": [{
"operation": "string",
"param_bindings": [{
"array_values": [{
"literal": "string",
"reference": "string",
}],
"expression_ref": "string",
"value": {
"literal": "string",
"reference": "string",
},
"value_literal": "string",
"value_reference": "string",
"values": ["string"],
}],
"subject": "string",
}],
}],
},
"navigate": {
"reference": "string",
},
"parse": {
"returns": {
"array": False,
"type": "string",
},
"source": "string",
},
}],
"reference": "string",
"root_reference": "string",
"else_branch": {
"result": {
"array_values": [{
"literal": "string",
"reference": "string",
}],
"expression_ref": "string",
"value": {
"literal": "string",
"reference": "string",
},
"value_literal": "string",
"value_reference": "string",
"values": ["string"],
},
},
}],
steps=[{
"id": "string",
"name": "string",
"param_bindings": [{
"array_values": [{
"literal": "string",
"reference": "string",
}],
"expression_ref": "string",
"value": {
"literal": "string",
"reference": "string",
},
"value_literal": "string",
"value_reference": "string",
"values": ["string"],
}],
"for_each": "string",
}],
state="string",
runs_on_incidents="string",
runs_on_incident_modes=["string"],
folder="string",
name="string",
owning_team_ids=["string"],
private_incident_scope="string",
include_private_escalations=False,
shortform="string",
form_fields=[{
"array": False,
"key": "string",
"required": False,
"title": "string",
"type": "string",
"description": "string",
"id": "string",
}],
auto_run_mode="string",
delay={
"conditions_apply_over_delay": False,
"for_seconds": 0,
},
unlock_in_dashboard=False)
const workflowResource = new incident.Workflow("workflowResource", {
onceFors: ["string"],
conditionGroups: [{
conditions: [{
operation: "string",
paramBindings: [{
arrayValues: [{
literal: "string",
reference: "string",
}],
expressionRef: "string",
value: {
literal: "string",
reference: "string",
},
valueLiteral: "string",
valueReference: "string",
values: ["string"],
}],
subject: "string",
}],
}],
continueOnStepError: false,
trigger: "string",
expressions: [{
label: "string",
operations: [{
operationType: "string",
branches: {
branches: [{
conditionGroups: [{
conditions: [{
operation: "string",
paramBindings: [{
arrayValues: [{
literal: "string",
reference: "string",
}],
expressionRef: "string",
value: {
literal: "string",
reference: "string",
},
valueLiteral: "string",
valueReference: "string",
values: ["string"],
}],
subject: "string",
}],
}],
result: {
arrayValues: [{
literal: "string",
reference: "string",
}],
expressionRef: "string",
value: {
literal: "string",
reference: "string",
},
valueLiteral: "string",
valueReference: "string",
values: ["string"],
},
}],
returns: {
array: false,
type: "string",
},
},
cast: {
returns: {
array: false,
type: "string",
},
},
concatenate: {
reference: "string",
},
filter: {
conditionGroups: [{
conditions: [{
operation: "string",
paramBindings: [{
arrayValues: [{
literal: "string",
reference: "string",
}],
expressionRef: "string",
value: {
literal: "string",
reference: "string",
},
valueLiteral: "string",
valueReference: "string",
values: ["string"],
}],
subject: "string",
}],
}],
},
navigate: {
reference: "string",
},
parse: {
returns: {
array: false,
type: "string",
},
source: "string",
},
}],
reference: "string",
rootReference: "string",
elseBranch: {
result: {
arrayValues: [{
literal: "string",
reference: "string",
}],
expressionRef: "string",
value: {
literal: "string",
reference: "string",
},
valueLiteral: "string",
valueReference: "string",
values: ["string"],
},
},
}],
steps: [{
id: "string",
name: "string",
paramBindings: [{
arrayValues: [{
literal: "string",
reference: "string",
}],
expressionRef: "string",
value: {
literal: "string",
reference: "string",
},
valueLiteral: "string",
valueReference: "string",
values: ["string"],
}],
forEach: "string",
}],
state: "string",
runsOnIncidents: "string",
runsOnIncidentModes: ["string"],
folder: "string",
name: "string",
owningTeamIds: ["string"],
privateIncidentScope: "string",
includePrivateEscalations: false,
shortform: "string",
formFields: [{
array: false,
key: "string",
required: false,
title: "string",
type: "string",
description: "string",
id: "string",
}],
autoRunMode: "string",
delay: {
conditionsApplyOverDelay: false,
forSeconds: 0,
},
unlockInDashboard: false,
});
type: incident:Workflow
properties:
autoRunMode: string
conditionGroups:
- conditions:
- operation: string
paramBindings:
- arrayValues:
- literal: string
reference: string
expressionRef: string
value:
literal: string
reference: string
valueLiteral: string
valueReference: string
values:
- string
subject: string
continueOnStepError: false
delay:
conditionsApplyOverDelay: false
forSeconds: 0
expressions:
- elseBranch:
result:
arrayValues:
- literal: string
reference: string
expressionRef: string
value:
literal: string
reference: string
valueLiteral: string
valueReference: string
values:
- string
label: string
operations:
- branches:
branches:
- conditionGroups:
- conditions:
- operation: string
paramBindings:
- arrayValues:
- literal: string
reference: string
expressionRef: string
value:
literal: string
reference: string
valueLiteral: string
valueReference: string
values:
- string
subject: string
result:
arrayValues:
- literal: string
reference: string
expressionRef: string
value:
literal: string
reference: string
valueLiteral: string
valueReference: string
values:
- string
returns:
array: false
type: string
cast:
returns:
array: false
type: string
concatenate:
reference: string
filter:
conditionGroups:
- conditions:
- operation: string
paramBindings:
- arrayValues:
- literal: string
reference: string
expressionRef: string
value:
literal: string
reference: string
valueLiteral: string
valueReference: string
values:
- string
subject: string
navigate:
reference: string
operationType: string
parse:
returns:
array: false
type: string
source: string
reference: string
rootReference: string
folder: string
formFields:
- array: false
description: string
id: string
key: string
required: false
title: string
type: string
includePrivateEscalations: false
name: string
onceFors:
- string
owningTeamIds:
- string
privateIncidentScope: string
runsOnIncidentModes:
- string
runsOnIncidents: string
shortform: string
state: string
steps:
- forEach: string
id: string
name: string
paramBindings:
- arrayValues:
- literal: string
reference: string
expressionRef: string
value:
literal: string
reference: string
valueLiteral: string
valueReference: string
values:
- string
trigger: string
unlockInDashboard: false
Workflow Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.
The Workflow resource accepts the following input properties:
- Condition
Groups List<WorkflowCondition Group> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- Continue
On boolStep Error - Whether to continue executing the workflow if a step fails
- Expressions
List<Workflow
Expression> - The expressions to be prepared for use by steps and conditions
- Once
Fors List<string> - This workflow will run 'once for' a list of references
- Runs
On List<string>Incident Modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - Runs
On stringIncidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - State string
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - Steps
List<Workflow
Step> - Steps that are executed as part of the workflow
- Trigger string
- Unique name of the trigger
- Auto
Run stringMode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - Delay
Workflow
Delay - Configuration controlling workflow delay behaviour
- Folder string
- Folder to display the workflow in
- Form
Fields List<WorkflowForm Field> - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - Include
Private boolEscalations - Whether to include private escalations
- Include
Private boolIncidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - Name string
- Name provided by the user when creating the workflow
- Owning
Team List<string>Ids - IDs of the teams that own this workflow
- Private
Incident stringScope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - Shortform string
- The shortform used to trigger this workflow (only applicable for manual triggers)
- Unlock
In boolDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- Condition
Groups []WorkflowCondition Group Args - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- Continue
On boolStep Error - Whether to continue executing the workflow if a step fails
- Expressions
[]Workflow
Expression Args - The expressions to be prepared for use by steps and conditions
- Once
Fors []string - This workflow will run 'once for' a list of references
- Runs
On []stringIncident Modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - Runs
On stringIncidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - State string
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - Steps
[]Workflow
Step Args - Steps that are executed as part of the workflow
- Trigger string
- Unique name of the trigger
- Auto
Run stringMode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - Delay
Workflow
Delay Args - Configuration controlling workflow delay behaviour
- Folder string
- Folder to display the workflow in
- Form
Fields []WorkflowForm Field Args - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - Include
Private boolEscalations - Whether to include private escalations
- Include
Private boolIncidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - Name string
- Name provided by the user when creating the workflow
- Owning
Team []stringIds - IDs of the teams that own this workflow
- Private
Incident stringScope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - Shortform string
- The shortform used to trigger this workflow (only applicable for manual triggers)
- Unlock
In boolDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- condition_
groups list(object) - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- continue_
on_ boolstep_ error - Whether to continue executing the workflow if a step fails
- expressions list(object)
- The expressions to be prepared for use by steps and conditions
- once_
fors list(string) - This workflow will run 'once for' a list of references
- runs_
on_ list(string)incident_ modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - runs_
on_ stringincidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - state string
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - steps list(object)
- Steps that are executed as part of the workflow
- trigger string
- Unique name of the trigger
- auto_
run_ stringmode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - delay object
- Configuration controlling workflow delay behaviour
- folder string
- Folder to display the workflow in
- form_
fields list(object) - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - include_
private_ boolescalations - Whether to include private escalations
- include_
private_ boolincidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - name string
- Name provided by the user when creating the workflow
- owning_
team_ list(string)ids - IDs of the teams that own this workflow
- private_
incident_ stringscope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - shortform string
- The shortform used to trigger this workflow (only applicable for manual triggers)
- unlock_
in_ booldashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- condition
Groups List<WorkflowCondition Group> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- continue
On BooleanStep Error - Whether to continue executing the workflow if a step fails
- expressions
List<Workflow
Expression> - The expressions to be prepared for use by steps and conditions
- once
Fors List<String> - This workflow will run 'once for' a list of references
- runs
On List<String>Incident Modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - runs
On StringIncidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - state String
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - steps
List<Workflow
Step> - Steps that are executed as part of the workflow
- trigger String
- Unique name of the trigger
- auto
Run StringMode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - delay
Workflow
Delay - Configuration controlling workflow delay behaviour
- folder String
- Folder to display the workflow in
- form
Fields List<WorkflowForm Field> - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - include
Private BooleanEscalations - Whether to include private escalations
- include
Private BooleanIncidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - name String
- Name provided by the user when creating the workflow
- owning
Team List<String>Ids - IDs of the teams that own this workflow
- private
Incident StringScope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - shortform String
- The shortform used to trigger this workflow (only applicable for manual triggers)
- unlock
In BooleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- condition
Groups WorkflowCondition Group[] - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- continue
On booleanStep Error - Whether to continue executing the workflow if a step fails
- expressions
Workflow
Expression[] - The expressions to be prepared for use by steps and conditions
- once
Fors string[] - This workflow will run 'once for' a list of references
- runs
On string[]Incident Modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - runs
On stringIncidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - state string
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - steps
Workflow
Step[] - Steps that are executed as part of the workflow
- trigger string
- Unique name of the trigger
- auto
Run stringMode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - delay
Workflow
Delay - Configuration controlling workflow delay behaviour
- folder string
- Folder to display the workflow in
- form
Fields WorkflowForm Field[] - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - include
Private booleanEscalations - Whether to include private escalations
- include
Private booleanIncidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - name string
- Name provided by the user when creating the workflow
- owning
Team string[]Ids - IDs of the teams that own this workflow
- private
Incident stringScope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - shortform string
- The shortform used to trigger this workflow (only applicable for manual triggers)
- unlock
In booleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- condition_
groups Sequence[WorkflowCondition Group Args] - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- continue_
on_ boolstep_ error - Whether to continue executing the workflow if a step fails
- expressions
Sequence[Workflow
Expression Args] - The expressions to be prepared for use by steps and conditions
- once_
fors Sequence[str] - This workflow will run 'once for' a list of references
- runs_
on_ Sequence[str]incident_ modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - runs_
on_ strincidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - state str
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - steps
Sequence[Workflow
Step Args] - Steps that are executed as part of the workflow
- trigger str
- Unique name of the trigger
- auto_
run_ strmode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - delay
Workflow
Delay Args - Configuration controlling workflow delay behaviour
- folder str
- Folder to display the workflow in
- form_
fields Sequence[WorkflowForm Field Args] - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - include_
private_ boolescalations - Whether to include private escalations
- include_
private_ boolincidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - name str
- Name provided by the user when creating the workflow
- owning_
team_ Sequence[str]ids - IDs of the teams that own this workflow
- private_
incident_ strscope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - shortform str
- The shortform used to trigger this workflow (only applicable for manual triggers)
- unlock_
in_ booldashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- condition
Groups List<Property Map> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- continue
On BooleanStep Error - Whether to continue executing the workflow if a step fails
- expressions List<Property Map>
- The expressions to be prepared for use by steps and conditions
- once
Fors List<String> - This workflow will run 'once for' a list of references
- runs
On List<String>Incident Modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - runs
On StringIncidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - state String
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - steps List<Property Map>
- Steps that are executed as part of the workflow
- trigger String
- Unique name of the trigger
- auto
Run StringMode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - delay Property Map
- Configuration controlling workflow delay behaviour
- folder String
- Folder to display the workflow in
- form
Fields List<Property Map> - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - include
Private BooleanEscalations - Whether to include private escalations
- include
Private BooleanIncidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - name String
- Name provided by the user when creating the workflow
- owning
Team List<String>Ids - IDs of the teams that own this workflow
- private
Incident StringScope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - shortform String
- The shortform used to trigger this workflow (only applicable for manual triggers)
- unlock
In BooleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
Outputs
All input properties are implicitly available as output properties. Additionally, the Workflow resource produces the following output properties:
- Id string
- The provider-assigned unique ID for this managed resource.
- Id string
- The provider-assigned unique ID for this managed resource.
- id string
- The provider-assigned unique ID for this managed resource.
- id String
- The provider-assigned unique ID for this managed resource.
- id string
- The provider-assigned unique ID for this managed resource.
- id str
- The provider-assigned unique ID for this managed resource.
- id String
- The provider-assigned unique ID for this managed resource.
Look up Existing Workflow Resource
Get an existing Workflow resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
public static get(name: string, id: Input<ID>, state?: WorkflowState, opts?: CustomResourceOptions): Workflow@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
auto_run_mode: Optional[str] = None,
condition_groups: Optional[Sequence[WorkflowConditionGroupArgs]] = None,
continue_on_step_error: Optional[bool] = None,
delay: Optional[WorkflowDelayArgs] = None,
expressions: Optional[Sequence[WorkflowExpressionArgs]] = None,
folder: Optional[str] = None,
form_fields: Optional[Sequence[WorkflowFormFieldArgs]] = None,
include_private_escalations: Optional[bool] = None,
include_private_incidents: Optional[bool] = None,
name: Optional[str] = None,
once_fors: Optional[Sequence[str]] = None,
owning_team_ids: Optional[Sequence[str]] = None,
private_incident_scope: Optional[str] = None,
runs_on_incident_modes: Optional[Sequence[str]] = None,
runs_on_incidents: Optional[str] = None,
shortform: Optional[str] = None,
state: Optional[str] = None,
steps: Optional[Sequence[WorkflowStepArgs]] = None,
trigger: Optional[str] = None,
unlock_in_dashboard: Optional[bool] = None) -> Workflowfunc GetWorkflow(ctx *Context, name string, id IDInput, state *WorkflowState, opts ...ResourceOption) (*Workflow, error)public static Workflow Get(string name, Input<string> id, WorkflowState? state, CustomResourceOptions? opts = null)public static Workflow get(String name, Output<String> id, WorkflowState state, CustomResourceOptions options)resources: _: type: incident:Workflow get: id: ${id}import {
to = incident_workflow.example
id = "${id}"
}
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- resource_name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- Auto
Run stringMode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - Condition
Groups List<WorkflowCondition Group> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- Continue
On boolStep Error - Whether to continue executing the workflow if a step fails
- Delay
Workflow
Delay - Configuration controlling workflow delay behaviour
- Expressions
List<Workflow
Expression> - The expressions to be prepared for use by steps and conditions
- Folder string
- Folder to display the workflow in
- Form
Fields List<WorkflowForm Field> - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - Include
Private boolEscalations - Whether to include private escalations
- Include
Private boolIncidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - Name string
- Name provided by the user when creating the workflow
- Once
Fors List<string> - This workflow will run 'once for' a list of references
- Owning
Team List<string>Ids - IDs of the teams that own this workflow
- Private
Incident stringScope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - Runs
On List<string>Incident Modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - Runs
On stringIncidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - Shortform string
- The shortform used to trigger this workflow (only applicable for manual triggers)
- State string
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - Steps
List<Workflow
Step> - Steps that are executed as part of the workflow
- Trigger string
- Unique name of the trigger
- Unlock
In boolDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- Auto
Run stringMode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - Condition
Groups []WorkflowCondition Group Args - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- Continue
On boolStep Error - Whether to continue executing the workflow if a step fails
- Delay
Workflow
Delay Args - Configuration controlling workflow delay behaviour
- Expressions
[]Workflow
Expression Args - The expressions to be prepared for use by steps and conditions
- Folder string
- Folder to display the workflow in
- Form
Fields []WorkflowForm Field Args - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - Include
Private boolEscalations - Whether to include private escalations
- Include
Private boolIncidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - Name string
- Name provided by the user when creating the workflow
- Once
Fors []string - This workflow will run 'once for' a list of references
- Owning
Team []stringIds - IDs of the teams that own this workflow
- Private
Incident stringScope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - Runs
On []stringIncident Modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - Runs
On stringIncidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - Shortform string
- The shortform used to trigger this workflow (only applicable for manual triggers)
- State string
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - Steps
[]Workflow
Step Args - Steps that are executed as part of the workflow
- Trigger string
- Unique name of the trigger
- Unlock
In boolDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- auto_
run_ stringmode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - condition_
groups list(object) - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- continue_
on_ boolstep_ error - Whether to continue executing the workflow if a step fails
- delay object
- Configuration controlling workflow delay behaviour
- expressions list(object)
- The expressions to be prepared for use by steps and conditions
- folder string
- Folder to display the workflow in
- form_
fields list(object) - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - include_
private_ boolescalations - Whether to include private escalations
- include_
private_ boolincidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - name string
- Name provided by the user when creating the workflow
- once_
fors list(string) - This workflow will run 'once for' a list of references
- owning_
team_ list(string)ids - IDs of the teams that own this workflow
- private_
incident_ stringscope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - runs_
on_ list(string)incident_ modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - runs_
on_ stringincidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - shortform string
- The shortform used to trigger this workflow (only applicable for manual triggers)
- state string
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - steps list(object)
- Steps that are executed as part of the workflow
- trigger string
- Unique name of the trigger
- unlock_
in_ booldashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- auto
Run StringMode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - condition
Groups List<WorkflowCondition Group> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- continue
On BooleanStep Error - Whether to continue executing the workflow if a step fails
- delay
Workflow
Delay - Configuration controlling workflow delay behaviour
- expressions
List<Workflow
Expression> - The expressions to be prepared for use by steps and conditions
- folder String
- Folder to display the workflow in
- form
Fields List<WorkflowForm Field> - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - include
Private BooleanEscalations - Whether to include private escalations
- include
Private BooleanIncidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - name String
- Name provided by the user when creating the workflow
- once
Fors List<String> - This workflow will run 'once for' a list of references
- owning
Team List<String>Ids - IDs of the teams that own this workflow
- private
Incident StringScope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - runs
On List<String>Incident Modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - runs
On StringIncidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - shortform String
- The shortform used to trigger this workflow (only applicable for manual triggers)
- state String
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - steps
List<Workflow
Step> - Steps that are executed as part of the workflow
- trigger String
- Unique name of the trigger
- unlock
In BooleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- auto
Run stringMode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - condition
Groups WorkflowCondition Group[] - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- continue
On booleanStep Error - Whether to continue executing the workflow if a step fails
- delay
Workflow
Delay - Configuration controlling workflow delay behaviour
- expressions
Workflow
Expression[] - The expressions to be prepared for use by steps and conditions
- folder string
- Folder to display the workflow in
- form
Fields WorkflowForm Field[] - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - include
Private booleanEscalations - Whether to include private escalations
- include
Private booleanIncidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - name string
- Name provided by the user when creating the workflow
- once
Fors string[] - This workflow will run 'once for' a list of references
- owning
Team string[]Ids - IDs of the teams that own this workflow
- private
Incident stringScope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - runs
On string[]Incident Modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - runs
On stringIncidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - shortform string
- The shortform used to trigger this workflow (only applicable for manual triggers)
- state string
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - steps
Workflow
Step[] - Steps that are executed as part of the workflow
- trigger string
- Unique name of the trigger
- unlock
In booleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- auto_
run_ strmode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - condition_
groups Sequence[WorkflowCondition Group Args] - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- continue_
on_ boolstep_ error - Whether to continue executing the workflow if a step fails
- delay
Workflow
Delay Args - Configuration controlling workflow delay behaviour
- expressions
Sequence[Workflow
Expression Args] - The expressions to be prepared for use by steps and conditions
- folder str
- Folder to display the workflow in
- form_
fields Sequence[WorkflowForm Field Args] - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - include_
private_ boolescalations - Whether to include private escalations
- include_
private_ boolincidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - name str
- Name provided by the user when creating the workflow
- once_
fors Sequence[str] - This workflow will run 'once for' a list of references
- owning_
team_ Sequence[str]ids - IDs of the teams that own this workflow
- private_
incident_ strscope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - runs_
on_ Sequence[str]incident_ modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - runs_
on_ strincidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - shortform str
- The shortform used to trigger this workflow (only applicable for manual triggers)
- state str
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - steps
Sequence[Workflow
Step Args] - Steps that are executed as part of the workflow
- trigger str
- Unique name of the trigger
- unlock_
in_ booldashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- auto
Run StringMode - Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to
runAutomaticallyon create. If omitted on update, the workflow keeps its current mode. Possible values are:runAutomatically,confirmBeforeRunning. - condition
Groups List<Property Map> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- continue
On BooleanStep Error - Whether to continue executing the workflow if a step fails
- delay Property Map
- Configuration controlling workflow delay behaviour
- expressions List<Property Map>
- The expressions to be prepared for use by steps and conditions
- folder String
- Folder to display the workflow in
- form
Fields List<Property Map> - User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an
autoRunModeofconfirmBeforeRunning. - include
Private BooleanEscalations - Whether to include private escalations
- include
Private BooleanIncidents - DEPRECATED: use
privateIncidentScopeinstead.truewhen the workflow runs on private incidents (aprivateIncidentScopeofallorowningTeams),falsewhen the scope isnone. - name String
- Name provided by the user when creating the workflow
- once
Fors List<String> - This workflow will run 'once for' a list of references
- owning
Team List<String>Ids - IDs of the teams that own this workflow
- private
Incident StringScope - Which private incidents this workflow acts on: every private incident (all), those an owning team can see (owning_teams), or none. Possible values are:
all,owningTeams,none. - runs
On List<String>Incident Modes - Which incident modes should this workflow run on? By default, workflows only run on standard incidents, but can also be configured to run on test and retrospective incidents. Possible values are:
standard,test,retrospective. - runs
On StringIncidents - Which incidents should the workflow be applied to? Possible values are:
newlyCreated,newlyCreatedAndActive. - shortform String
- The shortform used to trigger this workflow (only applicable for manual triggers)
- state String
- What state this workflow is in. Possible values are:
active,disabled,draft,error. - steps List<Property Map>
- Steps that are executed as part of the workflow
- trigger String
- Unique name of the trigger
- unlock
In BooleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
Supporting Types
WorkflowConditionGroup, WorkflowConditionGroupArgs
- Conditions
List<Workflow
Condition Group Condition> - The prerequisite conditions that must all be satisfied
- Conditions
[]Workflow
Condition Group Condition - The prerequisite conditions that must all be satisfied
- conditions list(object)
- The prerequisite conditions that must all be satisfied
- conditions
List<Workflow
Condition Group Condition> - The prerequisite conditions that must all be satisfied
- conditions
Workflow
Condition Group Condition[] - The prerequisite conditions that must all be satisfied
- conditions
Sequence[Workflow
Condition Group Condition] - The prerequisite conditions that must all be satisfied
- conditions List<Property Map>
- The prerequisite conditions that must all be satisfied
WorkflowConditionGroupCondition, WorkflowConditionGroupConditionArgs
- Operation string
- The logical operation to be applied
- Param
Bindings List<WorkflowCondition Group Condition Param Binding> - Bindings for the operation parameters
- Subject string
- The subject of the condition, on which the operation is applied
- Operation string
- The logical operation to be applied
- Param
Bindings []WorkflowCondition Group Condition Param Binding - Bindings for the operation parameters
- Subject string
- The subject of the condition, on which the operation is applied
- operation string
- The logical operation to be applied
- param_
bindings list(object) - Bindings for the operation parameters
- subject string
- The subject of the condition, on which the operation is applied
- operation String
- The logical operation to be applied
- param
Bindings List<WorkflowCondition Group Condition Param Binding> - Bindings for the operation parameters
- subject String
- The subject of the condition, on which the operation is applied
- operation string
- The logical operation to be applied
- param
Bindings WorkflowCondition Group Condition Param Binding[] - Bindings for the operation parameters
- subject string
- The subject of the condition, on which the operation is applied
- operation str
- The logical operation to be applied
- param_
bindings Sequence[WorkflowCondition Group Condition Param Binding] - Bindings for the operation parameters
- subject str
- The subject of the condition, on which the operation is applied
- operation String
- The logical operation to be applied
- param
Bindings List<Property Map> - Bindings for the operation parameters
- subject String
- The subject of the condition, on which the operation is applied
WorkflowConditionGroupConditionParamBinding, WorkflowConditionGroupConditionParamBindingArgs
- Array
Values List<WorkflowCondition Group Condition Param Binding Array Value> - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Condition Group Condition Param Binding Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values List<string>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- Array
Values []WorkflowCondition Group Condition Param Binding Array Value - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Condition Group Condition Param Binding Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values []string
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values list(object) - The array of literal or reference parameter values
- expression_
ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value object
- The literal or reference parameter value
- value_
literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values list(string)
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<WorkflowCondition Group Condition Param Binding Array Value> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Condition Group Condition Param Binding Value - The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values WorkflowCondition Group Condition Param Binding Array Value[] - The array of literal or reference parameter values
- expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Condition Group Condition Param Binding Value - The literal or reference parameter value
- value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values string[]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values Sequence[WorkflowCondition Group Condition Param Binding Array Value] - The array of literal or reference parameter values
- expression_
ref str - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Condition Group Condition Param Binding Value - The literal or reference parameter value
- value_
literal str - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference str - A reference into the scope, shorthand for
value = { reference = ... }. - values Sequence[str]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<Property Map> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value Property Map
- The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
WorkflowConditionGroupConditionParamBindingArrayValue, WorkflowConditionGroupConditionParamBindingArrayValueArgs
WorkflowConditionGroupConditionParamBindingValue, WorkflowConditionGroupConditionParamBindingValueArgs
WorkflowDelay, WorkflowDelayArgs
- Conditions
Apply boolOver Delay - If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
- For
Seconds int - Delay in seconds between trigger firing and running the workflow
- Conditions
Apply boolOver Delay - If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
- For
Seconds int - Delay in seconds between trigger firing and running the workflow
- conditions_
apply_ boolover_ delay - If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
- for_
seconds number - Delay in seconds between trigger firing and running the workflow
- conditions
Apply BooleanOver Delay - If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
- for
Seconds Integer - Delay in seconds between trigger firing and running the workflow
- conditions
Apply booleanOver Delay - If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
- for
Seconds number - Delay in seconds between trigger firing and running the workflow
- conditions_
apply_ boolover_ delay - If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
- for_
seconds int - Delay in seconds between trigger firing and running the workflow
- conditions
Apply BooleanOver Delay - If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
- for
Seconds Number - Delay in seconds between trigger firing and running the workflow
WorkflowExpression, WorkflowExpressionArgs
- Label string
- The human readable label of the expression
- Operations
List<Workflow
Expression Operation> - The operations to execute in sequence for this expression
- Reference string
- A short ID that can be used to reference the expression
- Root
Reference string - The root reference for this expression (i.e. where the expression starts)
- Else
Branch WorkflowExpression Else Branch - The else branch to resort to if all operations fail
- Label string
- The human readable label of the expression
- Operations
[]Workflow
Expression Operation - The operations to execute in sequence for this expression
- Reference string
- A short ID that can be used to reference the expression
- Root
Reference string - The root reference for this expression (i.e. where the expression starts)
- Else
Branch WorkflowExpression Else Branch - The else branch to resort to if all operations fail
- label string
- The human readable label of the expression
- operations list(object)
- The operations to execute in sequence for this expression
- reference string
- A short ID that can be used to reference the expression
- root_
reference string - The root reference for this expression (i.e. where the expression starts)
- else_
branch object - The else branch to resort to if all operations fail
- label String
- The human readable label of the expression
- operations
List<Workflow
Expression Operation> - The operations to execute in sequence for this expression
- reference String
- A short ID that can be used to reference the expression
- root
Reference String - The root reference for this expression (i.e. where the expression starts)
- else
Branch WorkflowExpression Else Branch - The else branch to resort to if all operations fail
- label string
- The human readable label of the expression
- operations
Workflow
Expression Operation[] - The operations to execute in sequence for this expression
- reference string
- A short ID that can be used to reference the expression
- root
Reference string - The root reference for this expression (i.e. where the expression starts)
- else
Branch WorkflowExpression Else Branch - The else branch to resort to if all operations fail
- label str
- The human readable label of the expression
- operations
Sequence[Workflow
Expression Operation] - The operations to execute in sequence for this expression
- reference str
- A short ID that can be used to reference the expression
- root_
reference str - The root reference for this expression (i.e. where the expression starts)
- else_
branch WorkflowExpression Else Branch - The else branch to resort to if all operations fail
- label String
- The human readable label of the expression
- operations List<Property Map>
- The operations to execute in sequence for this expression
- reference String
- A short ID that can be used to reference the expression
- root
Reference String - The root reference for this expression (i.e. where the expression starts)
- else
Branch Property Map - The else branch to resort to if all operations fail
WorkflowExpressionElseBranch, WorkflowExpressionElseBranchArgs
- Result
Workflow
Expression Else Branch Result - The result assumed if the else branch is reached
- Result
Workflow
Expression Else Branch Result - The result assumed if the else branch is reached
- result
Workflow
Expression Else Branch Result - The result assumed if the else branch is reached
- result
Workflow
Expression Else Branch Result - The result assumed if the else branch is reached
- result
Workflow
Expression Else Branch Result - The result assumed if the else branch is reached
- result Property Map
- The result assumed if the else branch is reached
WorkflowExpressionElseBranchResult, WorkflowExpressionElseBranchResultArgs
- Array
Values List<WorkflowExpression Else Branch Result Array Value> - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Expression Else Branch Result Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values List<string>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- Array
Values []WorkflowExpression Else Branch Result Array Value - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Expression Else Branch Result Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values []string
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values list(object) - The array of literal or reference parameter values
- expression_
ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value object
- The literal or reference parameter value
- value_
literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values list(string)
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<WorkflowExpression Else Branch Result Array Value> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Else Branch Result Value - The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values WorkflowExpression Else Branch Result Array Value[] - The array of literal or reference parameter values
- expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Else Branch Result Value - The literal or reference parameter value
- value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values string[]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values Sequence[WorkflowExpression Else Branch Result Array Value] - The array of literal or reference parameter values
- expression_
ref str - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Else Branch Result Value - The literal or reference parameter value
- value_
literal str - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference str - A reference into the scope, shorthand for
value = { reference = ... }. - values Sequence[str]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<Property Map> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value Property Map
- The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
WorkflowExpressionElseBranchResultArrayValue, WorkflowExpressionElseBranchResultArrayValueArgs
WorkflowExpressionElseBranchResultValue, WorkflowExpressionElseBranchResultValueArgs
WorkflowExpressionOperation, WorkflowExpressionOperationArgs
- Operation
Type string - Indicates which operation type to execute. Possible values are:
navigate,filter,concatenate,count,min,max,sum,random,first,parse,branches,cast. - Branches
Workflow
Expression Operation Branches - An operation type that allows for a value to be set conditionally by a series of logical branches
- Cast
Workflow
Expression Operation Cast - An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned
arrayfollows the value being cast, so it must match the cardinality of the previous operation - Concatenate
Workflow
Expression Operation Concatenate - An operation type that adds the values behind another reference to the current value, keeping each value once. There is no delimiter, despite the name
- Filter
Workflow
Expression Operation Filter - An operation type that allows values to be filtered out by conditions
-
Workflow
Expression Operation Navigate - An operation type that allows attributes of a type to be accessed by reference
- Parse
Workflow
Expression Operation Parse - An operation type that allows a value to parsed from within a JSON object
- Operation
Type string - Indicates which operation type to execute. Possible values are:
navigate,filter,concatenate,count,min,max,sum,random,first,parse,branches,cast. - Branches
Workflow
Expression Operation Branches - An operation type that allows for a value to be set conditionally by a series of logical branches
- Cast
Workflow
Expression Operation Cast - An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned
arrayfollows the value being cast, so it must match the cardinality of the previous operation - Concatenate
Workflow
Expression Operation Concatenate - An operation type that adds the values behind another reference to the current value, keeping each value once. There is no delimiter, despite the name
- Filter
Workflow
Expression Operation Filter - An operation type that allows values to be filtered out by conditions
-
Workflow
Expression Operation Navigate - An operation type that allows attributes of a type to be accessed by reference
- Parse
Workflow
Expression Operation Parse - An operation type that allows a value to parsed from within a JSON object
- operation_
type string - Indicates which operation type to execute. Possible values are:
navigate,filter,concatenate,count,min,max,sum,random,first,parse,branches,cast. - branches object
- An operation type that allows for a value to be set conditionally by a series of logical branches
- cast object
- An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned
arrayfollows the value being cast, so it must match the cardinality of the previous operation - concatenate object
- An operation type that adds the values behind another reference to the current value, keeping each value once. There is no delimiter, despite the name
- filter object
- An operation type that allows values to be filtered out by conditions
- object
- An operation type that allows attributes of a type to be accessed by reference
- parse object
- An operation type that allows a value to parsed from within a JSON object
- operation
Type String - Indicates which operation type to execute. Possible values are:
navigate,filter,concatenate,count,min,max,sum,random,first,parse,branches,cast. - branches
Workflow
Expression Operation Branches - An operation type that allows for a value to be set conditionally by a series of logical branches
- cast
Workflow
Expression Operation Cast - An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned
arrayfollows the value being cast, so it must match the cardinality of the previous operation - concatenate
Workflow
Expression Operation Concatenate - An operation type that adds the values behind another reference to the current value, keeping each value once. There is no delimiter, despite the name
- filter
Workflow
Expression Operation Filter - An operation type that allows values to be filtered out by conditions
-
Workflow
Expression Operation Navigate - An operation type that allows attributes of a type to be accessed by reference
- parse
Workflow
Expression Operation Parse - An operation type that allows a value to parsed from within a JSON object
- operation
Type string - Indicates which operation type to execute. Possible values are:
navigate,filter,concatenate,count,min,max,sum,random,first,parse,branches,cast. - branches
Workflow
Expression Operation Branches - An operation type that allows for a value to be set conditionally by a series of logical branches
- cast
Workflow
Expression Operation Cast - An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned
arrayfollows the value being cast, so it must match the cardinality of the previous operation - concatenate
Workflow
Expression Operation Concatenate - An operation type that adds the values behind another reference to the current value, keeping each value once. There is no delimiter, despite the name
- filter
Workflow
Expression Operation Filter - An operation type that allows values to be filtered out by conditions
-
Workflow
Expression Operation Navigate - An operation type that allows attributes of a type to be accessed by reference
- parse
Workflow
Expression Operation Parse - An operation type that allows a value to parsed from within a JSON object
- operation_
type str - Indicates which operation type to execute. Possible values are:
navigate,filter,concatenate,count,min,max,sum,random,first,parse,branches,cast. - branches
Workflow
Expression Operation Branches - An operation type that allows for a value to be set conditionally by a series of logical branches
- cast
Workflow
Expression Operation Cast - An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned
arrayfollows the value being cast, so it must match the cardinality of the previous operation - concatenate
Workflow
Expression Operation Concatenate - An operation type that adds the values behind another reference to the current value, keeping each value once. There is no delimiter, despite the name
- filter
Workflow
Expression Operation Filter - An operation type that allows values to be filtered out by conditions
-
Workflow
Expression Operation Navigate - An operation type that allows attributes of a type to be accessed by reference
- parse
Workflow
Expression Operation Parse - An operation type that allows a value to parsed from within a JSON object
- operation
Type String - Indicates which operation type to execute. Possible values are:
navigate,filter,concatenate,count,min,max,sum,random,first,parse,branches,cast. - branches Property Map
- An operation type that allows for a value to be set conditionally by a series of logical branches
- cast Property Map
- An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned
arrayfollows the value being cast, so it must match the cardinality of the previous operation - concatenate Property Map
- An operation type that adds the values behind another reference to the current value, keeping each value once. There is no delimiter, despite the name
- filter Property Map
- An operation type that allows values to be filtered out by conditions
- Property Map
- An operation type that allows attributes of a type to be accessed by reference
- parse Property Map
- An operation type that allows a value to parsed from within a JSON object
WorkflowExpressionOperationBranches, WorkflowExpressionOperationBranchesArgs
- Branches
List<Workflow
Expression Operation Branches Branch> - The branches to apply for this operation
- Returns
Workflow
Expression Operation Branches Returns - The return type of an operation
- Branches
[]Workflow
Expression Operation Branches Branch - The branches to apply for this operation
- Returns
Workflow
Expression Operation Branches Returns - The return type of an operation
- branches list(object)
- The branches to apply for this operation
- returns object
- The return type of an operation
- branches
List<Workflow
Expression Operation Branches Branch> - The branches to apply for this operation
- returns
Workflow
Expression Operation Branches Returns - The return type of an operation
- branches
Workflow
Expression Operation Branches Branch[] - The branches to apply for this operation
- returns
Workflow
Expression Operation Branches Returns - The return type of an operation
- branches
Sequence[Workflow
Expression Operation Branches Branch] - The branches to apply for this operation
- returns
Workflow
Expression Operation Branches Returns - The return type of an operation
- branches List<Property Map>
- The branches to apply for this operation
- returns Property Map
- The return type of an operation
WorkflowExpressionOperationBranchesBranch, WorkflowExpressionOperationBranchesBranchArgs
- Condition
Groups List<WorkflowExpression Operation Branches Branch Condition Group> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- Result
Workflow
Expression Operation Branches Branch Result - The result assumed if the condition groups are satisfied
- Condition
Groups []WorkflowExpression Operation Branches Branch Condition Group - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- Result
Workflow
Expression Operation Branches Branch Result - The result assumed if the condition groups are satisfied
- condition_
groups list(object) - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- result object
- The result assumed if the condition groups are satisfied
- condition
Groups List<WorkflowExpression Operation Branches Branch Condition Group> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- result
Workflow
Expression Operation Branches Branch Result - The result assumed if the condition groups are satisfied
- condition
Groups WorkflowExpression Operation Branches Branch Condition Group[] - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- result
Workflow
Expression Operation Branches Branch Result - The result assumed if the condition groups are satisfied
- condition_
groups Sequence[WorkflowExpression Operation Branches Branch Condition Group] - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- result
Workflow
Expression Operation Branches Branch Result - The result assumed if the condition groups are satisfied
- condition
Groups List<Property Map> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- result Property Map
- The result assumed if the condition groups are satisfied
WorkflowExpressionOperationBranchesBranchConditionGroup, WorkflowExpressionOperationBranchesBranchConditionGroupArgs
- Conditions
List<Workflow
Expression Operation Branches Branch Condition Group Condition> - The prerequisite conditions that must all be satisfied
- Conditions
[]Workflow
Expression Operation Branches Branch Condition Group Condition - The prerequisite conditions that must all be satisfied
- conditions list(object)
- The prerequisite conditions that must all be satisfied
- conditions
List<Workflow
Expression Operation Branches Branch Condition Group Condition> - The prerequisite conditions that must all be satisfied
- conditions
Workflow
Expression Operation Branches Branch Condition Group Condition[] - The prerequisite conditions that must all be satisfied
- conditions
Sequence[Workflow
Expression Operation Branches Branch Condition Group Condition] - The prerequisite conditions that must all be satisfied
- conditions List<Property Map>
- The prerequisite conditions that must all be satisfied
WorkflowExpressionOperationBranchesBranchConditionGroupCondition, WorkflowExpressionOperationBranchesBranchConditionGroupConditionArgs
- Operation string
- The logical operation to be applied
- Param
Bindings List<WorkflowExpression Operation Branches Branch Condition Group Condition Param Binding> - Bindings for the operation parameters
- Subject string
- The subject of the condition, on which the operation is applied
- Operation string
- The logical operation to be applied
- Param
Bindings []WorkflowExpression Operation Branches Branch Condition Group Condition Param Binding - Bindings for the operation parameters
- Subject string
- The subject of the condition, on which the operation is applied
- operation string
- The logical operation to be applied
- param_
bindings list(object) - Bindings for the operation parameters
- subject string
- The subject of the condition, on which the operation is applied
- operation String
- The logical operation to be applied
- param
Bindings List<WorkflowExpression Operation Branches Branch Condition Group Condition Param Binding> - Bindings for the operation parameters
- subject String
- The subject of the condition, on which the operation is applied
- operation string
- The logical operation to be applied
- param
Bindings WorkflowExpression Operation Branches Branch Condition Group Condition Param Binding[] - Bindings for the operation parameters
- subject string
- The subject of the condition, on which the operation is applied
- operation str
- The logical operation to be applied
- param_
bindings Sequence[WorkflowExpression Operation Branches Branch Condition Group Condition Param Binding] - Bindings for the operation parameters
- subject str
- The subject of the condition, on which the operation is applied
- operation String
- The logical operation to be applied
- param
Bindings List<Property Map> - Bindings for the operation parameters
- subject String
- The subject of the condition, on which the operation is applied
WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBinding, WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArgs
- Array
Values List<WorkflowExpression Operation Branches Branch Condition Group Condition Param Binding Array Value> - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Expression Operation Branches Branch Condition Group Condition Param Binding Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values List<string>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- Array
Values []WorkflowExpression Operation Branches Branch Condition Group Condition Param Binding Array Value - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Expression Operation Branches Branch Condition Group Condition Param Binding Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values []string
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values list(object) - The array of literal or reference parameter values
- expression_
ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value object
- The literal or reference parameter value
- value_
literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values list(string)
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<WorkflowExpression Operation Branches Branch Condition Group Condition Param Binding Array Value> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Operation Branches Branch Condition Group Condition Param Binding Value - The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values WorkflowExpression Operation Branches Branch Condition Group Condition Param Binding Array Value[] - The array of literal or reference parameter values
- expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Operation Branches Branch Condition Group Condition Param Binding Value - The literal or reference parameter value
- value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values string[]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values Sequence[WorkflowExpression Operation Branches Branch Condition Group Condition Param Binding Array Value] - The array of literal or reference parameter values
- expression_
ref str - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Operation Branches Branch Condition Group Condition Param Binding Value - The literal or reference parameter value
- value_
literal str - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference str - A reference into the scope, shorthand for
value = { reference = ... }. - values Sequence[str]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<Property Map> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value Property Map
- The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValue, WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValueArgs
WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValue, WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValueArgs
WorkflowExpressionOperationBranchesBranchResult, WorkflowExpressionOperationBranchesBranchResultArgs
- Array
Values List<WorkflowExpression Operation Branches Branch Result Array Value> - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Expression Operation Branches Branch Result Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values List<string>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- Array
Values []WorkflowExpression Operation Branches Branch Result Array Value - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Expression Operation Branches Branch Result Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values []string
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values list(object) - The array of literal or reference parameter values
- expression_
ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value object
- The literal or reference parameter value
- value_
literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values list(string)
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<WorkflowExpression Operation Branches Branch Result Array Value> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Operation Branches Branch Result Value - The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values WorkflowExpression Operation Branches Branch Result Array Value[] - The array of literal or reference parameter values
- expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Operation Branches Branch Result Value - The literal or reference parameter value
- value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values string[]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values Sequence[WorkflowExpression Operation Branches Branch Result Array Value] - The array of literal or reference parameter values
- expression_
ref str - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Operation Branches Branch Result Value - The literal or reference parameter value
- value_
literal str - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference str - A reference into the scope, shorthand for
value = { reference = ... }. - values Sequence[str]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<Property Map> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value Property Map
- The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
WorkflowExpressionOperationBranchesBranchResultArrayValue, WorkflowExpressionOperationBranchesBranchResultArrayValueArgs
WorkflowExpressionOperationBranchesBranchResultValue, WorkflowExpressionOperationBranchesBranchResultValueArgs
WorkflowExpressionOperationBranchesReturns, WorkflowExpressionOperationBranchesReturnsArgs
WorkflowExpressionOperationCast, WorkflowExpressionOperationCastArgs
- Returns
Workflow
Expression Operation Cast Returns - The return type of an operation
- Returns
Workflow
Expression Operation Cast Returns - The return type of an operation
- returns
Workflow
Expression Operation Cast Returns - The return type of an operation
- returns
Workflow
Expression Operation Cast Returns - The return type of an operation
- returns
Workflow
Expression Operation Cast Returns - The return type of an operation
- returns Property Map
- The return type of an operation
WorkflowExpressionOperationCastReturns, WorkflowExpressionOperationCastReturnsArgs
WorkflowExpressionOperationConcatenate, WorkflowExpressionOperationConcatenateArgs
- Reference string
- The reference within the scope to concatenate with
- Reference string
- The reference within the scope to concatenate with
- reference string
- The reference within the scope to concatenate with
- reference String
- The reference within the scope to concatenate with
- reference string
- The reference within the scope to concatenate with
- reference str
- The reference within the scope to concatenate with
- reference String
- The reference within the scope to concatenate with
WorkflowExpressionOperationFilter, WorkflowExpressionOperationFilterArgs
- Condition
Groups List<WorkflowExpression Operation Filter Condition Group> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- Condition
Groups []WorkflowExpression Operation Filter Condition Group - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- condition_
groups list(object) - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- condition
Groups List<WorkflowExpression Operation Filter Condition Group> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- condition
Groups WorkflowExpression Operation Filter Condition Group[] - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- condition_
groups Sequence[WorkflowExpression Operation Filter Condition Group] - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
- condition
Groups List<Property Map> - Groups of prerequisite conditions. All conditions in at least one group must be satisfied
WorkflowExpressionOperationFilterConditionGroup, WorkflowExpressionOperationFilterConditionGroupArgs
- Conditions
List<Workflow
Expression Operation Filter Condition Group Condition> - The prerequisite conditions that must all be satisfied
- Conditions
[]Workflow
Expression Operation Filter Condition Group Condition - The prerequisite conditions that must all be satisfied
- conditions list(object)
- The prerequisite conditions that must all be satisfied
- conditions
List<Workflow
Expression Operation Filter Condition Group Condition> - The prerequisite conditions that must all be satisfied
- conditions
Workflow
Expression Operation Filter Condition Group Condition[] - The prerequisite conditions that must all be satisfied
- conditions
Sequence[Workflow
Expression Operation Filter Condition Group Condition] - The prerequisite conditions that must all be satisfied
- conditions List<Property Map>
- The prerequisite conditions that must all be satisfied
WorkflowExpressionOperationFilterConditionGroupCondition, WorkflowExpressionOperationFilterConditionGroupConditionArgs
- Operation string
- The logical operation to be applied
- Param
Bindings List<WorkflowExpression Operation Filter Condition Group Condition Param Binding> - Bindings for the operation parameters
- Subject string
- The subject of the condition, on which the operation is applied
- Operation string
- The logical operation to be applied
- Param
Bindings []WorkflowExpression Operation Filter Condition Group Condition Param Binding - Bindings for the operation parameters
- Subject string
- The subject of the condition, on which the operation is applied
- operation string
- The logical operation to be applied
- param_
bindings list(object) - Bindings for the operation parameters
- subject string
- The subject of the condition, on which the operation is applied
- operation String
- The logical operation to be applied
- param
Bindings List<WorkflowExpression Operation Filter Condition Group Condition Param Binding> - Bindings for the operation parameters
- subject String
- The subject of the condition, on which the operation is applied
- operation string
- The logical operation to be applied
- param
Bindings WorkflowExpression Operation Filter Condition Group Condition Param Binding[] - Bindings for the operation parameters
- subject string
- The subject of the condition, on which the operation is applied
- operation str
- The logical operation to be applied
- param_
bindings Sequence[WorkflowExpression Operation Filter Condition Group Condition Param Binding] - Bindings for the operation parameters
- subject str
- The subject of the condition, on which the operation is applied
- operation String
- The logical operation to be applied
- param
Bindings List<Property Map> - Bindings for the operation parameters
- subject String
- The subject of the condition, on which the operation is applied
WorkflowExpressionOperationFilterConditionGroupConditionParamBinding, WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArgs
- Array
Values List<WorkflowExpression Operation Filter Condition Group Condition Param Binding Array Value> - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Expression Operation Filter Condition Group Condition Param Binding Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values List<string>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- Array
Values []WorkflowExpression Operation Filter Condition Group Condition Param Binding Array Value - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Expression Operation Filter Condition Group Condition Param Binding Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values []string
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values list(object) - The array of literal or reference parameter values
- expression_
ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value object
- The literal or reference parameter value
- value_
literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values list(string)
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<WorkflowExpression Operation Filter Condition Group Condition Param Binding Array Value> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Operation Filter Condition Group Condition Param Binding Value - The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values WorkflowExpression Operation Filter Condition Group Condition Param Binding Array Value[] - The array of literal or reference parameter values
- expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Operation Filter Condition Group Condition Param Binding Value - The literal or reference parameter value
- value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values string[]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values Sequence[WorkflowExpression Operation Filter Condition Group Condition Param Binding Array Value] - The array of literal or reference parameter values
- expression_
ref str - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Expression Operation Filter Condition Group Condition Param Binding Value - The literal or reference parameter value
- value_
literal str - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference str - A reference into the scope, shorthand for
value = { reference = ... }. - values Sequence[str]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<Property Map> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value Property Map
- The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValue, WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValueArgs
WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValue, WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValueArgs
WorkflowExpressionOperationNavigate, WorkflowExpressionOperationNavigateArgs
- Reference string
- Reference string
- reference string
- reference String
- reference string
- reference str
- reference String
WorkflowExpressionOperationParse, WorkflowExpressionOperationParseArgs
- Returns
Workflow
Expression Operation Parse Returns - The return type of an operation
- Source string
- The ES5 Javascript expression to execute
- Returns
Workflow
Expression Operation Parse Returns - The return type of an operation
- Source string
- The ES5 Javascript expression to execute
- returns
Workflow
Expression Operation Parse Returns - The return type of an operation
- source String
- The ES5 Javascript expression to execute
- returns
Workflow
Expression Operation Parse Returns - The return type of an operation
- source string
- The ES5 Javascript expression to execute
- returns
Workflow
Expression Operation Parse Returns - The return type of an operation
- source str
- The ES5 Javascript expression to execute
- returns Property Map
- The return type of an operation
- source String
- The ES5 Javascript expression to execute
WorkflowExpressionOperationParseReturns, WorkflowExpressionOperationParseReturnsArgs
WorkflowFormField, WorkflowFormFieldArgs
- Array bool
- Whether this field holds a list of values rather than a single value
- Key string
- The key used to reference this field in the workflow scope
- Required bool
- Whether this field must be filled in when running the workflow
- Title string
- Human readable title shown in the form
- Type string
- The engine resource type of this field
- Description string
- Optional help text shown beneath the field
- Id string
- Stable identifier for this form field, preserved across versions
- Array bool
- Whether this field holds a list of values rather than a single value
- Key string
- The key used to reference this field in the workflow scope
- Required bool
- Whether this field must be filled in when running the workflow
- Title string
- Human readable title shown in the form
- Type string
- The engine resource type of this field
- Description string
- Optional help text shown beneath the field
- Id string
- Stable identifier for this form field, preserved across versions
- array bool
- Whether this field holds a list of values rather than a single value
- key string
- The key used to reference this field in the workflow scope
- required bool
- Whether this field must be filled in when running the workflow
- title string
- Human readable title shown in the form
- type string
- The engine resource type of this field
- description string
- Optional help text shown beneath the field
- id string
- Stable identifier for this form field, preserved across versions
- array Boolean
- Whether this field holds a list of values rather than a single value
- key String
- The key used to reference this field in the workflow scope
- required Boolean
- Whether this field must be filled in when running the workflow
- title String
- Human readable title shown in the form
- type String
- The engine resource type of this field
- description String
- Optional help text shown beneath the field
- id String
- Stable identifier for this form field, preserved across versions
- array boolean
- Whether this field holds a list of values rather than a single value
- key string
- The key used to reference this field in the workflow scope
- required boolean
- Whether this field must be filled in when running the workflow
- title string
- Human readable title shown in the form
- type string
- The engine resource type of this field
- description string
- Optional help text shown beneath the field
- id string
- Stable identifier for this form field, preserved across versions
- array bool
- Whether this field holds a list of values rather than a single value
- key str
- The key used to reference this field in the workflow scope
- required bool
- Whether this field must be filled in when running the workflow
- title str
- Human readable title shown in the form
- type str
- The engine resource type of this field
- description str
- Optional help text shown beneath the field
- id str
- Stable identifier for this form field, preserved across versions
- array Boolean
- Whether this field holds a list of values rather than a single value
- key String
- The key used to reference this field in the workflow scope
- required Boolean
- Whether this field must be filled in when running the workflow
- title String
- Human readable title shown in the form
- type String
- The engine resource type of this field
- description String
- Optional help text shown beneath the field
- id String
- Stable identifier for this form field, preserved across versions
WorkflowStep, WorkflowStepArgs
- Id string
- Name string
- Param
Bindings List<WorkflowStep Param Binding> - Bindings for the operation parameters
- For
Each string
- Id string
- Name string
- Param
Bindings []WorkflowStep Param Binding - Bindings for the operation parameters
- For
Each string
- id string
- name string
- param_
bindings list(object) - Bindings for the operation parameters
- for_
each string
- id String
- name String
- param
Bindings List<WorkflowStep Param Binding> - Bindings for the operation parameters
- for
Each String
- id string
- name string
- param
Bindings WorkflowStep Param Binding[] - Bindings for the operation parameters
- for
Each string
- id str
- name str
- param_
bindings Sequence[WorkflowStep Param Binding] - Bindings for the operation parameters
- for_
each str
- id String
- name String
- param
Bindings List<Property Map> - Bindings for the operation parameters
- for
Each String
WorkflowStepParamBinding, WorkflowStepParamBindingArgs
- Array
Values List<WorkflowStep Param Binding Array Value> - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Step Param Binding Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values List<string>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- Array
Values []WorkflowStep Param Binding Array Value - The array of literal or reference parameter values
- Expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - Value
Workflow
Step Param Binding Value - The literal or reference parameter value
- Value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - Value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - Values []string
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values list(object) - The array of literal or reference parameter values
- expression_
ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value object
- The literal or reference parameter value
- value_
literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values list(string)
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<WorkflowStep Param Binding Array Value> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Step Param Binding Value - The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values WorkflowStep Param Binding Array Value[] - The array of literal or reference parameter values
- expression
Ref string - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Step Param Binding Value - The literal or reference parameter value
- value
Literal string - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference string - A reference into the scope, shorthand for
value = { reference = ... }. - values string[]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array_
values Sequence[WorkflowStep Param Binding Array Value] - The array of literal or reference parameter values
- expression_
ref str - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value
Workflow
Step Param Binding Value - The literal or reference parameter value
- value_
literal str - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value_
reference str - A reference into the scope, shorthand for
value = { reference = ... }. - values Sequence[str]
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
- array
Values List<Property Map> - The array of literal or reference parameter values
- expression
Ref String - The name of an expression on this resource, whose result becomes the value. Shorthand for referencing
expressions["name"]. - value Property Map
- The literal or reference parameter value
- value
Literal String - A fixed value, shorthand for
value = { literal = ... }. A catalog entry ID is a literal, not a reference. - value
Reference String - A reference into the scope, shorthand for
value = { reference = ... }. - values List<String>
- Several fixed values, shorthand for an
arrayValueof literals. For a mix of literals and references, usearrayValue.
WorkflowStepParamBindingArrayValue, WorkflowStepParamBindingArrayValueArgs
WorkflowStepParamBindingValue, WorkflowStepParamBindingValueArgs
Package Details
- Repository
- incident incident-io/pulumi-incident
- License
- MIT
- Notes
- This Pulumi package is based on the
incidentTerraform Provider.
published on Wednesday, Oct 21, 2026 by incident-io