@formalco/pulumi 1.2.3 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/config/vars.d.ts +12 -0
  2. package/config/vars.d.ts.map +1 -1
  3. package/config/vars.js +12 -0
  4. package/config/vars.js.map +1 -1
  5. package/encryptionKey.d.ts +6 -6
  6. package/index.d.ts +9 -0
  7. package/index.d.ts.map +1 -1
  8. package/index.js +17 -2
  9. package/index.js.map +1 -1
  10. package/integrationCloud.d.ts +102 -2
  11. package/integrationCloud.d.ts.map +1 -1
  12. package/integrationCloud.js +24 -0
  13. package/integrationCloud.js.map +1 -1
  14. package/integrationCloudAzureActivation.d.ts +76 -0
  15. package/integrationCloudAzureActivation.d.ts.map +1 -0
  16. package/integrationCloudAzureActivation.js +88 -0
  17. package/integrationCloudAzureActivation.js.map +1 -0
  18. package/integrationOidc.d.ts +5 -5
  19. package/nativeUser.d.ts +3 -3
  20. package/nativeUserV3.d.ts +348 -0
  21. package/nativeUserV3.d.ts.map +1 -0
  22. package/nativeUserV3.js +203 -0
  23. package/nativeUserV3.js.map +1 -0
  24. package/package.json +2 -2
  25. package/policy.d.ts +18 -0
  26. package/policy.d.ts.map +1 -1
  27. package/policy.js +2 -0
  28. package/policy.js.map +1 -1
  29. package/provider.d.ts +19 -0
  30. package/provider.d.ts.map +1 -1
  31. package/provider.js +5 -1
  32. package/provider.js.map +1 -1
  33. package/resource.d.ts +23 -3
  34. package/resource.d.ts.map +1 -1
  35. package/resource.js +4 -0
  36. package/resource.js.map +1 -1
  37. package/resourceNativeUserSelection.d.ts +107 -0
  38. package/resourceNativeUserSelection.d.ts.map +1 -0
  39. package/resourceNativeUserSelection.js +126 -0
  40. package/resourceNativeUserSelection.js.map +1 -0
  41. package/types/input.d.ts +383 -3
  42. package/types/input.d.ts.map +1 -1
  43. package/types/output.d.ts +382 -2
  44. package/types/output.d.ts.map +1 -1
  45. package/user.d.ts +6 -6
@@ -0,0 +1,76 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ /**
3
+ * Reports the Azure tenant and managed identity client id back to Formal to activate an Azure Cloud Integration.
4
+ */
5
+ export declare class IntegrationCloudAzureActivation extends pulumi.CustomResource {
6
+ /**
7
+ * Get an existing IntegrationCloudAzureActivation resource's state with the given name, ID, and optional extra
8
+ * properties used to qualify the lookup.
9
+ *
10
+ * @param name The _unique_ name of the resulting resource.
11
+ * @param id The _unique_ provider ID of the resource to lookup.
12
+ * @param state Any extra arguments used during the lookup.
13
+ * @param opts Optional settings to control the behavior of the CustomResource.
14
+ */
15
+ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: IntegrationCloudAzureActivationState, opts?: pulumi.CustomResourceOptions): IntegrationCloudAzureActivation;
16
+ /**
17
+ * Returns true if the given object is an instance of IntegrationCloudAzureActivation. This is designed to work even
18
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
19
+ */
20
+ static isInstance(obj: any): obj is IntegrationCloudAzureActivation;
21
+ /**
22
+ * The client id of the managed identity created for this integration.
23
+ */
24
+ readonly clientId: pulumi.Output<string>;
25
+ /**
26
+ * The ID of the Azure Cloud Integration to activate.
27
+ */
28
+ readonly integrationId: pulumi.Output<string>;
29
+ /**
30
+ * The Entra tenant the managed identity created for this integration belongs to.
31
+ */
32
+ readonly tenantId: pulumi.Output<string>;
33
+ /**
34
+ * Create a IntegrationCloudAzureActivation resource with the given unique name, arguments, and options.
35
+ *
36
+ * @param name The _unique_ name of the resource.
37
+ * @param args The arguments to use to populate this resource's properties.
38
+ * @param opts A bag of options that control this resource's behavior.
39
+ */
40
+ constructor(name: string, args: IntegrationCloudAzureActivationArgs, opts?: pulumi.CustomResourceOptions);
41
+ }
42
+ /**
43
+ * Input properties used for looking up and filtering IntegrationCloudAzureActivation resources.
44
+ */
45
+ export interface IntegrationCloudAzureActivationState {
46
+ /**
47
+ * The client id of the managed identity created for this integration.
48
+ */
49
+ clientId?: pulumi.Input<string | undefined>;
50
+ /**
51
+ * The ID of the Azure Cloud Integration to activate.
52
+ */
53
+ integrationId?: pulumi.Input<string | undefined>;
54
+ /**
55
+ * The Entra tenant the managed identity created for this integration belongs to.
56
+ */
57
+ tenantId?: pulumi.Input<string | undefined>;
58
+ }
59
+ /**
60
+ * The set of arguments for constructing a IntegrationCloudAzureActivation resource.
61
+ */
62
+ export interface IntegrationCloudAzureActivationArgs {
63
+ /**
64
+ * The client id of the managed identity created for this integration.
65
+ */
66
+ clientId: pulumi.Input<string>;
67
+ /**
68
+ * The ID of the Azure Cloud Integration to activate.
69
+ */
70
+ integrationId: pulumi.Input<string>;
71
+ /**
72
+ * The Entra tenant the managed identity created for this integration belongs to.
73
+ */
74
+ tenantId: pulumi.Input<string>;
75
+ }
76
+ //# sourceMappingURL=integrationCloudAzureActivation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrationCloudAzureActivation.d.ts","sourceRoot":"","sources":["../integrationCloudAzureActivation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAGzC;;GAEG;AACH,qBAAa,+BAAgC,SAAQ,MAAM,CAAC,cAAc;IACtE;;;;;;;;OAQG;WACW,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,oCAAoC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,qBAAqB,GAAG,+BAA+B;IAOhL;;;OAGG;WACW,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,+BAA+B;IAO1E;;OAEG;IACH,SAAwB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD;;OAEG;IACH,SAAwB,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7D;;OAEG;IACH,SAAwB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAExD;;;;;;OAMG;gBACS,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,qBAAqB;CA2B3G;AAED;;GAEG;AACH,MAAM,WAAW,oCAAoC;IACjD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAChD;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAClC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.IntegrationCloudAzureActivation = void 0;
29
+ const pulumi = __importStar(require("@pulumi/pulumi"));
30
+ const utilities = __importStar(require("./utilities"));
31
+ /**
32
+ * Reports the Azure tenant and managed identity client id back to Formal to activate an Azure Cloud Integration.
33
+ */
34
+ class IntegrationCloudAzureActivation extends pulumi.CustomResource {
35
+ /**
36
+ * Get an existing IntegrationCloudAzureActivation resource's state with the given name, ID, and optional extra
37
+ * properties used to qualify the lookup.
38
+ *
39
+ * @param name The _unique_ name of the resulting resource.
40
+ * @param id The _unique_ provider ID of the resource to lookup.
41
+ * @param state Any extra arguments used during the lookup.
42
+ * @param opts Optional settings to control the behavior of the CustomResource.
43
+ */
44
+ static get(name, id, state, opts) {
45
+ return new IntegrationCloudAzureActivation(name, state, { ...opts, id: id });
46
+ }
47
+ /** @internal */
48
+ static __pulumiType = 'formal:index/integrationCloudAzureActivation:IntegrationCloudAzureActivation';
49
+ /**
50
+ * Returns true if the given object is an instance of IntegrationCloudAzureActivation. This is designed to work even
51
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
52
+ */
53
+ static isInstance(obj) {
54
+ if (obj === undefined || obj === null) {
55
+ return false;
56
+ }
57
+ return obj['__pulumiType'] === IntegrationCloudAzureActivation.__pulumiType;
58
+ }
59
+ constructor(name, argsOrState, opts) {
60
+ let resourceInputs = {};
61
+ opts = opts || {};
62
+ if (opts.id) {
63
+ const state = argsOrState;
64
+ resourceInputs["clientId"] = state?.clientId;
65
+ resourceInputs["integrationId"] = state?.integrationId;
66
+ resourceInputs["tenantId"] = state?.tenantId;
67
+ }
68
+ else {
69
+ const args = argsOrState;
70
+ if (args?.clientId === undefined && !opts.urn) {
71
+ throw new Error("Missing required property 'clientId'");
72
+ }
73
+ if (args?.integrationId === undefined && !opts.urn) {
74
+ throw new Error("Missing required property 'integrationId'");
75
+ }
76
+ if (args?.tenantId === undefined && !opts.urn) {
77
+ throw new Error("Missing required property 'tenantId'");
78
+ }
79
+ resourceInputs["clientId"] = args?.clientId;
80
+ resourceInputs["integrationId"] = args?.integrationId;
81
+ resourceInputs["tenantId"] = args?.tenantId;
82
+ }
83
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
84
+ super(IntegrationCloudAzureActivation.__pulumiType, name, resourceInputs, opts);
85
+ }
86
+ }
87
+ exports.IntegrationCloudAzureActivation = IntegrationCloudAzureActivation;
88
+ //# sourceMappingURL=integrationCloudAzureActivation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrationCloudAzureActivation.js","sourceRoot":"","sources":["../integrationCloudAzureActivation.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;;;;;;;;;;;;;;;;;;;;;;;;AAEjF,uDAAyC;AACzC,uDAAyC;AAEzC;;GAEG;AACH,MAAa,+BAAgC,SAAQ,MAAM,CAAC,cAAc;IACtE;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAA4C,EAAE,IAAmC;QAC1I,OAAO,IAAI,+BAA+B,CAAC,IAAI,EAAO,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,gBAAgB;IACT,MAAM,CAAU,YAAY,GAAG,8EAA8E,CAAC;IAErH;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,+BAA+B,CAAC,YAAY,CAAC;IAChF,CAAC;IAuBD,YAAY,IAAY,EAAE,WAAwF,EAAE,IAAmC;QACnJ,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAA+D,CAAC;YAC9E,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC;YAC7C,cAAc,CAAC,eAAe,CAAC,GAAG,KAAK,EAAE,aAAa,CAAC;YACvD,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC;SAChD;aAAM;YACH,MAAM,IAAI,GAAG,WAA8D,CAAC;YAC5E,IAAI,IAAI,EAAE,QAAQ,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC3C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;aAC3D;YACD,IAAI,IAAI,EAAE,aAAa,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAChD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;aAChE;YACD,IAAI,IAAI,EAAE,QAAQ,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC3C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;aAC3D;YACD,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC;YAC5C,cAAc,CAAC,eAAe,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC;YACtD,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC;SAC/C;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,+BAA+B,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACpF,CAAC;;AA1EL,0EA2EC"}
@@ -19,11 +19,11 @@ export declare class IntegrationOidc extends pulumi.CustomResource {
19
19
  */
20
20
  static isInstance(obj: any): obj is IntegrationOidc;
21
21
  /**
22
- * The Formal audience value that tokens must present: `oidc.formal.ai/{id}`.
22
+ * The Formal audience value that tokens may present: `oidc.formal.ai/{id}`. Providers that cannot set a custom audience (e.g. Spacelift) can instead send `X-Formal-OIDC-Integration-Id` with this resource's `id`.
23
23
  */
24
24
  readonly audience: pulumi.Output<string>;
25
25
  /**
26
- * CEL expression evaluated against verified token claims. Must return a boolean. Defaults to `true`.
26
+ * CEL expression evaluated against verified token claims. Must return a boolean. Defaults to `true`. When selecting the integration with `X-Formal-OIDC-Integration-Id`, this condition must validate the provider-native audience and identity claims.
27
27
  */
28
28
  readonly claimCondition: pulumi.Output<string | undefined>;
29
29
  /**
@@ -72,11 +72,11 @@ export declare class IntegrationOidc extends pulumi.CustomResource {
72
72
  */
73
73
  export interface IntegrationOidcState {
74
74
  /**
75
- * The Formal audience value that tokens must present: `oidc.formal.ai/{id}`.
75
+ * The Formal audience value that tokens may present: `oidc.formal.ai/{id}`. Providers that cannot set a custom audience (e.g. Spacelift) can instead send `X-Formal-OIDC-Integration-Id` with this resource's `id`.
76
76
  */
77
77
  audience?: pulumi.Input<string | undefined>;
78
78
  /**
79
- * CEL expression evaluated against verified token claims. Must return a boolean. Defaults to `true`.
79
+ * CEL expression evaluated against verified token claims. Must return a boolean. Defaults to `true`. When selecting the integration with `X-Formal-OIDC-Integration-Id`, this condition must validate the provider-native audience and identity claims.
80
80
  */
81
81
  claimCondition?: pulumi.Input<string | undefined>;
82
82
  /**
@@ -117,7 +117,7 @@ export interface IntegrationOidcState {
117
117
  */
118
118
  export interface IntegrationOidcArgs {
119
119
  /**
120
- * CEL expression evaluated against verified token claims. Must return a boolean. Defaults to `true`.
120
+ * CEL expression evaluated against verified token claims. Must return a boolean. Defaults to `true`. When selecting the integration with `X-Formal-OIDC-Integration-Id`, this condition must validate the provider-native audience and identity claims.
121
121
  */
122
122
  claimCondition?: pulumi.Input<string | undefined>;
123
123
  /**
package/nativeUser.d.ts CHANGED
@@ -44,7 +44,7 @@ export declare class NativeUser extends pulumi.CustomResource {
44
44
  */
45
45
  readonly terminationProtection: pulumi.Output<boolean | undefined>;
46
46
  /**
47
- * The password of the Native User.
47
+ * Whether the Connector uses this Native User when a connection does not name one. Defaults to false, so a Resource whose Native Users all leave this unset has no default.
48
48
  */
49
49
  readonly useAsDefault: pulumi.Output<boolean | undefined>;
50
50
  /**
@@ -86,7 +86,7 @@ export interface NativeUserState {
86
86
  */
87
87
  terminationProtection?: pulumi.Input<boolean | undefined>;
88
88
  /**
89
- * The password of the Native User.
89
+ * Whether the Connector uses this Native User when a connection does not name one. Defaults to false, so a Resource whose Native Users all leave this unset has no default.
90
90
  */
91
91
  useAsDefault?: pulumi.Input<boolean | undefined>;
92
92
  }
@@ -120,7 +120,7 @@ export interface NativeUserArgs {
120
120
  */
121
121
  terminationProtection?: pulumi.Input<boolean | undefined>;
122
122
  /**
123
- * The password of the Native User.
123
+ * Whether the Connector uses this Native User when a connection does not name one. Defaults to false, so a Resource whose Native Users all leave this unset has no default.
124
124
  */
125
125
  useAsDefault?: pulumi.Input<boolean | undefined>;
126
126
  }
@@ -0,0 +1,348 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import * as inputs from "./types/input";
3
+ import * as outputs from "./types/output";
4
+ /**
5
+ * A Native User the Formal connector authenticates to a Resource as. The Resource decides which Native User a session uses through its `formal.ResourceNativeUserSelection` expression.
6
+ *
7
+ * ## Example Usage
8
+ *
9
+ * ```typescript
10
+ * import * as pulumi from "@pulumi/pulumi";
11
+ * import * as formal from "@formalco/pulumi";
12
+ *
13
+ * const config = new pulumi.Config();
14
+ * const analyticsAdminPassword = config.require("analyticsAdminPassword");
15
+ * const db = new formal.Resource("db", {
16
+ * name: "analytics-postgres",
17
+ * hostname: "analytics.internal",
18
+ * technology: "postgres",
19
+ * port: 5432,
20
+ * nativeUsersV3Enabled: true,
21
+ * });
22
+ * // Username and password, read from an environment variable on the connector.
23
+ * const basic = new formal.NativeUserV3("basic", {
24
+ * basic: {
25
+ * password: {
26
+ * environmentVariable: "ANALYTICS_ADMIN_PASSWORD",
27
+ * },
28
+ * username: "app_admin",
29
+ * },
30
+ * resourceId: db.id,
31
+ * label: "admin",
32
+ * });
33
+ * // Username and password, with the password passed as a write-only value so it
34
+ * // never lands in Terraform state. Increment literal_wo_version to rotate it.
35
+ * const basicWriteOnly = new formal.NativeUserV3("basic_write_only", {
36
+ * basic: {
37
+ * password: {
38
+ * literalWo: analyticsAdminPassword,
39
+ * literalWoVersion: 1,
40
+ * },
41
+ * username: "app_admin",
42
+ * },
43
+ * resourceId: db.id,
44
+ * label: "admin-write-only",
45
+ * });
46
+ * // AWS IAM, inheriting the role from the connector's environment.
47
+ * const awsIam = new formal.NativeUserV3("aws_iam", {
48
+ * awsIam: {
49
+ * username: "app_iam",
50
+ * },
51
+ * resourceId: db.id,
52
+ * label: "iam",
53
+ * });
54
+ * const api = new formal.Resource("api", {
55
+ * name: "billing-api",
56
+ * hostname: "billing.internal",
57
+ * technology: "http",
58
+ * port: 443,
59
+ * nativeUsersV3Enabled: true,
60
+ * });
61
+ * const bearerToken = new formal.NativeUserV3("bearer_token", {
62
+ * httpBearer: {
63
+ * token: {
64
+ * environmentVariable: "BILLING_API_TOKEN",
65
+ * },
66
+ * header: "Authorization",
67
+ * },
68
+ * resourceId: api.id,
69
+ * label: "service-account",
70
+ * });
71
+ * // Credentials resolved at connection time by a hook running on the connector,
72
+ * // for example to mint short-lived credentials from a secrets manager.
73
+ * const fromHook = new formal.NativeUserV3("from_hook", {
74
+ * hook: {
75
+ * outputType: "basic",
76
+ * allowlistedEnvVariables: [
77
+ * "FORMAL_ENV_USER",
78
+ * "FORMAL_ENV_PASSWORD",
79
+ * ],
80
+ * code: `export default async function (_input, env) {
81
+ * return {
82
+ * username: env.FORMAL_ENV_USER,
83
+ * password: env.FORMAL_ENV_PASSWORD,
84
+ * };
85
+ * }
86
+ * `,
87
+ * },
88
+ * resourceId: db.id,
89
+ * label: "dynamic",
90
+ * });
91
+ * ```
92
+ */
93
+ export declare class NativeUserV3 extends pulumi.CustomResource {
94
+ /**
95
+ * Get an existing NativeUserV3 resource's state with the given name, ID, and optional extra
96
+ * properties used to qualify the lookup.
97
+ *
98
+ * @param name The _unique_ name of the resulting resource.
99
+ * @param id The _unique_ provider ID of the resource to lookup.
100
+ * @param state Any extra arguments used during the lookup.
101
+ * @param opts Optional settings to control the behavior of the CustomResource.
102
+ */
103
+ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: NativeUserV3State, opts?: pulumi.CustomResourceOptions): NativeUserV3;
104
+ /**
105
+ * Returns true if the given object is an instance of NativeUserV3. This is designed to work even
106
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
107
+ */
108
+ static isInstance(obj: any): obj is NativeUserV3;
109
+ /**
110
+ * AWS IAM authentication.
111
+ */
112
+ readonly awsIam: pulumi.Output<outputs.NativeUserV3AwsIam | undefined>;
113
+ /**
114
+ * AWS IAM authentication using an assumed role.
115
+ */
116
+ readonly awsIamRole: pulumi.Output<outputs.NativeUserV3AwsIamRole | undefined>;
117
+ /**
118
+ * Azure IAM authentication.
119
+ */
120
+ readonly azureIam: pulumi.Output<outputs.NativeUserV3AzureIam | undefined>;
121
+ /**
122
+ * Username and password authentication, for example Postgres or MySQL.
123
+ */
124
+ readonly basic: pulumi.Output<outputs.NativeUserV3Basic | undefined>;
125
+ /**
126
+ * Creation time of the Native User.
127
+ */
128
+ readonly createdAt: pulumi.Output<string>;
129
+ /**
130
+ * GCP IAM authentication.
131
+ */
132
+ readonly gcpIam: pulumi.Output<outputs.NativeUserV3GcpIam | undefined>;
133
+ /**
134
+ * Credentials resolved on the connector by running a hook.
135
+ */
136
+ readonly hook: pulumi.Output<outputs.NativeUserV3Hook | undefined>;
137
+ /**
138
+ * HTTP API key authentication, sent as a header.
139
+ */
140
+ readonly httpApiKeyHeader: pulumi.Output<outputs.NativeUserV3HttpApiKeyHeader | undefined>;
141
+ /**
142
+ * HTTP API key authentication, sent as a query parameter.
143
+ */
144
+ readonly httpApiKeyQuery: pulumi.Output<outputs.NativeUserV3HttpApiKeyQuery | undefined>;
145
+ /**
146
+ * HTTP Basic authentication, injected on a named header.
147
+ */
148
+ readonly httpBasic: pulumi.Output<outputs.NativeUserV3HttpBasic | undefined>;
149
+ /**
150
+ * HTTP Bearer token authentication, injected on a named header.
151
+ */
152
+ readonly httpBearer: pulumi.Output<outputs.NativeUserV3HttpBearer | undefined>;
153
+ /**
154
+ * Kubernetes authentication using an inline kubeconfig document.
155
+ */
156
+ readonly kubernetesInline: pulumi.Output<outputs.NativeUserV3KubernetesInline | undefined>;
157
+ /**
158
+ * Kubernetes authentication using a kubeconfig file path on the connector.
159
+ */
160
+ readonly kubernetesPath: pulumi.Output<outputs.NativeUserV3KubernetesPath | undefined>;
161
+ /**
162
+ * A name for this Native User, unique within the Resource. Selection expressions reference the Native User by ID, so the label is safe to rename.
163
+ */
164
+ readonly label: pulumi.Output<string>;
165
+ /**
166
+ * The ID of the Resource this Native User authenticates to.
167
+ */
168
+ readonly resourceId: pulumi.Output<string>;
169
+ /**
170
+ * Snowflake key-pair authentication.
171
+ */
172
+ readonly snowflakeKey: pulumi.Output<outputs.NativeUserV3SnowflakeKey | undefined>;
173
+ /**
174
+ * SSH private key authentication.
175
+ */
176
+ readonly sshKey: pulumi.Output<outputs.NativeUserV3SshKey | undefined>;
177
+ /**
178
+ * If set to true, this Native User cannot be deleted.
179
+ */
180
+ readonly terminationProtection: pulumi.Output<boolean | undefined>;
181
+ /**
182
+ * Last update time of the Native User.
183
+ */
184
+ readonly updatedAt: pulumi.Output<string>;
185
+ /**
186
+ * Create a NativeUserV3 resource with the given unique name, arguments, and options.
187
+ *
188
+ * @param name The _unique_ name of the resource.
189
+ * @param args The arguments to use to populate this resource's properties.
190
+ * @param opts A bag of options that control this resource's behavior.
191
+ */
192
+ constructor(name: string, args: NativeUserV3Args, opts?: pulumi.CustomResourceOptions);
193
+ }
194
+ /**
195
+ * Input properties used for looking up and filtering NativeUserV3 resources.
196
+ */
197
+ export interface NativeUserV3State {
198
+ /**
199
+ * AWS IAM authentication.
200
+ */
201
+ awsIam?: pulumi.Input<inputs.NativeUserV3AwsIam | undefined>;
202
+ /**
203
+ * AWS IAM authentication using an assumed role.
204
+ */
205
+ awsIamRole?: pulumi.Input<inputs.NativeUserV3AwsIamRole | undefined>;
206
+ /**
207
+ * Azure IAM authentication.
208
+ */
209
+ azureIam?: pulumi.Input<inputs.NativeUserV3AzureIam | undefined>;
210
+ /**
211
+ * Username and password authentication, for example Postgres or MySQL.
212
+ */
213
+ basic?: pulumi.Input<inputs.NativeUserV3Basic | undefined>;
214
+ /**
215
+ * Creation time of the Native User.
216
+ */
217
+ createdAt?: pulumi.Input<string | undefined>;
218
+ /**
219
+ * GCP IAM authentication.
220
+ */
221
+ gcpIam?: pulumi.Input<inputs.NativeUserV3GcpIam | undefined>;
222
+ /**
223
+ * Credentials resolved on the connector by running a hook.
224
+ */
225
+ hook?: pulumi.Input<inputs.NativeUserV3Hook | undefined>;
226
+ /**
227
+ * HTTP API key authentication, sent as a header.
228
+ */
229
+ httpApiKeyHeader?: pulumi.Input<inputs.NativeUserV3HttpApiKeyHeader | undefined>;
230
+ /**
231
+ * HTTP API key authentication, sent as a query parameter.
232
+ */
233
+ httpApiKeyQuery?: pulumi.Input<inputs.NativeUserV3HttpApiKeyQuery | undefined>;
234
+ /**
235
+ * HTTP Basic authentication, injected on a named header.
236
+ */
237
+ httpBasic?: pulumi.Input<inputs.NativeUserV3HttpBasic | undefined>;
238
+ /**
239
+ * HTTP Bearer token authentication, injected on a named header.
240
+ */
241
+ httpBearer?: pulumi.Input<inputs.NativeUserV3HttpBearer | undefined>;
242
+ /**
243
+ * Kubernetes authentication using an inline kubeconfig document.
244
+ */
245
+ kubernetesInline?: pulumi.Input<inputs.NativeUserV3KubernetesInline | undefined>;
246
+ /**
247
+ * Kubernetes authentication using a kubeconfig file path on the connector.
248
+ */
249
+ kubernetesPath?: pulumi.Input<inputs.NativeUserV3KubernetesPath | undefined>;
250
+ /**
251
+ * A name for this Native User, unique within the Resource. Selection expressions reference the Native User by ID, so the label is safe to rename.
252
+ */
253
+ label?: pulumi.Input<string | undefined>;
254
+ /**
255
+ * The ID of the Resource this Native User authenticates to.
256
+ */
257
+ resourceId?: pulumi.Input<string | undefined>;
258
+ /**
259
+ * Snowflake key-pair authentication.
260
+ */
261
+ snowflakeKey?: pulumi.Input<inputs.NativeUserV3SnowflakeKey | undefined>;
262
+ /**
263
+ * SSH private key authentication.
264
+ */
265
+ sshKey?: pulumi.Input<inputs.NativeUserV3SshKey | undefined>;
266
+ /**
267
+ * If set to true, this Native User cannot be deleted.
268
+ */
269
+ terminationProtection?: pulumi.Input<boolean | undefined>;
270
+ /**
271
+ * Last update time of the Native User.
272
+ */
273
+ updatedAt?: pulumi.Input<string | undefined>;
274
+ }
275
+ /**
276
+ * The set of arguments for constructing a NativeUserV3 resource.
277
+ */
278
+ export interface NativeUserV3Args {
279
+ /**
280
+ * AWS IAM authentication.
281
+ */
282
+ awsIam?: pulumi.Input<inputs.NativeUserV3AwsIam | undefined>;
283
+ /**
284
+ * AWS IAM authentication using an assumed role.
285
+ */
286
+ awsIamRole?: pulumi.Input<inputs.NativeUserV3AwsIamRole | undefined>;
287
+ /**
288
+ * Azure IAM authentication.
289
+ */
290
+ azureIam?: pulumi.Input<inputs.NativeUserV3AzureIam | undefined>;
291
+ /**
292
+ * Username and password authentication, for example Postgres or MySQL.
293
+ */
294
+ basic?: pulumi.Input<inputs.NativeUserV3Basic | undefined>;
295
+ /**
296
+ * GCP IAM authentication.
297
+ */
298
+ gcpIam?: pulumi.Input<inputs.NativeUserV3GcpIam | undefined>;
299
+ /**
300
+ * Credentials resolved on the connector by running a hook.
301
+ */
302
+ hook?: pulumi.Input<inputs.NativeUserV3Hook | undefined>;
303
+ /**
304
+ * HTTP API key authentication, sent as a header.
305
+ */
306
+ httpApiKeyHeader?: pulumi.Input<inputs.NativeUserV3HttpApiKeyHeader | undefined>;
307
+ /**
308
+ * HTTP API key authentication, sent as a query parameter.
309
+ */
310
+ httpApiKeyQuery?: pulumi.Input<inputs.NativeUserV3HttpApiKeyQuery | undefined>;
311
+ /**
312
+ * HTTP Basic authentication, injected on a named header.
313
+ */
314
+ httpBasic?: pulumi.Input<inputs.NativeUserV3HttpBasic | undefined>;
315
+ /**
316
+ * HTTP Bearer token authentication, injected on a named header.
317
+ */
318
+ httpBearer?: pulumi.Input<inputs.NativeUserV3HttpBearer | undefined>;
319
+ /**
320
+ * Kubernetes authentication using an inline kubeconfig document.
321
+ */
322
+ kubernetesInline?: pulumi.Input<inputs.NativeUserV3KubernetesInline | undefined>;
323
+ /**
324
+ * Kubernetes authentication using a kubeconfig file path on the connector.
325
+ */
326
+ kubernetesPath?: pulumi.Input<inputs.NativeUserV3KubernetesPath | undefined>;
327
+ /**
328
+ * A name for this Native User, unique within the Resource. Selection expressions reference the Native User by ID, so the label is safe to rename.
329
+ */
330
+ label: pulumi.Input<string>;
331
+ /**
332
+ * The ID of the Resource this Native User authenticates to.
333
+ */
334
+ resourceId: pulumi.Input<string>;
335
+ /**
336
+ * Snowflake key-pair authentication.
337
+ */
338
+ snowflakeKey?: pulumi.Input<inputs.NativeUserV3SnowflakeKey | undefined>;
339
+ /**
340
+ * SSH private key authentication.
341
+ */
342
+ sshKey?: pulumi.Input<inputs.NativeUserV3SshKey | undefined>;
343
+ /**
344
+ * If set to true, this Native User cannot be deleted.
345
+ */
346
+ terminationProtection?: pulumi.Input<boolean | undefined>;
347
+ }
348
+ //# sourceMappingURL=nativeUserV3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeUserV3.d.ts","sourceRoot":"","sources":["../nativeUserV3.ts"],"names":[],"mappings":"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"}