{
  "name": "astra",
  "displayName": "Astra DB",
  "version": "1.0.42",
  "description": "A Pulumi package for creating and managing Astra DB cloud resources.",
  "keywords": [
    "pulumi",
    "astra",
    "category/cloud",
    "datastax"
  ],
  "homepage": "https://www.pulumi.com",
  "license": "Apache-2.0",
  "attribution": "This Pulumi package is based on the [`astra` Terraform Provider](https://github.com/datastax/terraform-provider-astra).",
  "repository": "https://github.com/pulumiverse/pulumi-astra",
  "pluginDownloadURL": "github://api.github.com/pulumiverse",
  "publisher": "pulumiverse",
  "meta": {
    "moduleFormat": "(.*)(?:/[^/]*)"
  },
  "language": {
    "csharp": {
      "compatibility": "tfbridge20",
      "namespaces": null,
      "packageReferences": {
        "Pulumi": "3.*"
      },
      "rootNamespace": "Pulumiverse"
    },
    "go": {
      "generateExtraInputTypes": true,
      "generateResourceContainerTypes": true,
      "importBasePath": "github.com/pulumiverse/pulumi-astra/sdk/go/astra"
    },
    "nodejs": {
      "compatibility": "tfbridge20",
      "dependencies": {
        "@pulumi/pulumi": "^3.0.0"
      },
      "devDependencies": {
        "@types/mime": "^2.0.0",
        "@types/node": "^10.0.0"
      },
      "disableUnionOutputTypes": true,
      "packageDescription": "A Pulumi package for creating and managing Astra DB cloud resources.",
      "packageName": "@pulumiverse/astra",
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/datastax/terraform-provider-astra)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> first check the [`pulumi-astra` repo](https://github.com/pulumiverse/pulumi-astra/issues); however, if that doesn't turn up anything,\n> please consult the source [`terraform-provider-astra` repo](https://github.com/datastax/terraform-provider-astra/issues).",
      "typescriptVersion": ""
    },
    "python": {
      "compatibility": "tfbridge20",
      "packageName": "pulumiverse_astra",
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/datastax/terraform-provider-astra)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> first check the [`pulumi-astra` repo](https://github.com/pulumiverse/pulumi-astra/issues); however, if that doesn't turn up anything,\n> please consult the source [`terraform-provider-astra` repo](https://github.com/datastax/terraform-provider-astra/issues).",
      "requires": {
        "pulumi": ">=3.0.0,<4.0.0"
      }
    }
  },
  "config": {
    "variables": {
      "token": {
        "type": "string",
        "description": "Authentication token for Astra API.\n"
      }
    }
  },
  "types": {
    "astra:index/AccessListAddress:AccessListAddress": {
      "properties": {
        "address": {
          "type": "string",
          "description": "IP Address/CIDR group that should have access\n",
          "language": {
            "python": {
              "mapCase": false
            }
          },
          "willReplaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Description for the IP Address/CIDR group\n",
          "language": {
            "python": {
              "mapCase": false
            }
          },
          "willReplaceOnChanges": true
        },
        "enabled": {
          "type": "boolean",
          "description": "Enable/disable this IP Address/CIDR group's access\n",
          "language": {
            "python": {
              "mapCase": false
            }
          },
          "willReplaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "address",
        "enabled"
      ]
    },
    "astra:index/getAccessListAddress:getAccessListAddress": {
      "properties": {
        "address": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "description": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "enabled": {
          "type": "boolean",
          "description": "The Access list is enabled or disabled.\n",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "address",
        "enabled"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "astra:index/getAstraDatabasesResult:getAstraDatabasesResult": {
      "properties": {
        "additionalKeyspaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "cloudProvider": {
          "type": "string",
          "description": "The cloud provider\n",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "cqlshUrl": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "dataEndpointUrl": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "datacenters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "grafanaUrl": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "graphqlUrl": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "id": {
          "type": "string",
          "description": "The ID of this resource.\n",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "keyspace": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "name": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "nodeCount": {
          "type": "integer",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "organizationId": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "ownerId": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "replicationFactor": {
          "type": "integer",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "status": {
          "type": "string",
          "description": "Status flter. Only return databases with matching status, if supplied. Otherwise return all databases matching other requirements\n",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "totalStorage": {
          "type": "integer",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "additionalKeyspaces",
        "cloudProvider",
        "cqlshUrl",
        "dataEndpointUrl",
        "datacenters",
        "grafanaUrl",
        "graphqlUrl",
        "id",
        "keyspace",
        "name",
        "nodeCount",
        "organizationId",
        "ownerId",
        "regions",
        "replicationFactor",
        "status",
        "totalStorage"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "astra:index/getAvailableRegionsResult:getAvailableRegionsResult": {
      "properties": {
        "cloudProvider": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "displayName": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "region": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "zone": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "cloudProvider",
        "displayName",
        "region",
        "zone"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "astra:index/getKeyspacesResult:getKeyspacesResult": {
      "properties": {
        "name": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "astra:index/getPrivateLinkEndpointsResult:getPrivateLinkEndpointsResult": {
      "properties": {
        "createTime": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "description": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "endpointId": {
          "type": "string",
          "description": "Endpoint ID.\n",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "status": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "endpointId",
        "status"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "astra:index/getPrivateLinksResult:getPrivateLinksResult": {
      "properties": {
        "allowedPrincipals": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "datacenterId": {
          "type": "string",
          "description": "The datacenter where of the Astra database.\n",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "endpoints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "serviceName": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "allowedPrincipals",
        "datacenterId",
        "endpoints",
        "serviceName"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "astra:index/getRolesResult:getRolesResult": {
      "properties": {
        "description": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "effect": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "policies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "roleId": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "roleName": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "description",
        "effect",
        "policies",
        "resources",
        "roleId",
        "roleName"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "astra:index/getSecureConnectBundleUrlSecureBundle:getSecureConnectBundleUrlSecureBundle": {
      "properties": {
        "customDomainBundles": {
          "type": "array",
          "items": {
            "$ref": "#/types/astra:index%2FgetSecureConnectBundleUrlSecureBundleCustomDomainBundle:getSecureConnectBundleUrlSecureBundleCustomDomainBundle"
          },
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "datacenterId": {
          "type": "string",
          "description": "The ID of the Astra datacenter. If omitted, all bundles will be fetched.\n",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "internalMigrationProxyUrl": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "internalUrl": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "migrationProxyUrl": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "url": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "customDomainBundles",
        "datacenterId",
        "internalMigrationProxyUrl",
        "internalUrl",
        "migrationProxyUrl",
        "url"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "astra:index/getSecureConnectBundleUrlSecureBundleCustomDomainBundle:getSecureConnectBundleUrlSecureBundleCustomDomainBundle": {
      "properties": {
        "apiFqdn": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "cqlFqdn": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "dashboardFqdn": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "domain": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "url": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "apiFqdn",
        "cqlFqdn",
        "dashboardFqdn",
        "domain",
        "url"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "astra:index/getStreamingTenantTokensToken:getStreamingTenantTokensToken": {
      "properties": {
        "iat": {
          "type": "integer",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "iss": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "sub": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "token": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "tokenId": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "iat",
        "iss",
        "sub",
        "token",
        "tokenId"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "astra:index/getUsersUser:getUsersUser": {
      "properties": {
        "email": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "#/types/astra:index%2FgetUsersUserRole:getUsersUserRole"
          },
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "status": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        },
        "userId": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "email",
        "roles",
        "status",
        "userId"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "astra:index/getUsersUserRole:getUsersUserRole": {
      "properties": {
        "roleId": {
          "type": "string",
          "language": {
            "python": {
              "mapCase": false
            }
          }
        }
      },
      "type": "object",
      "required": [
        "roleId"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    }
  },
  "provider": {
    "description": "The provider type for the astra package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n",
    "properties": {
      "token": {
        "type": "string",
        "description": "Authentication token for Astra API.\n"
      }
    },
    "type": "object",
    "inputProperties": {
      "token": {
        "type": "string",
        "description": "Authentication token for Astra API.\n"
      }
    }
  },
  "resources": {
    "astra:index/accessList:AccessList": {
      "description": "`astra.AccessList` resource represents a database access list, used to limit the ip's / CIDR groups that have access to a database.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst example = new astra.AccessList(\"example\", {\n    addresses: [\n        {\n            address: \"0.0.0.1/0\",\n            enabled: true,\n        },\n        {\n            address: \"0.0.0.2/0\",\n            enabled: true,\n        },\n        {\n            address: \"0.0.0.3/0\",\n            enabled: true,\n        },\n    ],\n    databaseId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    enabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_astra as astra\n\nexample = astra.AccessList(\"example\",\n    addresses=[\n        astra.AccessListAddressArgs(\n            address=\"0.0.0.1/0\",\n            enabled=True,\n        ),\n        astra.AccessListAddressArgs(\n            address=\"0.0.0.2/0\",\n            enabled=True,\n        ),\n        astra.AccessListAddressArgs(\n            address=\"0.0.0.3/0\",\n            enabled=True,\n        ),\n    ],\n    database_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumiverse.Astra;\n\nreturn await Deployment.RunAsync(() => \n{\n    var example = new Astra.AccessList(\"example\", new()\n    {\n        Addresses = new[]\n        {\n            new Astra.Inputs.AccessListAddressArgs\n            {\n                Address = \"0.0.0.1/0\",\n                Enabled = true,\n            },\n            new Astra.Inputs.AccessListAddressArgs\n            {\n                Address = \"0.0.0.2/0\",\n                Enabled = true,\n            },\n            new Astra.Inputs.AccessListAddressArgs\n            {\n                Address = \"0.0.0.3/0\",\n                Enabled = true,\n            },\n        },\n        DatabaseId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n        Enabled = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-astra/sdk/go/astra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.NewAccessList(ctx, \"example\", &astra.AccessListArgs{\n\t\t\tAddresses: AccessListAddressArray{\n\t\t\t\t&AccessListAddressArgs{\n\t\t\t\t\tAddress: pulumi.String(\"0.0.0.1/0\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t&AccessListAddressArgs{\n\t\t\t\t\tAddress: pulumi.String(\"0.0.0.2/0\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t&AccessListAddressArgs{\n\t\t\t\t\tAddress: pulumi.String(\"0.0.0.3/0\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDatabaseId: pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\"),\n\t\t\tEnabled:    pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.AccessList;\nimport com.pulumi.astra.AccessListArgs;\nimport com.pulumi.astra.inputs.AccessListAddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new AccessList(\"example\", AccessListArgs.builder()        \n            .addresses(            \n                AccessListAddressArgs.builder()\n                    .address(\"0.0.0.1/0\")\n                    .enabled(true)\n                    .build(),\n                AccessListAddressArgs.builder()\n                    .address(\"0.0.0.2/0\")\n                    .enabled(true)\n                    .build(),\n                AccessListAddressArgs.builder()\n                    .address(\"0.0.0.3/0\")\n                    .enabled(true)\n                    .build())\n            .databaseId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\")\n            .enabled(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: astra:AccessList\n    properties:\n      addresses:\n        - address: 0.0.0.1/0\n          enabled: true\n        - address: 0.0.0.2/0\n          enabled: true\n        - address: 0.0.0.3/0\n          enabled: true\n      databaseId: a6bc9c26-e7ce-424f-84c7-0a00afb12588\n      enabled: true\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n# the import id should be the database_id.\n\n```sh\n $ pulumi import astra:index/accessList:AccessList example a6bc9c26-e7ce-424f-84c7-0a00afb12588\n```\n\n ",
      "properties": {
        "addresses": {
          "type": "array",
          "items": {
            "$ref": "#/types/astra:index%2FAccessListAddress:AccessListAddress"
          },
          "description": "List of address requests that should have access to database endpoints.\n"
        },
        "databaseId": {
          "type": "string",
          "description": "The ID of the Astra database.\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "Public access restrictions enabled or disabled\n"
        }
      },
      "type": "object",
      "required": [
        "addresses",
        "databaseId"
      ],
      "inputProperties": {
        "addresses": {
          "type": "array",
          "items": {
            "$ref": "#/types/astra:index%2FAccessListAddress:AccessListAddress"
          },
          "description": "List of address requests that should have access to database endpoints.\n",
          "willReplaceOnChanges": true
        },
        "databaseId": {
          "type": "string",
          "description": "The ID of the Astra database.\n",
          "willReplaceOnChanges": true
        },
        "enabled": {
          "type": "boolean",
          "description": "Public access restrictions enabled or disabled\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "addresses",
        "databaseId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering AccessList resources.\n",
        "properties": {
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/types/astra:index%2FAccessListAddress:AccessListAddress"
            },
            "description": "List of address requests that should have access to database endpoints.\n",
            "willReplaceOnChanges": true
          },
          "databaseId": {
            "type": "string",
            "description": "The ID of the Astra database.\n",
            "willReplaceOnChanges": true
          },
          "enabled": {
            "type": "boolean",
            "description": "Public access restrictions enabled or disabled\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "astra:index/cdc:Cdc": {
      "description": "`astra.Cdc` enables cdc for an Astra Serverless table.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumiverse/astra\";\n\nconst streamingTenant_1 = new astra.StreamingTenant(\"streamingTenant-1\", {\n    tenantName: \"terraformtest\",\n    topic: \"terraformtest\",\n    region: \"useast-4\",\n    cloudProvider: \"gcp\",\n    userEmail: \"seb@datastax.com\",\n});\nconst cdc_1 = new astra.Cdc(\"cdc-1\", {\n    databaseId: \"5b70892f-e01a-4595-98e6-19ecc9985d50\",\n    databaseName: \"sai_test\",\n    table: \"test\",\n    keyspace: \"sai_test\",\n    topicPartitions: 3,\n    tenantName: streamingTenant_1.tenantName,\n}, {\n    dependsOn: [streamingTenant_1],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_astra as astra\n\nstreaming_tenant_1 = astra.StreamingTenant(\"streamingTenant-1\",\n    tenant_name=\"terraformtest\",\n    topic=\"terraformtest\",\n    region=\"useast-4\",\n    cloud_provider=\"gcp\",\n    user_email=\"seb@datastax.com\")\ncdc_1 = astra.Cdc(\"cdc-1\",\n    database_id=\"5b70892f-e01a-4595-98e6-19ecc9985d50\",\n    database_name=\"sai_test\",\n    table=\"test\",\n    keyspace=\"sai_test\",\n    topic_partitions=3,\n    tenant_name=streaming_tenant_1.tenant_name,\n    opts=pulumi.ResourceOptions(depends_on=[streaming_tenant_1]))\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumiverse.Astra;\n\nreturn await Deployment.RunAsync(() => \n{\n    var streamingTenant_1 = new Astra.StreamingTenant(\"streamingTenant-1\", new()\n    {\n        TenantName = \"terraformtest\",\n        Topic = \"terraformtest\",\n        Region = \"useast-4\",\n        CloudProvider = \"gcp\",\n        UserEmail = \"seb@datastax.com\",\n    });\n\n    var cdc_1 = new Astra.Cdc(\"cdc-1\", new()\n    {\n        DatabaseId = \"5b70892f-e01a-4595-98e6-19ecc9985d50\",\n        DatabaseName = \"sai_test\",\n        Table = \"test\",\n        Keyspace = \"sai_test\",\n        TopicPartitions = 3,\n        TenantName = streamingTenant_1.TenantName,\n    }, new CustomResourceOptions\n    {\n        DependsOn = new[]\n        {\n            streamingTenant_1,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.NewStreamingTenant(ctx, \"streamingTenant-1\", &astra.StreamingTenantArgs{\n\t\t\tTenantName:    pulumi.String(\"terraformtest\"),\n\t\t\tTopic:         pulumi.String(\"terraformtest\"),\n\t\t\tRegion:        pulumi.String(\"useast-4\"),\n\t\t\tCloudProvider: pulumi.String(\"gcp\"),\n\t\t\tUserEmail:     pulumi.String(\"seb@datastax.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = astra.NewCdc(ctx, \"cdc-1\", &astra.CdcArgs{\n\t\t\tDatabaseId:      pulumi.String(\"5b70892f-e01a-4595-98e6-19ecc9985d50\"),\n\t\t\tDatabaseName:    pulumi.String(\"sai_test\"),\n\t\t\tTable:           pulumi.String(\"test\"),\n\t\t\tKeyspace:        pulumi.String(\"sai_test\"),\n\t\t\tTopicPartitions: pulumi.Int(3),\n\t\t\tTenantName:      streamingTenant_1.TenantName,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tstreamingTenant_1,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.StreamingTenant;\nimport com.pulumi.astra.StreamingTenantArgs;\nimport com.pulumi.astra.Cdc;\nimport com.pulumi.astra.CdcArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var streamingTenant_1 = new StreamingTenant(\"streamingTenant-1\", StreamingTenantArgs.builder()        \n            .tenantName(\"terraformtest\")\n            .topic(\"terraformtest\")\n            .region(\"useast-4\")\n            .cloudProvider(\"gcp\")\n            .userEmail(\"seb@datastax.com\")\n            .build());\n\n        var cdc_1 = new Cdc(\"cdc-1\", CdcArgs.builder()        \n            .databaseId(\"5b70892f-e01a-4595-98e6-19ecc9985d50\")\n            .databaseName(\"sai_test\")\n            .table(\"test\")\n            .keyspace(\"sai_test\")\n            .topicPartitions(3)\n            .tenantName(streamingTenant_1.tenantName())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(streamingTenant_1)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  streamingTenant-1:\n    type: astra:StreamingTenant\n    properties:\n      tenantName: terraformtest\n      topic: terraformtest\n      region: useast-4\n      cloudProvider: gcp\n      userEmail: seb@datastax.com\n  cdc-1:\n    type: astra:Cdc\n    properties:\n      databaseId: 5b70892f-e01a-4595-98e6-19ecc9985d50\n      databaseName: sai_test\n      table: test\n      keyspace: sai_test\n      topicPartitions: 3\n      tenantName: ${[\"streamingTenant-1\"].tenantName}\n    options:\n      dependson:\n        - ${[\"streamingTenant-1\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n\n\n```sh\n $ pulumi import astra:index/cdc:Cdc example databaseId/keyspace/table/tenantName\n```\n\n ",
      "properties": {
        "connectorStatus": {
          "type": "string",
          "description": "Connector Status\n"
        },
        "dataTopic": {
          "type": "string",
          "description": "Data topic name\n"
        },
        "databaseId": {
          "type": "string",
          "description": "Astra database to create the keyspace.\n"
        },
        "databaseName": {
          "type": "string",
          "description": "Astra database name.\n"
        },
        "keyspace": {
          "type": "string",
          "description": "Initial keyspace name. For additional keyspaces, use the astra.Keyspace resource.\n"
        },
        "table": {
          "type": "string",
          "description": "Astra database table.\n"
        },
        "tenantName": {
          "type": "string",
          "description": "Streaming tenant name\n"
        },
        "topicPartitions": {
          "type": "integer",
          "description": "Number of partitions in cdc topic.\n"
        }
      },
      "type": "object",
      "required": [
        "connectorStatus",
        "dataTopic",
        "databaseId",
        "databaseName",
        "keyspace",
        "table",
        "tenantName",
        "topicPartitions"
      ],
      "inputProperties": {
        "databaseId": {
          "type": "string",
          "description": "Astra database to create the keyspace.\n",
          "willReplaceOnChanges": true
        },
        "databaseName": {
          "type": "string",
          "description": "Astra database name.\n",
          "willReplaceOnChanges": true
        },
        "keyspace": {
          "type": "string",
          "description": "Initial keyspace name. For additional keyspaces, use the astra.Keyspace resource.\n",
          "willReplaceOnChanges": true
        },
        "table": {
          "type": "string",
          "description": "Astra database table.\n",
          "willReplaceOnChanges": true
        },
        "tenantName": {
          "type": "string",
          "description": "Streaming tenant name\n",
          "willReplaceOnChanges": true
        },
        "topicPartitions": {
          "type": "integer",
          "description": "Number of partitions in cdc topic.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "databaseId",
        "databaseName",
        "keyspace",
        "table",
        "tenantName",
        "topicPartitions"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Cdc resources.\n",
        "properties": {
          "connectorStatus": {
            "type": "string",
            "description": "Connector Status\n"
          },
          "dataTopic": {
            "type": "string",
            "description": "Data topic name\n"
          },
          "databaseId": {
            "type": "string",
            "description": "Astra database to create the keyspace.\n",
            "willReplaceOnChanges": true
          },
          "databaseName": {
            "type": "string",
            "description": "Astra database name.\n",
            "willReplaceOnChanges": true
          },
          "keyspace": {
            "type": "string",
            "description": "Initial keyspace name. For additional keyspaces, use the astra.Keyspace resource.\n",
            "willReplaceOnChanges": true
          },
          "table": {
            "type": "string",
            "description": "Astra database table.\n",
            "willReplaceOnChanges": true
          },
          "tenantName": {
            "type": "string",
            "description": "Streaming tenant name\n",
            "willReplaceOnChanges": true
          },
          "topicPartitions": {
            "type": "integer",
            "description": "Number of partitions in cdc topic.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "astra:index/database:Database": {
      "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst example = new astra.Database(\"example\", {\n    cloudProvider: \"gcp\",\n    keyspace: \"keyspace\",\n    regions: [\"us-east1\"],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_astra as astra\n\nexample = astra.Database(\"example\",\n    cloud_provider=\"gcp\",\n    keyspace=\"keyspace\",\n    regions=[\"us-east1\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumiverse.Astra;\n\nreturn await Deployment.RunAsync(() => \n{\n    var example = new Astra.Database(\"example\", new()\n    {\n        CloudProvider = \"gcp\",\n        Keyspace = \"keyspace\",\n        Regions = new[]\n        {\n            \"us-east1\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.NewDatabase(ctx, \"example\", &astra.DatabaseArgs{\n\t\t\tCloudProvider: pulumi.String(\"gcp\"),\n\t\t\tKeyspace:      pulumi.String(\"keyspace\"),\n\t\t\tRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-east1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.Database;\nimport com.pulumi.astra.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Database(\"example\", DatabaseArgs.builder()        \n            .cloudProvider(\"gcp\")\n            .keyspace(\"keyspace\")\n            .regions(\"us-east1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: astra:Database\n    properties:\n      cloudProvider: gcp\n      keyspace: keyspace\n      regions:\n        - us-east1\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n\n\n```sh\n $ pulumi import astra:index/database:Database example 48bfc13b-c1a5-48db-b70f-b6ef9709872b\n```\n\n ",
      "properties": {
        "additionalKeyspaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional keyspaces\n"
        },
        "cloudProvider": {
          "type": "string",
          "description": "The cloud provider to launch the database. (Currently supported: aws, azure, gcp)\n"
        },
        "cqlshUrl": {
          "type": "string",
          "description": "The cqlsh_url\n"
        },
        "dataEndpointUrl": {
          "type": "string",
          "description": "The data*endpoint*url\n"
        },
        "datacenters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of Datacenter IDs. The map key is \"cloud_provider.region\". Example: \"GCP.us-east4\".\n"
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether or not to allow Terraform to destroy the instance. Unless this field is set to false in Terraform state, a\n`terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
        },
        "grafanaUrl": {
          "type": "string",
          "description": "The grafana_url\n"
        },
        "graphqlUrl": {
          "type": "string",
          "description": "The graphql_url\n"
        },
        "keyspace": {
          "type": "string",
          "description": "Initial keyspace name. For additional keyspaces, use the astra.Keyspace resource.\n"
        },
        "name": {
          "type": "string",
          "description": "Astra database name.\n"
        },
        "nodeCount": {
          "type": "integer",
          "description": "The node_count\n"
        },
        "organizationId": {
          "type": "string",
          "description": "The org id.\n"
        },
        "ownerId": {
          "type": "string",
          "description": "The owner id.\n"
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud regions to launch the database. (see https://docs.datastax.com/en/astra/docs/database-regions.html for supported regions)\n"
        },
        "replicationFactor": {
          "type": "integer",
          "description": "The replication_factor\n"
        },
        "status": {
          "type": "string",
          "description": "The status\n"
        },
        "totalStorage": {
          "type": "integer",
          "description": "The total_storage\n"
        }
      },
      "type": "object",
      "required": [
        "additionalKeyspaces",
        "cloudProvider",
        "cqlshUrl",
        "dataEndpointUrl",
        "datacenters",
        "grafanaUrl",
        "graphqlUrl",
        "keyspace",
        "name",
        "nodeCount",
        "organizationId",
        "ownerId",
        "regions",
        "replicationFactor",
        "status",
        "totalStorage"
      ],
      "inputProperties": {
        "cloudProvider": {
          "type": "string",
          "description": "The cloud provider to launch the database. (Currently supported: aws, azure, gcp)\n",
          "willReplaceOnChanges": true
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether or not to allow Terraform to destroy the instance. Unless this field is set to false in Terraform state, a\n`terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
        },
        "keyspace": {
          "type": "string",
          "description": "Initial keyspace name. For additional keyspaces, use the astra.Keyspace resource.\n",
          "willReplaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Astra database name.\n",
          "willReplaceOnChanges": true
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud regions to launch the database. (see https://docs.datastax.com/en/astra/docs/database-regions.html for supported regions)\n"
        }
      },
      "requiredInputs": [
        "cloudProvider",
        "keyspace",
        "regions"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Database resources.\n",
        "properties": {
          "additionalKeyspaces": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Additional keyspaces\n"
          },
          "cloudProvider": {
            "type": "string",
            "description": "The cloud provider to launch the database. (Currently supported: aws, azure, gcp)\n",
            "willReplaceOnChanges": true
          },
          "cqlshUrl": {
            "type": "string",
            "description": "The cqlsh_url\n"
          },
          "dataEndpointUrl": {
            "type": "string",
            "description": "The data*endpoint*url\n"
          },
          "datacenters": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of Datacenter IDs. The map key is \"cloud_provider.region\". Example: \"GCP.us-east4\".\n"
          },
          "deletionProtection": {
            "type": "boolean",
            "description": "Whether or not to allow Terraform to destroy the instance. Unless this field is set to false in Terraform state, a\n`terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
          },
          "grafanaUrl": {
            "type": "string",
            "description": "The grafana_url\n"
          },
          "graphqlUrl": {
            "type": "string",
            "description": "The graphql_url\n"
          },
          "keyspace": {
            "type": "string",
            "description": "Initial keyspace name. For additional keyspaces, use the astra.Keyspace resource.\n",
            "willReplaceOnChanges": true
          },
          "name": {
            "type": "string",
            "description": "Astra database name.\n",
            "willReplaceOnChanges": true
          },
          "nodeCount": {
            "type": "integer",
            "description": "The node_count\n"
          },
          "organizationId": {
            "type": "string",
            "description": "The org id.\n"
          },
          "ownerId": {
            "type": "string",
            "description": "The owner id.\n"
          },
          "regions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Cloud regions to launch the database. (see https://docs.datastax.com/en/astra/docs/database-regions.html for supported regions)\n"
          },
          "replicationFactor": {
            "type": "integer",
            "description": "The replication_factor\n"
          },
          "status": {
            "type": "string",
            "description": "The status\n"
          },
          "totalStorage": {
            "type": "integer",
            "description": "The total_storage\n"
          }
        },
        "type": "object"
      }
    },
    "astra:index/keyspace:Keyspace": {
      "description": "`astra.Keyspace` provides a keyspace resource. Keyspaces are groupings of tables for Cassandra. `astra.Keyspace` resources are associated with a database id. You can have multiple keyspaces per DB in addition to the default keyspace provided in the `astra.Database` resource.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst example = new astra.Keyspace(\"example\", {\n    databaseId: \"48bfc13b-c1a5-48db-b70f-b6ef9709872b\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_astra as astra\n\nexample = astra.Keyspace(\"example\", database_id=\"48bfc13b-c1a5-48db-b70f-b6ef9709872b\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumiverse.Astra;\n\nreturn await Deployment.RunAsync(() => \n{\n    var example = new Astra.Keyspace(\"example\", new()\n    {\n        DatabaseId = \"48bfc13b-c1a5-48db-b70f-b6ef9709872b\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.NewKeyspace(ctx, \"example\", &astra.KeyspaceArgs{\n\t\t\tDatabaseId: pulumi.String(\"48bfc13b-c1a5-48db-b70f-b6ef9709872b\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.Keyspace;\nimport com.pulumi.astra.KeyspaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Keyspace(\"example\", KeyspaceArgs.builder()        \n            .databaseId(\"48bfc13b-c1a5-48db-b70f-b6ef9709872b\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: astra:Keyspace\n    properties:\n      databaseId: 48bfc13b-c1a5-48db-b70f-b6ef9709872b\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n# the import id includes the database_id and the keyspace name.\n\n```sh\n $ pulumi import astra:index/keyspace:Keyspace example 48bfc13b-c1a5-48db-b70f-b6ef9709872b/keyspace/example\n```\n\n ",
      "properties": {
        "databaseId": {
          "type": "string",
          "description": "Astra database to create the keyspace.\n"
        },
        "name": {
          "type": "string",
          "description": "Keyspace name can have up to 48 alpha-numeric characters and contain underscores; only letters and numbers are supported as the first character.\n"
        }
      },
      "type": "object",
      "required": [
        "databaseId",
        "name"
      ],
      "inputProperties": {
        "databaseId": {
          "type": "string",
          "description": "Astra database to create the keyspace.\n",
          "willReplaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Keyspace name can have up to 48 alpha-numeric characters and contain underscores; only letters and numbers are supported as the first character.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "databaseId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Keyspace resources.\n",
        "properties": {
          "databaseId": {
            "type": "string",
            "description": "Astra database to create the keyspace.\n",
            "willReplaceOnChanges": true
          },
          "name": {
            "type": "string",
            "description": "Keyspace name can have up to 48 alpha-numeric characters and contain underscores; only letters and numbers are supported as the first character.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "astra:index/privateLink:PrivateLink": {
      "description": "`astra.PrivateLink` provides a private link resource. Private Link is a private network endpoint that can be created to connect from your vpc to Astra without using a publicly routable IP address. `astra.PrivateLink` resources are associated with a database id. Once the private_link resource is created in Astra it must be linked to an endpoint within your vpc, use `astra.PrivateLinkEndpoint` to do this.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst example = new astra.PrivateLink(\"example\", {\n    allowedPrincipals: [\"arn:aws:iam::111708290731:user/sebastian.estevez\"],\n    databaseId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenterId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_astra as astra\n\nexample = astra.PrivateLink(\"example\",\n    allowed_principals=[\"arn:aws:iam::111708290731:user/sebastian.estevez\"],\n    database_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenter_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumiverse.Astra;\n\nreturn await Deployment.RunAsync(() => \n{\n    var example = new Astra.PrivateLink(\"example\", new()\n    {\n        AllowedPrincipals = new[]\n        {\n            \"arn:aws:iam::111708290731:user/sebastian.estevez\",\n        },\n        DatabaseId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n        DatacenterId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.NewPrivateLink(ctx, \"example\", &astra.PrivateLinkArgs{\n\t\t\tAllowedPrincipals: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"arn:aws:iam::111708290731:user/sebastian.estevez\"),\n\t\t\t},\n\t\t\tDatabaseId:   pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\"),\n\t\t\tDatacenterId: pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.PrivateLink;\nimport com.pulumi.astra.PrivateLinkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new PrivateLink(\"example\", PrivateLinkArgs.builder()        \n            .allowedPrincipals(\"arn:aws:iam::111708290731:user/sebastian.estevez\")\n            .databaseId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\")\n            .datacenterId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: astra:PrivateLink\n    properties:\n      allowedPrincipals:\n        - arn:aws:iam::111708290731:user/sebastian.estevez\n      databaseId: a6bc9c26-e7ce-424f-84c7-0a00afb12588\n      datacenterId: a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n\n\n```sh\n $ pulumi import astra:index/privateLink:PrivateLink example a6bc9c26-e7ce-424f-84c7-0a00afb12588/datacenter/a6bc9c26-e7ce-424f-84c7-0a00afb12588/serviceNames/svc-name-here\n```\n\n ",
      "properties": {
        "allowedPrincipals": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of service principals to apply to the Private Link (i.e. arn:aws:iam::123456789012:role/admin).\n"
        },
        "databaseId": {
          "type": "string",
          "description": "Astra database where private link will be enabled.\n"
        },
        "datacenterId": {
          "type": "string",
          "description": "Astra datacenter in the region where the private link will be created.\n"
        },
        "serviceName": {
          "type": "string",
          "description": "Name of the endpoint service for private link generated by the cloud provider.\n"
        }
      },
      "type": "object",
      "required": [
        "allowedPrincipals",
        "databaseId",
        "datacenterId",
        "serviceName"
      ],
      "inputProperties": {
        "allowedPrincipals": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of service principals to apply to the Private Link (i.e. arn:aws:iam::123456789012:role/admin).\n",
          "willReplaceOnChanges": true
        },
        "databaseId": {
          "type": "string",
          "description": "Astra database where private link will be enabled.\n",
          "willReplaceOnChanges": true
        },
        "datacenterId": {
          "type": "string",
          "description": "Astra datacenter in the region where the private link will be created.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "allowedPrincipals",
        "databaseId",
        "datacenterId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering PrivateLink resources.\n",
        "properties": {
          "allowedPrincipals": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of service principals to apply to the Private Link (i.e. arn:aws:iam::123456789012:role/admin).\n",
            "willReplaceOnChanges": true
          },
          "databaseId": {
            "type": "string",
            "description": "Astra database where private link will be enabled.\n",
            "willReplaceOnChanges": true
          },
          "datacenterId": {
            "type": "string",
            "description": "Astra datacenter in the region where the private link will be created.\n",
            "willReplaceOnChanges": true
          },
          "serviceName": {
            "type": "string",
            "description": "Name of the endpoint service for private link generated by the cloud provider.\n"
          }
        },
        "type": "object"
      }
    },
    "astra:index/privateLinkEndpoint:PrivateLinkEndpoint": {
      "description": "`astra.PrivateLinkEndpoint` completes the creation of a private link endpoint by associating it with your endpoint.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumiverse/astra\";\nimport * as aws from \"@pulumi/aws\";\nimport * as azure from \"@pulumi/azure\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// AWS example\nconst exampleAstraIndex_privateLinkPrivateLink = new astra.PrivateLink(\"exampleAstraIndex/privateLinkPrivateLink\", {\n    allowedPrincipals: [\"arn:aws:iam::445559476293:user/Sebastian\"],\n    databaseId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenterId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n});\nconst exampleVpcEndpoint = new aws.ec2.VpcEndpoint(\"exampleVpcEndpoint\", {\n    vpcId: \"vpc-f939e884\",\n    serviceName: exampleAstraIndex / privateLinkPrivateLink.serviceName,\n    vpcEndpointType: \"Interface\",\n    subnetIds: [\n        \"subnet-4d376300\",\n        \"subnet-4d85066c\",\n        \"subnet-030e8b65\",\n    ],\n    securityGroupIds: [\"sg-74ae4d41\"],\n});\nconst examplePrivateLinkEndpoint = new astra.PrivateLinkEndpoint(\"examplePrivateLinkEndpoint\", {\n    databaseId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenterId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n    endpointId: exampleVpcEndpoint.id,\n});\nconst examplePrivateLink = new astra.PrivateLink(\"examplePrivateLink\", {\n    allowedPrincipals: [\"my-project\"],\n    databaseId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenterId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n});\nconst exampleNetwork = new gcp.compute.Network(\"exampleNetwork\", {autoCreateSubnetworks: false});\nconst exampleSubnetwork = new gcp.compute.Subnetwork(\"exampleSubnetwork\", {\n    ipCidrRange: \"10.142.0.0/20\",\n    region: \"us-east1\",\n    network: exampleNetwork.id,\n});\nconst exampleAddress = new gcp.compute.Address(\"exampleAddress\", {\n    subnetwork: exampleSubnetwork.id,\n    addressType: \"INTERNAL\",\n    region: \"us-east1\",\n});\nconst exampleForwardingRule = new gcp.compute.ForwardingRule(\"exampleForwardingRule\", {\n    target: `https://www.googleapis.com/compute/v1/${exampleAstraIndex / privateLinkPrivateLink.serviceName}`,\n    project: exampleNetwork.project,\n    ipAddress: exampleAddress.id,\n    network: exampleNetwork.id,\n    region: \"us-east1\",\n    loadBalancingScheme: \"\",\n});\n// The endpoint ID (PSC Connection ID) is not currently accessible from the google_compute_forwarding_rule terraform object.\n// It must be retrieved via the GCP UI (https://console.cloud.google.com/net-services/psc/list) or via the gcloud CLI:\n//    gcloud compute forwarding-rules describe psc-endpoint --region=us-east1\nconst endpoint = new astra.PrivateLinkEndpoint(\"endpoint\", {\n    databaseId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenterId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n    endpointId: \"13585698993864708\",\n});\nconst current = azure.core.getSubscription({});\nconst exampleResourceGroup = azure.core.getResourceGroup({\n    name: \"example-rg\",\n});\nconst exampleVirtualNetwork = exampleResourceGroup.then(exampleResourceGroup => azure.network.getVirtualNetwork({\n    name: \"example-virtual-network\",\n    resourceGroupName: exampleResourceGroup.name,\n}));\nconst exampleSubnet = Promise.all([exampleVirtualNetwork, exampleResourceGroup]).then(([exampleVirtualNetwork, exampleResourceGroup]) => azure.network.getSubnet({\n    name: \"example-subnet\",\n    virtualNetworkName: exampleVirtualNetwork.name,\n    resourceGroupName: exampleResourceGroup.name,\n}));\nconst exampleIndex_privateLinkPrivateLink = new astra.PrivateLink(\"exampleIndex/privateLinkPrivateLink\", {\n    allowedPrincipals: [current.then(current => current.subscriptionId)],\n    databaseId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenterId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n});\nconst exampleEndpoint = new azure.privatelink.Endpoint(\"exampleEndpoint\", {\n    location: exampleResourceGroup.then(exampleResourceGroup => exampleResourceGroup.location),\n    resourceGroupName: exampleResourceGroup.then(exampleResourceGroup => exampleResourceGroup.name),\n    subnetId: exampleSubnet.then(exampleSubnet => exampleSubnet.id),\n    privateServiceConnection: {\n        name: \"example-private-connection\",\n        privateConnectionResourceAlias: exampleAstraIndex / privateLinkPrivateLink.serviceName,\n        isManualConnection: true,\n        requestMessage: \"Private connection from AKS subnet to Astra DB\",\n    },\n});\n// NOTE: If you destroy the astra_private_link_endpoint resource for an Azure private endpoint,\n// you will have to destroy and recreate the azurerm_private_endpoint resource in order to\n// reconnect and Astra private link endpoint.\nconst azPrivateLinkEndpoint = new astra.PrivateLinkEndpoint(\"azPrivateLinkEndpoint\", {\n    databaseId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenterId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n    endpointId: pulumi.all([exampleResourceGroup, exampleEndpoint.name]).apply(([exampleResourceGroup, name]) => `${exampleResourceGroup.id}/providers/Microsoft.Network/privateEndpoints/${name}`),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_azure as azure\nimport pulumi_gcp as gcp\nimport pulumiverse_astra as astra\n\n# AWS example\nexample_astra_index_private_link_private_link = astra.PrivateLink(\"exampleAstraIndex/privateLinkPrivateLink\",\n    allowed_principals=[\"arn:aws:iam::445559476293:user/Sebastian\"],\n    database_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenter_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\nexample_vpc_endpoint = aws.ec2.VpcEndpoint(\"exampleVpcEndpoint\",\n    vpc_id=\"vpc-f939e884\",\n    service_name=example_astra_index / private_link_private_link[\"serviceName\"],\n    vpc_endpoint_type=\"Interface\",\n    subnet_ids=[\n        \"subnet-4d376300\",\n        \"subnet-4d85066c\",\n        \"subnet-030e8b65\",\n    ],\n    security_group_ids=[\"sg-74ae4d41\"])\nexample_private_link_endpoint = astra.PrivateLinkEndpoint(\"examplePrivateLinkEndpoint\",\n    database_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenter_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n    endpoint_id=example_vpc_endpoint.id)\nexample_private_link = astra.PrivateLink(\"examplePrivateLink\",\n    allowed_principals=[\"my-project\"],\n    database_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenter_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\nexample_network = gcp.compute.Network(\"exampleNetwork\", auto_create_subnetworks=False)\nexample_subnetwork = gcp.compute.Subnetwork(\"exampleSubnetwork\",\n    ip_cidr_range=\"10.142.0.0/20\",\n    region=\"us-east1\",\n    network=example_network.id)\nexample_address = gcp.compute.Address(\"exampleAddress\",\n    subnetwork=example_subnetwork.id,\n    address_type=\"INTERNAL\",\n    region=\"us-east1\")\nexample_forwarding_rule = gcp.compute.ForwardingRule(\"exampleForwardingRule\",\n    target=f\"https://www.googleapis.com/compute/v1/{example_astra_index / private_link_private_link['serviceName']}\",\n    project=example_network.project,\n    ip_address=example_address.id,\n    network=example_network.id,\n    region=\"us-east1\",\n    load_balancing_scheme=\"\")\n# The endpoint ID (PSC Connection ID) is not currently accessible from the google_compute_forwarding_rule terraform object.\n# It must be retrieved via the GCP UI (https://console.cloud.google.com/net-services/psc/list) or via the gcloud CLI:\n#    gcloud compute forwarding-rules describe psc-endpoint --region=us-east1\nendpoint = astra.PrivateLinkEndpoint(\"endpoint\",\n    database_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenter_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n    endpoint_id=\"13585698993864708\")\ncurrent = azure.core.get_subscription()\nexample_resource_group = azure.core.get_resource_group(name=\"example-rg\")\nexample_virtual_network = azure.network.get_virtual_network(name=\"example-virtual-network\",\n    resource_group_name=example_resource_group.name)\nexample_subnet = azure.network.get_subnet(name=\"example-subnet\",\n    virtual_network_name=example_virtual_network.name,\n    resource_group_name=example_resource_group.name)\nexample_index_private_link_private_link = astra.PrivateLink(\"exampleIndex/privateLinkPrivateLink\",\n    allowed_principals=[current.subscription_id],\n    database_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenter_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\nexample_endpoint = azure.privatelink.Endpoint(\"exampleEndpoint\",\n    location=example_resource_group.location,\n    resource_group_name=example_resource_group.name,\n    subnet_id=example_subnet.id,\n    private_service_connection=azure.privatelink.EndpointPrivateServiceConnectionArgs(\n        name=\"example-private-connection\",\n        private_connection_resource_alias=example_astra_index / private_link_private_link[\"serviceName\"],\n        is_manual_connection=True,\n        request_message=\"Private connection from AKS subnet to Astra DB\",\n    ))\n# NOTE: If you destroy the astra_private_link_endpoint resource for an Azure private endpoint,\n# you will have to destroy and recreate the azurerm_private_endpoint resource in order to\n# reconnect and Astra private link endpoint.\naz_private_link_endpoint = astra.PrivateLinkEndpoint(\"azPrivateLinkEndpoint\",\n    database_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenter_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n    endpoint_id=example_endpoint.name.apply(lambda name: f\"{example_resource_group.id}/providers/Microsoft.Network/privateEndpoints/{name}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumiverse.Astra;\nusing Aws = Pulumi.Aws;\nusing Azure = Pulumi.Azure;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() => \n{\n    // AWS example\n    var exampleAstraIndex_privateLinkPrivateLink = new Astra.PrivateLink(\"exampleAstraIndex/privateLinkPrivateLink\", new()\n    {\n        AllowedPrincipals = new[]\n        {\n            \"arn:aws:iam::445559476293:user/Sebastian\",\n        },\n        DatabaseId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n        DatacenterId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n    });\n\n    var exampleVpcEndpoint = new Aws.Ec2.VpcEndpoint(\"exampleVpcEndpoint\", new()\n    {\n        VpcId = \"vpc-f939e884\",\n        ServiceName = exampleAstraIndex / privateLinkPrivateLink.ServiceName,\n        VpcEndpointType = \"Interface\",\n        SubnetIds = new[]\n        {\n            \"subnet-4d376300\",\n            \"subnet-4d85066c\",\n            \"subnet-030e8b65\",\n        },\n        SecurityGroupIds = new[]\n        {\n            \"sg-74ae4d41\",\n        },\n    });\n\n    var examplePrivateLinkEndpoint = new Astra.PrivateLinkEndpoint(\"examplePrivateLinkEndpoint\", new()\n    {\n        DatabaseId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n        DatacenterId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n        EndpointId = exampleVpcEndpoint.Id,\n    });\n\n    var examplePrivateLink = new Astra.PrivateLink(\"examplePrivateLink\", new()\n    {\n        AllowedPrincipals = new[]\n        {\n            \"my-project\",\n        },\n        DatabaseId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n        DatacenterId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n    });\n\n    var exampleNetwork = new Gcp.Compute.Network(\"exampleNetwork\", new()\n    {\n        AutoCreateSubnetworks = false,\n    });\n\n    var exampleSubnetwork = new Gcp.Compute.Subnetwork(\"exampleSubnetwork\", new()\n    {\n        IpCidrRange = \"10.142.0.0/20\",\n        Region = \"us-east1\",\n        Network = exampleNetwork.Id,\n    });\n\n    var exampleAddress = new Gcp.Compute.Address(\"exampleAddress\", new()\n    {\n        Subnetwork = exampleSubnetwork.Id,\n        AddressType = \"INTERNAL\",\n        Region = \"us-east1\",\n    });\n\n    var exampleForwardingRule = new Gcp.Compute.ForwardingRule(\"exampleForwardingRule\", new()\n    {\n        Target = $\"https://www.googleapis.com/compute/v1/{exampleAstraIndex / privateLinkPrivateLink.ServiceName}\",\n        Project = exampleNetwork.Project,\n        IpAddress = exampleAddress.Id,\n        Network = exampleNetwork.Id,\n        Region = \"us-east1\",\n        LoadBalancingScheme = \"\",\n    });\n\n    // The endpoint ID (PSC Connection ID) is not currently accessible from the google_compute_forwarding_rule terraform object.\n    // It must be retrieved via the GCP UI (https://console.cloud.google.com/net-services/psc/list) or via the gcloud CLI:\n    //    gcloud compute forwarding-rules describe psc-endpoint --region=us-east1\n    var endpoint = new Astra.PrivateLinkEndpoint(\"endpoint\", new()\n    {\n        DatabaseId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n        DatacenterId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n        EndpointId = \"13585698993864708\",\n    });\n\n    var current = Azure.Core.GetSubscription.Invoke();\n\n    var exampleResourceGroup = Azure.Core.GetResourceGroup.Invoke(new()\n    {\n        Name = \"example-rg\",\n    });\n\n    var exampleVirtualNetwork = Azure.Network.GetVirtualNetwork.Invoke(new()\n    {\n        Name = \"example-virtual-network\",\n        ResourceGroupName = exampleResourceGroup.Apply(getResourceGroupResult => getResourceGroupResult.Name),\n    });\n\n    var exampleSubnet = Azure.Network.GetSubnet.Invoke(new()\n    {\n        Name = \"example-subnet\",\n        VirtualNetworkName = exampleVirtualNetwork.Apply(getVirtualNetworkResult => getVirtualNetworkResult.Name),\n        ResourceGroupName = exampleResourceGroup.Apply(getResourceGroupResult => getResourceGroupResult.Name),\n    });\n\n    var exampleIndex_privateLinkPrivateLink = new Astra.PrivateLink(\"exampleIndex/privateLinkPrivateLink\", new()\n    {\n        AllowedPrincipals = new[]\n        {\n            current.Apply(getSubscriptionResult => getSubscriptionResult.SubscriptionId),\n        },\n        DatabaseId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n        DatacenterId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n    });\n\n    var exampleEndpoint = new Azure.PrivateLink.Endpoint(\"exampleEndpoint\", new()\n    {\n        Location = exampleResourceGroup.Apply(getResourceGroupResult => getResourceGroupResult.Location),\n        ResourceGroupName = exampleResourceGroup.Apply(getResourceGroupResult => getResourceGroupResult.Name),\n        SubnetId = exampleSubnet.Apply(getSubnetResult => getSubnetResult.Id),\n        PrivateServiceConnection = new Azure.PrivateLink.Inputs.EndpointPrivateServiceConnectionArgs\n        {\n            Name = \"example-private-connection\",\n            PrivateConnectionResourceAlias = exampleAstraIndex / privateLinkPrivateLink.ServiceName,\n            IsManualConnection = true,\n            RequestMessage = \"Private connection from AKS subnet to Astra DB\",\n        },\n    });\n\n    // NOTE: If you destroy the astra_private_link_endpoint resource for an Azure private endpoint,\n    // you will have to destroy and recreate the azurerm_private_endpoint resource in order to\n    // reconnect and Astra private link endpoint.\n    var azPrivateLinkEndpoint = new Astra.PrivateLinkEndpoint(\"azPrivateLinkEndpoint\", new()\n    {\n        DatabaseId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n        DatacenterId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n        EndpointId = Output.Tuple(exampleResourceGroup.Apply(getResourceGroupResult => getResourceGroupResult), exampleEndpoint.Name).Apply(values =>\n        {\n            var exampleResourceGroup = values.Item1;\n            var name = values.Item2;\n            return $\"{exampleResourceGroup.Apply(getResourceGroupResult => getResourceGroupResult.Id)}/providers/Microsoft.Network/privateEndpoints/{name}\";\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v5/go/aws/ec2\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v4/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v4/go/azure/network\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v4/go/azure/privatelink\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v5/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.NewPrivateLink(ctx, \"exampleAstraIndex/privateLinkPrivateLink\", &astra.PrivateLinkArgs{\n\t\t\tAllowedPrincipals: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"arn:aws:iam::445559476293:user/Sebastian\"),\n\t\t\t},\n\t\t\tDatabaseId:   pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\"),\n\t\t\tDatacenterId: pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleVpcEndpoint, err := ec2.NewVpcEndpoint(ctx, \"exampleVpcEndpoint\", &ec2.VpcEndpointArgs{\n\t\t\tVpcId:           pulumi.String(\"vpc-f939e884\"),\n\t\t\tServiceName:     exampleAstraIndex / privateLinkPrivateLink.ServiceName,\n\t\t\tVpcEndpointType: pulumi.String(\"Interface\"),\n\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"subnet-4d376300\"),\n\t\t\t\tpulumi.String(\"subnet-4d85066c\"),\n\t\t\t\tpulumi.String(\"subnet-030e8b65\"),\n\t\t\t},\n\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sg-74ae4d41\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = astra.NewPrivateLinkEndpoint(ctx, \"examplePrivateLinkEndpoint\", &astra.PrivateLinkEndpointArgs{\n\t\t\tDatabaseId:   pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\"),\n\t\t\tDatacenterId: pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\"),\n\t\t\tEndpointId:   exampleVpcEndpoint.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = astra.NewPrivateLink(ctx, \"examplePrivateLink\", &astra.PrivateLinkArgs{\n\t\t\tAllowedPrincipals: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my-project\"),\n\t\t\t},\n\t\t\tDatabaseId:   pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\"),\n\t\t\tDatacenterId: pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNetwork, err := compute.NewNetwork(ctx, \"exampleNetwork\", &compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSubnetwork, err := compute.NewSubnetwork(ctx, \"exampleSubnetwork\", &compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.142.0.0/20\"),\n\t\t\tRegion:      pulumi.String(\"us-east1\"),\n\t\t\tNetwork:     exampleNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAddress, err := compute.NewAddress(ctx, \"exampleAddress\", &compute.AddressArgs{\n\t\t\tSubnetwork:  exampleSubnetwork.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tRegion:      pulumi.String(\"us-east1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"exampleForwardingRule\", &compute.ForwardingRuleArgs{\n\t\t\tTarget:              pulumi.String(fmt.Sprintf(\"https://www.googleapis.com/compute/v1/%v\", exampleAstraIndex/privateLinkPrivateLink.ServiceName)),\n\t\t\tProject:             exampleNetwork.Project,\n\t\t\tIpAddress:           exampleAddress.ID(),\n\t\t\tNetwork:             exampleNetwork.ID(),\n\t\t\tRegion:              pulumi.String(\"us-east1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = astra.NewPrivateLinkEndpoint(ctx, \"endpoint\", &astra.PrivateLinkEndpointArgs{\n\t\t\tDatabaseId:   pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\"),\n\t\t\tDatacenterId: pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\"),\n\t\t\tEndpointId:   pulumi.String(\"13585698993864708\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcurrent, err := core.LookupSubscription(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleResourceGroup, err := core.LookupResourceGroup(ctx, &core.LookupResourceGroupArgs{\n\t\t\tName: \"example-rg\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleVirtualNetwork, err := network.LookupVirtualNetwork(ctx, &network.LookupVirtualNetworkArgs{\n\t\t\tName:              \"example-virtual-network\",\n\t\t\tResourceGroupName: exampleResourceGroup.Name,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSubnet, err := network.LookupSubnet(ctx, &network.LookupSubnetArgs{\n\t\t\tName:               \"example-subnet\",\n\t\t\tVirtualNetworkName: exampleVirtualNetwork.Name,\n\t\t\tResourceGroupName:  exampleResourceGroup.Name,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = astra.NewPrivateLink(ctx, \"exampleIndex/privateLinkPrivateLink\", &astra.PrivateLinkArgs{\n\t\t\tAllowedPrincipals: pulumi.StringArray{\n\t\t\t\tpulumi.String(current.SubscriptionId),\n\t\t\t},\n\t\t\tDatabaseId:   pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\"),\n\t\t\tDatacenterId: pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleEndpoint, err := privatelink.NewEndpoint(ctx, \"exampleEndpoint\", &privatelink.EndpointArgs{\n\t\t\tLocation:          pulumi.String(exampleResourceGroup.Location),\n\t\t\tResourceGroupName: pulumi.String(exampleResourceGroup.Name),\n\t\t\tSubnetId:          pulumi.String(exampleSubnet.Id),\n\t\t\tPrivateServiceConnection: &privatelink.EndpointPrivateServiceConnectionArgs{\n\t\t\t\tName:                           pulumi.String(\"example-private-connection\"),\n\t\t\t\tPrivateConnectionResourceAlias: exampleAstraIndex / privateLinkPrivateLink.ServiceName,\n\t\t\t\tIsManualConnection:             pulumi.Bool(true),\n\t\t\t\tRequestMessage:                 pulumi.String(\"Private connection from AKS subnet to Astra DB\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = astra.NewPrivateLinkEndpoint(ctx, \"azPrivateLinkEndpoint\", &astra.PrivateLinkEndpointArgs{\n\t\t\tDatabaseId:   pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\"),\n\t\t\tDatacenterId: pulumi.String(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\"),\n\t\t\tEndpointId: exampleEndpoint.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v/providers/Microsoft.Network/privateEndpoints/%v\", exampleResourceGroup.Id, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.PrivateLink;\nimport com.pulumi.astra.PrivateLinkArgs;\nimport com.pulumi.aws.ec2.VpcEndpoint;\nimport com.pulumi.aws.ec2.VpcEndpointArgs;\nimport com.pulumi.astra.PrivateLinkEndpoint;\nimport com.pulumi.astra.PrivateLinkEndpointArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.inputs.GetSubscriptionArgs;\nimport com.pulumi.azure.core.inputs.GetResourceGroupArgs;\nimport com.pulumi.azure.network.NetworkFunctions;\nimport com.pulumi.azure.devtest.inputs.GetVirtualNetworkArgs;\nimport com.pulumi.aws.ec2.inputs.GetSubnetArgs;\nimport com.pulumi.azure.privatelink.Endpoint;\nimport com.pulumi.azure.privatelink.EndpointArgs;\nimport com.pulumi.azure.privatelink.inputs.EndpointPrivateServiceConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleAstraIndex_privateLinkPrivateLink = new PrivateLink(\"exampleAstraIndex/privateLinkPrivateLink\", PrivateLinkArgs.builder()        \n            .allowedPrincipals(\"arn:aws:iam::445559476293:user/Sebastian\")\n            .databaseId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\")\n            .datacenterId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\n            .build());\n\n        var exampleVpcEndpoint = new VpcEndpoint(\"exampleVpcEndpoint\", VpcEndpointArgs.builder()        \n            .vpcId(\"vpc-f939e884\")\n            .serviceName(exampleAstraIndex / privateLinkPrivateLink.serviceName())\n            .vpcEndpointType(\"Interface\")\n            .subnetIds(            \n                \"subnet-4d376300\",\n                \"subnet-4d85066c\",\n                \"subnet-030e8b65\")\n            .securityGroupIds(\"sg-74ae4d41\")\n            .build());\n\n        var examplePrivateLinkEndpoint = new PrivateLinkEndpoint(\"examplePrivateLinkEndpoint\", PrivateLinkEndpointArgs.builder()        \n            .databaseId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\")\n            .datacenterId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\n            .endpointId(exampleVpcEndpoint.id())\n            .build());\n\n        var examplePrivateLink = new PrivateLink(\"examplePrivateLink\", PrivateLinkArgs.builder()        \n            .allowedPrincipals(\"my-project\")\n            .databaseId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\")\n            .datacenterId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\n            .build());\n\n        var exampleNetwork = new Network(\"exampleNetwork\", NetworkArgs.builder()        \n            .autoCreateSubnetworks(false)\n            .build());\n\n        var exampleSubnetwork = new Subnetwork(\"exampleSubnetwork\", SubnetworkArgs.builder()        \n            .ipCidrRange(\"10.142.0.0/20\")\n            .region(\"us-east1\")\n            .network(exampleNetwork.id())\n            .build());\n\n        var exampleAddress = new Address(\"exampleAddress\", AddressArgs.builder()        \n            .subnetwork(exampleSubnetwork.id())\n            .addressType(\"INTERNAL\")\n            .region(\"us-east1\")\n            .build());\n\n        var exampleForwardingRule = new ForwardingRule(\"exampleForwardingRule\", ForwardingRuleArgs.builder()        \n            .target(String.format(\"https://www.googleapis.com/compute/v1/%s\", exampleAstraIndex / privateLinkPrivateLink.serviceName()))\n            .project(exampleNetwork.project())\n            .ipAddress(exampleAddress.id())\n            .network(exampleNetwork.id())\n            .region(\"us-east1\")\n            .loadBalancingScheme(\"\")\n            .build());\n\n        var endpoint = new PrivateLinkEndpoint(\"endpoint\", PrivateLinkEndpointArgs.builder()        \n            .databaseId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\")\n            .datacenterId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\n            .endpointId(\"13585698993864708\")\n            .build());\n\n        final var current = CoreFunctions.getSubscription();\n\n        final var exampleResourceGroup = CoreFunctions.getResourceGroup(GetResourceGroupArgs.builder()\n            .name(\"example-rg\")\n            .build());\n\n        final var exampleVirtualNetwork = NetworkFunctions.getVirtualNetwork(GetVirtualNetworkArgs.builder()\n            .name(\"example-virtual-network\")\n            .resourceGroupName(exampleResourceGroup.applyValue(getResourceGroupResult -> getResourceGroupResult.name()))\n            .build());\n\n        final var exampleSubnet = NetworkFunctions.getSubnet(GetSubnetArgs.builder()\n            .name(\"example-subnet\")\n            .virtualNetworkName(exampleVirtualNetwork.applyValue(getVirtualNetworkResult -> getVirtualNetworkResult.name()))\n            .resourceGroupName(exampleResourceGroup.applyValue(getResourceGroupResult -> getResourceGroupResult.name()))\n            .build());\n\n        var exampleIndex_privateLinkPrivateLink = new PrivateLink(\"exampleIndex/privateLinkPrivateLink\", PrivateLinkArgs.builder()        \n            .allowedPrincipals(current.applyValue(getSubscriptionResult -> getSubscriptionResult.subscriptionId()))\n            .databaseId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\")\n            .datacenterId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\n            .build());\n\n        var exampleEndpoint = new Endpoint(\"exampleEndpoint\", EndpointArgs.builder()        \n            .location(exampleResourceGroup.applyValue(getResourceGroupResult -> getResourceGroupResult.location()))\n            .resourceGroupName(exampleResourceGroup.applyValue(getResourceGroupResult -> getResourceGroupResult.name()))\n            .subnetId(exampleSubnet.applyValue(getSubnetResult -> getSubnetResult.id()))\n            .privateServiceConnection(EndpointPrivateServiceConnectionArgs.builder()\n                .name(\"example-private-connection\")\n                .privateConnectionResourceAlias(exampleAstraIndex / privateLinkPrivateLink.serviceName())\n                .isManualConnection(true)\n                .requestMessage(\"Private connection from AKS subnet to Astra DB\")\n                .build())\n            .build());\n\n        var azPrivateLinkEndpoint = new PrivateLinkEndpoint(\"azPrivateLinkEndpoint\", PrivateLinkEndpointArgs.builder()        \n            .databaseId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\")\n            .datacenterId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\n            .endpointId(exampleEndpoint.name().applyValue(name -> String.format(\"%s/providers/Microsoft.Network/privateEndpoints/%s\", exampleResourceGroup.applyValue(getResourceGroupResult -> getResourceGroupResult.id()),name)))\n            .build());\n\n    }\n}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n# Amazon AWS example\n\n```sh\n $ pulumi import astra:index/privateLinkEndpoint:PrivateLinkEndpoint example a6bc9c26-e7ce-424f-84c7-0a00afb12588/datacenter/a6bc9c26-e7ce-424f-84c7-0a00afb12588-1/endpoint/vpce-0f7aed6e7a18a1791\n```\n\n # Google GCP example\n\n```sh\n $ pulumi import astra:index/privateLinkEndpoint:PrivateLinkEndpoint example a6bc9c26-e7ce-424f-84c7-0a00afb12588/datacenter/a6bc9c26-e7ce-424f-84c7-0a00afb12588-1/endpoint/13585698993864708\n```\n\n # Azure EKS example\n\n```sh\n $ pulumi import astra:index/privateLinkEndpoint:PrivateLinkEndpoint example a6bc9c26-e7ce-424f-84c7-0a00afb12588/datacenter/a6bc9c26-e7ce-424f-84c7-0a00afb12588-1/endpoint/dc5ee5b1-4fc2-463e-a56b-ff54dd38b879/providers/Microsoft.Network/privateEndpoints/private-endpoint-example\n```\n\n ",
      "properties": {
        "astraEndpointId": {
          "type": "string",
          "description": "Endpoint ID for referencing within Astra. May be different than the endpoint_id of this resource.\n"
        },
        "databaseId": {
          "type": "string",
          "description": "The ID of the Astra database.\n"
        },
        "datacenterId": {
          "type": "string",
          "description": "Astra datacenter in the region where the private link will be created.\n"
        },
        "endpointId": {
          "type": "string",
          "description": "Endpoint created in your cloud provider account example: \"vpce-svc-1148ea04af8675309\"\n"
        }
      },
      "type": "object",
      "required": [
        "astraEndpointId",
        "databaseId",
        "datacenterId",
        "endpointId"
      ],
      "inputProperties": {
        "databaseId": {
          "type": "string",
          "description": "The ID of the Astra database.\n",
          "willReplaceOnChanges": true
        },
        "datacenterId": {
          "type": "string",
          "description": "Astra datacenter in the region where the private link will be created.\n",
          "willReplaceOnChanges": true
        },
        "endpointId": {
          "type": "string",
          "description": "Endpoint created in your cloud provider account example: \"vpce-svc-1148ea04af8675309\"\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "databaseId",
        "datacenterId",
        "endpointId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering PrivateLinkEndpoint resources.\n",
        "properties": {
          "astraEndpointId": {
            "type": "string",
            "description": "Endpoint ID for referencing within Astra. May be different than the endpoint_id of this resource.\n"
          },
          "databaseId": {
            "type": "string",
            "description": "The ID of the Astra database.\n",
            "willReplaceOnChanges": true
          },
          "datacenterId": {
            "type": "string",
            "description": "Astra datacenter in the region where the private link will be created.\n",
            "willReplaceOnChanges": true
          },
          "endpointId": {
            "type": "string",
            "description": "Endpoint created in your cloud provider account example: \"vpce-svc-1148ea04af8675309\"\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "astra:index/role:Role": {
      "description": "`astra.Role` resource represents custom roles for a particular Astra Org. Custom roles can be assigned to an Astra user is to grant them granular permissions when the default roles in the UI are not specific enough. Roles are composed of policies which are granted to resources.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumiverse/astra\";\n\n// Example role that grants policy permissions to ALL Astra DBs in an organization\nconst alldbsrole = new astra.Role(\"alldbsrole\", {\n    roleName: \"alldbsrole\",\n    description: \"Role that applies to all DBs in an org\",\n    effect: \"allow\",\n    resources: [\n        \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*\",\n        \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*\",\n        \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*:table:*\",\n    ],\n    policies: [\n        \"org-db-view\",\n        \"db-cql\",\n        \"db-table-alter\",\n        \"db-table-create\",\n        \"db-table-describe\",\n        \"db-table-modify\",\n        \"db-table-select\",\n        \"db-keyspace-alter\",\n        \"db-keyspace-describe\",\n        \"db-keyspace-modify\",\n        \"db-keyspace-authorize\",\n        \"db-keyspace-drop\",\n        \"db-keyspace-create\",\n        \"db-keyspace-grant\",\n    ],\n});\n// Example resources for a more restricted role\n// A Terraform managed Astra DB resource\nconst exampledb = new astra.Database(\"exampledb\", {\n    keyspace: \"primaryks\",\n    cloudProvider: \"gcp\",\n    regions: [\"us-east1\"],\n});\n// Example application keyspaces\nconst appks1 = new astra.Keyspace(\"appks1\", {databaseId: exampledb.id});\nconst appks2 = new astra.Keyspace(\"appks2\", {databaseId: exampledb.id});\nconst appks3 = new astra.Keyspace(\"appks3\", {databaseId: exampledb.id});\n// Example role that grants policy permissions to specific keyspaces within a single Astra DB\nconst singledbrole = new astra.Role(\"singledbrole\", {\n    roleName: \"singledbrole\",\n    description: \"Role that applies to specific keyspaces for a single Astra DB\",\n    effect: \"allow\",\n    resources: [\n        pulumi.interpolate`drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${exampledb.keyspace}`,\n        pulumi.interpolate`drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${exampledb.keyspace}:table:*`,\n        pulumi.interpolate`drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks1.name}`,\n        pulumi.interpolate`drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks1.name}:table:*`,\n        pulumi.interpolate`drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks2.name}`,\n        pulumi.interpolate`drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks2.name}:table:*`,\n        pulumi.interpolate`drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks3.name}`,\n        pulumi.interpolate`drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks3.name}:table:*`,\n        pulumi.interpolate`drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:futureks`,\n        pulumi.interpolate`drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:futureks:table:*`,\n    ],\n    policies: [\n        \"org-db-view\",\n        \"db-cql\",\n        \"db-table-alter\",\n        \"db-table-create\",\n        \"db-table-describe\",\n        \"db-table-modify\",\n        \"db-table-select\",\n        \"db-keyspace-alter\",\n        \"db-keyspace-describe\",\n        \"db-keyspace-modify\",\n        \"db-keyspace-authorize\",\n        \"db-keyspace-drop\",\n        \"db-keyspace-create\",\n        \"db-keyspace-grant\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_astra as astra\n\n# Example role that grants policy permissions to ALL Astra DBs in an organization\nalldbsrole = astra.Role(\"alldbsrole\",\n    role_name=\"alldbsrole\",\n    description=\"Role that applies to all DBs in an org\",\n    effect=\"allow\",\n    resources=[\n        \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*\",\n        \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*\",\n        \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*:table:*\",\n    ],\n    policies=[\n        \"org-db-view\",\n        \"db-cql\",\n        \"db-table-alter\",\n        \"db-table-create\",\n        \"db-table-describe\",\n        \"db-table-modify\",\n        \"db-table-select\",\n        \"db-keyspace-alter\",\n        \"db-keyspace-describe\",\n        \"db-keyspace-modify\",\n        \"db-keyspace-authorize\",\n        \"db-keyspace-drop\",\n        \"db-keyspace-create\",\n        \"db-keyspace-grant\",\n    ])\n# Example resources for a more restricted role\n# A Terraform managed Astra DB resource\nexampledb = astra.Database(\"exampledb\",\n    keyspace=\"primaryks\",\n    cloud_provider=\"gcp\",\n    regions=[\"us-east1\"])\n# Example application keyspaces\nappks1 = astra.Keyspace(\"appks1\", database_id=exampledb.id)\nappks2 = astra.Keyspace(\"appks2\", database_id=exampledb.id)\nappks3 = astra.Keyspace(\"appks3\", database_id=exampledb.id)\n# Example role that grants policy permissions to specific keyspaces within a single Astra DB\nsingledbrole = astra.Role(\"singledbrole\",\n    role_name=\"singledbrole\",\n    description=\"Role that applies to specific keyspaces for a single Astra DB\",\n    effect=\"allow\",\n    resources=[\n        pulumi.Output.all(exampledb.id, exampledb.keyspace).apply(lambda id, keyspace: f\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{keyspace}\"),\n        pulumi.Output.all(exampledb.id, exampledb.keyspace).apply(lambda id, keyspace: f\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{keyspace}:table:*\"),\n        pulumi.Output.all(exampledb.id, appks1.name).apply(lambda id, name: f\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}\"),\n        pulumi.Output.all(exampledb.id, appks1.name).apply(lambda id, name: f\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}:table:*\"),\n        pulumi.Output.all(exampledb.id, appks2.name).apply(lambda id, name: f\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}\"),\n        pulumi.Output.all(exampledb.id, appks2.name).apply(lambda id, name: f\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}:table:*\"),\n        pulumi.Output.all(exampledb.id, appks3.name).apply(lambda id, name: f\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}\"),\n        pulumi.Output.all(exampledb.id, appks3.name).apply(lambda id, name: f\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}:table:*\"),\n        exampledb.id.apply(lambda id: f\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:futureks\"),\n        exampledb.id.apply(lambda id: f\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:futureks:table:*\"),\n    ],\n    policies=[\n        \"org-db-view\",\n        \"db-cql\",\n        \"db-table-alter\",\n        \"db-table-create\",\n        \"db-table-describe\",\n        \"db-table-modify\",\n        \"db-table-select\",\n        \"db-keyspace-alter\",\n        \"db-keyspace-describe\",\n        \"db-keyspace-modify\",\n        \"db-keyspace-authorize\",\n        \"db-keyspace-drop\",\n        \"db-keyspace-create\",\n        \"db-keyspace-grant\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumiverse.Astra;\n\nreturn await Deployment.RunAsync(() => \n{\n    // Example role that grants policy permissions to ALL Astra DBs in an organization\n    var alldbsrole = new Astra.Role(\"alldbsrole\", new()\n    {\n        RoleName = \"alldbsrole\",\n        Description = \"Role that applies to all DBs in an org\",\n        Effect = \"allow\",\n        Resources = new[]\n        {\n            \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*\",\n            \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*\",\n            \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*:table:*\",\n        },\n        Policies = new[]\n        {\n            \"org-db-view\",\n            \"db-cql\",\n            \"db-table-alter\",\n            \"db-table-create\",\n            \"db-table-describe\",\n            \"db-table-modify\",\n            \"db-table-select\",\n            \"db-keyspace-alter\",\n            \"db-keyspace-describe\",\n            \"db-keyspace-modify\",\n            \"db-keyspace-authorize\",\n            \"db-keyspace-drop\",\n            \"db-keyspace-create\",\n            \"db-keyspace-grant\",\n        },\n    });\n\n    // Example resources for a more restricted role\n    // A Terraform managed Astra DB resource\n    var exampledb = new Astra.Database(\"exampledb\", new()\n    {\n        Keyspace = \"primaryks\",\n        CloudProvider = \"gcp\",\n        Regions = new[]\n        {\n            \"us-east1\",\n        },\n    });\n\n    // Example application keyspaces\n    var appks1 = new Astra.Keyspace(\"appks1\", new()\n    {\n        DatabaseId = exampledb.Id,\n    });\n\n    var appks2 = new Astra.Keyspace(\"appks2\", new()\n    {\n        DatabaseId = exampledb.Id,\n    });\n\n    var appks3 = new Astra.Keyspace(\"appks3\", new()\n    {\n        DatabaseId = exampledb.Id,\n    });\n\n    // Example role that grants policy permissions to specific keyspaces within a single Astra DB\n    var singledbrole = new Astra.Role(\"singledbrole\", new()\n    {\n        RoleName = \"singledbrole\",\n        Description = \"Role that applies to specific keyspaces for a single Astra DB\",\n        Effect = \"allow\",\n        Resources = new[]\n        {\n            Output.Tuple(exampledb.Id, exampledb.Keyspace).Apply(values =>\n            {\n                var id = values.Item1;\n                var keyspace = values.Item2;\n                return $\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{keyspace}\";\n            }),\n            Output.Tuple(exampledb.Id, exampledb.Keyspace).Apply(values =>\n            {\n                var id = values.Item1;\n                var keyspace = values.Item2;\n                return $\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{keyspace}:table:*\";\n            }),\n            Output.Tuple(exampledb.Id, appks1.Name).Apply(values =>\n            {\n                var id = values.Item1;\n                var name = values.Item2;\n                return $\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}\";\n            }),\n            Output.Tuple(exampledb.Id, appks1.Name).Apply(values =>\n            {\n                var id = values.Item1;\n                var name = values.Item2;\n                return $\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}:table:*\";\n            }),\n            Output.Tuple(exampledb.Id, appks2.Name).Apply(values =>\n            {\n                var id = values.Item1;\n                var name = values.Item2;\n                return $\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}\";\n            }),\n            Output.Tuple(exampledb.Id, appks2.Name).Apply(values =>\n            {\n                var id = values.Item1;\n                var name = values.Item2;\n                return $\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}:table:*\";\n            }),\n            Output.Tuple(exampledb.Id, appks3.Name).Apply(values =>\n            {\n                var id = values.Item1;\n                var name = values.Item2;\n                return $\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}\";\n            }),\n            Output.Tuple(exampledb.Id, appks3.Name).Apply(values =>\n            {\n                var id = values.Item1;\n                var name = values.Item2;\n                return $\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:{name}:table:*\";\n            }),\n            exampledb.Id.Apply(id => $\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:futureks\"),\n            exampledb.Id.Apply(id => $\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:{id}:keyspace:futureks:table:*\"),\n        },\n        Policies = new[]\n        {\n            \"org-db-view\",\n            \"db-cql\",\n            \"db-table-alter\",\n            \"db-table-create\",\n            \"db-table-describe\",\n            \"db-table-modify\",\n            \"db-table-select\",\n            \"db-keyspace-alter\",\n            \"db-keyspace-describe\",\n            \"db-keyspace-modify\",\n            \"db-keyspace-authorize\",\n            \"db-keyspace-drop\",\n            \"db-keyspace-create\",\n            \"db-keyspace-grant\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.NewRole(ctx, \"alldbsrole\", &astra.RoleArgs{\n\t\t\tRoleName:    pulumi.String(\"alldbsrole\"),\n\t\t\tDescription: pulumi.String(\"Role that applies to all DBs in an org\"),\n\t\t\tEffect:      pulumi.String(\"allow\"),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*\"),\n\t\t\t\tpulumi.String(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*\"),\n\t\t\t\tpulumi.String(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*:table:*\"),\n\t\t\t},\n\t\t\tPolicies: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"org-db-view\"),\n\t\t\t\tpulumi.String(\"db-cql\"),\n\t\t\t\tpulumi.String(\"db-table-alter\"),\n\t\t\t\tpulumi.String(\"db-table-create\"),\n\t\t\t\tpulumi.String(\"db-table-describe\"),\n\t\t\t\tpulumi.String(\"db-table-modify\"),\n\t\t\t\tpulumi.String(\"db-table-select\"),\n\t\t\t\tpulumi.String(\"db-keyspace-alter\"),\n\t\t\t\tpulumi.String(\"db-keyspace-describe\"),\n\t\t\t\tpulumi.String(\"db-keyspace-modify\"),\n\t\t\t\tpulumi.String(\"db-keyspace-authorize\"),\n\t\t\t\tpulumi.String(\"db-keyspace-drop\"),\n\t\t\t\tpulumi.String(\"db-keyspace-create\"),\n\t\t\t\tpulumi.String(\"db-keyspace-grant\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampledb, err := astra.NewDatabase(ctx, \"exampledb\", &astra.DatabaseArgs{\n\t\t\tKeyspace:      pulumi.String(\"primaryks\"),\n\t\t\tCloudProvider: pulumi.String(\"gcp\"),\n\t\t\tRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-east1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappks1, err := astra.NewKeyspace(ctx, \"appks1\", &astra.KeyspaceArgs{\n\t\t\tDatabaseId: exampledb.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappks2, err := astra.NewKeyspace(ctx, \"appks2\", &astra.KeyspaceArgs{\n\t\t\tDatabaseId: exampledb.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappks3, err := astra.NewKeyspace(ctx, \"appks3\", &astra.KeyspaceArgs{\n\t\t\tDatabaseId: exampledb.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = astra.NewRole(ctx, \"singledbrole\", &astra.RoleArgs{\n\t\t\tRoleName:    pulumi.String(\"singledbrole\"),\n\t\t\tDescription: pulumi.String(\"Role that applies to specific keyspaces for a single Astra DB\"),\n\t\t\tEffect:      pulumi.String(\"allow\"),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tpulumi.All(exampledb.ID(), exampledb.Keyspace).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tid := _args[0].(string)\n\t\t\t\t\tkeyspace := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%v:keyspace:%v\", id, keyspace), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tpulumi.All(exampledb.ID(), exampledb.Keyspace).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tid := _args[0].(string)\n\t\t\t\t\tkeyspace := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%v:keyspace:%v:table:*\", id, keyspace), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tpulumi.All(exampledb.ID(), appks1.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tid := _args[0].(string)\n\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%v:keyspace:%v\", id, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tpulumi.All(exampledb.ID(), appks1.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tid := _args[0].(string)\n\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%v:keyspace:%v:table:*\", id, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tpulumi.All(exampledb.ID(), appks2.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tid := _args[0].(string)\n\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%v:keyspace:%v\", id, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tpulumi.All(exampledb.ID(), appks2.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tid := _args[0].(string)\n\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%v:keyspace:%v:table:*\", id, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tpulumi.All(exampledb.ID(), appks3.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tid := _args[0].(string)\n\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%v:keyspace:%v\", id, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tpulumi.All(exampledb.ID(), appks3.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tid := _args[0].(string)\n\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%v:keyspace:%v:table:*\", id, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\texampledb.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%v:keyspace:futureks\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\texampledb.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%v:keyspace:futureks:table:*\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tPolicies: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"org-db-view\"),\n\t\t\t\tpulumi.String(\"db-cql\"),\n\t\t\t\tpulumi.String(\"db-table-alter\"),\n\t\t\t\tpulumi.String(\"db-table-create\"),\n\t\t\t\tpulumi.String(\"db-table-describe\"),\n\t\t\t\tpulumi.String(\"db-table-modify\"),\n\t\t\t\tpulumi.String(\"db-table-select\"),\n\t\t\t\tpulumi.String(\"db-keyspace-alter\"),\n\t\t\t\tpulumi.String(\"db-keyspace-describe\"),\n\t\t\t\tpulumi.String(\"db-keyspace-modify\"),\n\t\t\t\tpulumi.String(\"db-keyspace-authorize\"),\n\t\t\t\tpulumi.String(\"db-keyspace-drop\"),\n\t\t\t\tpulumi.String(\"db-keyspace-create\"),\n\t\t\t\tpulumi.String(\"db-keyspace-grant\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.Role;\nimport com.pulumi.astra.RoleArgs;\nimport com.pulumi.astra.Database;\nimport com.pulumi.astra.DatabaseArgs;\nimport com.pulumi.astra.Keyspace;\nimport com.pulumi.astra.KeyspaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var alldbsrole = new Role(\"alldbsrole\", RoleArgs.builder()        \n            .roleName(\"alldbsrole\")\n            .description(\"Role that applies to all DBs in an org\")\n            .effect(\"allow\")\n            .resources(            \n                \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*\",\n                \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*\",\n                \"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*:table:*\")\n            .policies(            \n                \"org-db-view\",\n                \"db-cql\",\n                \"db-table-alter\",\n                \"db-table-create\",\n                \"db-table-describe\",\n                \"db-table-modify\",\n                \"db-table-select\",\n                \"db-keyspace-alter\",\n                \"db-keyspace-describe\",\n                \"db-keyspace-modify\",\n                \"db-keyspace-authorize\",\n                \"db-keyspace-drop\",\n                \"db-keyspace-create\",\n                \"db-keyspace-grant\")\n            .build());\n\n        var exampledb = new Database(\"exampledb\", DatabaseArgs.builder()        \n            .keyspace(\"primaryks\")\n            .cloudProvider(\"gcp\")\n            .regions(\"us-east1\")\n            .build());\n\n        var appks1 = new Keyspace(\"appks1\", KeyspaceArgs.builder()        \n            .databaseId(exampledb.id())\n            .build());\n\n        var appks2 = new Keyspace(\"appks2\", KeyspaceArgs.builder()        \n            .databaseId(exampledb.id())\n            .build());\n\n        var appks3 = new Keyspace(\"appks3\", KeyspaceArgs.builder()        \n            .databaseId(exampledb.id())\n            .build());\n\n        var singledbrole = new Role(\"singledbrole\", RoleArgs.builder()        \n            .roleName(\"singledbrole\")\n            .description(\"Role that applies to specific keyspaces for a single Astra DB\")\n            .effect(\"allow\")\n            .resources(            \n                Output.tuple(exampledb.id(), exampledb.keyspace()).applyValue(values -> {\n                    var id = values.t1;\n                    var keyspace = values.t2;\n                    return String.format(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%s:keyspace:%s\", id,keyspace);\n                }),\n                Output.tuple(exampledb.id(), exampledb.keyspace()).applyValue(values -> {\n                    var id = values.t1;\n                    var keyspace = values.t2;\n                    return String.format(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%s:keyspace:%s:table:*\", id,keyspace);\n                }),\n                Output.tuple(exampledb.id(), appks1.name()).applyValue(values -> {\n                    var id = values.t1;\n                    var name = values.t2;\n                    return String.format(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%s:keyspace:%s\", id,name);\n                }),\n                Output.tuple(exampledb.id(), appks1.name()).applyValue(values -> {\n                    var id = values.t1;\n                    var name = values.t2;\n                    return String.format(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%s:keyspace:%s:table:*\", id,name);\n                }),\n                Output.tuple(exampledb.id(), appks2.name()).applyValue(values -> {\n                    var id = values.t1;\n                    var name = values.t2;\n                    return String.format(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%s:keyspace:%s\", id,name);\n                }),\n                Output.tuple(exampledb.id(), appks2.name()).applyValue(values -> {\n                    var id = values.t1;\n                    var name = values.t2;\n                    return String.format(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%s:keyspace:%s:table:*\", id,name);\n                }),\n                Output.tuple(exampledb.id(), appks3.name()).applyValue(values -> {\n                    var id = values.t1;\n                    var name = values.t2;\n                    return String.format(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%s:keyspace:%s\", id,name);\n                }),\n                Output.tuple(exampledb.id(), appks3.name()).applyValue(values -> {\n                    var id = values.t1;\n                    var name = values.t2;\n                    return String.format(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%s:keyspace:%s:table:*\", id,name);\n                }),\n                exampledb.id().applyValue(id -> String.format(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%s:keyspace:futureks\", id)),\n                exampledb.id().applyValue(id -> String.format(\"drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:%s:keyspace:futureks:table:*\", id)))\n            .policies(            \n                \"org-db-view\",\n                \"db-cql\",\n                \"db-table-alter\",\n                \"db-table-create\",\n                \"db-table-describe\",\n                \"db-table-modify\",\n                \"db-table-select\",\n                \"db-keyspace-alter\",\n                \"db-keyspace-describe\",\n                \"db-keyspace-modify\",\n                \"db-keyspace-authorize\",\n                \"db-keyspace-drop\",\n                \"db-keyspace-create\",\n                \"db-keyspace-grant\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Example role that grants policy permissions to ALL Astra DBs in an organization\n  alldbsrole:\n    type: astra:Role\n    properties:\n      roleName: alldbsrole\n      description: Role that applies to all DBs in an org\n      effect: allow\n      resources:\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:*:keyspace:*:table:*\n      policies:\n        - org-db-view\n        - db-cql\n        - db-table-alter\n        - db-table-create\n        - db-table-describe\n        - db-table-modify\n        - db-table-select\n        - db-keyspace-alter\n        - db-keyspace-describe\n        - db-keyspace-modify\n        - db-keyspace-authorize\n        - db-keyspace-drop\n        - db-keyspace-create\n        - db-keyspace-grant\n  # Example resources for a more restricted role\n  # A Terraform managed Astra DB resource\n  exampledb:\n    type: astra:Database\n    properties:\n      keyspace: primaryks\n      cloudProvider: gcp\n      regions:\n        - us-east1\n  # Example application keyspaces\n  appks1:\n    type: astra:Keyspace\n    properties:\n      databaseId: ${exampledb.id}\n  appks2:\n    type: astra:Keyspace\n    properties:\n      databaseId: ${exampledb.id}\n  appks3:\n    type: astra:Keyspace\n    properties:\n      databaseId: ${exampledb.id}\n  # Example role that grants policy permissions to specific keyspaces within a single Astra DB\n  singledbrole:\n    type: astra:Role\n    properties:\n      roleName: singledbrole\n      description: Role that applies to specific keyspaces for a single Astra DB\n      effect: allow\n      resources:\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${exampledb.keyspace}\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${exampledb.keyspace}:table:*\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks1.name}\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks1.name}:table:*\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks2.name}\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks2.name}:table:*\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks3.name}\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:${appks3.name}:table:*\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:futureks\n        - drn:astra:org:f9f4b1e0-4c05-451e-9bba-d631295a7f73:db:${exampledb.id}:keyspace:futureks:table:*\n      policies:\n        - org-db-view\n        - db-cql\n        - db-table-alter\n        - db-table-create\n        - db-table-describe\n        - db-table-modify\n        - db-table-select\n        - db-keyspace-alter\n        - db-keyspace-describe\n        - db-keyspace-modify\n        - db-keyspace-authorize\n        - db-keyspace-drop\n        - db-keyspace-create\n        - db-keyspace-grant\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n\n\n```sh\n $ pulumi import astra:index/role:Role example role-id\n```\n\n ",
      "properties": {
        "description": {
          "type": "string",
          "description": "Role description\n"
        },
        "effect": {
          "type": "string",
          "description": "Role effect\n"
        },
        "policies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of policies for the role. See https://docs.datastax.com/en/astra/docs/user-permissions.html#*operational*roles_detail for supported policies.\n"
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resources for which role is applicable (format is \"drn:astra:org:\\n\\n\", followed by optional resource criteria. See example usage above).\n"
        },
        "roleId": {
          "type": "string",
          "description": "Role ID, system generated\n"
        },
        "roleName": {
          "type": "string",
          "description": "Role name\n"
        }
      },
      "type": "object",
      "required": [
        "description",
        "effect",
        "policies",
        "resources",
        "roleId",
        "roleName"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Role description\n"
        },
        "effect": {
          "type": "string",
          "description": "Role effect\n"
        },
        "policies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of policies for the role. See https://docs.datastax.com/en/astra/docs/user-permissions.html#*operational*roles_detail for supported policies.\n"
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resources for which role is applicable (format is \"drn:astra:org:\\n\\n\", followed by optional resource criteria. See example usage above).\n"
        },
        "roleName": {
          "type": "string",
          "description": "Role name\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "description",
        "effect",
        "policies",
        "resources",
        "roleName"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Role resources.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "Role description\n"
          },
          "effect": {
            "type": "string",
            "description": "Role effect\n"
          },
          "policies": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of policies for the role. See https://docs.datastax.com/en/astra/docs/user-permissions.html#*operational*roles_detail for supported policies.\n"
          },
          "resources": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Resources for which role is applicable (format is \"drn:astra:org:\\n\\n\", followed by optional resource criteria. See example usage above).\n"
          },
          "roleId": {
            "type": "string",
            "description": "Role ID, system generated\n",
            "willReplaceOnChanges": true
          },
          "roleName": {
            "type": "string",
            "description": "Role name\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "astra:index/streamingSink:StreamingSink": {
      "description": "`astra.StreamingSink` creates a streaming sink which sends data from a topic to a target system.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumiverse/astra\";\n\nconst streamingTenant_1 = new astra.StreamingTenant(\"streamingTenant-1\", {\n    tenantName: \"terraformtest2\",\n    topic: \"terraformtest\",\n    region: \"useast-4\",\n    cloudProvider: \"gcp\",\n    userEmail: \"seb@datastax.com\",\n});\nconst cdc_1 = new astra.Cdc(\"cdc-1\", {\n    databaseId: \"5b70892f-e01a-4595-98e6-19ecc9985d50\",\n    databaseName: \"sai_test\",\n    table: \"test\",\n    keyspace: \"sai_test\",\n    topicPartitions: 3,\n    tenantName: streamingTenant_1.tenantName,\n}, {\n    dependsOn: [streamingTenant_1],\n});\nconst streamingSink_1 = new astra.StreamingSink(\"streamingSink-1\", {\n    tenantName: streamingTenant_1.tenantName,\n    topic: cdc_1.dataTopic,\n    region: \"useast-4\",\n    cloudProvider: \"gcp\",\n    sinkName: \"jdbc-clickhouse\",\n    retainOrdering: true,\n    processingGuarantees: \"ATLEAST_ONCE\",\n    parallelism: 3,\n    namespace: \"default\",\n    sinkConfigs: JSON.stringify({\n        userName: \"clickhouse\",\n        password: \"password\",\n        jdbcUrl: \"jdbc:clickhouse://fake.clickhouse.url:8123/pulsar_clickhouse_jdbc_sink\",\n        tableName: \"pulsar_clickhouse_jdbc_sink\",\n    }),\n    autoAck: true,\n}, {\n    dependsOn: [\n        streamingTenant_1,\n        cdc_1,\n    ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumiverse_astra as astra\n\nstreaming_tenant_1 = astra.StreamingTenant(\"streamingTenant-1\",\n    tenant_name=\"terraformtest2\",\n    topic=\"terraformtest\",\n    region=\"useast-4\",\n    cloud_provider=\"gcp\",\n    user_email=\"seb@datastax.com\")\ncdc_1 = astra.Cdc(\"cdc-1\",\n    database_id=\"5b70892f-e01a-4595-98e6-19ecc9985d50\",\n    database_name=\"sai_test\",\n    table=\"test\",\n    keyspace=\"sai_test\",\n    topic_partitions=3,\n    tenant_name=streaming_tenant_1.tenant_name,\n    opts=pulumi.ResourceOptions(depends_on=[streaming_tenant_1]))\nstreaming_sink_1 = astra.StreamingSink(\"streamingSink-1\",\n    tenant_name=streaming_tenant_1.tenant_name,\n    topic=cdc_1.data_topic,\n    region=\"useast-4\",\n    cloud_provider=\"gcp\",\n    sink_name=\"jdbc-clickhouse\",\n    retain_ordering=True,\n    processing_guarantees=\"ATLEAST_ONCE\",\n    parallelism=3,\n    namespace=\"default\",\n    sink_configs=json.dumps({\n        \"userName\": \"clickhouse\",\n        \"password\": \"password\",\n        \"jdbcUrl\": \"jdbc:clickhouse://fake.clickhouse.url:8123/pulsar_clickhouse_jdbc_sink\",\n        \"tableName\": \"pulsar_clickhouse_jdbc_sink\",\n    }),\n    auto_ack=True,\n    opts=pulumi.ResourceOptions(depends_on=[\n            streaming_tenant_1,\n            cdc_1,\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Pulumi;\nusing Astra = Pulumiverse.Astra;\n\nreturn await Deployment.RunAsync(() => \n{\n    var streamingTenant_1 = new Astra.StreamingTenant(\"streamingTenant-1\", new()\n    {\n        TenantName = \"terraformtest2\",\n        Topic = \"terraformtest\",\n        Region = \"useast-4\",\n        CloudProvider = \"gcp\",\n        UserEmail = \"seb@datastax.com\",\n    });\n\n    var cdc_1 = new Astra.Cdc(\"cdc-1\", new()\n    {\n        DatabaseId = \"5b70892f-e01a-4595-98e6-19ecc9985d50\",\n        DatabaseName = \"sai_test\",\n        Table = \"test\",\n        Keyspace = \"sai_test\",\n        TopicPartitions = 3,\n        TenantName = streamingTenant_1.TenantName,\n    }, new CustomResourceOptions\n    {\n        DependsOn = new[]\n        {\n            streamingTenant_1,\n        },\n    });\n\n    var streamingSink_1 = new Astra.StreamingSink(\"streamingSink-1\", new()\n    {\n        TenantName = streamingTenant_1.TenantName,\n        Topic = cdc_1.DataTopic,\n        Region = \"useast-4\",\n        CloudProvider = \"gcp\",\n        SinkName = \"jdbc-clickhouse\",\n        RetainOrdering = true,\n        ProcessingGuarantees = \"ATLEAST_ONCE\",\n        Parallelism = 3,\n        Namespace = \"default\",\n        SinkConfigs = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"userName\"] = \"clickhouse\",\n            [\"password\"] = \"password\",\n            [\"jdbcUrl\"] = \"jdbc:clickhouse://fake.clickhouse.url:8123/pulsar_clickhouse_jdbc_sink\",\n            [\"tableName\"] = \"pulsar_clickhouse_jdbc_sink\",\n        }),\n        AutoAck = true,\n    }, new CustomResourceOptions\n    {\n        DependsOn = new[]\n        {\n            streamingTenant_1,\n            cdc_1,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.NewStreamingTenant(ctx, \"streamingTenant-1\", &astra.StreamingTenantArgs{\n\t\t\tTenantName:    pulumi.String(\"terraformtest2\"),\n\t\t\tTopic:         pulumi.String(\"terraformtest\"),\n\t\t\tRegion:        pulumi.String(\"useast-4\"),\n\t\t\tCloudProvider: pulumi.String(\"gcp\"),\n\t\t\tUserEmail:     pulumi.String(\"seb@datastax.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = astra.NewCdc(ctx, \"cdc-1\", &astra.CdcArgs{\n\t\t\tDatabaseId:      pulumi.String(\"5b70892f-e01a-4595-98e6-19ecc9985d50\"),\n\t\t\tDatabaseName:    pulumi.String(\"sai_test\"),\n\t\t\tTable:           pulumi.String(\"test\"),\n\t\t\tKeyspace:        pulumi.String(\"sai_test\"),\n\t\t\tTopicPartitions: pulumi.Int(3),\n\t\t\tTenantName:      streamingTenant_1.TenantName,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tstreamingTenant_1,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"userName\":  \"clickhouse\",\n\t\t\t\"password\":  \"password\",\n\t\t\t\"jdbcUrl\":   \"jdbc:clickhouse://fake.clickhouse.url:8123/pulsar_clickhouse_jdbc_sink\",\n\t\t\t\"tableName\": \"pulsar_clickhouse_jdbc_sink\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = astra.NewStreamingSink(ctx, \"streamingSink-1\", &astra.StreamingSinkArgs{\n\t\t\tTenantName:           streamingTenant_1.TenantName,\n\t\t\tTopic:                cdc_1.DataTopic,\n\t\t\tRegion:               pulumi.String(\"useast-4\"),\n\t\t\tCloudProvider:        pulumi.String(\"gcp\"),\n\t\t\tSinkName:             pulumi.String(\"jdbc-clickhouse\"),\n\t\t\tRetainOrdering:       pulumi.Bool(true),\n\t\t\tProcessingGuarantees: pulumi.String(\"ATLEAST_ONCE\"),\n\t\t\tParallelism:          pulumi.Int(3),\n\t\t\tNamespace:            pulumi.String(\"default\"),\n\t\t\tSinkConfigs:          pulumi.String(json0),\n\t\t\tAutoAck:              pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tstreamingTenant_1,\n\t\t\tcdc_1,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.StreamingTenant;\nimport com.pulumi.astra.StreamingTenantArgs;\nimport com.pulumi.astra.Cdc;\nimport com.pulumi.astra.CdcArgs;\nimport com.pulumi.astra.StreamingSink;\nimport com.pulumi.astra.StreamingSinkArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var streamingTenant_1 = new StreamingTenant(\"streamingTenant-1\", StreamingTenantArgs.builder()        \n            .tenantName(\"terraformtest2\")\n            .topic(\"terraformtest\")\n            .region(\"useast-4\")\n            .cloudProvider(\"gcp\")\n            .userEmail(\"seb@datastax.com\")\n            .build());\n\n        var cdc_1 = new Cdc(\"cdc-1\", CdcArgs.builder()        \n            .databaseId(\"5b70892f-e01a-4595-98e6-19ecc9985d50\")\n            .databaseName(\"sai_test\")\n            .table(\"test\")\n            .keyspace(\"sai_test\")\n            .topicPartitions(3)\n            .tenantName(streamingTenant_1.tenantName())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(streamingTenant_1)\n                .build());\n\n        var streamingSink_1 = new StreamingSink(\"streamingSink-1\", StreamingSinkArgs.builder()        \n            .tenantName(streamingTenant_1.tenantName())\n            .topic(cdc_1.dataTopic())\n            .region(\"useast-4\")\n            .cloudProvider(\"gcp\")\n            .sinkName(\"jdbc-clickhouse\")\n            .retainOrdering(true)\n            .processingGuarantees(\"ATLEAST_ONCE\")\n            .parallelism(3)\n            .namespace(\"default\")\n            .sinkConfigs(serializeJson(\n                jsonObject(\n                    jsonProperty(\"userName\", \"clickhouse\"),\n                    jsonProperty(\"password\", \"password\"),\n                    jsonProperty(\"jdbcUrl\", \"jdbc:clickhouse://fake.clickhouse.url:8123/pulsar_clickhouse_jdbc_sink\"),\n                    jsonProperty(\"tableName\", \"pulsar_clickhouse_jdbc_sink\")\n                )))\n            .autoAck(true)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    streamingTenant_1,\n                    cdc_1)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  streamingTenant-1:\n    type: astra:StreamingTenant\n    properties:\n      tenantName: terraformtest2\n      topic: terraformtest\n      region: useast-4\n      cloudProvider: gcp\n      userEmail: seb@datastax.com\n  cdc-1:\n    type: astra:Cdc\n    properties:\n      databaseId: 5b70892f-e01a-4595-98e6-19ecc9985d50\n      databaseName: sai_test\n      table: test\n      keyspace: sai_test\n      topicPartitions: 3\n      tenantName: ${[\"streamingTenant-1\"].tenantName}\n    options:\n      dependson:\n        - ${[\"streamingTenant-1\"]}\n  streamingSink-1:\n    type: astra:StreamingSink\n    properties:\n      tenantName: ${[\"streamingTenant-1\"].tenantName}\n      topic: ${[\"cdc-1\"].dataTopic}\n      region: useast-4\n      cloudProvider: gcp\n      sinkName: jdbc-clickhouse\n      retainOrdering: true\n      processingGuarantees: ATLEAST_ONCE\n      parallelism: 3\n      namespace: default\n      sinkConfigs:\n        Fn::ToJSON:\n          userName: clickhouse\n          password: password\n          jdbcUrl: jdbc:clickhouse://fake.clickhouse.url:8123/pulsar_clickhouse_jdbc_sink\n          tableName: pulsar_clickhouse_jdbc_sink\n      autoAck: true\n    options:\n      dependson:\n        - ${[\"streamingTenant-1\"]}\n        - ${[\"cdc-1\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n\n\n```sh\n $ pulumi import astra:index/streamingSink:StreamingSink example tenant_name/topic\n```\n\n ",
      "properties": {
        "autoAck": {
          "type": "boolean",
          "description": "auto ack\n"
        },
        "cloudProvider": {
          "type": "string",
          "description": "Cloud provider\n"
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether or not to allow Terraform to destroy this streaming sink. Unless this field is set to false in Terraform state,\na `terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
        },
        "namespace": {
          "type": "string",
          "description": "Pulsar Namespace\n"
        },
        "parallelism": {
          "type": "integer",
          "description": "Parallelism for Pulsar sink\n"
        },
        "processingGuarantees": {
          "type": "string",
          "description": "\"ATLEAST*ONCE\"\"ATMOST*ONCE\"\"EFFECTIVELY_ONCE\".\n"
        },
        "region": {
          "type": "string",
          "description": "cloud region\n"
        },
        "retainOrdering": {
          "type": "boolean",
          "description": "Retain ordering.\n"
        },
        "sinkConfigs": {
          "type": "string",
          "description": "Sink Configs\n"
        },
        "sinkName": {
          "type": "string",
          "description": "Name of the sink.\n"
        },
        "tenantName": {
          "type": "string",
          "description": "Streaming tenant name.\n"
        },
        "topic": {
          "type": "string",
          "description": "Streaming tenant topic.\n"
        }
      },
      "type": "object",
      "required": [
        "autoAck",
        "cloudProvider",
        "namespace",
        "parallelism",
        "processingGuarantees",
        "region",
        "retainOrdering",
        "sinkConfigs",
        "sinkName",
        "tenantName",
        "topic"
      ],
      "inputProperties": {
        "autoAck": {
          "type": "boolean",
          "description": "auto ack\n",
          "willReplaceOnChanges": true
        },
        "cloudProvider": {
          "type": "string",
          "description": "Cloud provider\n",
          "willReplaceOnChanges": true
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether or not to allow Terraform to destroy this streaming sink. Unless this field is set to false in Terraform state,\na `terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
        },
        "namespace": {
          "type": "string",
          "description": "Pulsar Namespace\n",
          "willReplaceOnChanges": true
        },
        "parallelism": {
          "type": "integer",
          "description": "Parallelism for Pulsar sink\n",
          "willReplaceOnChanges": true
        },
        "processingGuarantees": {
          "type": "string",
          "description": "\"ATLEAST*ONCE\"\"ATMOST*ONCE\"\"EFFECTIVELY_ONCE\".\n",
          "willReplaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "cloud region\n",
          "willReplaceOnChanges": true
        },
        "retainOrdering": {
          "type": "boolean",
          "description": "Retain ordering.\n",
          "willReplaceOnChanges": true
        },
        "sinkConfigs": {
          "type": "string",
          "description": "Sink Configs\n",
          "willReplaceOnChanges": true
        },
        "sinkName": {
          "type": "string",
          "description": "Name of the sink.\n",
          "willReplaceOnChanges": true
        },
        "tenantName": {
          "type": "string",
          "description": "Streaming tenant name.\n",
          "willReplaceOnChanges": true
        },
        "topic": {
          "type": "string",
          "description": "Streaming tenant topic.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "autoAck",
        "cloudProvider",
        "namespace",
        "parallelism",
        "processingGuarantees",
        "region",
        "retainOrdering",
        "sinkConfigs",
        "sinkName",
        "tenantName",
        "topic"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering StreamingSink resources.\n",
        "properties": {
          "autoAck": {
            "type": "boolean",
            "description": "auto ack\n",
            "willReplaceOnChanges": true
          },
          "cloudProvider": {
            "type": "string",
            "description": "Cloud provider\n",
            "willReplaceOnChanges": true
          },
          "deletionProtection": {
            "type": "boolean",
            "description": "Whether or not to allow Terraform to destroy this streaming sink. Unless this field is set to false in Terraform state,\na `terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
          },
          "namespace": {
            "type": "string",
            "description": "Pulsar Namespace\n",
            "willReplaceOnChanges": true
          },
          "parallelism": {
            "type": "integer",
            "description": "Parallelism for Pulsar sink\n",
            "willReplaceOnChanges": true
          },
          "processingGuarantees": {
            "type": "string",
            "description": "\"ATLEAST*ONCE\"\"ATMOST*ONCE\"\"EFFECTIVELY_ONCE\".\n",
            "willReplaceOnChanges": true
          },
          "region": {
            "type": "string",
            "description": "cloud region\n",
            "willReplaceOnChanges": true
          },
          "retainOrdering": {
            "type": "boolean",
            "description": "Retain ordering.\n",
            "willReplaceOnChanges": true
          },
          "sinkConfigs": {
            "type": "string",
            "description": "Sink Configs\n",
            "willReplaceOnChanges": true
          },
          "sinkName": {
            "type": "string",
            "description": "Name of the sink.\n",
            "willReplaceOnChanges": true
          },
          "tenantName": {
            "type": "string",
            "description": "Streaming tenant name.\n",
            "willReplaceOnChanges": true
          },
          "topic": {
            "type": "string",
            "description": "Streaming tenant topic.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "astra:index/streamingTenant:StreamingTenant": {
      "description": "`astra.StreamingTenant` creates an Astra Streaming tenant.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst streaming_tenant_1 = new astra.StreamingTenant(\"streaming_tenant-1\", {\n    cloudProvider: \"gcp\",\n    region: \"useast-4\",\n    tenantName: \"terraformtest\",\n    topic: \"terraformtest\",\n    userEmail: \"seb@datastax.com\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_astra as astra\n\nstreaming_tenant_1 = astra.StreamingTenant(\"streamingTenant-1\",\n    cloud_provider=\"gcp\",\n    region=\"useast-4\",\n    tenant_name=\"terraformtest\",\n    topic=\"terraformtest\",\n    user_email=\"seb@datastax.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumiverse.Astra;\n\nreturn await Deployment.RunAsync(() => \n{\n    var streamingTenant_1 = new Astra.StreamingTenant(\"streamingTenant-1\", new()\n    {\n        CloudProvider = \"gcp\",\n        Region = \"useast-4\",\n        TenantName = \"terraformtest\",\n        Topic = \"terraformtest\",\n        UserEmail = \"seb@datastax.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.NewStreamingTenant(ctx, \"streamingTenant-1\", &astra.StreamingTenantArgs{\n\t\t\tCloudProvider: pulumi.String(\"gcp\"),\n\t\t\tRegion:        pulumi.String(\"useast-4\"),\n\t\t\tTenantName:    pulumi.String(\"terraformtest\"),\n\t\t\tTopic:         pulumi.String(\"terraformtest\"),\n\t\t\tUserEmail:     pulumi.String(\"seb@datastax.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.StreamingTenant;\nimport com.pulumi.astra.StreamingTenantArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var streamingTenant_1 = new StreamingTenant(\"streamingTenant-1\", StreamingTenantArgs.builder()        \n            .cloudProvider(\"gcp\")\n            .region(\"useast-4\")\n            .tenantName(\"terraformtest\")\n            .topic(\"terraformtest\")\n            .userEmail(\"seb@datastax.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  streamingTenant-1:\n    type: astra:StreamingTenant\n    properties:\n      cloudProvider: gcp\n      region: useast-4\n      tenantName: terraformtest\n      topic: terraformtest\n      userEmail: seb@datastax.com\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n\n\n```sh\n $ pulumi import astra:index/streamingTenant:StreamingTenant example tenant_name\n```\n\n ",
      "properties": {
        "brokerServiceUrl": {
          "type": "string",
          "description": "The Pulsar Binary Protocol URL used for production and consumption of messages.\n"
        },
        "cloudProvider": {
          "type": "string",
          "description": "Cloud provider\n"
        },
        "clusterName": {
          "type": "string",
          "description": "Pulsar cluster name.\n"
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether or not to allow Terraform to destroy this tenant. Unless this field is set to false in Terraform state, a\n`terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
        },
        "region": {
          "type": "string",
          "description": "cloud region\n"
        },
        "tenantId": {
          "type": "string",
          "description": "UUID for the tenant.\n"
        },
        "tenantName": {
          "type": "string",
          "description": "Streaming tenant name.\n"
        },
        "topic": {
          "type": "string",
          "description": "Streaming tenant topic.\n"
        },
        "userEmail": {
          "type": "string",
          "description": "User email for tenant.\n"
        },
        "userMetricsUrl": {
          "type": "string",
          "description": "URL for metrics.\n"
        },
        "webServiceUrl": {
          "type": "string",
          "description": "URL used for administrative operations.\n"
        },
        "webSocketQueryParamUrl": {
          "type": "string",
          "description": "URL used for web socket query parameter operations.\n"
        },
        "webSocketUrl": {
          "type": "string",
          "description": "URL used for web socket operations.\n"
        }
      },
      "type": "object",
      "required": [
        "brokerServiceUrl",
        "cloudProvider",
        "clusterName",
        "region",
        "tenantId",
        "tenantName",
        "topic",
        "userEmail",
        "userMetricsUrl",
        "webServiceUrl",
        "webSocketQueryParamUrl",
        "webSocketUrl"
      ],
      "inputProperties": {
        "cloudProvider": {
          "type": "string",
          "description": "Cloud provider\n",
          "willReplaceOnChanges": true
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether or not to allow Terraform to destroy this tenant. Unless this field is set to false in Terraform state, a\n`terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
        },
        "region": {
          "type": "string",
          "description": "cloud region\n",
          "willReplaceOnChanges": true
        },
        "tenantName": {
          "type": "string",
          "description": "Streaming tenant name.\n",
          "willReplaceOnChanges": true
        },
        "topic": {
          "type": "string",
          "description": "Streaming tenant topic.\n",
          "willReplaceOnChanges": true
        },
        "userEmail": {
          "type": "string",
          "description": "User email for tenant.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "cloudProvider",
        "region",
        "tenantName",
        "topic",
        "userEmail"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering StreamingTenant resources.\n",
        "properties": {
          "brokerServiceUrl": {
            "type": "string",
            "description": "The Pulsar Binary Protocol URL used for production and consumption of messages.\n"
          },
          "cloudProvider": {
            "type": "string",
            "description": "Cloud provider\n",
            "willReplaceOnChanges": true
          },
          "clusterName": {
            "type": "string",
            "description": "Pulsar cluster name.\n"
          },
          "deletionProtection": {
            "type": "boolean",
            "description": "Whether or not to allow Terraform to destroy this tenant. Unless this field is set to false in Terraform state, a\n`terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
          },
          "region": {
            "type": "string",
            "description": "cloud region\n",
            "willReplaceOnChanges": true
          },
          "tenantId": {
            "type": "string",
            "description": "UUID for the tenant.\n"
          },
          "tenantName": {
            "type": "string",
            "description": "Streaming tenant name.\n",
            "willReplaceOnChanges": true
          },
          "topic": {
            "type": "string",
            "description": "Streaming tenant topic.\n",
            "willReplaceOnChanges": true
          },
          "userEmail": {
            "type": "string",
            "description": "User email for tenant.\n",
            "willReplaceOnChanges": true
          },
          "userMetricsUrl": {
            "type": "string",
            "description": "URL for metrics.\n"
          },
          "webServiceUrl": {
            "type": "string",
            "description": "URL used for administrative operations.\n"
          },
          "webSocketQueryParamUrl": {
            "type": "string",
            "description": "URL used for web socket query parameter operations.\n"
          },
          "webSocketUrl": {
            "type": "string",
            "description": "URL used for web socket operations.\n"
          }
        },
        "type": "object"
      }
    },
    "astra:index/streamingTopic:StreamingTopic": {
      "description": "`astra.StreamingTopic` creates an Astra Streaming topic.\n",
      "properties": {
        "cloudProvider": {
          "type": "string",
          "description": "Cloud provider\n"
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether or not to allow Terraform to destroy this streaming topic. Unless this field is set to false in Terraform state,\na `terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
        },
        "namespace": {
          "type": "string",
          "description": "Pulsar Namespace\n"
        },
        "region": {
          "type": "string",
          "description": "cloud region\n"
        },
        "tenantName": {
          "type": "string",
          "description": "Streaming tenant name.\n"
        },
        "topic": {
          "type": "string",
          "description": "Streaming tenant topic.\n"
        }
      },
      "type": "object",
      "required": [
        "cloudProvider",
        "namespace",
        "region",
        "tenantName",
        "topic"
      ],
      "inputProperties": {
        "cloudProvider": {
          "type": "string",
          "description": "Cloud provider\n",
          "willReplaceOnChanges": true
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether or not to allow Terraform to destroy this streaming topic. Unless this field is set to false in Terraform state,\na `terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
        },
        "namespace": {
          "type": "string",
          "description": "Pulsar Namespace\n",
          "willReplaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "cloud region\n",
          "willReplaceOnChanges": true
        },
        "tenantName": {
          "type": "string",
          "description": "Streaming tenant name.\n",
          "willReplaceOnChanges": true
        },
        "topic": {
          "type": "string",
          "description": "Streaming tenant topic.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "cloudProvider",
        "namespace",
        "region",
        "tenantName",
        "topic"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering StreamingTopic resources.\n",
        "properties": {
          "cloudProvider": {
            "type": "string",
            "description": "Cloud provider\n",
            "willReplaceOnChanges": true
          },
          "deletionProtection": {
            "type": "boolean",
            "description": "Whether or not to allow Terraform to destroy this streaming topic. Unless this field is set to false in Terraform state,\na `terraform destroy` or `terraform apply` command that deletes the instance will fail. Defaults to `true`.\n"
          },
          "namespace": {
            "type": "string",
            "description": "Pulsar Namespace\n",
            "willReplaceOnChanges": true
          },
          "region": {
            "type": "string",
            "description": "cloud region\n",
            "willReplaceOnChanges": true
          },
          "tenantName": {
            "type": "string",
            "description": "Streaming tenant name.\n",
            "willReplaceOnChanges": true
          },
          "topic": {
            "type": "string",
            "description": "Streaming tenant topic.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "astra:index/table:Table": {
      "description": "`astra.Table` provides a table resource which represents a table in cassandra.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumiverse/astra\";\n\nconst dev = new astra.Database(\"dev\", {\n    keyspace: \"puppies\",\n    cloudProvider: \"gcp\",\n    regions: [\"us-east1\"],\n});\nconst table_1 = new astra.Table(\"table-1\", {\n    table: \"mytable\",\n    keyspace: \"puppies\",\n    databaseId: dev.id,\n    region: \"us-east1\",\n    clusteringColumns: \"a:b\",\n    partitionKeys: \"c:d\",\n    columnDefinitions: [\n        {\n            Name: \"a\",\n            Static: \"false\",\n            TypeDefinition: \"text\",\n        },\n        {\n            Name: \"b\",\n            Static: \"false\",\n            TypeDefinition: \"text\",\n        },\n        {\n            Name: \"c\",\n            Static: \"false\",\n            TypeDefinition: \"text\",\n        },\n        {\n            Name: \"d\",\n            Static: \"false\",\n            TypeDefinition: \"text\",\n        },\n        {\n            Name: \"e\",\n            Static: \"false\",\n            TypeDefinition: \"text\",\n        },\n        {\n            Name: \"f\",\n            Static: \"false\",\n            TypeDefinition: \"text\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_astra as astra\n\ndev = astra.Database(\"dev\",\n    keyspace=\"puppies\",\n    cloud_provider=\"gcp\",\n    regions=[\"us-east1\"])\ntable_1 = astra.Table(\"table-1\",\n    table=\"mytable\",\n    keyspace=\"puppies\",\n    database_id=dev.id,\n    region=\"us-east1\",\n    clustering_columns=\"a:b\",\n    partition_keys=\"c:d\",\n    column_definitions=[\n        {\n            \"Name\": \"a\",\n            \"Static\": \"false\",\n            \"TypeDefinition\": \"text\",\n        },\n        {\n            \"Name\": \"b\",\n            \"Static\": \"false\",\n            \"TypeDefinition\": \"text\",\n        },\n        {\n            \"Name\": \"c\",\n            \"Static\": \"false\",\n            \"TypeDefinition\": \"text\",\n        },\n        {\n            \"Name\": \"d\",\n            \"Static\": \"false\",\n            \"TypeDefinition\": \"text\",\n        },\n        {\n            \"Name\": \"e\",\n            \"Static\": \"false\",\n            \"TypeDefinition\": \"text\",\n        },\n        {\n            \"Name\": \"f\",\n            \"Static\": \"false\",\n            \"TypeDefinition\": \"text\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumiverse.Astra;\n\nreturn await Deployment.RunAsync(() => \n{\n    var dev = new Astra.Database(\"dev\", new()\n    {\n        Keyspace = \"puppies\",\n        CloudProvider = \"gcp\",\n        Regions = new[]\n        {\n            \"us-east1\",\n        },\n    });\n\n    var table_1 = new Astra.Table(\"table-1\", new()\n    {\n        AstraTable = \"mytable\",\n        Keyspace = \"puppies\",\n        DatabaseId = dev.Id,\n        Region = \"us-east1\",\n        ClusteringColumns = \"a:b\",\n        PartitionKeys = \"c:d\",\n        ColumnDefinitions = new[]\n        {\n            \n            {\n                { \"Name\", \"a\" },\n                { \"Static\", \"false\" },\n                { \"TypeDefinition\", \"text\" },\n            },\n            \n            {\n                { \"Name\", \"b\" },\n                { \"Static\", \"false\" },\n                { \"TypeDefinition\", \"text\" },\n            },\n            \n            {\n                { \"Name\", \"c\" },\n                { \"Static\", \"false\" },\n                { \"TypeDefinition\", \"text\" },\n            },\n            \n            {\n                { \"Name\", \"d\" },\n                { \"Static\", \"false\" },\n                { \"TypeDefinition\", \"text\" },\n            },\n            \n            {\n                { \"Name\", \"e\" },\n                { \"Static\", \"false\" },\n                { \"TypeDefinition\", \"text\" },\n            },\n            \n            {\n                { \"Name\", \"f\" },\n                { \"Static\", \"false\" },\n                { \"TypeDefinition\", \"text\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdev, err := astra.NewDatabase(ctx, \"dev\", &astra.DatabaseArgs{\n\t\t\tKeyspace:      pulumi.String(\"puppies\"),\n\t\t\tCloudProvider: pulumi.String(\"gcp\"),\n\t\t\tRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-east1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = astra.NewTable(ctx, \"table-1\", &astra.TableArgs{\n\t\t\tTable:             pulumi.String(\"mytable\"),\n\t\t\tKeyspace:          pulumi.String(\"puppies\"),\n\t\t\tDatabaseId:        dev.ID(),\n\t\t\tRegion:            pulumi.String(\"us-east1\"),\n\t\t\tClusteringColumns: pulumi.String(\"a:b\"),\n\t\t\tPartitionKeys:     pulumi.String(\"c:d\"),\n\t\t\tColumnDefinitions: pulumi.StringMapArray{\n\t\t\t\tpulumi.StringMap{\n\t\t\t\t\t\"Name\":           pulumi.String(\"a\"),\n\t\t\t\t\t\"Static\":         pulumi.String(\"false\"),\n\t\t\t\t\t\"TypeDefinition\": pulumi.String(\"text\"),\n\t\t\t\t},\n\t\t\t\tpulumi.StringMap{\n\t\t\t\t\t\"Name\":           pulumi.String(\"b\"),\n\t\t\t\t\t\"Static\":         pulumi.String(\"false\"),\n\t\t\t\t\t\"TypeDefinition\": pulumi.String(\"text\"),\n\t\t\t\t},\n\t\t\t\tpulumi.StringMap{\n\t\t\t\t\t\"Name\":           pulumi.String(\"c\"),\n\t\t\t\t\t\"Static\":         pulumi.String(\"false\"),\n\t\t\t\t\t\"TypeDefinition\": pulumi.String(\"text\"),\n\t\t\t\t},\n\t\t\t\tpulumi.StringMap{\n\t\t\t\t\t\"Name\":           pulumi.String(\"d\"),\n\t\t\t\t\t\"Static\":         pulumi.String(\"false\"),\n\t\t\t\t\t\"TypeDefinition\": pulumi.String(\"text\"),\n\t\t\t\t},\n\t\t\t\tpulumi.StringMap{\n\t\t\t\t\t\"Name\":           pulumi.String(\"e\"),\n\t\t\t\t\t\"Static\":         pulumi.String(\"false\"),\n\t\t\t\t\t\"TypeDefinition\": pulumi.String(\"text\"),\n\t\t\t\t},\n\t\t\t\tpulumi.StringMap{\n\t\t\t\t\t\"Name\":           pulumi.String(\"f\"),\n\t\t\t\t\t\"Static\":         pulumi.String(\"false\"),\n\t\t\t\t\t\"TypeDefinition\": pulumi.String(\"text\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.Database;\nimport com.pulumi.astra.DatabaseArgs;\nimport com.pulumi.astra.Table;\nimport com.pulumi.astra.TableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var dev = new Database(\"dev\", DatabaseArgs.builder()        \n            .keyspace(\"puppies\")\n            .cloudProvider(\"gcp\")\n            .regions(\"us-east1\")\n            .build());\n\n        var table_1 = new Table(\"table-1\", TableArgs.builder()        \n            .table(\"mytable\")\n            .keyspace(\"puppies\")\n            .databaseId(dev.id())\n            .region(\"us-east1\")\n            .clusteringColumns(\"a:b\")\n            .partitionKeys(\"c:d\")\n            .columnDefinitions(            \n                Map.ofEntries(\n                    Map.entry(\"Name\", \"a\"),\n                    Map.entry(\"Static\", false),\n                    Map.entry(\"TypeDefinition\", \"text\")\n                ),\n                Map.ofEntries(\n                    Map.entry(\"Name\", \"b\"),\n                    Map.entry(\"Static\", false),\n                    Map.entry(\"TypeDefinition\", \"text\")\n                ),\n                Map.ofEntries(\n                    Map.entry(\"Name\", \"c\"),\n                    Map.entry(\"Static\", false),\n                    Map.entry(\"TypeDefinition\", \"text\")\n                ),\n                Map.ofEntries(\n                    Map.entry(\"Name\", \"d\"),\n                    Map.entry(\"Static\", false),\n                    Map.entry(\"TypeDefinition\", \"text\")\n                ),\n                Map.ofEntries(\n                    Map.entry(\"Name\", \"e\"),\n                    Map.entry(\"Static\", false),\n                    Map.entry(\"TypeDefinition\", \"text\")\n                ),\n                Map.ofEntries(\n                    Map.entry(\"Name\", \"f\"),\n                    Map.entry(\"Static\", false),\n                    Map.entry(\"TypeDefinition\", \"text\")\n                ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  dev:\n    type: astra:Database\n    properties:\n      keyspace: puppies\n      cloudProvider: gcp\n      regions:\n        - us-east1\n  table-1:\n    type: astra:Table\n    properties:\n      table: mytable\n      keyspace: puppies\n      databaseId: ${dev.id}\n      region: us-east1\n      clusteringColumns: a:b\n      partitionKeys: c:d\n      columnDefinitions:\n        - Name: a\n          Static: false\n          TypeDefinition: text\n        - Name: b\n          Static: false\n          TypeDefinition: text\n        - Name: c\n          Static: false\n          TypeDefinition: text\n        - Name: d\n          Static: false\n          TypeDefinition: text\n        - Name: e\n          Static: false\n          TypeDefinition: text\n        - Name: f\n          Static: false\n          TypeDefinition: text\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n# the import id includes the database_id, keyspace name, and table name.\n\n```sh\n $ pulumi import astra:index/table:Table example 48bfc13b-c1a5-48db-b70f-b6ef9709872b/kayspacename/tablename\n```\n\n ",
      "properties": {
        "clusteringColumns": {
          "type": "string",
          "description": "Clustering column(s), separated by :\n"
        },
        "columnDefinitions": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of table Definitions\n"
        },
        "databaseId": {
          "type": "string",
          "description": "Astra database to create the keyspace.\n"
        },
        "keyspace": {
          "type": "string",
          "description": "Keyspace name can have up to 48 alpha-numeric characters and contain underscores; only letters are supported as the first character.\n"
        },
        "partitionKeys": {
          "type": "string",
          "description": "Partition key(s), separated by :\n"
        },
        "region": {
          "type": "string",
          "description": "region.\n"
        },
        "table": {
          "type": "string",
          "description": "Table name can have up to 48 alpha-numeric characters and contain underscores; only letters are supported as the first character.\n",
          "language": {
            "csharp": {
              "name": "AstraTable"
            }
          }
        }
      },
      "type": "object",
      "required": [
        "clusteringColumns",
        "columnDefinitions",
        "databaseId",
        "keyspace",
        "partitionKeys",
        "region",
        "table"
      ],
      "inputProperties": {
        "clusteringColumns": {
          "type": "string",
          "description": "Clustering column(s), separated by :\n",
          "willReplaceOnChanges": true
        },
        "columnDefinitions": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of table Definitions\n",
          "willReplaceOnChanges": true
        },
        "databaseId": {
          "type": "string",
          "description": "Astra database to create the keyspace.\n",
          "willReplaceOnChanges": true
        },
        "keyspace": {
          "type": "string",
          "description": "Keyspace name can have up to 48 alpha-numeric characters and contain underscores; only letters are supported as the first character.\n",
          "willReplaceOnChanges": true
        },
        "partitionKeys": {
          "type": "string",
          "description": "Partition key(s), separated by :\n",
          "willReplaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "region.\n",
          "willReplaceOnChanges": true
        },
        "table": {
          "type": "string",
          "description": "Table name can have up to 48 alpha-numeric characters and contain underscores; only letters are supported as the first character.\n",
          "language": {
            "csharp": {
              "name": "AstraTable"
            }
          },
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "clusteringColumns",
        "columnDefinitions",
        "databaseId",
        "keyspace",
        "partitionKeys",
        "region",
        "table"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Table resources.\n",
        "properties": {
          "clusteringColumns": {
            "type": "string",
            "description": "Clustering column(s), separated by :\n",
            "willReplaceOnChanges": true
          },
          "columnDefinitions": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "description": "A list of table Definitions\n",
            "willReplaceOnChanges": true
          },
          "databaseId": {
            "type": "string",
            "description": "Astra database to create the keyspace.\n",
            "willReplaceOnChanges": true
          },
          "keyspace": {
            "type": "string",
            "description": "Keyspace name can have up to 48 alpha-numeric characters and contain underscores; only letters are supported as the first character.\n",
            "willReplaceOnChanges": true
          },
          "partitionKeys": {
            "type": "string",
            "description": "Partition key(s), separated by :\n",
            "willReplaceOnChanges": true
          },
          "region": {
            "type": "string",
            "description": "region.\n",
            "willReplaceOnChanges": true
          },
          "table": {
            "type": "string",
            "description": "Table name can have up to 48 alpha-numeric characters and contain underscores; only letters are supported as the first character.\n",
            "language": {
              "csharp": {
                "name": "AstraTable"
              }
            },
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "astra:index/token:Token": {
      "description": "`astra.Token` resource represents a token with a specific role assigned.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst example = new astra.Token(\"example\", {\n    roles: [\"a8cd363d-5069-4a2b-86d8-0578139812ac\"],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_astra as astra\n\nexample = astra.Token(\"example\", roles=[\"a8cd363d-5069-4a2b-86d8-0578139812ac\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumiverse.Astra;\n\nreturn await Deployment.RunAsync(() => \n{\n    var example = new Astra.Token(\"example\", new()\n    {\n        Roles = new[]\n        {\n            \"a8cd363d-5069-4a2b-86d8-0578139812ac\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.NewToken(ctx, \"example\", &astra.TokenArgs{\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"a8cd363d-5069-4a2b-86d8-0578139812ac\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.Token;\nimport com.pulumi.astra.TokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Token(\"example\", TokenArgs.builder()        \n            .roles(\"a8cd363d-5069-4a2b-86d8-0578139812ac\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: astra:Token\n    properties:\n      roles:\n        - a8cd363d-5069-4a2b-86d8-0578139812ac\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\n\n\n```sh\n $ pulumi import astra:index/token:Token example client-secret\n```\n\n ",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "Client id, use as username in cql to connect\n"
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of Role IDs to be assigned to the generated token\n"
        },
        "secret": {
          "type": "string",
          "description": "Secret, use as password in cql to connect\n"
        },
        "token": {
          "type": "string",
          "description": "Token, use as auth bearer for API calls or as password in combination with the word `token` in cql\n",
          "language": {
            "csharp": {
              "name": "AstraToken"
            }
          }
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "roles",
        "secret",
        "token"
      ],
      "inputProperties": {
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of Role IDs to be assigned to the generated token\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "roles"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Token resources.\n",
        "properties": {
          "clientId": {
            "type": "string",
            "description": "Client id, use as username in cql to connect\n"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of Role IDs to be assigned to the generated token\n",
            "willReplaceOnChanges": true
          },
          "secret": {
            "type": "string",
            "description": "Secret, use as password in cql to connect\n"
          },
          "token": {
            "type": "string",
            "description": "Token, use as auth bearer for API calls or as password in combination with the word `token` in cql\n",
            "language": {
              "csharp": {
                "name": "AstraToken"
              }
            }
          }
        },
        "type": "object"
      }
    }
  },
  "functions": {
    "astra:index/getAccessList:getAccessList": {
      "description": "`astra.AccessList` provides a datasource that lists the access lists for an Astra database.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst dev = pulumi.output(astra.getAccessList({\n    databaseId: \"8d356587-73b3-430a-9c0e-d780332e2afb\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_astra as astra\n\ndev = astra.get_access_list(database_id=\"8d356587-73b3-430a-9c0e-d780332e2afb\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumi.Astra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dev = Astra.GetAccessList.Invoke(new()\n    {\n        DatabaseId = \"8d356587-73b3-430a-9c0e-d780332e2afb\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-astra/sdk/go/astra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.LookupAccessList(ctx, \u0026GetAccessListArgs{\n\t\t\tDatabaseId: \"8d356587-73b3-430a-9c0e-d780332e2afb\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.AstraFunctions;\nimport com.pulumi.astra.inputs.GetAccessListArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dev = AstraFunctions.getAccessList(GetAccessListArgs.builder()\n            .databaseId(\"8d356587-73b3-430a-9c0e-d780332e2afb\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  dev:\n    Fn::Invoke:\n      Function: astra:getAccessList\n      Arguments:\n        databaseId: 8d356587-73b3-430a-9c0e-d780332e2afb\n```\n{{% /example %}}\n{{% /examples %}}",
      "inputs": {
        "description": "A collection of arguments for invoking getAccessList.\n",
        "properties": {
          "databaseId": {
            "type": "string",
            "description": "The ID of the Astra database.\n"
          }
        },
        "type": "object",
        "required": [
          "databaseId"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getAccessList.\n",
        "properties": {
          "addresses": {
            "description": "Addresses in the access list.\n",
            "items": {
              "$ref": "#/types/astra:index%2FgetAccessListAddress:getAccessListAddress"
            },
            "type": "array"
          },
          "databaseId": {
            "description": "The ID of the Astra database.\n",
            "type": "string"
          },
          "enabled": {
            "description": "The Access list is enabled or disabled.\n",
            "type": "boolean"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          }
        },
        "required": [
          "addresses",
          "databaseId",
          "enabled",
          "id"
        ],
        "type": "object"
      }
    },
    "astra:index/getAstraDatabase:getAstraDatabase": {
      "description": "`astra.Database` provides a datasource for Astra an Astra database. This can be used to select an existing database within your Astra Organization.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst db = pulumi.output(astra.getAstraDatabase({\n    databaseId: \"8d356587-73b3-430a-9c0e-d780332e2afb\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_astra as astra\n\ndb = astra.get_astra_database(database_id=\"8d356587-73b3-430a-9c0e-d780332e2afb\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumi.Astra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var db = Astra.GetAstraDatabase.Invoke(new()\n    {\n        DatabaseId = \"8d356587-73b3-430a-9c0e-d780332e2afb\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-astra/sdk/go/astra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.GetAstraDatabase(ctx, \u0026GetAstraDatabaseArgs{\n\t\t\tDatabaseId: \"8d356587-73b3-430a-9c0e-d780332e2afb\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.AstraFunctions;\nimport com.pulumi.astra.inputs.GetAstraDatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var db = AstraFunctions.getAstraDatabase(GetAstraDatabaseArgs.builder()\n            .databaseId(\"8d356587-73b3-430a-9c0e-d780332e2afb\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  db:\n    Fn::Invoke:\n      Function: astra:getAstraDatabase\n      Arguments:\n        databaseId: 8d356587-73b3-430a-9c0e-d780332e2afb\n```\n{{% /example %}}\n{{% /examples %}}",
      "inputs": {
        "description": "A collection of arguments for invoking getAstraDatabase.\n",
        "properties": {
          "databaseId": {
            "type": "string",
            "description": "Astra Database ID (system generated)\n"
          }
        },
        "type": "object",
        "required": [
          "databaseId"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getAstraDatabase.\n",
        "properties": {
          "additionalKeyspaces": {
            "description": "Additional keyspaces\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "cloudProvider": {
            "description": "Cloud provider (AWS, GCP, AZURE)\n",
            "type": "string"
          },
          "cqlshUrl": {
            "description": "URL for cqlsh web\n",
            "type": "string"
          },
          "dataEndpointUrl": {
            "description": "REST API URL\n",
            "type": "string"
          },
          "databaseId": {
            "description": "Astra Database ID (system generated)\n",
            "type": "string"
          },
          "datacenters": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of Datacenter IDs. The map key is \"cloud_provider.region\". Example: \"GCP.us-east4\".\n",
            "type": "object"
          },
          "grafanaUrl": {
            "description": "URL for the grafana dashboard for this database\n",
            "type": "string"
          },
          "graphqlUrl": {
            "description": "Graphql URL\n",
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "keyspace": {
            "description": "Initial keyspace\n",
            "type": "string"
          },
          "name": {
            "description": "Database name (user provided)\n",
            "type": "string"
          },
          "nodeCount": {
            "description": "Node count (not relevant for serverless databases)\n",
            "type": "integer"
          },
          "organizationId": {
            "description": "Ordg id (system generated)\n",
            "type": "string"
          },
          "ownerId": {
            "description": "Owner id (system generated)\n",
            "type": "string"
          },
          "regions": {
            "description": "Cloud provider region. Get list of supported regions from regions data-source\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "replicationFactor": {
            "description": "Replication Factor (not relevant for serverless databases)\n",
            "type": "integer"
          },
          "status": {
            "description": "Database status\n",
            "type": "string"
          },
          "totalStorage": {
            "description": "Storage Capacity (not relevant for serverelss databases)\n",
            "type": "integer"
          }
        },
        "required": [
          "additionalKeyspaces",
          "cloudProvider",
          "cqlshUrl",
          "dataEndpointUrl",
          "databaseId",
          "datacenters",
          "grafanaUrl",
          "graphqlUrl",
          "id",
          "keyspace",
          "name",
          "nodeCount",
          "organizationId",
          "ownerId",
          "regions",
          "replicationFactor",
          "status",
          "totalStorage"
        ],
        "type": "object"
      }
    },
    "astra:index/getAstraDatabases:getAstraDatabases": {
      "description": "`astra.getAstraDatabases` provides a datasource for a list of Astra databases. This can be used to select databases within your Astra Organization.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getAstraDatabases.\n",
        "properties": {
          "cloudProvider": {
            "type": "string",
            "description": "The cloud provider\n"
          },
          "status": {
            "type": "string",
            "description": "Status flter. Only return databases with matching status, if supplied. Otherwise return all databases matching other requirements\n"
          }
        },
        "type": "object"
      },
      "outputs": {
        "description": "A collection of values returned by getAstraDatabases.\n",
        "properties": {
          "cloudProvider": {
            "description": "The cloud provider\n",
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "results": {
            "description": "The list of Astra databases that match the search criteria.\n",
            "items": {
              "$ref": "#/types/astra:index%2FgetAstraDatabasesResult:getAstraDatabasesResult"
            },
            "type": "array"
          },
          "status": {
            "description": "Status flter. Only return databases with matching status, if supplied. Otherwise return all databases matching other requirements\n",
            "type": "string"
          }
        },
        "required": [
          "id",
          "results"
        ],
        "type": "object"
      }
    },
    "astra:index/getAvailableRegions:getAvailableRegions": {
      "description": "Retrieve a list of available cloud regions in Astra\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst regions = pulumi.output(astra.getAvailableRegions());\n```\n```python\nimport pulumi\nimport pulumi_astra as astra\n\nregions = astra.get_available_regions()\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumi.Astra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var regions = Astra.GetAvailableRegions.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.LookupAvailableRegions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.AstraFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var regions = AstraFunctions.getAvailableRegions();\n\n    }\n}\n```\n```yaml\nvariables:\n  regions:\n    Fn::Invoke:\n      Function: astra:getAvailableRegions\n      Arguments: {}\n```\n{{% /example %}}\n{{% /examples %}}",
      "outputs": {
        "description": "A collection of values returned by getAvailableRegions.\n",
        "properties": {
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "results": {
            "description": "The list of supported Astra regions by cloud provider and tier.\n",
            "items": {
              "$ref": "#/types/astra:index%2FgetAvailableRegionsResult:getAvailableRegionsResult"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "results"
        ],
        "type": "object"
      }
    },
    "astra:index/getKeyspace:getKeyspace": {
      "description": "`astra.Keyspace` provides a datasource for a particular keyspace. See `astra.getKeyspaces` if you're looking to fetch all the keyspaces for a particular database.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst dev = pulumi.output(astra.getKeyspace({\n    databaseId: \"f9f4b1e0-4c05-451e-9bba-d631295a7f73\",\n    name: \"puppies\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_astra as astra\n\ndev = astra.get_keyspace(database_id=\"f9f4b1e0-4c05-451e-9bba-d631295a7f73\",\n    name=\"puppies\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumi.Astra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dev = Astra.GetKeyspace.Invoke(new()\n    {\n        DatabaseId = \"f9f4b1e0-4c05-451e-9bba-d631295a7f73\",\n        Name = \"puppies\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-astra/sdk/go/astra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.LookupKeyspace(ctx, \u0026GetKeyspaceArgs{\n\t\t\tDatabaseId: \"f9f4b1e0-4c05-451e-9bba-d631295a7f73\",\n\t\t\tName:       \"puppies\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.AstraFunctions;\nimport com.pulumi.astra.inputs.GetKeyspaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dev = AstraFunctions.getKeyspace(GetKeyspaceArgs.builder()\n            .databaseId(\"f9f4b1e0-4c05-451e-9bba-d631295a7f73\")\n            .name(\"puppies\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  dev:\n    Fn::Invoke:\n      Function: astra:getKeyspace\n      Arguments:\n        databaseId: f9f4b1e0-4c05-451e-9bba-d631295a7f73\n        name: puppies\n```\n{{% /example %}}\n{{% /examples %}}",
      "inputs": {
        "description": "A collection of arguments for invoking getKeyspace.\n",
        "properties": {
          "databaseId": {
            "type": "string",
            "description": "The ID of the Astra database.\n"
          },
          "name": {
            "type": "string",
            "description": "The keyspace name.\n"
          }
        },
        "type": "object",
        "required": [
          "databaseId",
          "name"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getKeyspace.\n",
        "properties": {
          "databaseId": {
            "description": "The ID of the Astra database.\n",
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "name": {
            "description": "The keyspace name.\n",
            "type": "string"
          }
        },
        "required": [
          "databaseId",
          "id",
          "name"
        ],
        "type": "object"
      }
    },
    "astra:index/getKeyspaces:getKeyspaces": {
      "description": "`astra.getKeyspaces` provides a datasource that lists the keyspaces in an Astra database.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst dev = pulumi.output(astra.getKeyspaces({\n    databaseId: \"f9f4b1e0-4c05-451e-9bba-d631295a7f73\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_astra as astra\n\ndev = astra.get_keyspaces(database_id=\"f9f4b1e0-4c05-451e-9bba-d631295a7f73\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumi.Astra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dev = Astra.GetKeyspaces.Invoke(new()\n    {\n        DatabaseId = \"f9f4b1e0-4c05-451e-9bba-d631295a7f73\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-astra/sdk/go/astra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.LookupKeyspaces(ctx, \u0026GetKeyspacesArgs{\n\t\t\tDatabaseId: \"f9f4b1e0-4c05-451e-9bba-d631295a7f73\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.AstraFunctions;\nimport com.pulumi.astra.inputs.GetKeyspacesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dev = AstraFunctions.getKeyspaces(GetKeyspacesArgs.builder()\n            .databaseId(\"f9f4b1e0-4c05-451e-9bba-d631295a7f73\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  dev:\n    Fn::Invoke:\n      Function: astra:getKeyspaces\n      Arguments:\n        databaseId: f9f4b1e0-4c05-451e-9bba-d631295a7f73\n```\n{{% /example %}}\n{{% /examples %}}",
      "inputs": {
        "description": "A collection of arguments for invoking getKeyspaces.\n",
        "properties": {
          "databaseId": {
            "type": "string",
            "description": "The ID of the Astra database.\n"
          }
        },
        "type": "object",
        "required": [
          "databaseId"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getKeyspaces.\n",
        "properties": {
          "databaseId": {
            "description": "The ID of the Astra database.\n",
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "results": {
            "description": "The list of keyspaces that match the search criteria.\n",
            "items": {
              "$ref": "#/types/astra:index%2FgetKeyspacesResult:getKeyspacesResult"
            },
            "type": "array"
          }
        },
        "required": [
          "databaseId",
          "id",
          "results"
        ],
        "type": "object"
      }
    },
    "astra:index/getPrivateLinkEndpoints:getPrivateLinkEndpoints": {
      "description": "`astra.getPrivateLinkEndpoints` provides a datasource that lists the private link endpoints for an Astra database.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst dev = pulumi.output(astra.getPrivateLinkEndpoints({\n    databaseId: \"8d356587-73b3-430a-9c0e-d780332e2afb\",\n    datacenterId: \"8d356587-73b3-430a-9c0e-d780332e2afb-1\",\n    endpointId: \"com.amazonaws.vpce.us-east-1.vpce-svc-03ac5a4b18ee480df\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_astra as astra\n\ndev = astra.get_private_link_endpoints(database_id=\"8d356587-73b3-430a-9c0e-d780332e2afb\",\n    datacenter_id=\"8d356587-73b3-430a-9c0e-d780332e2afb-1\",\n    endpoint_id=\"com.amazonaws.vpce.us-east-1.vpce-svc-03ac5a4b18ee480df\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumi.Astra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dev = Astra.GetPrivateLinkEndpoints.Invoke(new()\n    {\n        DatabaseId = \"8d356587-73b3-430a-9c0e-d780332e2afb\",\n        DatacenterId = \"8d356587-73b3-430a-9c0e-d780332e2afb-1\",\n        EndpointId = \"com.amazonaws.vpce.us-east-1.vpce-svc-03ac5a4b18ee480df\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-astra/sdk/go/astra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.LookupPrivateLinkEndpoints(ctx, \u0026GetPrivateLinkEndpointsArgs{\n\t\t\tDatabaseId:   \"8d356587-73b3-430a-9c0e-d780332e2afb\",\n\t\t\tDatacenterId: \"8d356587-73b3-430a-9c0e-d780332e2afb-1\",\n\t\t\tEndpointId:   \"com.amazonaws.vpce.us-east-1.vpce-svc-03ac5a4b18ee480df\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.AstraFunctions;\nimport com.pulumi.astra.inputs.GetPrivateLinkEndpointsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dev = AstraFunctions.getPrivateLinkEndpoints(GetPrivateLinkEndpointsArgs.builder()\n            .databaseId(\"8d356587-73b3-430a-9c0e-d780332e2afb\")\n            .datacenterId(\"8d356587-73b3-430a-9c0e-d780332e2afb-1\")\n            .endpointId(\"com.amazonaws.vpce.us-east-1.vpce-svc-03ac5a4b18ee480df\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  dev:\n    Fn::Invoke:\n      Function: astra:getPrivateLinkEndpoints\n      Arguments:\n        databaseId: 8d356587-73b3-430a-9c0e-d780332e2afb\n        datacenterId: 8d356587-73b3-430a-9c0e-d780332e2afb-1\n        endpointId: com.amazonaws.vpce.us-east-1.vpce-svc-03ac5a4b18ee480df\n```\n{{% /example %}}\n{{% /examples %}}",
      "inputs": {
        "description": "A collection of arguments for invoking getPrivateLinkEndpoints.\n",
        "properties": {
          "databaseId": {
            "type": "string",
            "description": "The ID of the Astra database.\n"
          },
          "datacenterId": {
            "type": "string",
            "description": "The Datacenter ID of the Astra database.\n"
          },
          "endpointId": {
            "type": "string",
            "description": "Endpoint ID.\n"
          }
        },
        "type": "object",
        "required": [
          "databaseId",
          "datacenterId",
          "endpointId"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getPrivateLinkEndpoints.\n",
        "properties": {
          "databaseId": {
            "description": "The ID of the Astra database.\n",
            "type": "string"
          },
          "datacenterId": {
            "description": "The Datacenter ID of the Astra database.\n",
            "type": "string"
          },
          "endpointId": {
            "description": "Endpoint ID.\n",
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "results": {
            "description": "The list of private links endpoint details that match the search criteria.\n",
            "items": {
              "$ref": "#/types/astra:index%2FgetPrivateLinkEndpointsResult:getPrivateLinkEndpointsResult"
            },
            "type": "array"
          }
        },
        "required": [
          "databaseId",
          "datacenterId",
          "endpointId",
          "id",
          "results"
        ],
        "type": "object"
      }
    },
    "astra:index/getPrivateLinks:getPrivateLinks": {
      "description": "`astra.getPrivateLinks` provides a datasource that lists the private links in an Astra database.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst dev = pulumi.output(astra.getPrivateLinks({\n    databaseId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenterId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_astra as astra\n\ndev = astra.get_private_links(database_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n    datacenter_id=\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumi.Astra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dev = Astra.GetPrivateLinks.Invoke(new()\n    {\n        DatabaseId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n        DatacenterId = \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-astra/sdk/go/astra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.LookupPrivateLinks(ctx, \u0026GetPrivateLinksArgs{\n\t\t\tDatabaseId:   \"a6bc9c26-e7ce-424f-84c7-0a00afb12588\",\n\t\t\tDatacenterId: \"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.AstraFunctions;\nimport com.pulumi.astra.inputs.GetPrivateLinksArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dev = AstraFunctions.getPrivateLinks(GetPrivateLinksArgs.builder()\n            .databaseId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588\")\n            .datacenterId(\"a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  dev:\n    Fn::Invoke:\n      Function: astra:getPrivateLinks\n      Arguments:\n        databaseId: a6bc9c26-e7ce-424f-84c7-0a00afb12588\n        datacenterId: a6bc9c26-e7ce-424f-84c7-0a00afb12588-1\n```\n{{% /example %}}\n{{% /examples %}}",
      "inputs": {
        "description": "A collection of arguments for invoking getPrivateLinks.\n",
        "properties": {
          "databaseId": {
            "type": "string",
            "description": "The ID of the Astra database.\n"
          },
          "datacenterId": {
            "type": "string",
            "description": "The datacenter where of the Astra database.\n"
          }
        },
        "type": "object",
        "required": [
          "databaseId",
          "datacenterId"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getPrivateLinks.\n",
        "properties": {
          "databaseId": {
            "description": "The ID of the Astra database.\n",
            "type": "string"
          },
          "datacenterId": {
            "description": "The datacenter where of the Astra database.\n",
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "results": {
            "description": "The list of private links that match the search criteria.\n",
            "items": {
              "$ref": "#/types/astra:index%2FgetPrivateLinksResult:getPrivateLinksResult"
            },
            "type": "array"
          }
        },
        "required": [
          "databaseId",
          "datacenterId",
          "id",
          "results"
        ],
        "type": "object"
      }
    },
    "astra:index/getRole:getRole": {
      "description": "`astra.Role` provides a datasource that lists the custom roles for an org.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst dev = pulumi.output(astra.getRole({\n    roleId: \"role-id-here\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_astra as astra\n\ndev = astra.get_role(role_id=\"role-id-here\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumi.Astra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dev = Astra.GetRole.Invoke(new()\n    {\n        RoleId = \"role-id-here\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-astra/sdk/go/astra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.LookupRole(ctx, \u0026GetRoleArgs{\n\t\t\tRoleId: \"role-id-here\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.AstraFunctions;\nimport com.pulumi.astra.inputs.GetRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dev = AstraFunctions.getRole(GetRoleArgs.builder()\n            .roleId(\"role-id-here\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  dev:\n    Fn::Invoke:\n      Function: astra:getRole\n      Arguments:\n        roleId: role-id-here\n```\n{{% /example %}}\n{{% /examples %}}",
      "inputs": {
        "description": "A collection of arguments for invoking getRole.\n",
        "properties": {
          "roleId": {
            "type": "string",
            "description": "Role ID, system generated\n"
          }
        },
        "type": "object",
        "required": [
          "roleId"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getRole.\n",
        "properties": {
          "description": {
            "description": "Role description\n",
            "type": "string"
          },
          "effect": {
            "description": "Role effect\n",
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "policies": {
            "description": "List of policies for the role. See https://docs.datastax.com/en/astra/docs/user-permissions.html#*operational*roles_detail for supported policies.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resources": {
            "description": "Resources for which role is applicable (format is \"drn:astra:org:\\n\\n\", followed by optional resource criteria. See example usage above).\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "roleId": {
            "description": "Role ID, system generated\n",
            "type": "string"
          },
          "roleName": {
            "description": "Role name\n",
            "type": "string"
          }
        },
        "required": [
          "description",
          "effect",
          "id",
          "policies",
          "resources",
          "roleId",
          "roleName"
        ],
        "type": "object"
      }
    },
    "astra:index/getRoles:getRoles": {
      "description": "`astra.getRoles` provides a datasource for a list of Astra roles. This can be used to select roles within your Astra Organization.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst dev = pulumi.output(astra.getRoles());\n```\n```python\nimport pulumi\nimport pulumi_astra as astra\n\ndev = astra.get_roles()\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumi.Astra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dev = Astra.GetRoles.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.LookupRoles(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.AstraFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dev = AstraFunctions.getRoles();\n\n    }\n}\n```\n```yaml\nvariables:\n  dev:\n    Fn::Invoke:\n      Function: astra:getRoles\n      Arguments: {}\n```\n{{% /example %}}\n{{% /examples %}}",
      "outputs": {
        "description": "A collection of values returned by getRoles.\n",
        "properties": {
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "results": {
            "description": "The list of Astra roles.\n",
            "items": {
              "$ref": "#/types/astra:index%2FgetRolesResult:getRolesResult"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "results"
        ],
        "type": "object"
      }
    },
    "astra:index/getSecureConnectBundleUrl:getSecureConnectBundleUrl": {
      "description": "`astra.getSecureConnectBundleUrl` provides a datasource that generates a temporary secure connect bundle URL. This URL lasts five minutes. Secure connect bundles are used to connect to Astra using cql cassandra drivers. See the [docs](https://docs.datastax.com/en/astra/docs/connecting-to-database.html) for more information on how to connect.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getSecureConnectBundleUrl.\n",
        "properties": {
          "databaseId": {
            "type": "string",
            "description": "The ID of the Astra database.\n"
          },
          "datacenterId": {
            "type": "string",
            "description": "The ID of the Astra datacenter. If omitted, all bundles will be fetched.\n"
          }
        },
        "type": "object",
        "required": [
          "databaseId"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getSecureConnectBundleUrl.\n",
        "properties": {
          "databaseId": {
            "description": "The ID of the Astra database.\n",
            "type": "string"
          },
          "datacenterId": {
            "description": "The ID of the Astra datacenter. If omitted, all bundles will be fetched.\n",
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "secureBundles": {
            "description": "A list of Secure Connect Bundle info\n",
            "items": {
              "$ref": "#/types/astra:index%2FgetSecureConnectBundleUrlSecureBundle:getSecureConnectBundleUrlSecureBundle"
            },
            "type": "array"
          }
        },
        "required": [
          "databaseId",
          "id",
          "secureBundles"
        ],
        "type": "object"
      }
    },
    "astra:index/getStreamingTenantTokens:getStreamingTenantTokens": {
      "description": "`astra.getStreamingTenantTokens` provides a datasource that lists streaming tenant tokens.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getStreamingTenantTokens.\n",
        "properties": {
          "clusterName": {
            "type": "string",
            "description": "Name of the Pulsar Cluster. Format: `pulsar-\u003ccloud provider\u003e-\u003ccloud region\u003e`. Example: `pulsar-gcp-useast1`\n"
          },
          "tenantName": {
            "type": "string",
            "description": "Name of the streaming tenant for which to fetch tokens.\n"
          }
        },
        "type": "object",
        "required": [
          "clusterName",
          "tenantName"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getStreamingTenantTokens.\n",
        "properties": {
          "clusterName": {
            "description": "Name of the Pulsar Cluster. Format: `pulsar-\u003ccloud provider\u003e-\u003ccloud region\u003e`. Example: `pulsar-gcp-useast1`\n",
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "tenantName": {
            "description": "Name of the streaming tenant for which to fetch tokens.\n",
            "type": "string"
          },
          "tokens": {
            "description": "The list of tokens for the specified tenant.\n",
            "items": {
              "$ref": "#/types/astra:index%2FgetStreamingTenantTokensToken:getStreamingTenantTokensToken"
            },
            "type": "array"
          }
        },
        "required": [
          "clusterName",
          "id",
          "tenantName",
          "tokens"
        ],
        "type": "object"
      }
    },
    "astra:index/getUsers:getUsers": {
      "description": "`astra.getUsers` provides a datasource for a list of Astra users. This can be used to select users within your Astra Organization.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as astra from \"@pulumi/astra\";\n\nconst dev = pulumi.output(astra.getUsers());\n```\n```python\nimport pulumi\nimport pulumi_astra as astra\n\ndev = astra.get_users()\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing Astra = Pulumi.Astra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dev = Astra.GetUsers.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-astra/sdk/go/astra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-astra/sdk/go/astra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := astra.GetUsers(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.astra.AstraFunctions;\nimport com.pulumi.astra.inputs.GetUsersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dev = AstraFunctions.getUsers();\n\n    }\n}\n```\n```yaml\nvariables:\n  dev:\n    Fn::Invoke:\n      Function: astra:getUsers\n      Arguments: {}\n```\n{{% /example %}}\n{{% /examples %}}",
      "inputs": {
        "description": "A collection of arguments for invoking getUsers.\n",
        "properties": {
          "orgName": {
            "type": "string",
            "description": "Organization Name.\n"
          }
        },
        "type": "object"
      },
      "outputs": {
        "description": "A collection of values returned by getUsers.\n",
        "properties": {
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.\n",
            "type": "string"
          },
          "orgId": {
            "description": "Organization ID.\n",
            "type": "string"
          },
          "orgName": {
            "description": "Organization Name.\n",
            "type": "string"
          },
          "users": {
            "description": "The list of Astra users.\n",
            "items": {
              "$ref": "#/types/astra:index%2FgetUsersUser:getUsersUser"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "orgId",
          "users"
        ],
        "type": "object"
      }
    }
  }
}
