### Example AGENTS.md File Source: https://www.pulumi.com/docs/ai/settings This markdown file defines project-specific instructions for an AI agent, covering environment setup, build commands, Git hooks, and coding standards. ```markdown # Project Instructions ## Environment setup - Run `git config core.hooksPath .githooks` to enable git hooks - Tool requirements: Node.js 20+, Python 3.11+ ## Build commands - Install dependencies: `npm install` - Run tests: `npm test` - Lint code: `npm run lint` ## Git hooks Pre-commit and pre-push hooks are located in `.githooks/`. Always run `git config core.hooksPath .githooks` before committing. ## Coding standards - Use TypeScript for all new files - Prefer async/await over callbacks - All exported functions must have JSDoc comments ``` -------------------------------- ### Bootstrapping Repository Instructions for AGENTS.md Source: https://www.pulumi.com/docs/ai/settings Instruct Neo to immediately clone the associated repository and process the AGENTS.md file for setup instructions before proceeding with any task. This ensures environment setup and coding standards are applied early. ```text When working on a task, immediately clone the associated repository (and any additional repositories involved) and look for an AGENTS.md file. Follow any setup instructions it contains before proceeding with the task. ``` -------------------------------- ### Go Example for Pulumi Auto Deploy Source: https://www.pulumi.com/docs/deployments/guides/post-automation Configures automatic deployment of stacks with a specified dependency graph in Go. This setup ensures that updates to upstream nodes automatically trigger deployments in downstream nodes. ```go package main import ( "github.com/pulumi/pulumi-auto-deploy/sdk/go/autodeploy" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) func main() { /** * * The following example configures automatic deployment of stacks with the following dependency graph: a ├── b │ ├── d │ ├── e │ └── f └── c * Whenever a node in the graph is updated, * all downstream nodes will be automatically updated via a webhook triggering Pulumi Deployments. */ pulumi.Run(func(ctx *pulumi.Context) error { projectVar := "dependency-example" organization := "pulumi" f, err := autodeploy.NewAutoDeployer(ctx, "f", &autodeploy.AutoDeployerArgs{ Organization: pulumi.String(organization), Project: pulumi.String(projectVar), Stack: pulumi.String("f"), DownstreamRefs: pulumi.StringArray{}, }) if err != nil { return err } e, err := autodeploy.NewAutoDeployer(ctx, "e", &autodeploy.AutoDeployerArgs{ Organization: pulumi.String(organization), Project: pulumi.String(projectVar), Stack: pulumi.String("e"), DownstreamRefs: pulumi.StringArray{}, }) if err != nil { return err } d, err := autodeploy.NewAutoDeployer(ctx, "d", &autodeploy.AutoDeployerArgs{ Organization: pulumi.String(organization), Project: pulumi.String(projectVar), Stack: pulumi.String("d"), DownstreamRefs: pulumi.StringArray{}, }) if err != nil { return err } c, err := autodeploy.NewAutoDeployer(ctx, "c", &autodeploy.AutoDeployerArgs{ Organization: pulumi.String(organization), Project: pulumi.String(projectVar), Stack: pulumi.String("c"), DownstreamRefs: pulumi.StringArray{}, }) if err != nil { return err } b, err := autodeploy.NewAutoDeployer(ctx, "b", &autodeploy.AutoDeployerArgs{ Organization: pulumi.String(organization), Project: pulumi.String(projectVar), Stack: pulumi.String("b"), DownstreamRefs: pulumi.StringArray{ d.Ref, e.Ref, f.Ref, }, }) if err != nil { return err } _, err = autodeploy.NewAutoDeployer(ctx, "a", &autodeploy.AutoDeployerArgs{ Organization: pulumi.String(organization), Project: pulumi.String(projectVar), Stack: pulumi.String("a"), DownstreamRefs: pulumi.StringArray{ b.Ref, c.Ref, }, }) if err != nil { return err } return nil }) } ``` -------------------------------- ### Install Tool with Pre-run Command Source: https://www.pulumi.com/docs/deployments/guides/custom-images Use this bash command to install a tool on every deployment when it's needed occasionally or during prototyping. It's suitable for smaller installs and works with the default Pulumi image. ```bash apt-get update && apt-get install -y my-tool ``` -------------------------------- ### Full pulumi-workflow-agent.yaml Configuration Example Source: https://www.pulumi.com/docs/deployments/deployments/runners This comprehensive example shows all available configuration parameters for the `pulumi-workflow-agent.yaml` file, including settings for working directory, deploy target, single run mode, image pulling, and enabled workflow types. ```yaml # pulumi-workflow-agent.yaml ## Required settings # Pulumi token provided when creating a new workflow runner pool. # Required unless using OIDC. # Environment variable override: PULUMI_AGENT_TOKEN token: pul-xxx ## Optional settings # If using Self-Hosted Pulumi, set this to the API domain of your instance. # Trailing slashes are stripped automatically. # Environment variable override: PULUMI_AGENT_SERVICE_URL service_url: "https://api.pulumi.com" # The base path from which to load the runner binaries (workflow-runner and, # for Docker, workflow-runner-embeddable). Defaults to the directory of the # customer-managed-workflow-agent binary (usually ~/.pulumi/bin/). # Environment variable override: PULUMI_AGENT_WORKING_DIRECTORY working_directory: "" # Host directory used to create temporary directories that are mounted into # the runner container. Leave empty to use the OS default temporary location. # Environment variable override: PULUMI_AGENT_SHARED_VOLUME_DIRECTORY shared_volume_directory: "" # Where workflow jobs are executed. One of: docker, kubernetes. # - docker: the agent launches runner containers via the local Docker socket. # - kubernetes: the agent launches runner Pods via the in-cluster Kubernetes API. # Environment variable override: PULUMI_AGENT_DEPLOY_TARGET deploy_target: "docker" # If true, the runner exits after completing a single workflow job. # Useful for ephemeral, one-shot runners (for example, Kubernetes Jobs). # Environment variable override: PULUMI_AGENT_SINGLE_RUN single_run: false # If true, the runner pulls the workflow image from the registry on each # job. If false, it uses a locally cached image. (Docker target only.) # Environment variable override: PULUMI_AGENT_PULL_IMAGE pull_image: true # Workflow types this runner is allowed to claim. All types are enabled by # default. Set this to dedicate runners to specific kinds of work. # Valid values: deployment, insights_scan, policy_evaluation. # Environment variable override: PULUMI_AGENT_ENABLED_WORKFLOW_TYPES # Environment variable format is comma-separated: # PULUMI_AGENT_ENABLED_WORKFLOW_TYPES="deployment,insights_scan,policy_evaluation" enabled_workflow_types: - deployment - insights_scan - policy_evaluation ``` -------------------------------- ### Dockerfile for Custom Executor Image Source: https://www.pulumi.com/docs/deployments/guides/custom-images This Dockerfile example shows how to build a custom executor image based on `pulumi/pulumi-base`. It pins the Pulumi CLI version and installs the GitHub CLI (`gh`). Ensure the image is hosted in a registry accessible by your deployment runner. ```dockerfile # Pin the Pulumi CLI version explicitly. Floating tags like :latest mean the # image and your local CLI can drift apart between deployments. FROM pulumi/pulumi-base:3.236.0 RUN apt-get update \ && apt-get install -y --no-install-recommends gh \ && rm -rf /var/lib/apt/lists/* ``` -------------------------------- ### Run npm install with Pulumi ESC Environment Source: https://www.pulumi.com/docs/deployments/guides/cloud-credentials This command demonstrates how to execute a pre-run command, such as `npm install`, within the context of a specified Pulumi ESC environment. This ensures that the command has access to the necessary credentials and configurations defined in the ESC environment. ```bash pulumi env run my-esc-project/my-esc-environment -- npm install ``` -------------------------------- ### YAML Example for Pulumi Auto Deploy Source: https://www.pulumi.com/docs/deployments/guides/post-automation Defines automatic deployment of stacks with a dependency graph using Pulumi YAML. This configuration mirrors the Go example, specifying resources and their downstream references. ```yaml name: auto-deploy-demo runtime: yaml description: A simple auto-deploy example variables: project: dependency-example # TODO: update once https://github.com/pulumi/pulumi-yaml/issues/461 is fixed organization: pulumi resources: f: type: auto-deploy:AutoDeployer properties: organization: ${organization} project: ${project} stack: f downstreamRefs: [] e: type: auto-deploy:AutoDeployer properties: organization: ${organization} project: ${project} stack: e downstreamRefs: [] d: type: auto-deploy:AutoDeployer properties: organization: ${organization} project: ${project} stack: d downstreamRefs: [] c: type: auto-deploy:AutoDeployer properties: organization: ${organization} project: ${project} stack: c downstreamRefs: [] b: type: auto-deploy:AutoDeployer properties: organization: ${organization} project: ${project} stack: b downstreamRefs: - ${d.ref} - ${e.ref} - ${f.ref} a: type: auto-deploy:AutoDeployer properties: organization: ${organization} project: ${project} stack: a downstreamRefs: - ${b.ref} - ${c.ref} ``` -------------------------------- ### Example Path Filters Source: https://www.pulumi.com/docs/deployments/deployments/using/settings Demonstrates how include and exclude filters are applied. Note that exclude filters take precedence and cannot be overridden by include filters. ```yaml !foo/** foo/bar/** ``` -------------------------------- ### Resource Search Queries Source: https://www.pulumi.com/docs/ai/mcp-server Use these example queries with the `resource-search` tool to find Pulumi-managed cloud resources. Supports searching by type, name, tags, and properties. ```text type:aws:s3/bucket:Bucket ``` ```text name:*production* ``` ```text NOT _exists_:tags ``` -------------------------------- ### Install Specific Pulumi Agent Skill Groups Universally Source: https://www.pulumi.com/docs/ai/skills Install specific groups of Pulumi agent skills using the universal installation method. This allows for targeted installation of migration, Pulumi overview/specialized, or delegation skills. ```bash npx skills add pulumi/agent-skills/migration --skill '*' # 4 migration skills npx skills add pulumi/agent-skills/pulumi --skill '*' # 9 pulumi skills (overview + specialized) npx skills add pulumi/agent-skills/delegation --skill '*' # 1 delegation skill ``` -------------------------------- ### Universal Installation of Pulumi Agent Skills Source: https://www.pulumi.com/docs/ai/skills Install all Pulumi agent skills for use with any AI coding assistant. This command installs all skills from the agent-skills package. ```bash npx skills add pulumi/agent-skills --skill '*' ``` -------------------------------- ### Basic pulumi-workflow-agent.yaml Configuration Source: https://www.pulumi.com/docs/deployments/deployments/runners This is a minimal example of the `pulumi-workflow-agent.yaml` configuration file. It includes the required `token` setting for authentication and the `service_url` for self-hosted Pulumi instances. ```yaml # pulumi-workflow-agent.yaml ## Required settings # Pulumi token provided when creating a new workflow runner pool. # Required unless using OIDC. # Environment variable override: PULUMI_AGENT_TOKEN token: pul-xxx ## Optional settings # If using Self-Hosted Pulumi, set this to the API domain of your instance. # Trailing slashes are stripped automatically. # Environment variable override: PULUMI_AGENT_SERVICE_URL service_url: "https://api.pulumi.com" ``` -------------------------------- ### Go: Create Drift Schedule Source: https://www.pulumi.com/docs/deployments/deployments/drift Configure a drift detection schedule in Go. This example shows how to set the organization, project, stack, cron schedule, and auto-remediation flag. ```go package main import ( "github.com/pulumi/pulumi-pulumiservice/sdk/go/pulumiservice" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) func main() { pulumi.Run(func(ctx *pulumi.Context) error { driftDetectionSchedule, err := pulumiservice.NewDriftSchedule(ctx, "driftDetectionSchedule", &pulumiservice.DriftScheduleArgs{ Organization: pulumi.String("my-org"), Project: pulumi.String("my-project"), Stack: pulumi.String("production"), ScheduleCron: pulumi.String("0 0 * * *"), // Run drift detection daily at midnight AutoRemediate: pulumi.Bool(true), // Automatically remediate any drift detected }) if err != nil { return err } ctx.Export("driftScheduleId", driftDetectionSchedule.ScheduleId) return nil }) } ``` -------------------------------- ### Java: Create Drift Schedule Source: https://www.pulumi.com/docs/deployments/deployments/drift This Java example demonstrates how to create a drift detection schedule. It includes settings for organization, project, stack, cron timing, and auto-remediation. ```java import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.pulumiservice.DriftSchedule; import com.pulumi.pulumiservice.DriftScheduleArgs; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } private static void stack(Context ctx) { var driftDetectionSchedule = new DriftSchedule("driftDetectionSchedule", DriftScheduleArgs.builder() .organization("my-org") .project("my-project") .stack("production") .scheduleCron("0 0 * * *") // Run drift detection daily at midnight .autoRemediate(true) // Automatically remediate any drift detected .build()); ctx.export("driftScheduleId", driftDetectionSchedule.scheduleId()); } } ``` -------------------------------- ### Example SSO Binding for HTTP-POST Source: https://www.pulumi.com/docs/administration/access-identity/saml/troubleshooting This XML snippet demonstrates a SingleSignOnService element configured for the HTTP-POST binding, which is essential for Pulumi Cloud to establish authentication with the IdP. ```xml ``` -------------------------------- ### Review Stack Configuration Source: https://www.pulumi.com/docs/deployments/deployments/review-stacks Example configuration for a review Pulumi stack, downsizing resources like container count, instance type, and number of instances to reduce costs. ```yaml config: aws:region: us-west-2 webserver:apiServiceDesiredCount: "2" webserver:clusterInstanceType: t3.large webserver:clusterNumInstances: "1" ``` -------------------------------- ### Create a Raw Deployment Schedule (C#) Source: https://www.pulumi.com/docs/deployments/deployments/schedules This C# example demonstrates creating a deployment schedule for automated updates. It requires the organization, project, stack, and a cron string for the schedule. ```csharp using Pulumi; using PulumiService = Pulumi.PulumiService; class Program { static Task Main() => Deployment.RunAsync(() => { var rawSchedule = new PulumiService.DeploymentSchedule("rawSchedule", new PulumiService.DeploymentScheduleArgs { Organization = "my-org", Project = "my-project", Stack = "prod-stack", ScheduleCron = "0 0 * * *", // Run an update daily at midnight PulumiOperation = PulumiService.PulumiOperation.Update, }); return new Dictionary { { "scheduleId", rawSchedule.ScheduleId } }; }); } ``` -------------------------------- ### Create a Raw Deployment Schedule (Go) Source: https://www.pulumi.com/docs/deployments/deployments/schedules Use this Go snippet to set up a deployment schedule for automated Pulumi operations. Ensure you provide the organization, project, stack, and a valid cron expression. ```go package main import ( "github.com/pulumi/pulumi-pulumiservice/sdk/go/pulumiservice" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) func main() { pulumi.Run(func(ctx *pulumi.Context) error { rawSchedule, err := pulumiservice.NewDeploymentSchedule(ctx, "rawSchedule", &pulumiservice.DeploymentScheduleArgs{ Organization: pulumi.String("my-org"), Project: pulumi.String("my-project"), Stack: pulumi.String("prod-stack"), ScheduleCron: pulumi.String("0 0 * * *"), // Run an update daily at midnight PulumiOperation: pulumiservice.PulumiOperationUpdate, }) if err != nil { return err } ctx.Export("scheduleId", rawSchedule.ScheduleID) return nil }) } ``` -------------------------------- ### Install Pulumi Agent Skills for a Specific Agent Source: https://www.pulumi.com/docs/ai/skills Install Pulumi agent skills for a particular AI agent, such as Junie, using the `--agent` flag with the universal installation command. ```bash npx skills add pulumi/agent-skills --skill '*' --agent junie ``` -------------------------------- ### Install Pulumi Agent Skills via Claude Code Plugin System Source: https://www.pulumi.com/docs/ai/skills Use these commands to install Pulumi agent skills directly within the Claude Code plugin system. This is the simplest installation method for Claude Code users. ```bash claude plugin marketplace add pulumi/agent-skills claude plugin install pulumi-migration # Install migration skills claude plugin install pulumi # Install Pulumi skills (overview + specialized) claude plugin install pulumi-delegation # Install delegation skills (Neo handoff) ``` -------------------------------- ### Create Pulumi Project and Initialize Git Source: https://www.pulumi.com/docs/deployments/get-started/deployments-using-cli Create a new Pulumi project using the `random-typescript` template and initialize a local Git repository. The `--yes` flag accepts default project settings. ```bash mkdir test_deployments && cd test_deployments pulumi new random-typescript --yes git init -b main git add . git commit -m "first commit" ``` -------------------------------- ### Example JSON Token Payload Source: https://www.pulumi.com/docs/administration/access-identity/oidc-issuers This is an example of a JSON token payload that might be received from an OIDC provider. It demonstrates nested claims that can be targeted using claim paths. ```json { "kubernetes.io": { "pod": { "name": "runner-ddfaa34e-dfrjh", "uid": "b99b58df-cce5-405a-a33d-49a4cf8cf7bd" } } } ``` -------------------------------- ### Create a Raw Deployment Schedule (Java) Source: https://www.pulumi.com/docs/deployments/deployments/schedules Configure a deployment schedule for automated operations using this Java code. Provide organization, project, stack details, and a cron expression for the schedule. ```java import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.pulumiservice.DeploymentSchedule; import com.pulumi.pulumiservice.DeploymentScheduleArgs; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } private static to stack(Context ctx) { var rawSchedule = new DeploymentSchedule("rawSchedule", DeploymentScheduleArgs.builder() .organization("my-org") .project("my-project") .stack("prod-stack") .scheduleCron("0 0 * * *") // Run an update daily at midnight .pulumiOperation(com.pulumi.pulumiservice.PulumiOperation.update()) .build()); ctx.export("scheduleId", rawSchedule.name()); } } ``` -------------------------------- ### Example SAML AuthnStatement with Session Lifetime Source: https://www.pulumi.com/docs/administration/access-identity/saml/sso An example of the XML AuthnStatement element within a SAML assertion, demonstrating how to configure the session lifetime using the SessionNotOnOrAfter attribute. If this attribute is not specified, Pulumi Cloud defaults to a 12-hour session. ```xml ``` -------------------------------- ### Fetch Issuer Certificates with OpenSSL Source: https://www.pulumi.com/docs/administration/access-identity/oidc-issuers Use this command to fetch the TLS certificates used by an OIDC issuer. Replace `example.com` with the issuer's hostname. ```bash openssl s_client -servername example.com -showcerts -connect example.com:443 ``` -------------------------------- ### Stack Preview Payload Example Source: https://www.pulumi.com/docs/deployments/webhooks This payload is generated for stack previews. It indicates if the preview was successful or failed and details the resource changes. ```json { "user": { "name": "Morty Smith", "githubLogin": "morty", "avatarUrl": "https://crazy-adventures.net/morty.png" }, "organization": { "name": "Crazy Adventures", "githubLogin": "crazy-adventures", "avatarUrl": "https://crazy-adventures.net/logo.png" }, "projectName": "website", "stackName": "website-prod", "updateUrl": "https://app.pulumi.com/crazy-adventures/website/website-prod/previews/11bf162b-d9d5-4715-8f88-20dcd0e0b167", "kind": "update", "result": "failed", "resourceChanges": { "update": 3, "delete": 1, "update-replace": 2 }, "isPreview": true } ``` -------------------------------- ### Stack Creation Payload Example Source: https://www.pulumi.com/docs/deployments/webhooks This payload is emitted when a new stack is created. It includes user and organization details, and the action taken. ```json { "user": { "name": "Morty Smith", "githubLogin": "morty", "avatarUrl": "https://crazy-adventures.net/morty.png" }, "organization": { "name": "Crazy Adventures", "githubLogin": "crazy-adventures", "avatarUrl": "https://crazy-adventures.net/logo.png" }, "action": "created", "projectName": "website", "stackName": "website-prod" } ``` -------------------------------- ### Create a Raw Deployment Schedule (Python) Source: https://www.pulumi.com/docs/deployments/deployments/schedules This Python code creates a deployment schedule for automated updates. Configure it with your organization, project, and stack details, and specify a cron schedule. ```python import pulumi import pulumi_pulumiservice as pulumiservice organization_name = "my-org" project_name = "my-project" stack_name = "prod-stack" # Create a raw deployment schedule raw_schedule = pulumiservice.DeploymentSchedule("rawSchedule", organization=organization_name, project=project_name, stack=stack_name, schedule_cron="0 0 * * *", # Run an update daily at midnight pulumi_operation=pulumiservice.PulumiOperation.update) pulumi.export('scheduleId', raw_schedule.schedule_id) ``` -------------------------------- ### Sample GitHub Actions Workflow for Pulumi Preview Source: https://www.pulumi.com/docs/administration/access-identity/oidc-issuers/github This workflow demonstrates how to use the Pulumi Auth Action to obtain an organization token and then use the Pulumi CLI to perform a preview. Ensure 'id-token: write' and 'contents: read' permissions are set. ```yaml name: Pulumi preview on: workflow_dispatch: permissions: id-token: write contents: read jobs: run_cron_job: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pulumi/auth-actions@v2 with: organization: org-name requested-token-type: urn:pulumi:token-type:access_token:organization - uses: pulumi/actions@v6 with: command: preview stack-name: org-name/stack-name ``` -------------------------------- ### Docker Compose TLS Configuration Source: https://www.pulumi.com/docs/administration/self-hosting/components/console Example of configuring the NODE_EXTRA_CA_CERTS environment variable and volume mount for TLS in a Docker Compose deployment. ```yaml console: environment: NODE_EXTRA_CA_CERTS: "/etc/pulumi/certs/api-ca.pem" volumes: - ./certs/api-ca.pem:/etc/pulumi/certs/api-ca.pem:ro ``` -------------------------------- ### Drift Remediation Payload Example Source: https://www.pulumi.com/docs/deployments/webhooks This payload is emitted after a drift remediation operation. It includes the status of the remediation and details of any resource changes made. ```json { "user": { "name": "Morty Smith", "githubLogin": "morty", "avatarUrl": "https://crazy-adventures.net/morty.png" }, "organization": { "name": "Crazy Adventures", "githubLogin": "crazy-adventures", "avatarUrl": "https://crazy-adventures.net/logo.png" }, "projectName": "website", "stackName": "website-prod", "status": "succeeded", "resourceChanges": { "update": 3, "delete": 1 }, "referenceUrl": "https://app.pulumi.com/crazy-adventures/website/website-prod/deployments/128" } ``` -------------------------------- ### Open an Environment with an Active Grant via CLI Source: https://www.pulumi.com/docs/esc/concepts/approvals Once an open request is approved and applied, use the `pulumi env open` command to access the environment. Ensure you have the necessary permissions and are within the access duration window. ```bash pulumi env open my-org/my-project/prod-env ``` -------------------------------- ### Deployment Payload Example Source: https://www.pulumi.com/docs/deployments/webhooks This payload is emitted when a deployment operation is initiated or progresses. It includes deployment URL, version, operation type, and status. ```json { "user": { "name": "Morty Smith", "githubLogin": "morty", "avatarUrl": "https://crazy-adventures.net/morty.png" }, "organization": { "name": "Crazy Adventures", "githubLogin": "crazy-adventures", "avatarUrl": "https://crazy-adventures.net/logo.png" }, "projectName": "website", "stackName": "website-prod", "deploymentUrl": "https://app.pulumi.com/crazy-adventures/website/website-prod/deployments/127", "version": 127, "operation": "update", "status": "running" } ``` -------------------------------- ### Configure Kubernetes Image Pull Policy Source: https://www.pulumi.com/docs/deployments/deployments/runners Set the Kubernetes image pull policy for the workflow runner deployment. Example uses 'IfNotPresent'. ```yaml PULUMI_AGENT_IMAGE_PULL_POLICY: IfNotPresent ``` -------------------------------- ### Create a Raw Deployment Schedule (TypeScript) Source: https://www.pulumi.com/docs/deployments/deployments/schedules Use this snippet to create a basic deployment schedule for automatic updates. It requires organization, project, and stack names, along with a cron expression for scheduling. ```typescript import * as pulumi from "@pulumi/pulumi"; import * as pulumiservice from "@pulumi/pulumiservice"; const organizationName = "my-org"; const projectName = "my-project"; const stackName = "prod-stack"; const rawSchedule = new pulumiservice.DeploymentSchedule("rawSchedule", { organization: organizationName, project: projectName, stack: stackName, scheduleCron: "0 0 * * *", // Run an update daily at midnight pulumiOperation: pulumiservice.PulumiOperation.update }); export const scheduleId = rawSchedule.scheduleId; ``` -------------------------------- ### Stack Update Payload Example Source: https://www.pulumi.com/docs/deployments/webhooks This payload is sent when a stack is updated. It contains details about the update, including the kind of operation, result, and resource changes. ```json { "user": { "name": "Morty Smith", "githubLogin": "morty", "avatarUrl": "https://crazy-adventures.net/morty.png" }, "organization": { "name": "Crazy Adventures", "githubLogin": "crazy-adventures", "avatarUrl": "https://crazy-adventures.net/logo.png" }, "projectName": "website", "stackName": "website-prod", "updateUrl": "https://app.pulumi.com/crazy-adventures/website/website-prod/updates/42", "kind": "refresh", "result": "succeeded", "resourceChanges": { "update": 3, "delete": 1, "update-replace": 2 }, "isPreview": false } ```