published on Wednesday, Oct 21, 2026 by incident-io
published on Wednesday, Oct 21, 2026 by incident-io
Manages a status page component: something a status page reports the status of, such as a service or a region.
A component belongs to your organisation rather than to a page, and can appear on any number of status pages. Each page’s structure decides which pages show it, and where. This resource creates and maintains the component; placing it on a page is incident.StatusPageStructure’s job. Look a page up with the incident.getStatusPage data source.
The API key needs the “Configure status pages” permission. Deleting a component archives it. incident.io refuses to archive a component while a page’s structure still places it, or while an incident, maintenance window or subscription still refers to it. Remove it from those first.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as incident from "@incident-io/pulumi";
// A component is something a status page reports the status of. It belongs to your
// organisation rather than to a page. Each page's structure in the dashboard decides which
// pages show it, so creating one here doesn't put it on a page yet.
const api = new incident.StatusPageComponent("api", {
name: "API",
description: "The public REST API",
});
// The description is optional. Drop the attribute to clear one.
const dashboard = new incident.StatusPageComponent("dashboard", {name: "Dashboard"});
// Terraform claims what it manages, so a component can't be edited in the dashboard. Set
// unlock_in_dashboard to leave it editable there, and ignore the attributes people change.
const editedByHand = new incident.StatusPageComponent("edited_by_hand", {
name: "Email delivery",
unlockInDashboard: true,
}, {
ignoreChanges: ["description"],
});
import pulumi
import pulumi_incident as incident
# A component is something a status page reports the status of. It belongs to your
# organisation rather than to a page. Each page's structure in the dashboard decides which
# pages show it, so creating one here doesn't put it on a page yet.
api = incident.StatusPageComponent("api",
name="API",
description="The public REST API")
# The description is optional. Drop the attribute to clear one.
dashboard = incident.StatusPageComponent("dashboard", name="Dashboard")
# Terraform claims what it manages, so a component can't be edited in the dashboard. Set
# unlock_in_dashboard to leave it editable there, and ignore the attributes people change.
edited_by_hand = incident.StatusPageComponent("edited_by_hand",
name="Email delivery",
unlock_in_dashboard=True,
opts = pulumi.ResourceOptions(ignore_changes=["description"]))
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 component is something a status page reports the status of. It belongs to your
// organisation rather than to a page. Each page's structure in the dashboard decides which
// pages show it, so creating one here doesn't put it on a page yet.
_, err := incident.NewStatusPageComponent(ctx, "api", &incident.StatusPageComponentArgs{
Name: pulumi.String("API"),
Description: pulumi.String("The public REST API"),
})
if err != nil {
return err
}
// The description is optional. Drop the attribute to clear one.
_, err = incident.NewStatusPageComponent(ctx, "dashboard", &incident.StatusPageComponentArgs{
Name: pulumi.String("Dashboard"),
})
if err != nil {
return err
}
// Terraform claims what it manages, so a component can't be edited in the dashboard. Set
// unlock_in_dashboard to leave it editable there, and ignore the attributes people change.
_, err = incident.NewStatusPageComponent(ctx, "edited_by_hand", &incident.StatusPageComponentArgs{
Name: pulumi.String("Email delivery"),
UnlockInDashboard: pulumi.Bool(true),
}, pulumi.IgnoreChanges([]string{
"description",
}))
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 component is something a status page reports the status of. It belongs to your
// organisation rather than to a page. Each page's structure in the dashboard decides which
// pages show it, so creating one here doesn't put it on a page yet.
var api = new Incident.StatusPageComponent("api", new()
{
Name = "API",
Description = "The public REST API",
});
// The description is optional. Drop the attribute to clear one.
var dashboard = new Incident.StatusPageComponent("dashboard", new()
{
Name = "Dashboard",
});
// Terraform claims what it manages, so a component can't be edited in the dashboard. Set
// unlock_in_dashboard to leave it editable there, and ignore the attributes people change.
var editedByHand = new Incident.StatusPageComponent("edited_by_hand", new()
{
Name = "Email delivery",
UnlockInDashboard = true,
}, new CustomResourceOptions
{
IgnoreChanges =
{
"description",
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.incident.StatusPageComponent;
import com.pulumi.incident.StatusPageComponentArgs;
import com.pulumi.resources.CustomResourceOptions;
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 component is something a status page reports the status of. It belongs to your
// organisation rather than to a page. Each page's structure in the dashboard decides which
// pages show it, so creating one here doesn't put it on a page yet.
var api = new StatusPageComponent("api", StatusPageComponentArgs.builder()
.name("API")
.description("The public REST API")
.build());
// The description is optional. Drop the attribute to clear one.
var dashboard = new StatusPageComponent("dashboard", StatusPageComponentArgs.builder()
.name("Dashboard")
.build());
// Terraform claims what it manages, so a component can't be edited in the dashboard. Set
// unlock_in_dashboard to leave it editable there, and ignore the attributes people change.
var editedByHand = new StatusPageComponent("editedByHand", StatusPageComponentArgs.builder()
.name("Email delivery")
.unlockInDashboard(true)
.build(), CustomResourceOptions.builder()
.ignoreChanges("description")
.build());
}
}
resources:
# A component is something a status page reports the status of. It belongs to your
# organisation rather than to a page. Each page's structure in the dashboard decides which
# pages show it, so creating one here doesn't put it on a page yet.
api:
type: incident:StatusPageComponent
properties:
name: API
description: The public REST API
# The description is optional. Drop the attribute to clear one.
dashboard:
type: incident:StatusPageComponent
properties:
name: Dashboard
# Terraform claims what it manages, so a component can't be edited in the dashboard. Set
# unlock_in_dashboard to leave it editable there, and ignore the attributes people change.
editedByHand:
type: incident:StatusPageComponent
name: edited_by_hand
properties:
name: Email delivery
unlockInDashboard: true
options:
ignoreChanges:
- description
pulumi {
required_providers {
incident = {
source = "pulumi/incident"
}
}
}
# A component is something a status page reports the status of. It belongs to your
# organisation rather than to a page. Each page's structure in the dashboard decides which
# pages show it, so creating one here doesn't put it on a page yet.
resource "incident_statuspagecomponent" "api" {
name = "API"
description = "The public REST API"
}
# The description is optional. Drop the attribute to clear one.
resource "incident_statuspagecomponent" "dashboard" {
name = "Dashboard"
}
# Terraform claims what it manages, so a component can't be edited in the dashboard. Set
# unlock_in_dashboard to leave it editable there, and ignore the attributes people change.
resource "incident_statuspagecomponent" "edited_by_hand" {
lifecycle {
ignore_changes = [description]
}
name = "Email delivery"
unlock_in_dashboard = true
}
Create StatusPageComponent Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new StatusPageComponent(name: string, args?: StatusPageComponentArgs, opts?: CustomResourceOptions);@overload
def StatusPageComponent(resource_name: str,
args: Optional[StatusPageComponentArgs] = None,
opts: Optional[ResourceOptions] = None)
@overload
def StatusPageComponent(resource_name: str,
opts: Optional[ResourceOptions] = None,
description: Optional[str] = None,
name: Optional[str] = None,
unlock_in_dashboard: Optional[bool] = None)func NewStatusPageComponent(ctx *Context, name string, args *StatusPageComponentArgs, opts ...ResourceOption) (*StatusPageComponent, error)public StatusPageComponent(string name, StatusPageComponentArgs? args = null, CustomResourceOptions? opts = null)
public StatusPageComponent(String name, StatusPageComponentArgs args)
public StatusPageComponent(String name, StatusPageComponentArgs args, CustomResourceOptions options)
type: incident:StatusPageComponent
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
resource "incident_status_page_component" "name" {
# resource properties
}Parameters
- name string
- The unique name of the resource.
- args StatusPageComponentArgs
- 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 StatusPageComponentArgs
- 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 StatusPageComponentArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args StatusPageComponentArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args StatusPageComponentArgs
- 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 statusPageComponentResource = new Incident.StatusPageComponent("statusPageComponentResource", new()
{
Description = "string",
Name = "string",
UnlockInDashboard = false,
});
example, err := incident.NewStatusPageComponent(ctx, "statusPageComponentResource", &incident.StatusPageComponentArgs{
Description: pulumi.String("string"),
Name: pulumi.String("string"),
UnlockInDashboard: pulumi.Bool(false),
})
resource "incident_status_page_component" "statusPageComponentResource" {
lifecycle {
create_before_destroy = true
}
description = "string"
name = "string"
unlock_in_dashboard = false
}
var statusPageComponentResource = new StatusPageComponent("statusPageComponentResource", StatusPageComponentArgs.builder()
.description("string")
.name("string")
.unlockInDashboard(false)
.build());
status_page_component_resource = incident.StatusPageComponent("statusPageComponentResource",
description="string",
name="string",
unlock_in_dashboard=False)
const statusPageComponentResource = new incident.StatusPageComponent("statusPageComponentResource", {
description: "string",
name: "string",
unlockInDashboard: false,
});
type: incident:StatusPageComponent
properties:
description: string
name: string
unlockInDashboard: false
StatusPageComponent 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 StatusPageComponent resource accepts the following input properties:
- Description string
- Optional short description of this component
- Name string
- Human-readable name for the component
- Unlock
In boolDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- Description string
- Optional short description of this component
- Name string
- Human-readable name for the component
- Unlock
In boolDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- description string
- Optional short description of this component
- name string
- Human-readable name for the component
- unlock_
in_ booldashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- description String
- Optional short description of this component
- name String
- Human-readable name for the component
- unlock
In BooleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- description string
- Optional short description of this component
- name string
- Human-readable name for the component
- unlock
In booleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- description str
- Optional short description of this component
- name str
- Human-readable name for the component
- unlock_
in_ booldashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- description String
- Optional short description of this component
- name String
- Human-readable name for the component
- unlock
In BooleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
Outputs
All input properties are implicitly available as output properties. Additionally, the StatusPageComponent 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 StatusPageComponent Resource
Get an existing StatusPageComponent 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?: StatusPageComponentState, opts?: CustomResourceOptions): StatusPageComponent@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
description: Optional[str] = None,
name: Optional[str] = None,
unlock_in_dashboard: Optional[bool] = None) -> StatusPageComponentfunc GetStatusPageComponent(ctx *Context, name string, id IDInput, state *StatusPageComponentState, opts ...ResourceOption) (*StatusPageComponent, error)public static StatusPageComponent Get(string name, Input<string> id, StatusPageComponentState? state, CustomResourceOptions? opts = null)public static StatusPageComponent get(String name, Output<String> id, StatusPageComponentState state, CustomResourceOptions options)resources: _: type: incident:StatusPageComponent get: id: ${id}import {
to = incident_status_page_component.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.
- Description string
- Optional short description of this component
- Name string
- Human-readable name for the component
- Unlock
In boolDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- Description string
- Optional short description of this component
- Name string
- Human-readable name for the component
- Unlock
In boolDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- description string
- Optional short description of this component
- name string
- Human-readable name for the component
- unlock_
in_ booldashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- description String
- Optional short description of this component
- name String
- Human-readable name for the component
- unlock
In BooleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- description string
- Optional short description of this component
- name string
- Human-readable name for the component
- unlock
In booleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- description str
- Optional short description of this component
- name str
- Human-readable name for the component
- unlock_
in_ booldashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
- description String
- Optional short description of this component
- name String
- Human-readable name for the component
- unlock
In BooleanDashboard - Whether to leave this resource unlocked in the incident.io dashboard, so people can edit it there. Defaults to
false: Terraform claims what it manages, and a claimed resource cannot be edited in the dashboard. Set it totrueto leave the resource unclaimed — pair that withlifecycle { ignoreChanges = [...] }naming the attributes people edit, or the next apply reverts them. Setting it on a resource Terraform already claimed hands that resource back, and someone disconnecting one in the dashboard shows as no change.
Import
Import is supported using an import block or the pulumi import command:
The pulumi import command can be used, for example:
!/bin/bash
Import a status page component using its ID Replace the ID with a real ID from your incident.io organization
$ pulumi import incident:index/statusPageComponent:StatusPageComponent example 01ABC123DEF456GHI789JKL
To learn more about importing existing cloud resources, see Importing resources.
Package Details
- Repository
- incident incident-io/pulumi-incident
- License
- MIT
- Notes
- This Pulumi package is based on the
incidentTerraform Provider.
published on Wednesday, Oct 21, 2026 by incident-io