1. Registry
  2. Packages
  3. incident.io
  4. API Docs
  5. Workflow
Viewing docs for incident.io v0.4.1
published on Wednesday, Oct 21, 2026 by incident-io
incident logo incident.io
Viewing docs for incident.io v0.4.1
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:

    ConditionGroups List<WorkflowConditionGroup>
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    ContinueOnStepError bool
    Whether to continue executing the workflow if a step fails
    Expressions List<WorkflowExpression>
    The expressions to be prepared for use by steps and conditions
    OnceFors List<string>
    This workflow will run 'once for' a list of references
    RunsOnIncidentModes List<string>
    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.
    RunsOnIncidents string
    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<WorkflowStep>
    Steps that are executed as part of the workflow
    Trigger string
    Unique name of the trigger
    AutoRunMode string
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on create. If omitted on update, the workflow keeps its current mode. Possible values are: runAutomatically, confirmBeforeRunning.
    Delay WorkflowDelay
    Configuration controlling workflow delay behaviour
    Folder string
    Folder to display the workflow in
    FormFields List<WorkflowFormField>
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    IncludePrivateEscalations bool
    Whether to include private escalations
    IncludePrivateIncidents bool
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    Name string
    Name provided by the user when creating the workflow
    OwningTeamIds List<string>
    IDs of the teams that own this workflow
    PrivateIncidentScope string
    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)
    UnlockInDashboard bool
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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.
    ConditionGroups []WorkflowConditionGroupArgs
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    ContinueOnStepError bool
    Whether to continue executing the workflow if a step fails
    Expressions []WorkflowExpressionArgs
    The expressions to be prepared for use by steps and conditions
    OnceFors []string
    This workflow will run 'once for' a list of references
    RunsOnIncidentModes []string
    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.
    RunsOnIncidents string
    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 []WorkflowStepArgs
    Steps that are executed as part of the workflow
    Trigger string
    Unique name of the trigger
    AutoRunMode string
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on create. If omitted on update, the workflow keeps its current mode. Possible values are: runAutomatically, confirmBeforeRunning.
    Delay WorkflowDelayArgs
    Configuration controlling workflow delay behaviour
    Folder string
    Folder to display the workflow in
    FormFields []WorkflowFormFieldArgs
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    IncludePrivateEscalations bool
    Whether to include private escalations
    IncludePrivateIncidents bool
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    Name string
    Name provided by the user when creating the workflow
    OwningTeamIds []string
    IDs of the teams that own this workflow
    PrivateIncidentScope string
    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)
    UnlockInDashboard bool
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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_step_error bool
    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_incident_modes list(string)
    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_incidents string
    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_mode string
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on 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 autoRunMode of confirmBeforeRunning.
    include_private_escalations bool
    Whether to include private escalations
    include_private_incidents bool
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    name string
    Name provided by the user when creating the workflow
    owning_team_ids list(string)
    IDs of the teams that own this workflow
    private_incident_scope string
    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_dashboard bool
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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.
    conditionGroups List<WorkflowConditionGroup>
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    continueOnStepError Boolean
    Whether to continue executing the workflow if a step fails
    expressions List<WorkflowExpression>
    The expressions to be prepared for use by steps and conditions
    onceFors List<String>
    This workflow will run 'once for' a list of references
    runsOnIncidentModes List<String>
    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.
    runsOnIncidents String
    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<WorkflowStep>
    Steps that are executed as part of the workflow
    trigger String
    Unique name of the trigger
    autoRunMode String
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on create. If omitted on update, the workflow keeps its current mode. Possible values are: runAutomatically, confirmBeforeRunning.
    delay WorkflowDelay
    Configuration controlling workflow delay behaviour
    folder String
    Folder to display the workflow in
    formFields List<WorkflowFormField>
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    includePrivateEscalations Boolean
    Whether to include private escalations
    includePrivateIncidents Boolean
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    name String
    Name provided by the user when creating the workflow
    owningTeamIds List<String>
    IDs of the teams that own this workflow
    privateIncidentScope String
    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)
    unlockInDashboard Boolean
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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.
    conditionGroups WorkflowConditionGroup[]
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    continueOnStepError boolean
    Whether to continue executing the workflow if a step fails
    expressions WorkflowExpression[]
    The expressions to be prepared for use by steps and conditions
    onceFors string[]
    This workflow will run 'once for' a list of references
    runsOnIncidentModes string[]
    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.
    runsOnIncidents string
    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 WorkflowStep[]
    Steps that are executed as part of the workflow
    trigger string
    Unique name of the trigger
    autoRunMode string
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on create. If omitted on update, the workflow keeps its current mode. Possible values are: runAutomatically, confirmBeforeRunning.
    delay WorkflowDelay
    Configuration controlling workflow delay behaviour
    folder string
    Folder to display the workflow in
    formFields WorkflowFormField[]
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    includePrivateEscalations boolean
    Whether to include private escalations
    includePrivateIncidents boolean
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    name string
    Name provided by the user when creating the workflow
    owningTeamIds string[]
    IDs of the teams that own this workflow
    privateIncidentScope string
    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)
    unlockInDashboard boolean
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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[WorkflowConditionGroupArgs]
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    continue_on_step_error bool
    Whether to continue executing the workflow if a step fails
    expressions Sequence[WorkflowExpressionArgs]
    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_incident_modes Sequence[str]
    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_incidents str
    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[WorkflowStepArgs]
    Steps that are executed as part of the workflow
    trigger str
    Unique name of the trigger
    auto_run_mode str
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on create. If omitted on update, the workflow keeps its current mode. Possible values are: runAutomatically, confirmBeforeRunning.
    delay WorkflowDelayArgs
    Configuration controlling workflow delay behaviour
    folder str
    Folder to display the workflow in
    form_fields Sequence[WorkflowFormFieldArgs]
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    include_private_escalations bool
    Whether to include private escalations
    include_private_incidents bool
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    name str
    Name provided by the user when creating the workflow
    owning_team_ids Sequence[str]
    IDs of the teams that own this workflow
    private_incident_scope str
    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_dashboard bool
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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.
    conditionGroups List<Property Map>
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    continueOnStepError Boolean
    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
    onceFors List<String>
    This workflow will run 'once for' a list of references
    runsOnIncidentModes List<String>
    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.
    runsOnIncidents String
    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
    autoRunMode String
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on 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
    formFields List<Property Map>
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    includePrivateEscalations Boolean
    Whether to include private escalations
    includePrivateIncidents Boolean
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    name String
    Name provided by the user when creating the workflow
    owningTeamIds List<String>
    IDs of the teams that own this workflow
    privateIncidentScope String
    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)
    unlockInDashboard Boolean
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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) -> Workflow
    func 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.
    The following state arguments are supported:
    AutoRunMode string
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on create. If omitted on update, the workflow keeps its current mode. Possible values are: runAutomatically, confirmBeforeRunning.
    ConditionGroups List<WorkflowConditionGroup>
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    ContinueOnStepError bool
    Whether to continue executing the workflow if a step fails
    Delay WorkflowDelay
    Configuration controlling workflow delay behaviour
    Expressions List<WorkflowExpression>
    The expressions to be prepared for use by steps and conditions
    Folder string
    Folder to display the workflow in
    FormFields List<WorkflowFormField>
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    IncludePrivateEscalations bool
    Whether to include private escalations
    IncludePrivateIncidents bool
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    Name string
    Name provided by the user when creating the workflow
    OnceFors List<string>
    This workflow will run 'once for' a list of references
    OwningTeamIds List<string>
    IDs of the teams that own this workflow
    PrivateIncidentScope string
    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.
    RunsOnIncidentModes List<string>
    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.
    RunsOnIncidents string
    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<WorkflowStep>
    Steps that are executed as part of the workflow
    Trigger string
    Unique name of the trigger
    UnlockInDashboard bool
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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.
    AutoRunMode string
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on create. If omitted on update, the workflow keeps its current mode. Possible values are: runAutomatically, confirmBeforeRunning.
    ConditionGroups []WorkflowConditionGroupArgs
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    ContinueOnStepError bool
    Whether to continue executing the workflow if a step fails
    Delay WorkflowDelayArgs
    Configuration controlling workflow delay behaviour
    Expressions []WorkflowExpressionArgs
    The expressions to be prepared for use by steps and conditions
    Folder string
    Folder to display the workflow in
    FormFields []WorkflowFormFieldArgs
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    IncludePrivateEscalations bool
    Whether to include private escalations
    IncludePrivateIncidents bool
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    Name string
    Name provided by the user when creating the workflow
    OnceFors []string
    This workflow will run 'once for' a list of references
    OwningTeamIds []string
    IDs of the teams that own this workflow
    PrivateIncidentScope string
    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.
    RunsOnIncidentModes []string
    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.
    RunsOnIncidents string
    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 []WorkflowStepArgs
    Steps that are executed as part of the workflow
    Trigger string
    Unique name of the trigger
    UnlockInDashboard bool
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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_mode string
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on 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_step_error bool
    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 autoRunMode of confirmBeforeRunning.
    include_private_escalations bool
    Whether to include private escalations
    include_private_incidents bool
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    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_ids list(string)
    IDs of the teams that own this workflow
    private_incident_scope string
    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_incident_modes list(string)
    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_incidents string
    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_dashboard bool
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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.
    autoRunMode String
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on create. If omitted on update, the workflow keeps its current mode. Possible values are: runAutomatically, confirmBeforeRunning.
    conditionGroups List<WorkflowConditionGroup>
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    continueOnStepError Boolean
    Whether to continue executing the workflow if a step fails
    delay WorkflowDelay
    Configuration controlling workflow delay behaviour
    expressions List<WorkflowExpression>
    The expressions to be prepared for use by steps and conditions
    folder String
    Folder to display the workflow in
    formFields List<WorkflowFormField>
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    includePrivateEscalations Boolean
    Whether to include private escalations
    includePrivateIncidents Boolean
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    name String
    Name provided by the user when creating the workflow
    onceFors List<String>
    This workflow will run 'once for' a list of references
    owningTeamIds List<String>
    IDs of the teams that own this workflow
    privateIncidentScope String
    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.
    runsOnIncidentModes List<String>
    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.
    runsOnIncidents String
    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<WorkflowStep>
    Steps that are executed as part of the workflow
    trigger String
    Unique name of the trigger
    unlockInDashboard Boolean
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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.
    autoRunMode string
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on create. If omitted on update, the workflow keeps its current mode. Possible values are: runAutomatically, confirmBeforeRunning.
    conditionGroups WorkflowConditionGroup[]
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    continueOnStepError boolean
    Whether to continue executing the workflow if a step fails
    delay WorkflowDelay
    Configuration controlling workflow delay behaviour
    expressions WorkflowExpression[]
    The expressions to be prepared for use by steps and conditions
    folder string
    Folder to display the workflow in
    formFields WorkflowFormField[]
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    includePrivateEscalations boolean
    Whether to include private escalations
    includePrivateIncidents boolean
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    name string
    Name provided by the user when creating the workflow
    onceFors string[]
    This workflow will run 'once for' a list of references
    owningTeamIds string[]
    IDs of the teams that own this workflow
    privateIncidentScope string
    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.
    runsOnIncidentModes string[]
    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.
    runsOnIncidents string
    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 WorkflowStep[]
    Steps that are executed as part of the workflow
    trigger string
    Unique name of the trigger
    unlockInDashboard boolean
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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_mode str
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on create. If omitted on update, the workflow keeps its current mode. Possible values are: runAutomatically, confirmBeforeRunning.
    condition_groups Sequence[WorkflowConditionGroupArgs]
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    continue_on_step_error bool
    Whether to continue executing the workflow if a step fails
    delay WorkflowDelayArgs
    Configuration controlling workflow delay behaviour
    expressions Sequence[WorkflowExpressionArgs]
    The expressions to be prepared for use by steps and conditions
    folder str
    Folder to display the workflow in
    form_fields Sequence[WorkflowFormFieldArgs]
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    include_private_escalations bool
    Whether to include private escalations
    include_private_incidents bool
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    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_ids Sequence[str]
    IDs of the teams that own this workflow
    private_incident_scope str
    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_incident_modes Sequence[str]
    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_incidents str
    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[WorkflowStepArgs]
    Steps that are executed as part of the workflow
    trigger str
    Unique name of the trigger
    unlock_in_dashboard bool
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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.
    autoRunMode String
    Whether the workflow runs immediately, or asks for confirmation in the incident channel first. Defaults to runAutomatically on create. If omitted on update, the workflow keeps its current mode. Possible values are: runAutomatically, confirmBeforeRunning.
    conditionGroups List<Property Map>
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    continueOnStepError Boolean
    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
    formFields List<Property Map>
    User-configured form fields available in the workflow scope. Allowed on manually-triggered workflows, and on workflows with an autoRunMode of confirmBeforeRunning.
    includePrivateEscalations Boolean
    Whether to include private escalations
    includePrivateIncidents Boolean
    DEPRECATED: use privateIncidentScope instead. true when the workflow runs on private incidents (a privateIncidentScope of all or owningTeams), false when the scope is none.

    Deprecated: Use privateIncidentScope instead. When both are set they must agree (include_private_incidents is true for the all and owningTeams scopes, false for none).

    name String
    Name provided by the user when creating the workflow
    onceFors List<String>
    This workflow will run 'once for' a list of references
    owningTeamIds List<String>
    IDs of the teams that own this workflow
    privateIncidentScope String
    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.
    runsOnIncidentModes List<String>
    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.
    runsOnIncidents String
    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
    unlockInDashboard Boolean
    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 to true to leave the resource unclaimed — pair that with lifecycle { 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<WorkflowConditionGroupCondition>
    The prerequisite conditions that must all be satisfied
    Conditions []WorkflowConditionGroupCondition
    The prerequisite conditions that must all be satisfied
    conditions list(object)
    The prerequisite conditions that must all be satisfied
    conditions List<WorkflowConditionGroupCondition>
    The prerequisite conditions that must all be satisfied
    conditions WorkflowConditionGroupCondition[]
    The prerequisite conditions that must all be satisfied
    conditions Sequence[WorkflowConditionGroupCondition]
    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
    ParamBindings List<WorkflowConditionGroupConditionParamBinding>
    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
    ParamBindings []WorkflowConditionGroupConditionParamBinding
    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
    paramBindings List<WorkflowConditionGroupConditionParamBinding>
    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
    paramBindings WorkflowConditionGroupConditionParamBinding[]
    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[WorkflowConditionGroupConditionParamBinding]
    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
    paramBindings List<Property Map>
    Bindings for the operation parameters
    subject String
    The subject of the condition, on which the operation is applied

    WorkflowConditionGroupConditionParamBinding, WorkflowConditionGroupConditionParamBindingArgs

    ArrayValues List<WorkflowConditionGroupConditionParamBindingArrayValue>
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values List<string>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    ArrayValues []WorkflowConditionGroupConditionParamBindingArrayValue
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values []string
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<WorkflowConditionGroupConditionParamBindingArrayValue>
    The array of literal or reference parameter values
    expressionRef String
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues WorkflowConditionGroupConditionParamBindingArrayValue[]
    The array of literal or reference parameter values
    expressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    valueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    values string[]
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    array_values Sequence[WorkflowConditionGroupConditionParamBindingArrayValue]
    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 WorkflowConditionGroupConditionParamBindingValue
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<Property Map>
    The array of literal or reference parameter values
    expressionRef 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
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.

    WorkflowConditionGroupConditionParamBindingArrayValue, WorkflowConditionGroupConditionParamBindingArrayValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    WorkflowConditionGroupConditionParamBindingValue, WorkflowConditionGroupConditionParamBindingValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    WorkflowDelay, WorkflowDelayArgs

    ConditionsApplyOverDelay bool
    If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
    ForSeconds int
    Delay in seconds between trigger firing and running the workflow
    ConditionsApplyOverDelay bool
    If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
    ForSeconds int
    Delay in seconds between trigger firing and running the workflow
    conditions_apply_over_delay bool
    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
    conditionsApplyOverDelay Boolean
    If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
    forSeconds Integer
    Delay in seconds between trigger firing and running the workflow
    conditionsApplyOverDelay boolean
    If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
    forSeconds number
    Delay in seconds between trigger firing and running the workflow
    conditions_apply_over_delay bool
    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
    conditionsApplyOverDelay Boolean
    If this workflow is delayed, whether the conditions should be rechecked between trigger firing and execution
    forSeconds Number
    Delay in seconds between trigger firing and running the workflow

    WorkflowExpression, WorkflowExpressionArgs

    Label string
    The human readable label of the expression
    Operations List<WorkflowExpressionOperation>
    The operations to execute in sequence for this expression
    Reference string
    A short ID that can be used to reference the expression
    RootReference string
    The root reference for this expression (i.e. where the expression starts)
    ElseBranch WorkflowExpressionElseBranch
    The else branch to resort to if all operations fail
    Label string
    The human readable label of the expression
    Operations []WorkflowExpressionOperation
    The operations to execute in sequence for this expression
    Reference string
    A short ID that can be used to reference the expression
    RootReference string
    The root reference for this expression (i.e. where the expression starts)
    ElseBranch WorkflowExpressionElseBranch
    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<WorkflowExpressionOperation>
    The operations to execute in sequence for this expression
    reference String
    A short ID that can be used to reference the expression
    rootReference String
    The root reference for this expression (i.e. where the expression starts)
    elseBranch WorkflowExpressionElseBranch
    The else branch to resort to if all operations fail
    label string
    The human readable label of the expression
    operations WorkflowExpressionOperation[]
    The operations to execute in sequence for this expression
    reference string
    A short ID that can be used to reference the expression
    rootReference string
    The root reference for this expression (i.e. where the expression starts)
    elseBranch WorkflowExpressionElseBranch
    The else branch to resort to if all operations fail
    label str
    The human readable label of the expression
    operations Sequence[WorkflowExpressionOperation]
    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 WorkflowExpressionElseBranch
    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
    rootReference String
    The root reference for this expression (i.e. where the expression starts)
    elseBranch Property Map
    The else branch to resort to if all operations fail

    WorkflowExpressionElseBranch, WorkflowExpressionElseBranchArgs

    Result WorkflowExpressionElseBranchResult
    The result assumed if the else branch is reached
    Result WorkflowExpressionElseBranchResult
    The result assumed if the else branch is reached
    result object
    The result assumed if the else branch is reached
    result WorkflowExpressionElseBranchResult
    The result assumed if the else branch is reached
    result WorkflowExpressionElseBranchResult
    The result assumed if the else branch is reached
    result WorkflowExpressionElseBranchResult
    The result assumed if the else branch is reached
    result Property Map
    The result assumed if the else branch is reached

    WorkflowExpressionElseBranchResult, WorkflowExpressionElseBranchResultArgs

    ArrayValues List<WorkflowExpressionElseBranchResultArrayValue>
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowExpressionElseBranchResultValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values List<string>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    ArrayValues []WorkflowExpressionElseBranchResultArrayValue
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowExpressionElseBranchResultValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values []string
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<WorkflowExpressionElseBranchResultArrayValue>
    The array of literal or reference parameter values
    expressionRef String
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowExpressionElseBranchResultValue
    The literal or reference parameter value
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues WorkflowExpressionElseBranchResultArrayValue[]
    The array of literal or reference parameter values
    expressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowExpressionElseBranchResultValue
    The literal or reference parameter value
    valueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    values string[]
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    array_values Sequence[WorkflowExpressionElseBranchResultArrayValue]
    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 WorkflowExpressionElseBranchResultValue
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<Property Map>
    The array of literal or reference parameter values
    expressionRef 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
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.

    WorkflowExpressionElseBranchResultArrayValue, WorkflowExpressionElseBranchResultArrayValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    WorkflowExpressionElseBranchResultValue, WorkflowExpressionElseBranchResultValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    WorkflowExpressionOperation, WorkflowExpressionOperationArgs

    OperationType string
    Indicates which operation type to execute. Possible values are: navigate, filter, concatenate, count, min, max, sum, random, first, parse, branches, cast.
    Branches WorkflowExpressionOperationBranches
    An operation type that allows for a value to be set conditionally by a series of logical branches
    Cast WorkflowExpressionOperationCast
    An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned array follows the value being cast, so it must match the cardinality of the previous operation
    Concatenate WorkflowExpressionOperationConcatenate
    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 WorkflowExpressionOperationFilter
    An operation type that allows values to be filtered out by conditions
    Navigate WorkflowExpressionOperationNavigate
    An operation type that allows attributes of a type to be accessed by reference
    Parse WorkflowExpressionOperationParse
    An operation type that allows a value to parsed from within a JSON object
    OperationType string
    Indicates which operation type to execute. Possible values are: navigate, filter, concatenate, count, min, max, sum, random, first, parse, branches, cast.
    Branches WorkflowExpressionOperationBranches
    An operation type that allows for a value to be set conditionally by a series of logical branches
    Cast WorkflowExpressionOperationCast
    An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned array follows the value being cast, so it must match the cardinality of the previous operation
    Concatenate WorkflowExpressionOperationConcatenate
    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 WorkflowExpressionOperationFilter
    An operation type that allows values to be filtered out by conditions
    Navigate WorkflowExpressionOperationNavigate
    An operation type that allows attributes of a type to be accessed by reference
    Parse WorkflowExpressionOperationParse
    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 array follows 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
    navigate 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
    operationType String
    Indicates which operation type to execute. Possible values are: navigate, filter, concatenate, count, min, max, sum, random, first, parse, branches, cast.
    branches WorkflowExpressionOperationBranches
    An operation type that allows for a value to be set conditionally by a series of logical branches
    cast WorkflowExpressionOperationCast
    An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned array follows the value being cast, so it must match the cardinality of the previous operation
    concatenate WorkflowExpressionOperationConcatenate
    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 WorkflowExpressionOperationFilter
    An operation type that allows values to be filtered out by conditions
    navigate WorkflowExpressionOperationNavigate
    An operation type that allows attributes of a type to be accessed by reference
    parse WorkflowExpressionOperationParse
    An operation type that allows a value to parsed from within a JSON object
    operationType string
    Indicates which operation type to execute. Possible values are: navigate, filter, concatenate, count, min, max, sum, random, first, parse, branches, cast.
    branches WorkflowExpressionOperationBranches
    An operation type that allows for a value to be set conditionally by a series of logical branches
    cast WorkflowExpressionOperationCast
    An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned array follows the value being cast, so it must match the cardinality of the previous operation
    concatenate WorkflowExpressionOperationConcatenate
    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 WorkflowExpressionOperationFilter
    An operation type that allows values to be filtered out by conditions
    navigate WorkflowExpressionOperationNavigate
    An operation type that allows attributes of a type to be accessed by reference
    parse WorkflowExpressionOperationParse
    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 WorkflowExpressionOperationBranches
    An operation type that allows for a value to be set conditionally by a series of logical branches
    cast WorkflowExpressionOperationCast
    An operation type that converts a value into another type. Only valid on values that can be represented as text. The returned array follows the value being cast, so it must match the cardinality of the previous operation
    concatenate WorkflowExpressionOperationConcatenate
    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 WorkflowExpressionOperationFilter
    An operation type that allows values to be filtered out by conditions
    navigate WorkflowExpressionOperationNavigate
    An operation type that allows attributes of a type to be accessed by reference
    parse WorkflowExpressionOperationParse
    An operation type that allows a value to parsed from within a JSON object
    operationType 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 array follows 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
    navigate 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<WorkflowExpressionOperationBranchesBranch>
    The branches to apply for this operation
    Returns WorkflowExpressionOperationBranchesReturns
    The return type of an operation
    Branches []WorkflowExpressionOperationBranchesBranch
    The branches to apply for this operation
    Returns WorkflowExpressionOperationBranchesReturns
    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<WorkflowExpressionOperationBranchesBranch>
    The branches to apply for this operation
    returns WorkflowExpressionOperationBranchesReturns
    The return type of an operation
    branches WorkflowExpressionOperationBranchesBranch[]
    The branches to apply for this operation
    returns WorkflowExpressionOperationBranchesReturns
    The return type of an operation
    branches Sequence[WorkflowExpressionOperationBranchesBranch]
    The branches to apply for this operation
    returns WorkflowExpressionOperationBranchesReturns
    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

    ConditionGroups List<WorkflowExpressionOperationBranchesBranchConditionGroup>
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    Result WorkflowExpressionOperationBranchesBranchResult
    The result assumed if the condition groups are satisfied
    ConditionGroups []WorkflowExpressionOperationBranchesBranchConditionGroup
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    Result WorkflowExpressionOperationBranchesBranchResult
    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
    conditionGroups List<WorkflowExpressionOperationBranchesBranchConditionGroup>
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    result WorkflowExpressionOperationBranchesBranchResult
    The result assumed if the condition groups are satisfied
    conditionGroups WorkflowExpressionOperationBranchesBranchConditionGroup[]
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    result WorkflowExpressionOperationBranchesBranchResult
    The result assumed if the condition groups are satisfied
    condition_groups Sequence[WorkflowExpressionOperationBranchesBranchConditionGroup]
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    result WorkflowExpressionOperationBranchesBranchResult
    The result assumed if the condition groups are satisfied
    conditionGroups 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<WorkflowExpressionOperationBranchesBranchConditionGroupCondition>
    The prerequisite conditions that must all be satisfied
    Conditions []WorkflowExpressionOperationBranchesBranchConditionGroupCondition
    The prerequisite conditions that must all be satisfied
    conditions list(object)
    The prerequisite conditions that must all be satisfied
    conditions List<WorkflowExpressionOperationBranchesBranchConditionGroupCondition>
    The prerequisite conditions that must all be satisfied
    conditions WorkflowExpressionOperationBranchesBranchConditionGroupCondition[]
    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
    ParamBindings List<WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBinding>
    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
    ParamBindings []WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBinding
    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
    paramBindings List<WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBinding>
    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
    paramBindings WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBinding[]
    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[WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBinding]
    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
    paramBindings List<Property Map>
    Bindings for the operation parameters
    subject String
    The subject of the condition, on which the operation is applied

    WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBinding, WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArgs

    ArrayValues List<WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValue>
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values List<string>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    ArrayValues []WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValue
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values []string
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValue>
    The array of literal or reference parameter values
    expressionRef String
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValue[]
    The array of literal or reference parameter values
    expressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    valueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    values string[]
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    array_values Sequence[WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValue]
    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 WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValue
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<Property Map>
    The array of literal or reference parameter values
    expressionRef 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
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.

    WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValue, WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingArrayValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValue, WorkflowExpressionOperationBranchesBranchConditionGroupConditionParamBindingValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    WorkflowExpressionOperationBranchesBranchResult, WorkflowExpressionOperationBranchesBranchResultArgs

    ArrayValues List<WorkflowExpressionOperationBranchesBranchResultArrayValue>
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowExpressionOperationBranchesBranchResultValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values List<string>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    ArrayValues []WorkflowExpressionOperationBranchesBranchResultArrayValue
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowExpressionOperationBranchesBranchResultValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values []string
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<WorkflowExpressionOperationBranchesBranchResultArrayValue>
    The array of literal or reference parameter values
    expressionRef String
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowExpressionOperationBranchesBranchResultValue
    The literal or reference parameter value
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues WorkflowExpressionOperationBranchesBranchResultArrayValue[]
    The array of literal or reference parameter values
    expressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowExpressionOperationBranchesBranchResultValue
    The literal or reference parameter value
    valueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    values string[]
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    array_values Sequence[WorkflowExpressionOperationBranchesBranchResultArrayValue]
    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 WorkflowExpressionOperationBranchesBranchResultValue
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<Property Map>
    The array of literal or reference parameter values
    expressionRef 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
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.

    WorkflowExpressionOperationBranchesBranchResultArrayValue, WorkflowExpressionOperationBranchesBranchResultArrayValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    WorkflowExpressionOperationBranchesBranchResultValue, WorkflowExpressionOperationBranchesBranchResultValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    WorkflowExpressionOperationBranchesReturns, WorkflowExpressionOperationBranchesReturnsArgs

    Array bool
    Whether the return value should be single or multi-value
    Type string
    Expected return type of this expression (what to try casting the result to)
    Array bool
    Whether the return value should be single or multi-value
    Type string
    Expected return type of this expression (what to try casting the result to)
    array bool
    Whether the return value should be single or multi-value
    type string
    Expected return type of this expression (what to try casting the result to)
    array Boolean
    Whether the return value should be single or multi-value
    type String
    Expected return type of this expression (what to try casting the result to)
    array boolean
    Whether the return value should be single or multi-value
    type string
    Expected return type of this expression (what to try casting the result to)
    array bool
    Whether the return value should be single or multi-value
    type str
    Expected return type of this expression (what to try casting the result to)
    array Boolean
    Whether the return value should be single or multi-value
    type String
    Expected return type of this expression (what to try casting the result to)

    WorkflowExpressionOperationCast, WorkflowExpressionOperationCastArgs

    Returns WorkflowExpressionOperationCastReturns
    The return type of an operation
    Returns WorkflowExpressionOperationCastReturns
    The return type of an operation
    returns object
    The return type of an operation
    returns WorkflowExpressionOperationCastReturns
    The return type of an operation
    returns WorkflowExpressionOperationCastReturns
    The return type of an operation
    returns WorkflowExpressionOperationCastReturns
    The return type of an operation
    returns Property Map
    The return type of an operation

    WorkflowExpressionOperationCastReturns, WorkflowExpressionOperationCastReturnsArgs

    Array bool
    Whether the return value should be single or multi-value
    Type string
    Expected return type of this expression (what to try casting the result to)
    Array bool
    Whether the return value should be single or multi-value
    Type string
    Expected return type of this expression (what to try casting the result to)
    array bool
    Whether the return value should be single or multi-value
    type string
    Expected return type of this expression (what to try casting the result to)
    array Boolean
    Whether the return value should be single or multi-value
    type String
    Expected return type of this expression (what to try casting the result to)
    array boolean
    Whether the return value should be single or multi-value
    type string
    Expected return type of this expression (what to try casting the result to)
    array bool
    Whether the return value should be single or multi-value
    type str
    Expected return type of this expression (what to try casting the result to)
    array Boolean
    Whether the return value should be single or multi-value
    type String
    Expected return type of this expression (what to try casting the result to)

    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

    ConditionGroups List<WorkflowExpressionOperationFilterConditionGroup>
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    ConditionGroups []WorkflowExpressionOperationFilterConditionGroup
    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
    conditionGroups List<WorkflowExpressionOperationFilterConditionGroup>
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    conditionGroups WorkflowExpressionOperationFilterConditionGroup[]
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    condition_groups Sequence[WorkflowExpressionOperationFilterConditionGroup]
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied
    conditionGroups List<Property Map>
    Groups of prerequisite conditions. All conditions in at least one group must be satisfied

    WorkflowExpressionOperationFilterConditionGroup, WorkflowExpressionOperationFilterConditionGroupArgs

    Conditions List<WorkflowExpressionOperationFilterConditionGroupCondition>
    The prerequisite conditions that must all be satisfied
    Conditions []WorkflowExpressionOperationFilterConditionGroupCondition
    The prerequisite conditions that must all be satisfied
    conditions list(object)
    The prerequisite conditions that must all be satisfied
    conditions List<WorkflowExpressionOperationFilterConditionGroupCondition>
    The prerequisite conditions that must all be satisfied
    conditions WorkflowExpressionOperationFilterConditionGroupCondition[]
    The prerequisite conditions that must all be satisfied
    conditions Sequence[WorkflowExpressionOperationFilterConditionGroupCondition]
    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
    ParamBindings List<WorkflowExpressionOperationFilterConditionGroupConditionParamBinding>
    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
    ParamBindings []WorkflowExpressionOperationFilterConditionGroupConditionParamBinding
    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
    paramBindings List<WorkflowExpressionOperationFilterConditionGroupConditionParamBinding>
    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
    paramBindings WorkflowExpressionOperationFilterConditionGroupConditionParamBinding[]
    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[WorkflowExpressionOperationFilterConditionGroupConditionParamBinding]
    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
    paramBindings List<Property Map>
    Bindings for the operation parameters
    subject String
    The subject of the condition, on which the operation is applied

    WorkflowExpressionOperationFilterConditionGroupConditionParamBinding, WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArgs

    ArrayValues List<WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValue>
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values List<string>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    ArrayValues []WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValue
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values []string
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValue>
    The array of literal or reference parameter values
    expressionRef String
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValue[]
    The array of literal or reference parameter values
    expressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValue
    The literal or reference parameter value
    valueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    values string[]
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    array_values Sequence[WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValue]
    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 WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValue
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<Property Map>
    The array of literal or reference parameter values
    expressionRef 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
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.

    WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValue, WorkflowExpressionOperationFilterConditionGroupConditionParamBindingArrayValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValue, WorkflowExpressionOperationFilterConditionGroupConditionParamBindingValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    WorkflowExpressionOperationNavigate, WorkflowExpressionOperationNavigateArgs

    Reference string
    Reference string
    reference string
    reference String
    reference string
    reference String

    WorkflowExpressionOperationParse, WorkflowExpressionOperationParseArgs

    Returns WorkflowExpressionOperationParseReturns
    The return type of an operation
    Source string
    The ES5 Javascript expression to execute
    Returns WorkflowExpressionOperationParseReturns
    The return type of an operation
    Source string
    The ES5 Javascript expression to execute
    returns object
    The return type of an operation
    source string
    The ES5 Javascript expression to execute
    returns WorkflowExpressionOperationParseReturns
    The return type of an operation
    source String
    The ES5 Javascript expression to execute
    returns WorkflowExpressionOperationParseReturns
    The return type of an operation
    source string
    The ES5 Javascript expression to execute
    returns WorkflowExpressionOperationParseReturns
    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

    Array bool
    Whether the return value should be single or multi-value
    Type string
    Expected return type of this expression (what to try casting the result to)
    Array bool
    Whether the return value should be single or multi-value
    Type string
    Expected return type of this expression (what to try casting the result to)
    array bool
    Whether the return value should be single or multi-value
    type string
    Expected return type of this expression (what to try casting the result to)
    array Boolean
    Whether the return value should be single or multi-value
    type String
    Expected return type of this expression (what to try casting the result to)
    array boolean
    Whether the return value should be single or multi-value
    type string
    Expected return type of this expression (what to try casting the result to)
    array bool
    Whether the return value should be single or multi-value
    type str
    Expected return type of this expression (what to try casting the result to)
    array Boolean
    Whether the return value should be single or multi-value
    type String
    Expected return type of this expression (what to try casting the result to)

    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
    ParamBindings List<WorkflowStepParamBinding>
    Bindings for the operation parameters
    ForEach string
    Id string
    Name string
    ParamBindings []WorkflowStepParamBinding
    Bindings for the operation parameters
    ForEach string
    id string
    name string
    param_bindings list(object)
    Bindings for the operation parameters
    for_each string
    id String
    name String
    paramBindings List<WorkflowStepParamBinding>
    Bindings for the operation parameters
    forEach String
    id string
    name string
    paramBindings WorkflowStepParamBinding[]
    Bindings for the operation parameters
    forEach string
    id str
    name str
    param_bindings Sequence[WorkflowStepParamBinding]
    Bindings for the operation parameters
    for_each str
    id String
    name String
    paramBindings List<Property Map>
    Bindings for the operation parameters
    forEach String

    WorkflowStepParamBinding, WorkflowStepParamBindingArgs

    ArrayValues List<WorkflowStepParamBindingArrayValue>
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowStepParamBindingValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values List<string>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    ArrayValues []WorkflowStepParamBindingArrayValue
    The array of literal or reference parameter values
    ExpressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    Value WorkflowStepParamBindingValue
    The literal or reference parameter value
    ValueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    ValueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    Values []string
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<WorkflowStepParamBindingArrayValue>
    The array of literal or reference parameter values
    expressionRef String
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowStepParamBindingValue
    The literal or reference parameter value
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues WorkflowStepParamBindingArrayValue[]
    The array of literal or reference parameter values
    expressionRef string
    The name of an expression on this resource, whose result becomes the value. Shorthand for referencing expressions["name"].
    value WorkflowStepParamBindingValue
    The literal or reference parameter value
    valueLiteral string
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference string
    A reference into the scope, shorthand for value = { reference = ... }.
    values string[]
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.
    array_values Sequence[WorkflowStepParamBindingArrayValue]
    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 WorkflowStepParamBindingValue
    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 arrayValue of literals. For a mix of literals and references, use arrayValue.
    arrayValues List<Property Map>
    The array of literal or reference parameter values
    expressionRef 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
    valueLiteral String
    A fixed value, shorthand for value = { literal = ... }. A catalog entry ID is a literal, not a reference.
    valueReference String
    A reference into the scope, shorthand for value = { reference = ... }.
    values List<String>
    Several fixed values, shorthand for an arrayValue of literals. For a mix of literals and references, use arrayValue.

    WorkflowStepParamBindingArrayValue, WorkflowStepParamBindingArrayValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    WorkflowStepParamBindingValue, WorkflowStepParamBindingValueArgs

    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    Literal string
    If set, this is the literal value of the step parameter
    Reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal string
    If set, this is the literal value of the step parameter
    reference string
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal str
    If set, this is the literal value of the step parameter
    reference str
    If set, this is the reference into the trigger scope that is the value of this parameter
    literal String
    If set, this is the literal value of the step parameter
    reference String
    If set, this is the reference into the trigger scope that is the value of this parameter

    Package Details

    Repository
    incident incident-io/pulumi-incident
    License
    MIT
    Notes
    This Pulumi package is based on the incident Terraform Provider.
    incident logo incident.io
    Viewing docs for incident.io v0.4.1
    published on Wednesday, Oct 21, 2026 by incident-io

      Try Pulumi Cloud free.
      Your team will thank you.

      Start free trial