published on Friday, Sep 11, 2026 by incident-io
published on Friday, Sep 11, 2026 by incident-io
Manage incident statuses.
Each incident has a status, picked from one of the statuses configured in your organisations settings.
Statuses help communicate where an incident is in its lifecycle. You can use statuses when filtering incidents in the dashboard, and in workflows and announcement rules.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as incident from "@pulumi/incident";
// Statuses are ordered by rank within their category, lowest first. Give every status
// in a category a rank and the order is whatever the config says, rather than the order
// Terraform happened to create them in.
//
// Leaving gaps is worth doing: a status can then be slotted between two others without
// renumbering them.
const investigating = new incident.Status("investigating", {
name: "Investigating",
description: "We've spotted that something is wrong, but we're not sure why yet.",
category: "live",
rank: 10,
});
const cleanUp = new incident.Status("clean_up", {
name: "Clean-up",
description: "Not yet fully finished, but isn't a live incident anymore.",
category: "live",
rank: 20,
});
import pulumi
import pulumi_incident as incident
# Statuses are ordered by rank within their category, lowest first. Give every status
# in a category a rank and the order is whatever the config says, rather than the order
# Terraform happened to create them in.
#
# Leaving gaps is worth doing: a status can then be slotted between two others without
# renumbering them.
investigating = incident.Status("investigating",
name="Investigating",
description="We've spotted that something is wrong, but we're not sure why yet.",
category="live",
rank=10)
clean_up = incident.Status("clean_up",
name="Clean-up",
description="Not yet fully finished, but isn't a live incident anymore.",
category="live",
rank=20)
package main
import (
"github.com/pulumi/pulumi-terraform-provider/sdks/go/incident/v7/incident"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Statuses are ordered by rank within their category, lowest first. Give every status
// in a category a rank and the order is whatever the config says, rather than the order
// Terraform happened to create them in.
//
// Leaving gaps is worth doing: a status can then be slotted between two others without
// renumbering them.
_, err := incident.NewStatus(ctx, "investigating", &incident.StatusArgs{
Name: pulumi.String("Investigating"),
Description: pulumi.String("We've spotted that something is wrong, but we're not sure why yet."),
Category: pulumi.String("live"),
Rank: pulumi.Float64(10),
})
if err != nil {
return err
}
_, err = incident.NewStatus(ctx, "clean_up", &incident.StatusArgs{
Name: pulumi.String("Clean-up"),
Description: pulumi.String("Not yet fully finished, but isn't a live incident anymore."),
Category: pulumi.String("live"),
Rank: pulumi.Float64(20),
})
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 ordered by rank within their category, lowest first. Give every status
// in a category a rank and the order is whatever the config says, rather than the order
// Terraform happened to create them in.
//
// Leaving gaps is worth doing: a status can then be slotted between two others without
// renumbering them.
var investigating = new Incident.Status("investigating", new()
{
Name = "Investigating",
Description = "We've spotted that something is wrong, but we're not sure why yet.",
Category = "live",
Rank = 10,
});
var cleanUp = new Incident.Status("clean_up", new()
{
Name = "Clean-up",
Description = "Not yet fully finished, but isn't a live incident anymore.",
Category = "live",
Rank = 20,
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.incident.Status;
import com.pulumi.incident.StatusArgs;
import java.util.List;
import java.util.ArrayList;
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 ordered by rank within their category, lowest first. Give every status
// in a category a rank and the order is whatever the config says, rather than the order
// Terraform happened to create them in.
//
// Leaving gaps is worth doing: a status can then be slotted between two others without
// renumbering them.
var investigating = new Status("investigating", StatusArgs.builder()
.name("Investigating")
.description("We've spotted that something is wrong, but we're not sure why yet.")
.category("live")
.rank(10.0)
.build());
var cleanUp = new Status("cleanUp", StatusArgs.builder()
.name("Clean-up")
.description("Not yet fully finished, but isn't a live incident anymore.")
.category("live")
.rank(20.0)
.build());
}
}
resources:
# Statuses are ordered by rank within their category, lowest first. Give every status
# in a category a rank and the order is whatever the config says, rather than the order
# Terraform happened to create them in.
#
# Leaving gaps is worth doing: a status can then be slotted between two others without
# renumbering them.
investigating:
type: incident:Status
properties:
name: Investigating
description: We've spotted that something is wrong, but we're not sure why yet.
category: live
rank: 10
cleanUp:
type: incident:Status
name: clean_up
properties:
name: Clean-up
description: Not yet fully finished, but isn't a live incident anymore.
category: live
rank: 20
Example coming soon!
Create Status Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new Status(name: string, args: StatusArgs, opts?: CustomResourceOptions);@overload
def Status(resource_name: str,
args: StatusArgs,
opts: Optional[ResourceOptions] = None)
@overload
def Status(resource_name: str,
opts: Optional[ResourceOptions] = None,
category: Optional[str] = None,
description: Optional[str] = None,
name: Optional[str] = None,
rank: Optional[float] = None)func NewStatus(ctx *Context, name string, args StatusArgs, opts ...ResourceOption) (*Status, error)public Status(string name, StatusArgs args, CustomResourceOptions? opts = null)
public Status(String name, StatusArgs args)
public Status(String name, StatusArgs args, CustomResourceOptions options)
type: incident:Status
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
resource "incident_status" "name" {
# resource properties
}Parameters
- name string
- The unique name of the resource.
- args StatusArgs
- 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 StatusArgs
- 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 StatusArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args StatusArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args StatusArgs
- 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 statusResource = new Incident.Status("statusResource", new()
{
Category = "string",
Description = "string",
Name = "string",
Rank = 0.0,
});
example, err := incident.NewStatus(ctx, "statusResource", &incident.StatusArgs{
Category: pulumi.String("string"),
Description: pulumi.String("string"),
Name: pulumi.String("string"),
Rank: pulumi.Float64(0),
})
resource "incident_status" "statusResource" {
lifecycle {
create_before_destroy = true
}
category = "string"
description = "string"
name = "string"
rank = 0
}
var statusResource = new Status("statusResource", StatusArgs.builder()
.category("string")
.description("string")
.name("string")
.rank(0.0)
.build());
status_resource = incident.Status("statusResource",
category="string",
description="string",
name="string",
rank=float(0))
const statusResource = new incident.Status("statusResource", {
category: "string",
description: "string",
name: "string",
rank: 0,
});
type: incident:Status
properties:
category: string
description: string
name: string
rank: 0
Status 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 Status resource accepts the following input properties:
- Category string
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - Description string
- Rich text description of the incident status
- Name string
- Unique name of this status
- Rank double
- Category string
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - Description string
- Rich text description of the incident status
- Name string
- Unique name of this status
- Rank float64
- category string
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - description string
- Rich text description of the incident status
- name string
- Unique name of this status
- rank number
- category String
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - description String
- Rich text description of the incident status
- name String
- Unique name of this status
- rank Double
- category string
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - description string
- Rich text description of the incident status
- name string
- Unique name of this status
- rank number
- category str
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - description str
- Rich text description of the incident status
- name str
- Unique name of this status
- rank float
- category String
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - description String
- Rich text description of the incident status
- name String
- Unique name of this status
- rank Number
Outputs
All input properties are implicitly available as output properties. Additionally, the Status 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 Status Resource
Get an existing Status 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?: StatusState, opts?: CustomResourceOptions): Status@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
category: Optional[str] = None,
description: Optional[str] = None,
name: Optional[str] = None,
rank: Optional[float] = None) -> Statusfunc GetStatus(ctx *Context, name string, id IDInput, state *StatusState, opts ...ResourceOption) (*Status, error)public static Status Get(string name, Input<string> id, StatusState? state, CustomResourceOptions? opts = null)public static Status get(String name, Output<String> id, StatusState state, CustomResourceOptions options)resources: _: type: incident:Status get: id: ${id}import {
to = incident_status.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.
- Category string
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - Description string
- Rich text description of the incident status
- Name string
- Unique name of this status
- Rank double
- Category string
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - Description string
- Rich text description of the incident status
- Name string
- Unique name of this status
- Rank float64
- category string
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - description string
- Rich text description of the incident status
- name string
- Unique name of this status
- rank number
- category String
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - description String
- Rich text description of the incident status
- name String
- Unique name of this status
- rank Double
- category string
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - description string
- Rich text description of the incident status
- name string
- Unique name of this status
- rank number
- category str
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - description str
- Rich text description of the incident status
- name str
- Unique name of this status
- rank float
- category String
- What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured. Possible values are:
triage,declined,merged,canceled,live,learning,closed,paused. Changing it replaces the status, as a status can't move between categories. Setrankif you want the replacement to keep its place. - description String
- Rich text description of the incident status
- name String
- Unique name of this status
- rank Number
Import
Import is supported using an import block or the pulumi import command:
The import block can be used with the id attribute, for example:
terraform
Import a status using its ID
Replace the ID with a real ID from your incident.io organization
import {
to = incident_status.example
id = “01ABC123DEF456GHI789JKL”
}
The pulumi import command can be used, for example:
#!/bin/bash
Import a status using its ID
Replace the ID with a real ID from your incident.io organization
$ pulumi import incident:index/status:Status example 01ABC123DEF456GHI789JKL
To learn more about importing existing cloud resources, see Importing resources.
Package Details
- Repository
- incident incident-io/terraform-provider-incident
- License
- Notes
- This Pulumi package is based on the
incidentTerraform Provider.
published on Friday, Sep 11, 2026 by incident-io