pulumi-gcp 8.29.0a1746115375__py3-none-any.whl → 8.30.0a1746254470__py3-none-any.whl

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 (65) hide show
  1. pulumi_gcp/__init__.py +24 -0
  2. pulumi_gcp/alloydb/instance.py +1 -1
  3. pulumi_gcp/apigee/organization.py +26 -0
  4. pulumi_gcp/beyondcorp/_inputs.py +129 -0
  5. pulumi_gcp/beyondcorp/application.py +106 -3
  6. pulumi_gcp/beyondcorp/outputs.py +93 -0
  7. pulumi_gcp/bigtable/__init__.py +2 -0
  8. pulumi_gcp/bigtable/logical_view.py +473 -0
  9. pulumi_gcp/bigtable/materialized_view.py +524 -0
  10. pulumi_gcp/certificateauthority/ca_pool.py +12 -0
  11. pulumi_gcp/certificatemanager/get_certificates.py +29 -0
  12. pulumi_gcp/clouddeploy/automation.py +66 -10
  13. pulumi_gcp/compute/_inputs.py +366 -55
  14. pulumi_gcp/compute/backend_service.py +6 -2
  15. pulumi_gcp/compute/get_region_disk.py +12 -1
  16. pulumi_gcp/compute/interconnect.py +25 -24
  17. pulumi_gcp/compute/outputs.py +380 -48
  18. pulumi_gcp/compute/region_disk.py +28 -0
  19. pulumi_gcp/compute/region_resize_request.py +2 -2
  20. pulumi_gcp/compute/region_security_policy.py +16 -0
  21. pulumi_gcp/compute/region_security_policy_rule.py +16 -0
  22. pulumi_gcp/compute/resize_request.py +2 -2
  23. pulumi_gcp/compute/resource_policy.py +0 -2
  24. pulumi_gcp/container/_inputs.py +69 -9
  25. pulumi_gcp/container/outputs.py +71 -7
  26. pulumi_gcp/dataplex/_inputs.py +219 -1
  27. pulumi_gcp/dataplex/datascan.py +20 -0
  28. pulumi_gcp/dataplex/outputs.py +168 -1
  29. pulumi_gcp/developerconnect/_inputs.py +6 -0
  30. pulumi_gcp/developerconnect/account_connector.py +56 -0
  31. pulumi_gcp/developerconnect/outputs.py +4 -0
  32. pulumi_gcp/dns/_inputs.py +34 -13
  33. pulumi_gcp/dns/outputs.py +25 -10
  34. pulumi_gcp/gkehub/_inputs.py +3 -3
  35. pulumi_gcp/gkehub/feature_membership.py +92 -0
  36. pulumi_gcp/gkehub/outputs.py +2 -2
  37. pulumi_gcp/identityplatform/_inputs.py +54 -0
  38. pulumi_gcp/identityplatform/oauth_idp_config.py +83 -5
  39. pulumi_gcp/identityplatform/outputs.py +49 -0
  40. pulumi_gcp/memcache/__init__.py +1 -0
  41. pulumi_gcp/memcache/get_instance.py +338 -0
  42. pulumi_gcp/memcache/outputs.py +363 -0
  43. pulumi_gcp/netapp/storage_pool.py +141 -0
  44. pulumi_gcp/networkservices/_inputs.py +35 -6
  45. pulumi_gcp/networkservices/lb_traffic_extension.py +7 -0
  46. pulumi_gcp/networkservices/outputs.py +22 -4
  47. pulumi_gcp/osconfig/__init__.py +1 -0
  48. pulumi_gcp/osconfig/_inputs.py +5400 -0
  49. pulumi_gcp/osconfig/outputs.py +3952 -0
  50. pulumi_gcp/osconfig/v2_policy_orchestrator_for_folder.py +1098 -0
  51. pulumi_gcp/pulumi-plugin.json +1 -1
  52. pulumi_gcp/spanner/instance_config.py +14 -14
  53. pulumi_gcp/sql/_inputs.py +83 -0
  54. pulumi_gcp/sql/database_instance.py +28 -0
  55. pulumi_gcp/sql/get_database_instance.py +12 -1
  56. pulumi_gcp/sql/outputs.py +146 -6
  57. pulumi_gcp/storage/_inputs.py +20 -0
  58. pulumi_gcp/storage/bucket.py +56 -0
  59. pulumi_gcp/storage/get_bucket.py +23 -1
  60. pulumi_gcp/storage/outputs.py +14 -0
  61. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +2 -14
  62. {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/METADATA +1 -1
  63. {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/RECORD +65 -61
  64. {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/WHEEL +1 -1
  65. {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/top_level.txt +0 -0
pulumi_gcp/dns/_inputs.py CHANGED
@@ -481,9 +481,9 @@ class ManagedZoneForwardingConfigArgs:
481
481
 
482
482
  if not MYPY:
483
483
  class ManagedZoneForwardingConfigTargetNameServerArgsDict(TypedDict):
484
- ipv4_address: pulumi.Input[builtins.str]
484
+ domain_name: NotRequired[pulumi.Input[builtins.str]]
485
485
  """
486
- IPv4 address of a target name server.
486
+ Fully qualified domain name for the forwarding target.
487
487
  """
488
488
  forwarding_path: NotRequired[pulumi.Input[builtins.str]]
489
489
  """
@@ -492,36 +492,45 @@ if not MYPY:
492
492
  to the Internet. When set to `private`, Cloud DNS will always send queries through VPC for this target
493
493
  Possible values are: `default`, `private`.
494
494
  """
495
+ ipv4_address: NotRequired[pulumi.Input[builtins.str]]
496
+ """
497
+ IPv4 address of a target name server.
498
+ """
495
499
  elif False:
496
500
  ManagedZoneForwardingConfigTargetNameServerArgsDict: TypeAlias = Mapping[str, Any]
497
501
 
498
502
  @pulumi.input_type
499
503
  class ManagedZoneForwardingConfigTargetNameServerArgs:
500
504
  def __init__(__self__, *,
501
- ipv4_address: pulumi.Input[builtins.str],
502
- forwarding_path: Optional[pulumi.Input[builtins.str]] = None):
505
+ domain_name: Optional[pulumi.Input[builtins.str]] = None,
506
+ forwarding_path: Optional[pulumi.Input[builtins.str]] = None,
507
+ ipv4_address: Optional[pulumi.Input[builtins.str]] = None):
503
508
  """
504
- :param pulumi.Input[builtins.str] ipv4_address: IPv4 address of a target name server.
509
+ :param pulumi.Input[builtins.str] domain_name: Fully qualified domain name for the forwarding target.
505
510
  :param pulumi.Input[builtins.str] forwarding_path: Forwarding path for this TargetNameServer. If unset or `default` Cloud DNS will make forwarding
506
511
  decision based on address ranges, i.e. RFC1918 addresses go to the VPC, Non-RFC1918 addresses go
507
512
  to the Internet. When set to `private`, Cloud DNS will always send queries through VPC for this target
508
513
  Possible values are: `default`, `private`.
514
+ :param pulumi.Input[builtins.str] ipv4_address: IPv4 address of a target name server.
509
515
  """
510
- pulumi.set(__self__, "ipv4_address", ipv4_address)
516
+ if domain_name is not None:
517
+ pulumi.set(__self__, "domain_name", domain_name)
511
518
  if forwarding_path is not None:
512
519
  pulumi.set(__self__, "forwarding_path", forwarding_path)
520
+ if ipv4_address is not None:
521
+ pulumi.set(__self__, "ipv4_address", ipv4_address)
513
522
 
514
523
  @property
515
- @pulumi.getter(name="ipv4Address")
516
- def ipv4_address(self) -> pulumi.Input[builtins.str]:
524
+ @pulumi.getter(name="domainName")
525
+ def domain_name(self) -> Optional[pulumi.Input[builtins.str]]:
517
526
  """
518
- IPv4 address of a target name server.
527
+ Fully qualified domain name for the forwarding target.
519
528
  """
520
- return pulumi.get(self, "ipv4_address")
529
+ return pulumi.get(self, "domain_name")
521
530
 
522
- @ipv4_address.setter
523
- def ipv4_address(self, value: pulumi.Input[builtins.str]):
524
- pulumi.set(self, "ipv4_address", value)
531
+ @domain_name.setter
532
+ def domain_name(self, value: Optional[pulumi.Input[builtins.str]]):
533
+ pulumi.set(self, "domain_name", value)
525
534
 
526
535
  @property
527
536
  @pulumi.getter(name="forwardingPath")
@@ -538,6 +547,18 @@ class ManagedZoneForwardingConfigTargetNameServerArgs:
538
547
  def forwarding_path(self, value: Optional[pulumi.Input[builtins.str]]):
539
548
  pulumi.set(self, "forwarding_path", value)
540
549
 
550
+ @property
551
+ @pulumi.getter(name="ipv4Address")
552
+ def ipv4_address(self) -> Optional[pulumi.Input[builtins.str]]:
553
+ """
554
+ IPv4 address of a target name server.
555
+ """
556
+ return pulumi.get(self, "ipv4_address")
557
+
558
+ @ipv4_address.setter
559
+ def ipv4_address(self, value: Optional[pulumi.Input[builtins.str]]):
560
+ pulumi.set(self, "ipv4_address", value)
561
+
541
562
 
542
563
  if not MYPY:
543
564
  class ManagedZonePeeringConfigArgsDict(TypedDict):
pulumi_gcp/dns/outputs.py CHANGED
@@ -369,10 +369,12 @@ class ManagedZoneForwardingConfigTargetNameServer(dict):
369
369
  @staticmethod
370
370
  def __key_warning(key: str):
371
371
  suggest = None
372
- if key == "ipv4Address":
373
- suggest = "ipv4_address"
372
+ if key == "domainName":
373
+ suggest = "domain_name"
374
374
  elif key == "forwardingPath":
375
375
  suggest = "forwarding_path"
376
+ elif key == "ipv4Address":
377
+ suggest = "ipv4_address"
376
378
 
377
379
  if suggest:
378
380
  pulumi.log.warn(f"Key '{key}' not found in ManagedZoneForwardingConfigTargetNameServer. Access the value via the '{suggest}' property getter instead.")
@@ -386,26 +388,31 @@ class ManagedZoneForwardingConfigTargetNameServer(dict):
386
388
  return super().get(key, default)
387
389
 
388
390
  def __init__(__self__, *,
389
- ipv4_address: builtins.str,
390
- forwarding_path: Optional[builtins.str] = None):
391
+ domain_name: Optional[builtins.str] = None,
392
+ forwarding_path: Optional[builtins.str] = None,
393
+ ipv4_address: Optional[builtins.str] = None):
391
394
  """
392
- :param builtins.str ipv4_address: IPv4 address of a target name server.
395
+ :param builtins.str domain_name: Fully qualified domain name for the forwarding target.
393
396
  :param builtins.str forwarding_path: Forwarding path for this TargetNameServer. If unset or `default` Cloud DNS will make forwarding
394
397
  decision based on address ranges, i.e. RFC1918 addresses go to the VPC, Non-RFC1918 addresses go
395
398
  to the Internet. When set to `private`, Cloud DNS will always send queries through VPC for this target
396
399
  Possible values are: `default`, `private`.
400
+ :param builtins.str ipv4_address: IPv4 address of a target name server.
397
401
  """
398
- pulumi.set(__self__, "ipv4_address", ipv4_address)
402
+ if domain_name is not None:
403
+ pulumi.set(__self__, "domain_name", domain_name)
399
404
  if forwarding_path is not None:
400
405
  pulumi.set(__self__, "forwarding_path", forwarding_path)
406
+ if ipv4_address is not None:
407
+ pulumi.set(__self__, "ipv4_address", ipv4_address)
401
408
 
402
409
  @property
403
- @pulumi.getter(name="ipv4Address")
404
- def ipv4_address(self) -> builtins.str:
410
+ @pulumi.getter(name="domainName")
411
+ def domain_name(self) -> Optional[builtins.str]:
405
412
  """
406
- IPv4 address of a target name server.
413
+ Fully qualified domain name for the forwarding target.
407
414
  """
408
- return pulumi.get(self, "ipv4_address")
415
+ return pulumi.get(self, "domain_name")
409
416
 
410
417
  @property
411
418
  @pulumi.getter(name="forwardingPath")
@@ -418,6 +425,14 @@ class ManagedZoneForwardingConfigTargetNameServer(dict):
418
425
  """
419
426
  return pulumi.get(self, "forwarding_path")
420
427
 
428
+ @property
429
+ @pulumi.getter(name="ipv4Address")
430
+ def ipv4_address(self) -> Optional[builtins.str]:
431
+ """
432
+ IPv4 address of a target name server.
433
+ """
434
+ return pulumi.get(self, "ipv4_address")
435
+
421
436
 
422
437
  @pulumi.output_type
423
438
  class ManagedZonePeeringConfig(dict):
@@ -1930,7 +1930,7 @@ if not MYPY:
1930
1930
  class FeatureMembershipConfigmanagementConfigSyncArgsDict(TypedDict):
1931
1931
  deployment_overrides: NotRequired[pulumi.Input[Sequence[pulumi.Input['FeatureMembershipConfigmanagementConfigSyncDeploymentOverrideArgsDict']]]]
1932
1932
  """
1933
- The override configurations for the Config Sync Deployments. Structure is documented below.
1933
+ The override configurations for the Config Sync Deployments. Structure is documented below. The field is only available on Config Sync version 1.20.1 or later.
1934
1934
  """
1935
1935
  enabled: NotRequired[pulumi.Input[builtins.bool]]
1936
1936
  """
@@ -1977,7 +1977,7 @@ class FeatureMembershipConfigmanagementConfigSyncArgs:
1977
1977
  source_format: Optional[pulumi.Input[builtins.str]] = None,
1978
1978
  stop_syncing: Optional[pulumi.Input[builtins.bool]] = None):
1979
1979
  """
1980
- :param pulumi.Input[Sequence[pulumi.Input['FeatureMembershipConfigmanagementConfigSyncDeploymentOverrideArgs']]] deployment_overrides: The override configurations for the Config Sync Deployments. Structure is documented below.
1980
+ :param pulumi.Input[Sequence[pulumi.Input['FeatureMembershipConfigmanagementConfigSyncDeploymentOverrideArgs']]] deployment_overrides: The override configurations for the Config Sync Deployments. Structure is documented below. The field is only available on Config Sync version 1.20.1 or later.
1981
1981
  :param pulumi.Input[builtins.bool] enabled: Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of the git or oci field.
1982
1982
  :param pulumi.Input['FeatureMembershipConfigmanagementConfigSyncGitArgs'] git: (Optional) Structure is documented below.
1983
1983
  :param pulumi.Input[builtins.str] metrics_gcp_service_account_email: Deprecated: If Workload Identity Federation for GKE is enabled, Google Cloud Service Account is no longer needed for exporting Config Sync metrics: https://cloud.google.com/kubernetes-engine/enterprise/config-sync/docs/how-to/monitor-config-sync-cloud-monitoring#custom-monitoring.
@@ -2009,7 +2009,7 @@ class FeatureMembershipConfigmanagementConfigSyncArgs:
2009
2009
  @pulumi.getter(name="deploymentOverrides")
2010
2010
  def deployment_overrides(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['FeatureMembershipConfigmanagementConfigSyncDeploymentOverrideArgs']]]]:
2011
2011
  """
2012
- The override configurations for the Config Sync Deployments. Structure is documented below.
2012
+ The override configurations for the Config Sync Deployments. Structure is documented below. The field is only available on Config Sync version 1.20.1 or later.
2013
2013
  """
2014
2014
  return pulumi.get(self, "deployment_overrides")
2015
2015
 
@@ -428,6 +428,52 @@ class FeatureMembership(pulumi.CustomResource):
428
428
  })
429
429
  ```
430
430
 
431
+ ### Config Management With Deployment Override
432
+
433
+ ```python
434
+ import pulumi
435
+ import pulumi_gcp as gcp
436
+
437
+ cluster = gcp.container.Cluster("cluster",
438
+ name="my-cluster",
439
+ location="us-central1-a",
440
+ initial_node_count=1)
441
+ membership = gcp.gkehub.Membership("membership",
442
+ membership_id="my-membership",
443
+ endpoint={
444
+ "gke_cluster": {
445
+ "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"),
446
+ },
447
+ })
448
+ feature = gcp.gkehub.Feature("feature",
449
+ name="configmanagement",
450
+ location="global",
451
+ labels={
452
+ "foo": "bar",
453
+ })
454
+ feature_member = gcp.gkehub.FeatureMembership("feature_member",
455
+ location="global",
456
+ feature=feature.name,
457
+ membership=membership.membership_id,
458
+ configmanagement={
459
+ "version": "1.20.1",
460
+ "config_sync": {
461
+ "enabled": True,
462
+ "deployment_overrides": [{
463
+ "deployment_name": "reconciler-manager",
464
+ "deployment_namespace": "config-management-system",
465
+ "containers": [{
466
+ "container_name": "reconciler-manager",
467
+ "cpu_request": "100m",
468
+ "memory_request": "64Mi",
469
+ "cpu_limit": "250m",
470
+ "memory_limit": "128Mi",
471
+ }],
472
+ }],
473
+ },
474
+ })
475
+ ```
476
+
431
477
  ### Config Management With Regional Membership
432
478
 
433
479
  ```python
@@ -748,6 +794,52 @@ class FeatureMembership(pulumi.CustomResource):
748
794
  })
749
795
  ```
750
796
 
797
+ ### Config Management With Deployment Override
798
+
799
+ ```python
800
+ import pulumi
801
+ import pulumi_gcp as gcp
802
+
803
+ cluster = gcp.container.Cluster("cluster",
804
+ name="my-cluster",
805
+ location="us-central1-a",
806
+ initial_node_count=1)
807
+ membership = gcp.gkehub.Membership("membership",
808
+ membership_id="my-membership",
809
+ endpoint={
810
+ "gke_cluster": {
811
+ "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"),
812
+ },
813
+ })
814
+ feature = gcp.gkehub.Feature("feature",
815
+ name="configmanagement",
816
+ location="global",
817
+ labels={
818
+ "foo": "bar",
819
+ })
820
+ feature_member = gcp.gkehub.FeatureMembership("feature_member",
821
+ location="global",
822
+ feature=feature.name,
823
+ membership=membership.membership_id,
824
+ configmanagement={
825
+ "version": "1.20.1",
826
+ "config_sync": {
827
+ "enabled": True,
828
+ "deployment_overrides": [{
829
+ "deployment_name": "reconciler-manager",
830
+ "deployment_namespace": "config-management-system",
831
+ "containers": [{
832
+ "container_name": "reconciler-manager",
833
+ "cpu_request": "100m",
834
+ "memory_request": "64Mi",
835
+ "cpu_limit": "250m",
836
+ "memory_limit": "128Mi",
837
+ }],
838
+ }],
839
+ },
840
+ })
841
+ ```
842
+
751
843
  ### Config Management With Regional Membership
752
844
 
753
845
  ```python
@@ -1435,7 +1435,7 @@ class FeatureMembershipConfigmanagementConfigSync(dict):
1435
1435
  source_format: Optional[builtins.str] = None,
1436
1436
  stop_syncing: Optional[builtins.bool] = None):
1437
1437
  """
1438
- :param Sequence['FeatureMembershipConfigmanagementConfigSyncDeploymentOverrideArgs'] deployment_overrides: The override configurations for the Config Sync Deployments. Structure is documented below.
1438
+ :param Sequence['FeatureMembershipConfigmanagementConfigSyncDeploymentOverrideArgs'] deployment_overrides: The override configurations for the Config Sync Deployments. Structure is documented below. The field is only available on Config Sync version 1.20.1 or later.
1439
1439
  :param builtins.bool enabled: Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of the git or oci field.
1440
1440
  :param 'FeatureMembershipConfigmanagementConfigSyncGitArgs' git: (Optional) Structure is documented below.
1441
1441
  :param builtins.str metrics_gcp_service_account_email: Deprecated: If Workload Identity Federation for GKE is enabled, Google Cloud Service Account is no longer needed for exporting Config Sync metrics: https://cloud.google.com/kubernetes-engine/enterprise/config-sync/docs/how-to/monitor-config-sync-cloud-monitoring#custom-monitoring.
@@ -1467,7 +1467,7 @@ class FeatureMembershipConfigmanagementConfigSync(dict):
1467
1467
  @pulumi.getter(name="deploymentOverrides")
1468
1468
  def deployment_overrides(self) -> Optional[Sequence['outputs.FeatureMembershipConfigmanagementConfigSyncDeploymentOverride']]:
1469
1469
  """
1470
- The override configurations for the Config Sync Deployments. Structure is documented below.
1470
+ The override configurations for the Config Sync Deployments. Structure is documented below. The field is only available on Config Sync version 1.20.1 or later.
1471
1471
  """
1472
1472
  return pulumi.get(self, "deployment_overrides")
1473
1473
 
@@ -66,6 +66,8 @@ __all__ = [
66
66
  'InboundSamlConfigSpConfigArgsDict',
67
67
  'InboundSamlConfigSpConfigSpCertificateArgs',
68
68
  'InboundSamlConfigSpConfigSpCertificateArgsDict',
69
+ 'OauthIdpConfigResponseTypeArgs',
70
+ 'OauthIdpConfigResponseTypeArgsDict',
69
71
  'TenantClientArgs',
70
72
  'TenantClientArgsDict',
71
73
  'TenantClientPermissionsArgs',
@@ -1575,6 +1577,58 @@ class InboundSamlConfigSpConfigSpCertificateArgs:
1575
1577
  pulumi.set(self, "x509_certificate", value)
1576
1578
 
1577
1579
 
1580
+ if not MYPY:
1581
+ class OauthIdpConfigResponseTypeArgsDict(TypedDict):
1582
+ code: NotRequired[pulumi.Input[builtins.bool]]
1583
+ """
1584
+ If true, authorization code is returned from IdP's authorization endpoint.
1585
+ """
1586
+ id_token: NotRequired[pulumi.Input[builtins.bool]]
1587
+ """
1588
+ If true, ID token is returned from IdP's authorization endpoint.
1589
+ """
1590
+ elif False:
1591
+ OauthIdpConfigResponseTypeArgsDict: TypeAlias = Mapping[str, Any]
1592
+
1593
+ @pulumi.input_type
1594
+ class OauthIdpConfigResponseTypeArgs:
1595
+ def __init__(__self__, *,
1596
+ code: Optional[pulumi.Input[builtins.bool]] = None,
1597
+ id_token: Optional[pulumi.Input[builtins.bool]] = None):
1598
+ """
1599
+ :param pulumi.Input[builtins.bool] code: If true, authorization code is returned from IdP's authorization endpoint.
1600
+ :param pulumi.Input[builtins.bool] id_token: If true, ID token is returned from IdP's authorization endpoint.
1601
+ """
1602
+ if code is not None:
1603
+ pulumi.set(__self__, "code", code)
1604
+ if id_token is not None:
1605
+ pulumi.set(__self__, "id_token", id_token)
1606
+
1607
+ @property
1608
+ @pulumi.getter
1609
+ def code(self) -> Optional[pulumi.Input[builtins.bool]]:
1610
+ """
1611
+ If true, authorization code is returned from IdP's authorization endpoint.
1612
+ """
1613
+ return pulumi.get(self, "code")
1614
+
1615
+ @code.setter
1616
+ def code(self, value: Optional[pulumi.Input[builtins.bool]]):
1617
+ pulumi.set(self, "code", value)
1618
+
1619
+ @property
1620
+ @pulumi.getter(name="idToken")
1621
+ def id_token(self) -> Optional[pulumi.Input[builtins.bool]]:
1622
+ """
1623
+ If true, ID token is returned from IdP's authorization endpoint.
1624
+ """
1625
+ return pulumi.get(self, "id_token")
1626
+
1627
+ @id_token.setter
1628
+ def id_token(self, value: Optional[pulumi.Input[builtins.bool]]):
1629
+ pulumi.set(self, "id_token", value)
1630
+
1631
+
1578
1632
  if not MYPY:
1579
1633
  class TenantClientArgsDict(TypedDict):
1580
1634
  permissions: NotRequired[pulumi.Input['TenantClientPermissionsArgsDict']]
@@ -14,6 +14,8 @@ if sys.version_info >= (3, 11):
14
14
  else:
15
15
  from typing_extensions import NotRequired, TypedDict, TypeAlias
16
16
  from .. import _utilities
17
+ from . import outputs
18
+ from ._inputs import *
17
19
 
18
20
  __all__ = ['OauthIdpConfigArgs', 'OauthIdpConfig']
19
21
 
@@ -26,7 +28,8 @@ class OauthIdpConfigArgs:
26
28
  display_name: Optional[pulumi.Input[builtins.str]] = None,
27
29
  enabled: Optional[pulumi.Input[builtins.bool]] = None,
28
30
  name: Optional[pulumi.Input[builtins.str]] = None,
29
- project: Optional[pulumi.Input[builtins.str]] = None):
31
+ project: Optional[pulumi.Input[builtins.str]] = None,
32
+ response_type: Optional[pulumi.Input['OauthIdpConfigResponseTypeArgs']] = None):
30
33
  """
31
34
  The set of arguments for constructing a OauthIdpConfig resource.
32
35
  :param pulumi.Input[builtins.str] client_id: The client id of an OAuth client.
@@ -40,6 +43,10 @@ class OauthIdpConfigArgs:
40
43
  :param pulumi.Input[builtins.str] name: The name of the OauthIdpConfig. Must start with `oidc.`.
41
44
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
42
45
  If it is not provided, the provider project is used.
46
+ :param pulumi.Input['OauthIdpConfigResponseTypeArgs'] response_type: The response type to request for in the OAuth authorization flow.
47
+ You can set either idToken or code to true, but not both.
48
+ Setting both types to be simultaneously true ({code: true, idToken: true}) is not yet supported.
49
+ Structure is documented below.
43
50
  """
44
51
  pulumi.set(__self__, "client_id", client_id)
45
52
  pulumi.set(__self__, "issuer", issuer)
@@ -53,6 +60,8 @@ class OauthIdpConfigArgs:
53
60
  pulumi.set(__self__, "name", name)
54
61
  if project is not None:
55
62
  pulumi.set(__self__, "project", project)
63
+ if response_type is not None:
64
+ pulumi.set(__self__, "response_type", response_type)
56
65
 
57
66
  @property
58
67
  @pulumi.getter(name="clientId")
@@ -142,6 +151,21 @@ class OauthIdpConfigArgs:
142
151
  def project(self, value: Optional[pulumi.Input[builtins.str]]):
143
152
  pulumi.set(self, "project", value)
144
153
 
154
+ @property
155
+ @pulumi.getter(name="responseType")
156
+ def response_type(self) -> Optional[pulumi.Input['OauthIdpConfigResponseTypeArgs']]:
157
+ """
158
+ The response type to request for in the OAuth authorization flow.
159
+ You can set either idToken or code to true, but not both.
160
+ Setting both types to be simultaneously true ({code: true, idToken: true}) is not yet supported.
161
+ Structure is documented below.
162
+ """
163
+ return pulumi.get(self, "response_type")
164
+
165
+ @response_type.setter
166
+ def response_type(self, value: Optional[pulumi.Input['OauthIdpConfigResponseTypeArgs']]):
167
+ pulumi.set(self, "response_type", value)
168
+
145
169
 
146
170
  @pulumi.input_type
147
171
  class _OauthIdpConfigState:
@@ -152,7 +176,8 @@ class _OauthIdpConfigState:
152
176
  enabled: Optional[pulumi.Input[builtins.bool]] = None,
153
177
  issuer: Optional[pulumi.Input[builtins.str]] = None,
154
178
  name: Optional[pulumi.Input[builtins.str]] = None,
155
- project: Optional[pulumi.Input[builtins.str]] = None):
179
+ project: Optional[pulumi.Input[builtins.str]] = None,
180
+ response_type: Optional[pulumi.Input['OauthIdpConfigResponseTypeArgs']] = None):
156
181
  """
157
182
  Input properties used for looking up and filtering OauthIdpConfig resources.
158
183
  :param pulumi.Input[builtins.str] client_id: The client id of an OAuth client.
@@ -166,6 +191,10 @@ class _OauthIdpConfigState:
166
191
  :param pulumi.Input[builtins.str] name: The name of the OauthIdpConfig. Must start with `oidc.`.
167
192
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
168
193
  If it is not provided, the provider project is used.
194
+ :param pulumi.Input['OauthIdpConfigResponseTypeArgs'] response_type: The response type to request for in the OAuth authorization flow.
195
+ You can set either idToken or code to true, but not both.
196
+ Setting both types to be simultaneously true ({code: true, idToken: true}) is not yet supported.
197
+ Structure is documented below.
169
198
  """
170
199
  if client_id is not None:
171
200
  pulumi.set(__self__, "client_id", client_id)
@@ -181,6 +210,8 @@ class _OauthIdpConfigState:
181
210
  pulumi.set(__self__, "name", name)
182
211
  if project is not None:
183
212
  pulumi.set(__self__, "project", project)
213
+ if response_type is not None:
214
+ pulumi.set(__self__, "response_type", response_type)
184
215
 
185
216
  @property
186
217
  @pulumi.getter(name="clientId")
@@ -270,6 +301,21 @@ class _OauthIdpConfigState:
270
301
  def project(self, value: Optional[pulumi.Input[builtins.str]]):
271
302
  pulumi.set(self, "project", value)
272
303
 
304
+ @property
305
+ @pulumi.getter(name="responseType")
306
+ def response_type(self) -> Optional[pulumi.Input['OauthIdpConfigResponseTypeArgs']]:
307
+ """
308
+ The response type to request for in the OAuth authorization flow.
309
+ You can set either idToken or code to true, but not both.
310
+ Setting both types to be simultaneously true ({code: true, idToken: true}) is not yet supported.
311
+ Structure is documented below.
312
+ """
313
+ return pulumi.get(self, "response_type")
314
+
315
+ @response_type.setter
316
+ def response_type(self, value: Optional[pulumi.Input['OauthIdpConfigResponseTypeArgs']]):
317
+ pulumi.set(self, "response_type", value)
318
+
273
319
 
274
320
  class OauthIdpConfig(pulumi.CustomResource):
275
321
 
@@ -286,6 +332,7 @@ class OauthIdpConfig(pulumi.CustomResource):
286
332
  issuer: Optional[pulumi.Input[builtins.str]] = None,
287
333
  name: Optional[pulumi.Input[builtins.str]] = None,
288
334
  project: Optional[pulumi.Input[builtins.str]] = None,
335
+ response_type: Optional[pulumi.Input[Union['OauthIdpConfigResponseTypeArgs', 'OauthIdpConfigResponseTypeArgsDict']]] = None,
289
336
  __props__=None):
290
337
  """
291
338
  OIDC IdP configuration for a Identity Toolkit project.
@@ -308,7 +355,11 @@ class OauthIdpConfig(pulumi.CustomResource):
308
355
  client_id="client-id",
309
356
  issuer="issuer",
310
357
  enabled=True,
311
- client_secret="secret")
358
+ client_secret="secret",
359
+ response_type={
360
+ "id_token": True,
361
+ "code": False,
362
+ })
312
363
  ```
313
364
 
314
365
  ## Import
@@ -348,6 +399,10 @@ class OauthIdpConfig(pulumi.CustomResource):
348
399
  :param pulumi.Input[builtins.str] name: The name of the OauthIdpConfig. Must start with `oidc.`.
349
400
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
350
401
  If it is not provided, the provider project is used.
402
+ :param pulumi.Input[Union['OauthIdpConfigResponseTypeArgs', 'OauthIdpConfigResponseTypeArgsDict']] response_type: The response type to request for in the OAuth authorization flow.
403
+ You can set either idToken or code to true, but not both.
404
+ Setting both types to be simultaneously true ({code: true, idToken: true}) is not yet supported.
405
+ Structure is documented below.
351
406
  """
352
407
  ...
353
408
  @overload
@@ -376,7 +431,11 @@ class OauthIdpConfig(pulumi.CustomResource):
376
431
  client_id="client-id",
377
432
  issuer="issuer",
378
433
  enabled=True,
379
- client_secret="secret")
434
+ client_secret="secret",
435
+ response_type={
436
+ "id_token": True,
437
+ "code": False,
438
+ })
380
439
  ```
381
440
 
382
441
  ## Import
@@ -425,6 +484,7 @@ class OauthIdpConfig(pulumi.CustomResource):
425
484
  issuer: Optional[pulumi.Input[builtins.str]] = None,
426
485
  name: Optional[pulumi.Input[builtins.str]] = None,
427
486
  project: Optional[pulumi.Input[builtins.str]] = None,
487
+ response_type: Optional[pulumi.Input[Union['OauthIdpConfigResponseTypeArgs', 'OauthIdpConfigResponseTypeArgsDict']]] = None,
428
488
  __props__=None):
429
489
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
430
490
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -445,6 +505,7 @@ class OauthIdpConfig(pulumi.CustomResource):
445
505
  __props__.__dict__["issuer"] = issuer
446
506
  __props__.__dict__["name"] = name
447
507
  __props__.__dict__["project"] = project
508
+ __props__.__dict__["response_type"] = response_type
448
509
  super(OauthIdpConfig, __self__).__init__(
449
510
  'gcp:identityplatform/oauthIdpConfig:OauthIdpConfig',
450
511
  resource_name,
@@ -461,7 +522,8 @@ class OauthIdpConfig(pulumi.CustomResource):
461
522
  enabled: Optional[pulumi.Input[builtins.bool]] = None,
462
523
  issuer: Optional[pulumi.Input[builtins.str]] = None,
463
524
  name: Optional[pulumi.Input[builtins.str]] = None,
464
- project: Optional[pulumi.Input[builtins.str]] = None) -> 'OauthIdpConfig':
525
+ project: Optional[pulumi.Input[builtins.str]] = None,
526
+ response_type: Optional[pulumi.Input[Union['OauthIdpConfigResponseTypeArgs', 'OauthIdpConfigResponseTypeArgsDict']]] = None) -> 'OauthIdpConfig':
465
527
  """
466
528
  Get an existing OauthIdpConfig resource's state with the given name, id, and optional extra
467
529
  properties used to qualify the lookup.
@@ -480,6 +542,10 @@ class OauthIdpConfig(pulumi.CustomResource):
480
542
  :param pulumi.Input[builtins.str] name: The name of the OauthIdpConfig. Must start with `oidc.`.
481
543
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
482
544
  If it is not provided, the provider project is used.
545
+ :param pulumi.Input[Union['OauthIdpConfigResponseTypeArgs', 'OauthIdpConfigResponseTypeArgsDict']] response_type: The response type to request for in the OAuth authorization flow.
546
+ You can set either idToken or code to true, but not both.
547
+ Setting both types to be simultaneously true ({code: true, idToken: true}) is not yet supported.
548
+ Structure is documented below.
483
549
  """
484
550
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
485
551
 
@@ -492,6 +558,7 @@ class OauthIdpConfig(pulumi.CustomResource):
492
558
  __props__.__dict__["issuer"] = issuer
493
559
  __props__.__dict__["name"] = name
494
560
  __props__.__dict__["project"] = project
561
+ __props__.__dict__["response_type"] = response_type
495
562
  return OauthIdpConfig(resource_name, opts=opts, __props__=__props__)
496
563
 
497
564
  @property
@@ -554,3 +621,14 @@ class OauthIdpConfig(pulumi.CustomResource):
554
621
  """
555
622
  return pulumi.get(self, "project")
556
623
 
624
+ @property
625
+ @pulumi.getter(name="responseType")
626
+ def response_type(self) -> pulumi.Output[Optional['outputs.OauthIdpConfigResponseType']]:
627
+ """
628
+ The response type to request for in the OAuth authorization flow.
629
+ You can set either idToken or code to true, but not both.
630
+ Setting both types to be simultaneously true ({code: true, idToken: true}) is not yet supported.
631
+ Structure is documented below.
632
+ """
633
+ return pulumi.get(self, "response_type")
634
+
@@ -42,6 +42,7 @@ __all__ = [
42
42
  'InboundSamlConfigIdpConfigIdpCertificate',
43
43
  'InboundSamlConfigSpConfig',
44
44
  'InboundSamlConfigSpConfigSpCertificate',
45
+ 'OauthIdpConfigResponseType',
45
46
  'TenantClient',
46
47
  'TenantClientPermissions',
47
48
  'TenantInboundSamlConfigIdpConfig',
@@ -1373,6 +1374,54 @@ class InboundSamlConfigSpConfigSpCertificate(dict):
1373
1374
  return pulumi.get(self, "x509_certificate")
1374
1375
 
1375
1376
 
1377
+ @pulumi.output_type
1378
+ class OauthIdpConfigResponseType(dict):
1379
+ @staticmethod
1380
+ def __key_warning(key: str):
1381
+ suggest = None
1382
+ if key == "idToken":
1383
+ suggest = "id_token"
1384
+
1385
+ if suggest:
1386
+ pulumi.log.warn(f"Key '{key}' not found in OauthIdpConfigResponseType. Access the value via the '{suggest}' property getter instead.")
1387
+
1388
+ def __getitem__(self, key: str) -> Any:
1389
+ OauthIdpConfigResponseType.__key_warning(key)
1390
+ return super().__getitem__(key)
1391
+
1392
+ def get(self, key: str, default = None) -> Any:
1393
+ OauthIdpConfigResponseType.__key_warning(key)
1394
+ return super().get(key, default)
1395
+
1396
+ def __init__(__self__, *,
1397
+ code: Optional[builtins.bool] = None,
1398
+ id_token: Optional[builtins.bool] = None):
1399
+ """
1400
+ :param builtins.bool code: If true, authorization code is returned from IdP's authorization endpoint.
1401
+ :param builtins.bool id_token: If true, ID token is returned from IdP's authorization endpoint.
1402
+ """
1403
+ if code is not None:
1404
+ pulumi.set(__self__, "code", code)
1405
+ if id_token is not None:
1406
+ pulumi.set(__self__, "id_token", id_token)
1407
+
1408
+ @property
1409
+ @pulumi.getter
1410
+ def code(self) -> Optional[builtins.bool]:
1411
+ """
1412
+ If true, authorization code is returned from IdP's authorization endpoint.
1413
+ """
1414
+ return pulumi.get(self, "code")
1415
+
1416
+ @property
1417
+ @pulumi.getter(name="idToken")
1418
+ def id_token(self) -> Optional[builtins.bool]:
1419
+ """
1420
+ If true, ID token is returned from IdP's authorization endpoint.
1421
+ """
1422
+ return pulumi.get(self, "id_token")
1423
+
1424
+
1376
1425
  @pulumi.output_type
1377
1426
  class TenantClient(dict):
1378
1427
  def __init__(__self__, *,
@@ -6,6 +6,7 @@ import builtins
6
6
  from .. import _utilities
7
7
  import typing
8
8
  # Export this package's modules as members:
9
+ from .get_instance import *
9
10
  from .instance import *
10
11
  from ._inputs import *
11
12
  from . import outputs