1. Packages
  2. Pagerduty Provider
  3. API Docs
  4. Schedulev2
Viewing docs for PagerDuty v4.31.1
published on Wednesday, Mar 25, 2026 by Pulumi
pagerduty logo
Viewing docs for PagerDuty v4.31.1
published on Wednesday, Mar 25, 2026 by Pulumi

    A v3 schedule determines the time periods that users are on call using flexible rotation configurations. This resource uses the PagerDuty v3 Schedules API, which supports per-event assignment strategies and RFC 5545 recurrence rules.

    Note: This resource requires the flexible-schedules-early-access early access flag on your PagerDuty account. The required X-Early-Access header is sent automatically by the provider.

    Example Usage

    Rotating member assignment

    import * as pulumi from "@pulumi/pulumi";
    import * as pagerduty from "@pulumi/pagerduty";
    
    const example = new pagerduty.User("example", {
        name: "Earline Greenholt",
        email: "earline@example.com",
    });
    const exampleSchedulev2 = new pagerduty.Schedulev2("example", {
        name: "Engineering On-Call",
        timeZone: "America/New_York",
        description: "Managed by Pulumi",
        rotations: [{
            events: [{
                name: "Weekday Business Hours",
                startTime: "2026-06-01T09:00:00Z",
                endTime: "2026-06-01T17:00:00Z",
                effectiveSince: "2026-06-01T09:00:00Z",
                recurrences: ["RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"],
                assignmentStrategies: [{
                    type: "rotating_member_assignment_strategy",
                    shiftsPerMember: 1,
                    members: [{
                        type: "user_member",
                        userId: example.id,
                    }],
                }],
            }],
        }],
    });
    
    import pulumi
    import pulumi_pagerduty as pagerduty
    
    example = pagerduty.User("example",
        name="Earline Greenholt",
        email="earline@example.com")
    example_schedulev2 = pagerduty.Schedulev2("example",
        name="Engineering On-Call",
        time_zone="America/New_York",
        description="Managed by Pulumi",
        rotations=[{
            "events": [{
                "name": "Weekday Business Hours",
                "start_time": "2026-06-01T09:00:00Z",
                "end_time": "2026-06-01T17:00:00Z",
                "effective_since": "2026-06-01T09:00:00Z",
                "recurrences": ["RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"],
                "assignment_strategies": [{
                    "type": "rotating_member_assignment_strategy",
                    "shifts_per_member": 1,
                    "members": [{
                        "type": "user_member",
                        "user_id": example.id,
                    }],
                }],
            }],
        }])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-pagerduty/sdk/v4/go/pagerduty"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		example, err := pagerduty.NewUser(ctx, "example", &pagerduty.UserArgs{
    			Name:  pulumi.String("Earline Greenholt"),
    			Email: pulumi.String("earline@example.com"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = pagerduty.NewSchedulev2(ctx, "example", &pagerduty.Schedulev2Args{
    			Name:        pulumi.String("Engineering On-Call"),
    			TimeZone:    pulumi.String("America/New_York"),
    			Description: pulumi.String("Managed by Pulumi"),
    			Rotations: pagerduty.Schedulev2RotationArray{
    				&pagerduty.Schedulev2RotationArgs{
    					Events: pagerduty.Schedulev2RotationEventArray{
    						&pagerduty.Schedulev2RotationEventArgs{
    							Name:           pulumi.String("Weekday Business Hours"),
    							StartTime:      pulumi.String("2026-06-01T09:00:00Z"),
    							EndTime:        pulumi.String("2026-06-01T17:00:00Z"),
    							EffectiveSince: pulumi.String("2026-06-01T09:00:00Z"),
    							Recurrences: pulumi.StringArray{
    								pulumi.String("RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"),
    							},
    							AssignmentStrategies: pagerduty.Schedulev2RotationEventAssignmentStrategyArray{
    								&pagerduty.Schedulev2RotationEventAssignmentStrategyArgs{
    									Type:            pulumi.String("rotating_member_assignment_strategy"),
    									ShiftsPerMember: pulumi.Int(1),
    									Members: pagerduty.Schedulev2RotationEventAssignmentStrategyMemberArray{
    										&pagerduty.Schedulev2RotationEventAssignmentStrategyMemberArgs{
    											Type:   pulumi.String("user_member"),
    											UserId: example.ID(),
    										},
    									},
    								},
    							},
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Pagerduty = Pulumi.Pagerduty;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Pagerduty.User("example", new()
        {
            Name = "Earline Greenholt",
            Email = "earline@example.com",
        });
    
        var exampleSchedulev2 = new Pagerduty.Schedulev2("example", new()
        {
            Name = "Engineering On-Call",
            TimeZone = "America/New_York",
            Description = "Managed by Pulumi",
            Rotations = new[]
            {
                new Pagerduty.Inputs.Schedulev2RotationArgs
                {
                    Events = new[]
                    {
                        new Pagerduty.Inputs.Schedulev2RotationEventArgs
                        {
                            Name = "Weekday Business Hours",
                            StartTime = "2026-06-01T09:00:00Z",
                            EndTime = "2026-06-01T17:00:00Z",
                            EffectiveSince = "2026-06-01T09:00:00Z",
                            Recurrences = new[]
                            {
                                "RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR",
                            },
                            AssignmentStrategies = new[]
                            {
                                new Pagerduty.Inputs.Schedulev2RotationEventAssignmentStrategyArgs
                                {
                                    Type = "rotating_member_assignment_strategy",
                                    ShiftsPerMember = 1,
                                    Members = new[]
                                    {
                                        new Pagerduty.Inputs.Schedulev2RotationEventAssignmentStrategyMemberArgs
                                        {
                                            Type = "user_member",
                                            UserId = example.Id,
                                        },
                                    },
                                },
                            },
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.pagerduty.User;
    import com.pulumi.pagerduty.UserArgs;
    import com.pulumi.pagerduty.Schedulev2;
    import com.pulumi.pagerduty.Schedulev2Args;
    import com.pulumi.pagerduty.inputs.Schedulev2RotationArgs;
    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) {
            var example = new User("example", UserArgs.builder()
                .name("Earline Greenholt")
                .email("earline@example.com")
                .build());
    
            var exampleSchedulev2 = new Schedulev2("exampleSchedulev2", Schedulev2Args.builder()
                .name("Engineering On-Call")
                .timeZone("America/New_York")
                .description("Managed by Pulumi")
                .rotations(Schedulev2RotationArgs.builder()
                    .events(Schedulev2RotationEventArgs.builder()
                        .name("Weekday Business Hours")
                        .startTime("2026-06-01T09:00:00Z")
                        .endTime("2026-06-01T17:00:00Z")
                        .effectiveSince("2026-06-01T09:00:00Z")
                        .recurrences("RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR")
                        .assignmentStrategies(Schedulev2RotationEventAssignmentStrategyArgs.builder()
                            .type("rotating_member_assignment_strategy")
                            .shiftsPerMember(1)
                            .members(Schedulev2RotationEventAssignmentStrategyMemberArgs.builder()
                                .type("user_member")
                                .userId(example.id())
                                .build())
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: pagerduty:User
        properties:
          name: Earline Greenholt
          email: earline@example.com
      exampleSchedulev2:
        type: pagerduty:Schedulev2
        name: example
        properties:
          name: Engineering On-Call
          timeZone: America/New_York
          description: Managed by Pulumi
          rotations:
            - events:
                - name: Weekday Business Hours
                  startTime: 2026-06-01T09:00:00Z
                  endTime: 2026-06-01T17:00:00Z
                  effectiveSince: 2026-06-01T09:00:00Z
                  recurrences:
                    - RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
                  assignmentStrategies:
                    - type: rotating_member_assignment_strategy
                      shiftsPerMember: 1
                      members:
                        - type: user_member
                          userId: ${example.id}
    

    Every-member assignment (all members on-call simultaneously)

    import * as pulumi from "@pulumi/pulumi";
    import * as pagerduty from "@pulumi/pagerduty";
    
    const primary = new pagerduty.User("primary", {
        name: "Alice",
        email: "alice@example.com",
    });
    const secondary = new pagerduty.User("secondary", {
        name: "Bob",
        email: "bob@example.com",
    });
    const allHands = new pagerduty.Schedulev2("all_hands", {
        name: "Weekend All-Hands On-Call",
        timeZone: "UTC",
        rotations: [{
            events: [{
                name: "Weekend Coverage",
                startTime: "2026-06-06T00:00:00Z",
                endTime: "2026-06-07T23:59:00Z",
                effectiveSince: "2026-06-06T00:00:00Z",
                recurrences: ["RRULE:FREQ=WEEKLY;BYDAY=SA,SU"],
                assignmentStrategies: [{
                    type: "every_member_assignment_strategy",
                    members: [
                        {
                            type: "user_member",
                            userId: primary.id,
                        },
                        {
                            type: "user_member",
                            userId: secondary.id,
                        },
                    ],
                }],
            }],
        }],
    });
    
    import pulumi
    import pulumi_pagerduty as pagerduty
    
    primary = pagerduty.User("primary",
        name="Alice",
        email="alice@example.com")
    secondary = pagerduty.User("secondary",
        name="Bob",
        email="bob@example.com")
    all_hands = pagerduty.Schedulev2("all_hands",
        name="Weekend All-Hands On-Call",
        time_zone="UTC",
        rotations=[{
            "events": [{
                "name": "Weekend Coverage",
                "start_time": "2026-06-06T00:00:00Z",
                "end_time": "2026-06-07T23:59:00Z",
                "effective_since": "2026-06-06T00:00:00Z",
                "recurrences": ["RRULE:FREQ=WEEKLY;BYDAY=SA,SU"],
                "assignment_strategies": [{
                    "type": "every_member_assignment_strategy",
                    "members": [
                        {
                            "type": "user_member",
                            "user_id": primary.id,
                        },
                        {
                            "type": "user_member",
                            "user_id": secondary.id,
                        },
                    ],
                }],
            }],
        }])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-pagerduty/sdk/v4/go/pagerduty"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		primary, err := pagerduty.NewUser(ctx, "primary", &pagerduty.UserArgs{
    			Name:  pulumi.String("Alice"),
    			Email: pulumi.String("alice@example.com"),
    		})
    		if err != nil {
    			return err
    		}
    		secondary, err := pagerduty.NewUser(ctx, "secondary", &pagerduty.UserArgs{
    			Name:  pulumi.String("Bob"),
    			Email: pulumi.String("bob@example.com"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = pagerduty.NewSchedulev2(ctx, "all_hands", &pagerduty.Schedulev2Args{
    			Name:     pulumi.String("Weekend All-Hands On-Call"),
    			TimeZone: pulumi.String("UTC"),
    			Rotations: pagerduty.Schedulev2RotationArray{
    				&pagerduty.Schedulev2RotationArgs{
    					Events: pagerduty.Schedulev2RotationEventArray{
    						&pagerduty.Schedulev2RotationEventArgs{
    							Name:           pulumi.String("Weekend Coverage"),
    							StartTime:      pulumi.String("2026-06-06T00:00:00Z"),
    							EndTime:        pulumi.String("2026-06-07T23:59:00Z"),
    							EffectiveSince: pulumi.String("2026-06-06T00:00:00Z"),
    							Recurrences: pulumi.StringArray{
    								pulumi.String("RRULE:FREQ=WEEKLY;BYDAY=SA,SU"),
    							},
    							AssignmentStrategies: pagerduty.Schedulev2RotationEventAssignmentStrategyArray{
    								&pagerduty.Schedulev2RotationEventAssignmentStrategyArgs{
    									Type: pulumi.String("every_member_assignment_strategy"),
    									Members: pagerduty.Schedulev2RotationEventAssignmentStrategyMemberArray{
    										&pagerduty.Schedulev2RotationEventAssignmentStrategyMemberArgs{
    											Type:   pulumi.String("user_member"),
    											UserId: primary.ID(),
    										},
    										&pagerduty.Schedulev2RotationEventAssignmentStrategyMemberArgs{
    											Type:   pulumi.String("user_member"),
    											UserId: secondary.ID(),
    										},
    									},
    								},
    							},
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Pagerduty = Pulumi.Pagerduty;
    
    return await Deployment.RunAsync(() => 
    {
        var primary = new Pagerduty.User("primary", new()
        {
            Name = "Alice",
            Email = "alice@example.com",
        });
    
        var secondary = new Pagerduty.User("secondary", new()
        {
            Name = "Bob",
            Email = "bob@example.com",
        });
    
        var allHands = new Pagerduty.Schedulev2("all_hands", new()
        {
            Name = "Weekend All-Hands On-Call",
            TimeZone = "UTC",
            Rotations = new[]
            {
                new Pagerduty.Inputs.Schedulev2RotationArgs
                {
                    Events = new[]
                    {
                        new Pagerduty.Inputs.Schedulev2RotationEventArgs
                        {
                            Name = "Weekend Coverage",
                            StartTime = "2026-06-06T00:00:00Z",
                            EndTime = "2026-06-07T23:59:00Z",
                            EffectiveSince = "2026-06-06T00:00:00Z",
                            Recurrences = new[]
                            {
                                "RRULE:FREQ=WEEKLY;BYDAY=SA,SU",
                            },
                            AssignmentStrategies = new[]
                            {
                                new Pagerduty.Inputs.Schedulev2RotationEventAssignmentStrategyArgs
                                {
                                    Type = "every_member_assignment_strategy",
                                    Members = new[]
                                    {
                                        new Pagerduty.Inputs.Schedulev2RotationEventAssignmentStrategyMemberArgs
                                        {
                                            Type = "user_member",
                                            UserId = primary.Id,
                                        },
                                        new Pagerduty.Inputs.Schedulev2RotationEventAssignmentStrategyMemberArgs
                                        {
                                            Type = "user_member",
                                            UserId = secondary.Id,
                                        },
                                    },
                                },
                            },
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.pagerduty.User;
    import com.pulumi.pagerduty.UserArgs;
    import com.pulumi.pagerduty.Schedulev2;
    import com.pulumi.pagerduty.Schedulev2Args;
    import com.pulumi.pagerduty.inputs.Schedulev2RotationArgs;
    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) {
            var primary = new User("primary", UserArgs.builder()
                .name("Alice")
                .email("alice@example.com")
                .build());
    
            var secondary = new User("secondary", UserArgs.builder()
                .name("Bob")
                .email("bob@example.com")
                .build());
    
            var allHands = new Schedulev2("allHands", Schedulev2Args.builder()
                .name("Weekend All-Hands On-Call")
                .timeZone("UTC")
                .rotations(Schedulev2RotationArgs.builder()
                    .events(Schedulev2RotationEventArgs.builder()
                        .name("Weekend Coverage")
                        .startTime("2026-06-06T00:00:00Z")
                        .endTime("2026-06-07T23:59:00Z")
                        .effectiveSince("2026-06-06T00:00:00Z")
                        .recurrences("RRULE:FREQ=WEEKLY;BYDAY=SA,SU")
                        .assignmentStrategies(Schedulev2RotationEventAssignmentStrategyArgs.builder()
                            .type("every_member_assignment_strategy")
                            .members(                        
                                Schedulev2RotationEventAssignmentStrategyMemberArgs.builder()
                                    .type("user_member")
                                    .userId(primary.id())
                                    .build(),
                                Schedulev2RotationEventAssignmentStrategyMemberArgs.builder()
                                    .type("user_member")
                                    .userId(secondary.id())
                                    .build())
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      primary:
        type: pagerduty:User
        properties:
          name: Alice
          email: alice@example.com
      secondary:
        type: pagerduty:User
        properties:
          name: Bob
          email: bob@example.com
      allHands:
        type: pagerduty:Schedulev2
        name: all_hands
        properties:
          name: Weekend All-Hands On-Call
          timeZone: UTC
          rotations:
            - events:
                - name: Weekend Coverage
                  startTime: 2026-06-06T00:00:00Z
                  endTime: 2026-06-07T23:59:00Z
                  effectiveSince: 2026-06-06T00:00:00Z
                  recurrences:
                    - RRULE:FREQ=WEEKLY;BYDAY=SA,SU
                  assignmentStrategies:
                    - type: every_member_assignment_strategy
                      members:
                        - type: user_member
                          userId: ${primary.id}
                        - type: user_member
                          userId: ${secondary.id}
    

    Create Schedulev2 Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new Schedulev2(name: string, args: Schedulev2Args, opts?: CustomResourceOptions);
    @overload
    def Schedulev2(resource_name: str,
                   args: Schedulev2Args,
                   opts: Optional[ResourceOptions] = None)
    
    @overload
    def Schedulev2(resource_name: str,
                   opts: Optional[ResourceOptions] = None,
                   time_zone: Optional[str] = None,
                   description: Optional[str] = None,
                   name: Optional[str] = None,
                   rotations: Optional[Sequence[Schedulev2RotationArgs]] = None,
                   teams: Optional[Sequence[str]] = None)
    func NewSchedulev2(ctx *Context, name string, args Schedulev2Args, opts ...ResourceOption) (*Schedulev2, error)
    public Schedulev2(string name, Schedulev2Args args, CustomResourceOptions? opts = null)
    public Schedulev2(String name, Schedulev2Args args)
    public Schedulev2(String name, Schedulev2Args args, CustomResourceOptions options)
    
    type: pagerduty:Schedulev2
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args Schedulev2Args
    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 Schedulev2Args
    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 Schedulev2Args
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args Schedulev2Args
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args Schedulev2Args
    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 schedulev2Resource = new Pagerduty.Index.Schedulev2("schedulev2Resource", new()
    {
        TimeZone = "string",
        Description = "string",
        Name = "string",
        Rotations = new[]
        {
            new Pagerduty.Inputs.Schedulev2RotationArgs
            {
                Events = new[]
                {
                    new Pagerduty.Inputs.Schedulev2RotationEventArgs
                    {
                        EffectiveSince = "string",
                        EndTime = "string",
                        Name = "string",
                        Recurrences = new[]
                        {
                            "string",
                        },
                        StartTime = "string",
                        AssignmentStrategies = new[]
                        {
                            new Pagerduty.Inputs.Schedulev2RotationEventAssignmentStrategyArgs
                            {
                                Type = "string",
                                Members = new[]
                                {
                                    new Pagerduty.Inputs.Schedulev2RotationEventAssignmentStrategyMemberArgs
                                    {
                                        Type = "string",
                                        UserId = "string",
                                    },
                                },
                                ShiftsPerMember = 0,
                            },
                        },
                        EffectiveUntil = "string",
                        Id = "string",
                    },
                },
                Id = "string",
            },
        },
        Teams = new[]
        {
            "string",
        },
    });
    
    example, err := pagerduty.NewSchedulev2(ctx, "schedulev2Resource", &pagerduty.Schedulev2Args{
    	TimeZone:    pulumi.String("string"),
    	Description: pulumi.String("string"),
    	Name:        pulumi.String("string"),
    	Rotations: pagerduty.Schedulev2RotationArray{
    		&pagerduty.Schedulev2RotationArgs{
    			Events: pagerduty.Schedulev2RotationEventArray{
    				&pagerduty.Schedulev2RotationEventArgs{
    					EffectiveSince: pulumi.String("string"),
    					EndTime:        pulumi.String("string"),
    					Name:           pulumi.String("string"),
    					Recurrences: pulumi.StringArray{
    						pulumi.String("string"),
    					},
    					StartTime: pulumi.String("string"),
    					AssignmentStrategies: pagerduty.Schedulev2RotationEventAssignmentStrategyArray{
    						&pagerduty.Schedulev2RotationEventAssignmentStrategyArgs{
    							Type: pulumi.String("string"),
    							Members: pagerduty.Schedulev2RotationEventAssignmentStrategyMemberArray{
    								&pagerduty.Schedulev2RotationEventAssignmentStrategyMemberArgs{
    									Type:   pulumi.String("string"),
    									UserId: pulumi.String("string"),
    								},
    							},
    							ShiftsPerMember: pulumi.Int(0),
    						},
    					},
    					EffectiveUntil: pulumi.String("string"),
    					Id:             pulumi.String("string"),
    				},
    			},
    			Id: pulumi.String("string"),
    		},
    	},
    	Teams: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    })
    
    var schedulev2Resource = new Schedulev2("schedulev2Resource", Schedulev2Args.builder()
        .timeZone("string")
        .description("string")
        .name("string")
        .rotations(Schedulev2RotationArgs.builder()
            .events(Schedulev2RotationEventArgs.builder()
                .effectiveSince("string")
                .endTime("string")
                .name("string")
                .recurrences("string")
                .startTime("string")
                .assignmentStrategies(Schedulev2RotationEventAssignmentStrategyArgs.builder()
                    .type("string")
                    .members(Schedulev2RotationEventAssignmentStrategyMemberArgs.builder()
                        .type("string")
                        .userId("string")
                        .build())
                    .shiftsPerMember(0)
                    .build())
                .effectiveUntil("string")
                .id("string")
                .build())
            .id("string")
            .build())
        .teams("string")
        .build());
    
    schedulev2_resource = pagerduty.Schedulev2("schedulev2Resource",
        time_zone="string",
        description="string",
        name="string",
        rotations=[{
            "events": [{
                "effective_since": "string",
                "end_time": "string",
                "name": "string",
                "recurrences": ["string"],
                "start_time": "string",
                "assignment_strategies": [{
                    "type": "string",
                    "members": [{
                        "type": "string",
                        "user_id": "string",
                    }],
                    "shifts_per_member": 0,
                }],
                "effective_until": "string",
                "id": "string",
            }],
            "id": "string",
        }],
        teams=["string"])
    
    const schedulev2Resource = new pagerduty.Schedulev2("schedulev2Resource", {
        timeZone: "string",
        description: "string",
        name: "string",
        rotations: [{
            events: [{
                effectiveSince: "string",
                endTime: "string",
                name: "string",
                recurrences: ["string"],
                startTime: "string",
                assignmentStrategies: [{
                    type: "string",
                    members: [{
                        type: "string",
                        userId: "string",
                    }],
                    shiftsPerMember: 0,
                }],
                effectiveUntil: "string",
                id: "string",
            }],
            id: "string",
        }],
        teams: ["string"],
    });
    
    type: pagerduty:Schedulev2
    properties:
        description: string
        name: string
        rotations:
            - events:
                - assignmentStrategies:
                    - members:
                        - type: string
                          userId: string
                      shiftsPerMember: 0
                      type: string
                  effectiveSince: string
                  effectiveUntil: string
                  endTime: string
                  id: string
                  name: string
                  recurrences:
                    - string
                  startTime: string
              id: string
        teams:
            - string
        timeZone: string
    

    Schedulev2 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 Schedulev2 resource accepts the following input properties:

    TimeZone string
    The time zone of the schedule (IANA format, e.g. America/New_York).
    Description string
    A description of the schedule. Maximum 1024 characters.
    Name string
    The name of the schedule. Maximum 255 characters.
    Rotations List<Schedulev2Rotation>
    One or more rotation blocks. Rotations documented below.
    Teams List<string>
    List of team IDs to associate with this schedule.
    TimeZone string
    The time zone of the schedule (IANA format, e.g. America/New_York).
    Description string
    A description of the schedule. Maximum 1024 characters.
    Name string
    The name of the schedule. Maximum 255 characters.
    Rotations []Schedulev2RotationArgs
    One or more rotation blocks. Rotations documented below.
    Teams []string
    List of team IDs to associate with this schedule.
    timeZone String
    The time zone of the schedule (IANA format, e.g. America/New_York).
    description String
    A description of the schedule. Maximum 1024 characters.
    name String
    The name of the schedule. Maximum 255 characters.
    rotations List<Schedulev2Rotation>
    One or more rotation blocks. Rotations documented below.
    teams List<String>
    List of team IDs to associate with this schedule.
    timeZone string
    The time zone of the schedule (IANA format, e.g. America/New_York).
    description string
    A description of the schedule. Maximum 1024 characters.
    name string
    The name of the schedule. Maximum 255 characters.
    rotations Schedulev2Rotation[]
    One or more rotation blocks. Rotations documented below.
    teams string[]
    List of team IDs to associate with this schedule.
    time_zone str
    The time zone of the schedule (IANA format, e.g. America/New_York).
    description str
    A description of the schedule. Maximum 1024 characters.
    name str
    The name of the schedule. Maximum 255 characters.
    rotations Sequence[Schedulev2RotationArgs]
    One or more rotation blocks. Rotations documented below.
    teams Sequence[str]
    List of team IDs to associate with this schedule.
    timeZone String
    The time zone of the schedule (IANA format, e.g. America/New_York).
    description String
    A description of the schedule. Maximum 1024 characters.
    name String
    The name of the schedule. Maximum 255 characters.
    rotations List<Property Map>
    One or more rotation blocks. Rotations documented below.
    teams List<String>
    List of team IDs to associate with this schedule.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the Schedulev2 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 str
    The provider-assigned unique ID for this managed resource.
    id String
    The provider-assigned unique ID for this managed resource.

    Look up Existing Schedulev2 Resource

    Get an existing Schedulev2 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?: Schedulev2State, opts?: CustomResourceOptions): Schedulev2
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            description: Optional[str] = None,
            name: Optional[str] = None,
            rotations: Optional[Sequence[Schedulev2RotationArgs]] = None,
            teams: Optional[Sequence[str]] = None,
            time_zone: Optional[str] = None) -> Schedulev2
    func GetSchedulev2(ctx *Context, name string, id IDInput, state *Schedulev2State, opts ...ResourceOption) (*Schedulev2, error)
    public static Schedulev2 Get(string name, Input<string> id, Schedulev2State? state, CustomResourceOptions? opts = null)
    public static Schedulev2 get(String name, Output<String> id, Schedulev2State state, CustomResourceOptions options)
    resources:  _:    type: pagerduty:Schedulev2    get:      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:
    Description string
    A description of the schedule. Maximum 1024 characters.
    Name string
    The name of the schedule. Maximum 255 characters.
    Rotations List<Schedulev2Rotation>
    One or more rotation blocks. Rotations documented below.
    Teams List<string>
    List of team IDs to associate with this schedule.
    TimeZone string
    The time zone of the schedule (IANA format, e.g. America/New_York).
    Description string
    A description of the schedule. Maximum 1024 characters.
    Name string
    The name of the schedule. Maximum 255 characters.
    Rotations []Schedulev2RotationArgs
    One or more rotation blocks. Rotations documented below.
    Teams []string
    List of team IDs to associate with this schedule.
    TimeZone string
    The time zone of the schedule (IANA format, e.g. America/New_York).
    description String
    A description of the schedule. Maximum 1024 characters.
    name String
    The name of the schedule. Maximum 255 characters.
    rotations List<Schedulev2Rotation>
    One or more rotation blocks. Rotations documented below.
    teams List<String>
    List of team IDs to associate with this schedule.
    timeZone String
    The time zone of the schedule (IANA format, e.g. America/New_York).
    description string
    A description of the schedule. Maximum 1024 characters.
    name string
    The name of the schedule. Maximum 255 characters.
    rotations Schedulev2Rotation[]
    One or more rotation blocks. Rotations documented below.
    teams string[]
    List of team IDs to associate with this schedule.
    timeZone string
    The time zone of the schedule (IANA format, e.g. America/New_York).
    description str
    A description of the schedule. Maximum 1024 characters.
    name str
    The name of the schedule. Maximum 255 characters.
    rotations Sequence[Schedulev2RotationArgs]
    One or more rotation blocks. Rotations documented below.
    teams Sequence[str]
    List of team IDs to associate with this schedule.
    time_zone str
    The time zone of the schedule (IANA format, e.g. America/New_York).
    description String
    A description of the schedule. Maximum 1024 characters.
    name String
    The name of the schedule. Maximum 255 characters.
    rotations List<Property Map>
    One or more rotation blocks. Rotations documented below.
    teams List<String>
    List of team IDs to associate with this schedule.
    timeZone String
    The time zone of the schedule (IANA format, e.g. America/New_York).

    Supporting Types

    Schedulev2Rotation, Schedulev2RotationArgs

    Events List<Schedulev2RotationEvent>
    One or more event blocks defining on-call periods within this rotation. Events documented below.
    Id string
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.
    Events []Schedulev2RotationEvent
    One or more event blocks defining on-call periods within this rotation. Events documented below.
    Id string
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.
    events List<Schedulev2RotationEvent>
    One or more event blocks defining on-call periods within this rotation. Events documented below.
    id String
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.
    events Schedulev2RotationEvent[]
    One or more event blocks defining on-call periods within this rotation. Events documented below.
    id string
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.
    events Sequence[Schedulev2RotationEvent]
    One or more event blocks defining on-call periods within this rotation. Events documented below.
    id str
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.
    events List<Property Map>
    One or more event blocks defining on-call periods within this rotation. Events documented below.
    id String
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.

    Schedulev2RotationEvent, Schedulev2RotationEventArgs

    EffectiveSince string
    When this event configuration begins producing shifts (ISO-8601 UTC). The API adjusts past values to the current time.
    EndTime string
    The shift end time in ISO-8601 format. The v3 API normalizes this to UTC.
    Name string
    The name of the event. Maximum 255 characters.
    Recurrences List<string>
    List of RFC 5545 recurrence rule strings. Must contain exactly one RRULE entry. May optionally include one or more EXDATE entries (dates to exclude) and one or more RDATE entries (additional dates to include). Example: ["RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"]. You can generate RRULE strings interactively using tools like RRULE Tool.
    StartTime string
    The shift start time in ISO-8601 format (e.g. 2026-06-01T09:00:00Z). The v3 API normalizes this to UTC.
    AssignmentStrategies List<Schedulev2RotationEventAssignmentStrategy>
    A block defining how on-call responsibility is assigned. Assignment strategy documented below.
    EffectiveUntil string
    When this event configuration stops producing shifts (ISO-8601 UTC). Omit for an indefinite schedule.
    Id string
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.
    EffectiveSince string
    When this event configuration begins producing shifts (ISO-8601 UTC). The API adjusts past values to the current time.
    EndTime string
    The shift end time in ISO-8601 format. The v3 API normalizes this to UTC.
    Name string
    The name of the event. Maximum 255 characters.
    Recurrences []string
    List of RFC 5545 recurrence rule strings. Must contain exactly one RRULE entry. May optionally include one or more EXDATE entries (dates to exclude) and one or more RDATE entries (additional dates to include). Example: ["RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"]. You can generate RRULE strings interactively using tools like RRULE Tool.
    StartTime string
    The shift start time in ISO-8601 format (e.g. 2026-06-01T09:00:00Z). The v3 API normalizes this to UTC.
    AssignmentStrategies []Schedulev2RotationEventAssignmentStrategy
    A block defining how on-call responsibility is assigned. Assignment strategy documented below.
    EffectiveUntil string
    When this event configuration stops producing shifts (ISO-8601 UTC). Omit for an indefinite schedule.
    Id string
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.
    effectiveSince String
    When this event configuration begins producing shifts (ISO-8601 UTC). The API adjusts past values to the current time.
    endTime String
    The shift end time in ISO-8601 format. The v3 API normalizes this to UTC.
    name String
    The name of the event. Maximum 255 characters.
    recurrences List<String>
    List of RFC 5545 recurrence rule strings. Must contain exactly one RRULE entry. May optionally include one or more EXDATE entries (dates to exclude) and one or more RDATE entries (additional dates to include). Example: ["RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"]. You can generate RRULE strings interactively using tools like RRULE Tool.
    startTime String
    The shift start time in ISO-8601 format (e.g. 2026-06-01T09:00:00Z). The v3 API normalizes this to UTC.
    assignmentStrategies List<Schedulev2RotationEventAssignmentStrategy>
    A block defining how on-call responsibility is assigned. Assignment strategy documented below.
    effectiveUntil String
    When this event configuration stops producing shifts (ISO-8601 UTC). Omit for an indefinite schedule.
    id String
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.
    effectiveSince string
    When this event configuration begins producing shifts (ISO-8601 UTC). The API adjusts past values to the current time.
    endTime string
    The shift end time in ISO-8601 format. The v3 API normalizes this to UTC.
    name string
    The name of the event. Maximum 255 characters.
    recurrences string[]
    List of RFC 5545 recurrence rule strings. Must contain exactly one RRULE entry. May optionally include one or more EXDATE entries (dates to exclude) and one or more RDATE entries (additional dates to include). Example: ["RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"]. You can generate RRULE strings interactively using tools like RRULE Tool.
    startTime string
    The shift start time in ISO-8601 format (e.g. 2026-06-01T09:00:00Z). The v3 API normalizes this to UTC.
    assignmentStrategies Schedulev2RotationEventAssignmentStrategy[]
    A block defining how on-call responsibility is assigned. Assignment strategy documented below.
    effectiveUntil string
    When this event configuration stops producing shifts (ISO-8601 UTC). Omit for an indefinite schedule.
    id string
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.
    effective_since str
    When this event configuration begins producing shifts (ISO-8601 UTC). The API adjusts past values to the current time.
    end_time str
    The shift end time in ISO-8601 format. The v3 API normalizes this to UTC.
    name str
    The name of the event. Maximum 255 characters.
    recurrences Sequence[str]
    List of RFC 5545 recurrence rule strings. Must contain exactly one RRULE entry. May optionally include one or more EXDATE entries (dates to exclude) and one or more RDATE entries (additional dates to include). Example: ["RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"]. You can generate RRULE strings interactively using tools like RRULE Tool.
    start_time str
    The shift start time in ISO-8601 format (e.g. 2026-06-01T09:00:00Z). The v3 API normalizes this to UTC.
    assignment_strategies Sequence[Schedulev2RotationEventAssignmentStrategy]
    A block defining how on-call responsibility is assigned. Assignment strategy documented below.
    effective_until str
    When this event configuration stops producing shifts (ISO-8601 UTC). Omit for an indefinite schedule.
    id str
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.
    effectiveSince String
    When this event configuration begins producing shifts (ISO-8601 UTC). The API adjusts past values to the current time.
    endTime String
    The shift end time in ISO-8601 format. The v3 API normalizes this to UTC.
    name String
    The name of the event. Maximum 255 characters.
    recurrences List<String>
    List of RFC 5545 recurrence rule strings. Must contain exactly one RRULE entry. May optionally include one or more EXDATE entries (dates to exclude) and one or more RDATE entries (additional dates to include). Example: ["RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"]. You can generate RRULE strings interactively using tools like RRULE Tool.
    startTime String
    The shift start time in ISO-8601 format (e.g. 2026-06-01T09:00:00Z). The v3 API normalizes this to UTC.
    assignmentStrategies List<Property Map>
    A block defining how on-call responsibility is assigned. Assignment strategy documented below.
    effectiveUntil String
    When this event configuration stops producing shifts (ISO-8601 UTC). Omit for an indefinite schedule.
    id String
    The ID of the schedule.

    • rotation.*.id - The ID of each rotation.
    • rotation.*.event.*.id - The ID of each event within a rotation.

    Schedulev2RotationEventAssignmentStrategy, Schedulev2RotationEventAssignmentStrategyArgs

    Type string

    The assignment strategy type. Supported values:

    • "rotating_member_assignment_strategy" — listed members rotate in sequence. Each member covers shifts_per_member consecutive shift periods before the next member takes over.
    • "every_member_assignment_strategy" — all listed members are on-call simultaneously for every occurrence.

    Breaking change: The previous value "user_assignment_strategy" is no longer valid. Use "rotating_member_assignment_strategy" instead.

    Members List<Schedulev2RotationEventAssignmentStrategyMember>
    One or more member blocks identifying who is on call. Required for both strategy types. Maximum 20 members. Members documented below.
    ShiftsPerMember int
    Number of consecutive shift occurrences each member covers before rotating. Minimum value: 1. Required when type is "rotating_member_assignment_strategy".
    Type string

    The assignment strategy type. Supported values:

    • "rotating_member_assignment_strategy" — listed members rotate in sequence. Each member covers shifts_per_member consecutive shift periods before the next member takes over.
    • "every_member_assignment_strategy" — all listed members are on-call simultaneously for every occurrence.

    Breaking change: The previous value "user_assignment_strategy" is no longer valid. Use "rotating_member_assignment_strategy" instead.

    Members []Schedulev2RotationEventAssignmentStrategyMember
    One or more member blocks identifying who is on call. Required for both strategy types. Maximum 20 members. Members documented below.
    ShiftsPerMember int
    Number of consecutive shift occurrences each member covers before rotating. Minimum value: 1. Required when type is "rotating_member_assignment_strategy".
    type String

    The assignment strategy type. Supported values:

    • "rotating_member_assignment_strategy" — listed members rotate in sequence. Each member covers shifts_per_member consecutive shift periods before the next member takes over.
    • "every_member_assignment_strategy" — all listed members are on-call simultaneously for every occurrence.

    Breaking change: The previous value "user_assignment_strategy" is no longer valid. Use "rotating_member_assignment_strategy" instead.

    members List<Schedulev2RotationEventAssignmentStrategyMember>
    One or more member blocks identifying who is on call. Required for both strategy types. Maximum 20 members. Members documented below.
    shiftsPerMember Integer
    Number of consecutive shift occurrences each member covers before rotating. Minimum value: 1. Required when type is "rotating_member_assignment_strategy".
    type string

    The assignment strategy type. Supported values:

    • "rotating_member_assignment_strategy" — listed members rotate in sequence. Each member covers shifts_per_member consecutive shift periods before the next member takes over.
    • "every_member_assignment_strategy" — all listed members are on-call simultaneously for every occurrence.

    Breaking change: The previous value "user_assignment_strategy" is no longer valid. Use "rotating_member_assignment_strategy" instead.

    members Schedulev2RotationEventAssignmentStrategyMember[]
    One or more member blocks identifying who is on call. Required for both strategy types. Maximum 20 members. Members documented below.
    shiftsPerMember number
    Number of consecutive shift occurrences each member covers before rotating. Minimum value: 1. Required when type is "rotating_member_assignment_strategy".
    type str

    The assignment strategy type. Supported values:

    • "rotating_member_assignment_strategy" — listed members rotate in sequence. Each member covers shifts_per_member consecutive shift periods before the next member takes over.
    • "every_member_assignment_strategy" — all listed members are on-call simultaneously for every occurrence.

    Breaking change: The previous value "user_assignment_strategy" is no longer valid. Use "rotating_member_assignment_strategy" instead.

    members Sequence[Schedulev2RotationEventAssignmentStrategyMember]
    One or more member blocks identifying who is on call. Required for both strategy types. Maximum 20 members. Members documented below.
    shifts_per_member int
    Number of consecutive shift occurrences each member covers before rotating. Minimum value: 1. Required when type is "rotating_member_assignment_strategy".
    type String

    The assignment strategy type. Supported values:

    • "rotating_member_assignment_strategy" — listed members rotate in sequence. Each member covers shifts_per_member consecutive shift periods before the next member takes over.
    • "every_member_assignment_strategy" — all listed members are on-call simultaneously for every occurrence.

    Breaking change: The previous value "user_assignment_strategy" is no longer valid. Use "rotating_member_assignment_strategy" instead.

    members List<Property Map>
    One or more member blocks identifying who is on call. Required for both strategy types. Maximum 20 members. Members documented below.
    shiftsPerMember Number
    Number of consecutive shift occurrences each member covers before rotating. Minimum value: 1. Required when type is "rotating_member_assignment_strategy".

    Schedulev2RotationEventAssignmentStrategyMember, Schedulev2RotationEventAssignmentStrategyMemberArgs

    Type string
    The member type. Supported values: "user_member", "empty_member".
    UserId string
    The ID of the user to assign. Required when type is "user_member".
    Type string
    The member type. Supported values: "user_member", "empty_member".
    UserId string
    The ID of the user to assign. Required when type is "user_member".
    type String
    The member type. Supported values: "user_member", "empty_member".
    userId String
    The ID of the user to assign. Required when type is "user_member".
    type string
    The member type. Supported values: "user_member", "empty_member".
    userId string
    The ID of the user to assign. Required when type is "user_member".
    type str
    The member type. Supported values: "user_member", "empty_member".
    user_id str
    The ID of the user to assign. Required when type is "user_member".
    type String
    The member type. Supported values: "user_member", "empty_member".
    userId String
    The ID of the user to assign. Required when type is "user_member".

    Import

    Schedules can be imported using the schedule id, e.g.

    $ pulumi import pagerduty:index/schedulev2:Schedulev2 example P1234AB
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    PagerDuty pulumi/pulumi-pagerduty
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the pagerduty Terraform Provider.
    pagerduty logo
    Viewing docs for PagerDuty v4.31.1
    published on Wednesday, Mar 25, 2026 by Pulumi
      Try Pulumi Cloud free. Your team will thank you.