1. Packages
  2. Packages
  3. Descope Provider
Viewing docs for Descope v0.3.13
published on Tuesday, Jul 14, 2026 by Descope

Descope Provider

descope logo
Viewing docs for Descope v0.3.13
published on Tuesday, Jul 14, 2026 by Descope

    Installation

    The Descope provider is available as a package in all Pulumi languages:

    Overview

    The Descope Pulumi Provider lets you manage your Descope project configuration as infrastructure-as-code. Configure authentication methods, define roles and permissions, set up third-party connectors, manage flows, and more—all declaratively in Pulumi.

    Descope is an authentication and user management platform. The Pulumi provider manages project configuration (how your project behaves), not users or tenants (use the Descope Management API or SDKs for those).

    Requirements

    • Pulumi 1.0 or later
    • A Descope Pro or Enterprise plan
    • A Management Key from Company Settings in the Descope console

    Authentication

    The provider authenticates with the Descope API using a management key. You can create management keys in the Company Settings section of the Descope console.

    Security Note: Never hardcode your management key in Pulumi configuration files, as this risks exposing it in version control. Use environment variables or a secrets manager instead.

    Environment Variables

    VariableDescription
    DESCOPE_MANAGEMENT_KEYA valid management key for your Descope company
    DESCOPE_BASE_URLOverride the Descope API base URL (optional, for testing)
    export DESCOPE_MANAGEMENT_KEY="K2..."
    pulumi preview
    

    Example Usage

    Minimal Configuration

    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: nodejs
    
    import * as pulumi from "@pulumi/pulumi";
    
    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: python
    
    import pulumi
    
    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: dotnet
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    
    return await Deployment.RunAsync(() =>
    {
    });
    
    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: go
    
    package main
    
    import (
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		return nil
    	})
    }
    
    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: yaml
    
    {}
    
    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: java
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    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) {
        }
    }
    
    Example currently unavailable in this language
    

    Creating a Project

    import * as pulumi from "@pulumi/pulumi";
    import * as descope from "@descope/pulumi-descope";
    
    const example = new descope.Project("example", {
        name: "my-app",
        environment: "production",
        tags: ["prod"],
    });
    
    import pulumi
    import descope_pulumi as descope
    
    example = descope.Project("example",
        name="my-app",
        environment="production",
        tags=["prod"])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Descope = Descope.Pulumi.Descope;
    
    return await Deployment.RunAsync(() =>
    {
        var example = new Descope.Project("example", new()
        {
            Name = "my-app",
            Environment = "production",
            Tags = new[]
            {
                "prod",
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/descope/pulumi-descope/sdk/go/descope"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := descope.NewProject(ctx, "example", &descope.ProjectArgs{
    			Name:        pulumi.String("my-app"),
    			Environment: pulumi.String("production"),
    			Tags: pulumi.StringArray{
    				pulumi.String("prod"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: descope:Project
        properties:
          name: my-app
          environment: production
          tags:
            - prod
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.descope.pulumi.descope.Project;
    import com.descope.pulumi.descope.ProjectArgs;
    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) {
            var example = new Project("example", ProjectArgs.builder()
                .name("my-app")
                .environment("production")
                .tags("prod")
                .build());
    
        }
    }
    
    pulumi {
      required_providers {
        descope = {
          source = "pulumi/descope"
        }
      }
    }
    
    resource "descope_project" "example" {
      name        = "my-app"
      environment = "production"
      tags        = ["prod"]
    }
    

    Full Provider Configuration

    If you need to explicitly configure the provider (e.g. in a module or when not using environment variables):

    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: nodejs
    config:
        descope:managementKey:
            value: 'TODO: var.descope_management_key'
    
    import * as pulumi from "@pulumi/pulumi";
    
    const config = new pulumi.Config();
    const descopeManagementKey = config.require("descopeManagementKey");
    
    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: python
    config:
        descope:managementKey:
            value: 'TODO: var.descope_management_key'
    
    import pulumi
    
    config = pulumi.Config()
    descope_management_key = config.require("descopeManagementKey")
    
    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: dotnet
    config:
        descope:managementKey:
            value: 'TODO: var.descope_management_key'
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    
    return await Deployment.RunAsync(() =>
    {
        var config = new Config();
        var descopeManagementKey = config.Require("descopeManagementKey");
    });
    
    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: go
    config:
        descope:managementKey:
            value: 'TODO: var.descope_management_key'
    
    package main
    
    import (
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		cfg := config.New(ctx, "")
    		descopeManagementKey := cfg.Require("descopeManagementKey")
    		return nil
    	})
    }
    
    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: yaml
    config:
        descope:managementKey:
            value: 'TODO: var.descope_management_key'
    
    configuration:
      descopeManagementKey:
        type: string
    
    # Pulumi.yaml provider configuration file
    name: configuration-example
    runtime: java
    config:
        descope:managementKey:
            value: 'TODO: var.descope_management_key'
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    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) {
            final var config = ctx.config();
            final var descopeManagementKey = config.require("descopeManagementKey");
        }
    }
    
    variable "descopeManagementKey" {
      type = string
    }
    

    Resources

    ResourceDescription
    descope.ProjectFull project configuration: authentication, RBAC, connectors, flows, and more
    descope.ManagementKeyProgrammatic management keys with scoped permissions
    descope.DescoperDescope console user accounts with role assignments

    Guides

    • Quickstart – Set up the provider and manage your first project

    Configuration Reference

    • baseUrl (String) An optional base URL for the Descope API
    • managementKey (String, Sensitive) A valid management key for your Descope company
    • projectId (String, Deprecated)
    descope logo
    Viewing docs for Descope v0.3.13
    published on Tuesday, Jul 14, 2026 by Descope

      Try Pulumi Cloud free.
      Your team will thank you.

      Start free trial