published on Wednesday, Oct 21, 2026 by incident-io
published on Wednesday, Oct 21, 2026 by incident-io
Create and manage announcement templates.
An announcement template controls which fields and actions appear on an announcement post. Each announcement rule renders its posts with one template.
Use this data source to look up an existing announcement template, either by id or by name, without managing it as an incident.AnnouncementTemplate resource. Set exactly one of the two lookup attributes; setting both, or neither, is rejected at plan time.
To find the organisation’s default template, look it up by name and check isDefault.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as incident from "@incident-io/pulumi";
// Look up an existing announcement template by name, such as the default template.
const _default = incident.getAnnouncementTemplate({
name: "Default",
});
// Or by ID, to reference a template another module manages.
const majorIncidents = incident.getAnnouncementTemplate({
id: "01G0J1EXE7AXZ2C93K61WBPYEH",
});
const fyi = new incident.AnnouncementRule("fyi", {
name: "FYI",
slackChannelIds: ["C02AW36C1M5"],
mode: "live_and_closed",
updateSharingMode: "none",
templateId: _default.then(_default => _default.id),
conditionGroups: [{
conditions: [{
subject: "incident.status.category",
operation: "one_of",
paramBindings: [{
arrayValue: [{
literal: "live",
}],
}],
}],
}],
});
import pulumi
import pulumi_incident as incident
# Look up an existing announcement template by name, such as the default template.
default = incident.get_announcement_template(name="Default")
# Or by ID, to reference a template another module manages.
major_incidents = incident.get_announcement_template(id="01G0J1EXE7AXZ2C93K61WBPYEH")
fyi = incident.AnnouncementRule("fyi",
name="FYI",
slack_channel_ids=["C02AW36C1M5"],
mode="live_and_closed",
update_sharing_mode="none",
template_id=default.id,
condition_groups=[{
"conditions": [{
"subject": "incident.status.category",
"operation": "one_of",
"param_bindings": [{
"array_value": [{
"literal": "live",
}],
}],
}],
}])
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 {
// Look up an existing announcement template by name, such as the default template.
_default, err := incident.GetAnnouncementTemplate(ctx, &incident.LookupAnnouncementTemplateArgs{
Name: pulumi.StringRef("Default"),
}, nil)
if err != nil {
return err
}
// Or by ID, to reference a template another module manages.
_, err = incident.GetAnnouncementTemplate(ctx, &incident.LookupAnnouncementTemplateArgs{
Id: pulumi.StringRef("01G0J1EXE7AXZ2C93K61WBPYEH"),
}, nil)
if err != nil {
return err
}
_, err = incident.NewAnnouncementRule(ctx, "fyi", &incident.AnnouncementRuleArgs{
Name: pulumi.String("FYI"),
SlackChannelIds: pulumi.StringArray{
pulumi.String("C02AW36C1M5"),
},
Mode: pulumi.String("live_and_closed"),
UpdateSharingMode: pulumi.String("none"),
TemplateId: pulumi.String(_default.Id),
ConditionGroups: incident.AnnouncementRuleConditionGroupArray{
&incident.AnnouncementRuleConditionGroupArgs{
Conditions: incident.AnnouncementRuleConditionGroupConditionArray{
&incident.AnnouncementRuleConditionGroupConditionArgs{
Subject: pulumi.String("incident.status.category"),
Operation: pulumi.String("one_of"),
ParamBindings: incident.AnnouncementRuleConditionGroupConditionParamBindingArray{
&incident.AnnouncementRuleConditionGroupConditionParamBindingArgs{
ArrayValue: []map[string]string{
{
"literal": "live",
},
},
},
},
},
},
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Incident = Pulumi.Incident;
return await Deployment.RunAsync(() =>
{
// Look up an existing announcement template by name, such as the default template.
var @default = Incident.GetAnnouncementTemplate.Invoke(new()
{
Name = "Default",
});
// Or by ID, to reference a template another module manages.
var majorIncidents = Incident.GetAnnouncementTemplate.Invoke(new()
{
Id = "01G0J1EXE7AXZ2C93K61WBPYEH",
});
var fyi = new Incident.AnnouncementRule("fyi", new()
{
Name = "FYI",
SlackChannelIds = new[]
{
"C02AW36C1M5",
},
Mode = "live_and_closed",
UpdateSharingMode = "none",
TemplateId = @default.Apply(@default => @default.Apply(getAnnouncementTemplateResult => getAnnouncementTemplateResult.Id)),
ConditionGroups = new[]
{
new Incident.Inputs.AnnouncementRuleConditionGroupArgs
{
Conditions = new[]
{
new Incident.Inputs.AnnouncementRuleConditionGroupConditionArgs
{
Subject = "incident.status.category",
Operation = "one_of",
ParamBindings = new[]
{
new Incident.Inputs.AnnouncementRuleConditionGroupConditionParamBindingArgs
{
ArrayValue = new[]
{
{
{ "literal", "live" },
},
},
},
},
},
},
},
},
});
});
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.GetAnnouncementTemplateArgs;
import com.pulumi.incident.AnnouncementRule;
import com.pulumi.incident.AnnouncementRuleArgs;
import com.pulumi.incident.inputs.AnnouncementRuleConditionGroupArgs;
import com.pulumi.incident.inputs.AnnouncementRuleConditionGroupConditionArgs;
import com.pulumi.incident.inputs.AnnouncementRuleConditionGroupConditionParamBindingArgs;
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) {
// Look up an existing announcement template by name, such as the default template.
final var default = IncidentFunctions.getAnnouncementTemplate(GetAnnouncementTemplateArgs.builder()
.name("Default")
.build());
// Or by ID, to reference a template another module manages.
final var majorIncidents = IncidentFunctions.getAnnouncementTemplate(GetAnnouncementTemplateArgs.builder()
.id("01G0J1EXE7AXZ2C93K61WBPYEH")
.build());
var fyi = new AnnouncementRule("fyi", AnnouncementRuleArgs.builder()
.name("FYI")
.slackChannelIds("C02AW36C1M5")
.mode("live_and_closed")
.updateSharingMode("none")
.templateId(default_.id())
.conditionGroups(AnnouncementRuleConditionGroupArgs.builder()
.conditions(AnnouncementRuleConditionGroupConditionArgs.builder()
.subject("incident.status.category")
.operation("one_of")
.paramBindings(AnnouncementRuleConditionGroupConditionParamBindingArgs.builder()
.arrayValue(Arrays.asList(Map.of("literal", "live")))
.build())
.build())
.build())
.build());
}
}
resources:
fyi:
type: incident:AnnouncementRule
properties:
name: FYI
slackChannelIds:
- C02AW36C1M5
mode: live_and_closed
updateSharingMode: none
templateId: ${default.id}
conditionGroups:
- conditions:
- subject: incident.status.category
operation: one_of
paramBindings:
- arrayValue:
- literal: live
variables:
# Look up an existing announcement template by name, such as the default template.
default:
fn::invoke:
function: incident:getAnnouncementTemplate
arguments:
name: Default
# Or by ID, to reference a template another module manages.
majorIncidents:
fn::invoke:
function: incident:getAnnouncementTemplate
arguments:
id: 01G0J1EXE7AXZ2C93K61WBPYEH
pulumi {
required_providers {
incident = {
source = "pulumi/incident"
}
}
}
data "incident_getannouncementtemplate" "default" {
name = "Default"
}
data "incident_getannouncementtemplate" "majorIncidents" {
id = "01G0J1EXE7AXZ2C93K61WBPYEH"
}
resource "incident_announcementrule" "fyi" {
name = "FYI"
slack_channel_ids = ["C02AW36C1M5"]
mode = "live_and_closed"
update_sharing_mode = "none"
template_id = data.incident_getannouncementtemplate.default.id
condition_groups {
conditions {
subject = "incident.status.category"
operation = "one_of"
param_bindings {
array_value = [{
"literal" = "live"
}]
}
}
}
}
# Look up an existing announcement template by name, such as the default template.
# Or by ID, to reference a template another module manages.
Using getAnnouncementTemplate
Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.
function getAnnouncementTemplate(args: GetAnnouncementTemplateArgs, opts?: InvokeOptions): Promise<GetAnnouncementTemplateResult>
function getAnnouncementTemplateOutput(args: GetAnnouncementTemplateOutputArgs, opts?: InvokeOutputOptions): Output<GetAnnouncementTemplateResult>def get_announcement_template(id: Optional[str] = None,
name: Optional[str] = None,
opts: Optional[InvokeOptions] = None) -> GetAnnouncementTemplateResult
def get_announcement_template_output(id: pulumi.Input[Optional[str]] = None,
name: pulumi.Input[Optional[str]] = None,
opts: Optional[InvokeOutputOptions] = None) -> Output[GetAnnouncementTemplateResult]func LookupAnnouncementTemplate(ctx *Context, args *LookupAnnouncementTemplateArgs, opts ...InvokeOption) (*LookupAnnouncementTemplateResult, error)
func LookupAnnouncementTemplateOutput(ctx *Context, args *LookupAnnouncementTemplateOutputArgs, opts ...InvokeOption) LookupAnnouncementTemplateResultOutput> Note: This function is named LookupAnnouncementTemplate in the Go SDK.
public static class GetAnnouncementTemplate
{
public static Task<GetAnnouncementTemplateResult> InvokeAsync(GetAnnouncementTemplateArgs args, InvokeOptions? opts = null)
public static Output<GetAnnouncementTemplateResult> Invoke(GetAnnouncementTemplateInvokeArgs args, InvokeOptions? opts = null)
public static Output<GetAnnouncementTemplateResult> Invoke(GetAnnouncementTemplateInvokeArgs args, InvokeOutputOptions opts)
}public static CompletableFuture<GetAnnouncementTemplateResult> getAnnouncementTemplate(GetAnnouncementTemplateArgs args, InvokeOptions options)
public static Output<GetAnnouncementTemplateResult> getAnnouncementTemplate(GetAnnouncementTemplateArgs args, InvokeOptions options)
public static Output<GetAnnouncementTemplateResult> getAnnouncementTemplate(GetAnnouncementTemplateArgs args, InvokeOutputOptions options)
fn::invoke:
function: incident:index/getAnnouncementTemplate:getAnnouncementTemplate
arguments:
# arguments dictionarydata "incident_get_announcement_template" "name" {
# arguments
}The following arguments are supported:
getAnnouncementTemplate Result
The following output properties are available:
- Actions
List<Get
Announcement Template Action> - Actions shown on the announcement post, in rank order
- Fields
List<Get
Announcement Template Field> - Fields shown on the announcement post, in rank order
- Id string
- Unique identifier for this announcement template
- Is
Default bool - Whether this is the organisation's default template, used by rules that don't choose one
- Name string
- Name of this announcement template
- Owning
Team List<string>Ids - IDs of the teams that own this template
- Actions
[]Get
Announcement Template Action - Actions shown on the announcement post, in rank order
- Fields
[]Get
Announcement Template Field - Fields shown on the announcement post, in rank order
- Id string
- Unique identifier for this announcement template
- Is
Default bool - Whether this is the organisation's default template, used by rules that don't choose one
- Name string
- Name of this announcement template
- Owning
Team []stringIds - IDs of the teams that own this template
- actions list(object)
- Actions shown on the announcement post, in rank order
- fields list(object)
- Fields shown on the announcement post, in rank order
- id string
- Unique identifier for this announcement template
- is_
default bool - Whether this is the organisation's default template, used by rules that don't choose one
- name string
- Name of this announcement template
- owning_
team_ list(string)ids - IDs of the teams that own this template
- actions
List<Get
Announcement Template Action> - Actions shown on the announcement post, in rank order
- fields
List<Get
Announcement Template Field> - Fields shown on the announcement post, in rank order
- id String
- Unique identifier for this announcement template
- is
Default Boolean - Whether this is the organisation's default template, used by rules that don't choose one
- name String
- Name of this announcement template
- owning
Team List<String>Ids - IDs of the teams that own this template
- actions
Get
Announcement Template Action[] - Actions shown on the announcement post, in rank order
- fields
Get
Announcement Template Field[] - Fields shown on the announcement post, in rank order
- id string
- Unique identifier for this announcement template
- is
Default boolean - Whether this is the organisation's default template, used by rules that don't choose one
- name string
- Name of this announcement template
- owning
Team string[]Ids - IDs of the teams that own this template
- actions
Sequence[Get
Announcement Template Action] - Actions shown on the announcement post, in rank order
- fields
Sequence[Get
Announcement Template Field] - Fields shown on the announcement post, in rank order
- id str
- Unique identifier for this announcement template
- is_
default bool - Whether this is the organisation's default template, used by rules that don't choose one
- name str
- Name of this announcement template
- owning_
team_ Sequence[str]ids - IDs of the teams that own this template
- actions List<Property Map>
- Actions shown on the announcement post, in rank order
- fields List<Property Map>
- Fields shown on the announcement post, in rank order
- id String
- Unique identifier for this announcement template
- is
Default Boolean - Whether this is the organisation's default template, used by rules that don't choose one
- name String
- Name of this announcement template
- owning
Team List<String>Ids - IDs of the teams that own this template
Supporting Types
GetAnnouncementTemplateAction
- Action
Type string - Type of this action. Possible values are:
announcementPostActionsHomepage,announcementPostActionsSubscribe,announcementPostActionsJoinCall,announcementPostActionsJiraTicket,announcementPostActionsInternalStatusPage,announcementPostActionsPublicStatusPage,announcementPostActionsPostmortem,announcementPostActionsCreateChannel,announcementPostActionsViewAlert,announcementPostActionsTriage,announcementPostActionsEscalate,announcementPostActionsShareUpdate,announcementPostActionsUpdateStatus,announcementPostActionsRequestAccess. - Emoji string
- Emoji shown on this action's button
- Action
Type string - Type of this action. Possible values are:
announcementPostActionsHomepage,announcementPostActionsSubscribe,announcementPostActionsJoinCall,announcementPostActionsJiraTicket,announcementPostActionsInternalStatusPage,announcementPostActionsPublicStatusPage,announcementPostActionsPostmortem,announcementPostActionsCreateChannel,announcementPostActionsViewAlert,announcementPostActionsTriage,announcementPostActionsEscalate,announcementPostActionsShareUpdate,announcementPostActionsUpdateStatus,announcementPostActionsRequestAccess. - Emoji string
- Emoji shown on this action's button
- action_
type string - Type of this action. Possible values are:
announcementPostActionsHomepage,announcementPostActionsSubscribe,announcementPostActionsJoinCall,announcementPostActionsJiraTicket,announcementPostActionsInternalStatusPage,announcementPostActionsPublicStatusPage,announcementPostActionsPostmortem,announcementPostActionsCreateChannel,announcementPostActionsViewAlert,announcementPostActionsTriage,announcementPostActionsEscalate,announcementPostActionsShareUpdate,announcementPostActionsUpdateStatus,announcementPostActionsRequestAccess. - emoji string
- Emoji shown on this action's button
- action
Type String - Type of this action. Possible values are:
announcementPostActionsHomepage,announcementPostActionsSubscribe,announcementPostActionsJoinCall,announcementPostActionsJiraTicket,announcementPostActionsInternalStatusPage,announcementPostActionsPublicStatusPage,announcementPostActionsPostmortem,announcementPostActionsCreateChannel,announcementPostActionsViewAlert,announcementPostActionsTriage,announcementPostActionsEscalate,announcementPostActionsShareUpdate,announcementPostActionsUpdateStatus,announcementPostActionsRequestAccess. - emoji String
- Emoji shown on this action's button
- action
Type string - Type of this action. Possible values are:
announcementPostActionsHomepage,announcementPostActionsSubscribe,announcementPostActionsJoinCall,announcementPostActionsJiraTicket,announcementPostActionsInternalStatusPage,announcementPostActionsPublicStatusPage,announcementPostActionsPostmortem,announcementPostActionsCreateChannel,announcementPostActionsViewAlert,announcementPostActionsTriage,announcementPostActionsEscalate,announcementPostActionsShareUpdate,announcementPostActionsUpdateStatus,announcementPostActionsRequestAccess. - emoji string
- Emoji shown on this action's button
- action_
type str - Type of this action. Possible values are:
announcementPostActionsHomepage,announcementPostActionsSubscribe,announcementPostActionsJoinCall,announcementPostActionsJiraTicket,announcementPostActionsInternalStatusPage,announcementPostActionsPublicStatusPage,announcementPostActionsPostmortem,announcementPostActionsCreateChannel,announcementPostActionsViewAlert,announcementPostActionsTriage,announcementPostActionsEscalate,announcementPostActionsShareUpdate,announcementPostActionsUpdateStatus,announcementPostActionsRequestAccess. - emoji str
- Emoji shown on this action's button
- action
Type String - Type of this action. Possible values are:
announcementPostActionsHomepage,announcementPostActionsSubscribe,announcementPostActionsJoinCall,announcementPostActionsJiraTicket,announcementPostActionsInternalStatusPage,announcementPostActionsPublicStatusPage,announcementPostActionsPostmortem,announcementPostActionsCreateChannel,announcementPostActionsViewAlert,announcementPostActionsTriage,announcementPostActionsEscalate,announcementPostActionsShareUpdate,announcementPostActionsUpdateStatus,announcementPostActionsRequestAccess. - emoji String
- Emoji shown on this action's button
GetAnnouncementTemplateField
- Custom
Field stringId - ID of the custom field to show, for custom field fields
- Emoji string
- Emoji shown next to this field
- Field
Type string - Type of this field. Possible values are:
announcementPostFieldsStatus,announcementPostFieldsIncidentType,announcementPostFieldsSeverity,announcementPostFieldsRole,announcementPostFieldsDescription,announcementPostFieldsCustomField,announcementPostFieldsTimestamp,announcementPostFieldsCreator,announcementPostFieldsSlack,announcementPostFieldsRichText. - Incident
Role stringId - ID of the incident role to show, for incident role fields
- Incident
Timestamp stringId - ID of the incident timestamp to show, for incident timestamp fields
- Rich
Text GetAnnouncement Template Field Rich Text - Content of a rich text field. The type says how contents is written.
- Custom
Field stringId - ID of the custom field to show, for custom field fields
- Emoji string
- Emoji shown next to this field
- Field
Type string - Type of this field. Possible values are:
announcementPostFieldsStatus,announcementPostFieldsIncidentType,announcementPostFieldsSeverity,announcementPostFieldsRole,announcementPostFieldsDescription,announcementPostFieldsCustomField,announcementPostFieldsTimestamp,announcementPostFieldsCreator,announcementPostFieldsSlack,announcementPostFieldsRichText. - Incident
Role stringId - ID of the incident role to show, for incident role fields
- Incident
Timestamp stringId - ID of the incident timestamp to show, for incident timestamp fields
- Rich
Text GetAnnouncement Template Field Rich Text - Content of a rich text field. The type says how contents is written.
- custom_
field_ stringid - ID of the custom field to show, for custom field fields
- emoji string
- Emoji shown next to this field
- field_
type string - Type of this field. Possible values are:
announcementPostFieldsStatus,announcementPostFieldsIncidentType,announcementPostFieldsSeverity,announcementPostFieldsRole,announcementPostFieldsDescription,announcementPostFieldsCustomField,announcementPostFieldsTimestamp,announcementPostFieldsCreator,announcementPostFieldsSlack,announcementPostFieldsRichText. - incident_
role_ stringid - ID of the incident role to show, for incident role fields
- incident_
timestamp_ stringid - ID of the incident timestamp to show, for incident timestamp fields
- rich_
text object - Content of a rich text field. The type says how contents is written.
- custom
Field StringId - ID of the custom field to show, for custom field fields
- emoji String
- Emoji shown next to this field
- field
Type String - Type of this field. Possible values are:
announcementPostFieldsStatus,announcementPostFieldsIncidentType,announcementPostFieldsSeverity,announcementPostFieldsRole,announcementPostFieldsDescription,announcementPostFieldsCustomField,announcementPostFieldsTimestamp,announcementPostFieldsCreator,announcementPostFieldsSlack,announcementPostFieldsRichText. - incident
Role StringId - ID of the incident role to show, for incident role fields
- incident
Timestamp StringId - ID of the incident timestamp to show, for incident timestamp fields
- rich
Text GetAnnouncement Template Field Rich Text - Content of a rich text field. The type says how contents is written.
- custom
Field stringId - ID of the custom field to show, for custom field fields
- emoji string
- Emoji shown next to this field
- field
Type string - Type of this field. Possible values are:
announcementPostFieldsStatus,announcementPostFieldsIncidentType,announcementPostFieldsSeverity,announcementPostFieldsRole,announcementPostFieldsDescription,announcementPostFieldsCustomField,announcementPostFieldsTimestamp,announcementPostFieldsCreator,announcementPostFieldsSlack,announcementPostFieldsRichText. - incident
Role stringId - ID of the incident role to show, for incident role fields
- incident
Timestamp stringId - ID of the incident timestamp to show, for incident timestamp fields
- rich
Text GetAnnouncement Template Field Rich Text - Content of a rich text field. The type says how contents is written.
- custom_
field_ strid - ID of the custom field to show, for custom field fields
- emoji str
- Emoji shown next to this field
- field_
type str - Type of this field. Possible values are:
announcementPostFieldsStatus,announcementPostFieldsIncidentType,announcementPostFieldsSeverity,announcementPostFieldsRole,announcementPostFieldsDescription,announcementPostFieldsCustomField,announcementPostFieldsTimestamp,announcementPostFieldsCreator,announcementPostFieldsSlack,announcementPostFieldsRichText. - incident_
role_ strid - ID of the incident role to show, for incident role fields
- incident_
timestamp_ strid - ID of the incident timestamp to show, for incident timestamp fields
- rich_
text GetAnnouncement Template Field Rich Text - Content of a rich text field. The type says how contents is written.
- custom
Field StringId - ID of the custom field to show, for custom field fields
- emoji String
- Emoji shown next to this field
- field
Type String - Type of this field. Possible values are:
announcementPostFieldsStatus,announcementPostFieldsIncidentType,announcementPostFieldsSeverity,announcementPostFieldsRole,announcementPostFieldsDescription,announcementPostFieldsCustomField,announcementPostFieldsTimestamp,announcementPostFieldsCreator,announcementPostFieldsSlack,announcementPostFieldsRichText. - incident
Role StringId - ID of the incident role to show, for incident role fields
- incident
Timestamp StringId - ID of the incident timestamp to show, for incident timestamp fields
- rich
Text Property Map - Content of a rich text field. The type says how contents is written.
GetAnnouncementTemplateFieldRichText
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