pulumi-gcp 8.40.0a1754721948__py3-none-any.whl → 8.41.0__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.
- pulumi_gcp/__init__.py +152 -0
- pulumi_gcp/accesscontextmanager/_inputs.py +24 -4
- pulumi_gcp/accesscontextmanager/access_policy_iam_binding.py +2 -0
- pulumi_gcp/accesscontextmanager/access_policy_iam_member.py +2 -0
- pulumi_gcp/accesscontextmanager/access_policy_iam_policy.py +2 -0
- pulumi_gcp/accesscontextmanager/outputs.py +15 -3
- pulumi_gcp/apigateway/api_config_iam_binding.py +2 -0
- pulumi_gcp/apigateway/api_config_iam_member.py +2 -0
- pulumi_gcp/apigateway/api_config_iam_policy.py +2 -0
- pulumi_gcp/apigateway/api_iam_binding.py +2 -0
- pulumi_gcp/apigateway/api_iam_member.py +2 -0
- pulumi_gcp/apigateway/api_iam_policy.py +2 -0
- pulumi_gcp/apigateway/gateway_iam_binding.py +2 -0
- pulumi_gcp/apigateway/gateway_iam_member.py +2 -0
- pulumi_gcp/apigateway/gateway_iam_policy.py +2 -0
- pulumi_gcp/apigee/__init__.py +2 -0
- pulumi_gcp/apigee/_inputs.py +1435 -0
- pulumi_gcp/apigee/api_product.py +1698 -0
- pulumi_gcp/apigee/environment_iam_binding.py +2 -0
- pulumi_gcp/apigee/environment_iam_member.py +2 -0
- pulumi_gcp/apigee/environment_iam_policy.py +2 -0
- pulumi_gcp/apigee/outputs.py +1081 -0
- pulumi_gcp/apigee/security_action.py +1010 -0
- pulumi_gcp/artifactregistry/__init__.py +6 -0
- pulumi_gcp/artifactregistry/get_docker_images.py +164 -0
- pulumi_gcp/artifactregistry/get_package.py +220 -0
- pulumi_gcp/artifactregistry/get_repositories.py +160 -0
- pulumi_gcp/artifactregistry/get_tag.py +187 -0
- pulumi_gcp/artifactregistry/get_tags.py +200 -0
- pulumi_gcp/artifactregistry/get_version.py +261 -0
- pulumi_gcp/artifactregistry/outputs.py +239 -2
- pulumi_gcp/artifactregistry/repository.py +6 -6
- pulumi_gcp/artifactregistry/repository_iam_binding.py +2 -0
- pulumi_gcp/artifactregistry/repository_iam_member.py +2 -0
- pulumi_gcp/artifactregistry/repository_iam_policy.py +2 -0
- pulumi_gcp/backupdisasterrecovery/backup_plan.py +114 -7
- pulumi_gcp/backupdisasterrecovery/backup_vault.py +56 -0
- pulumi_gcp/backupdisasterrecovery/get_backup_plan.py +12 -1
- pulumi_gcp/backupdisasterrecovery/get_backup_vault.py +12 -1
- pulumi_gcp/beyondcorp/application_iam_binding.py +8 -0
- pulumi_gcp/beyondcorp/application_iam_member.py +8 -0
- pulumi_gcp/beyondcorp/application_iam_policy.py +8 -0
- pulumi_gcp/beyondcorp/get_application_iam_policy.py +4 -0
- pulumi_gcp/beyondcorp/security_gateway_application_iam_binding.py +2 -0
- pulumi_gcp/beyondcorp/security_gateway_application_iam_member.py +2 -0
- pulumi_gcp/beyondcorp/security_gateway_application_iam_policy.py +2 -0
- pulumi_gcp/beyondcorp/security_gateway_iam_binding.py +2 -0
- pulumi_gcp/beyondcorp/security_gateway_iam_member.py +2 -0
- pulumi_gcp/beyondcorp/security_gateway_iam_policy.py +2 -0
- pulumi_gcp/bigquery/_inputs.py +6 -0
- pulumi_gcp/bigquery/connection_iam_binding.py +2 -0
- pulumi_gcp/bigquery/connection_iam_member.py +2 -0
- pulumi_gcp/bigquery/connection_iam_policy.py +2 -0
- pulumi_gcp/bigquery/data_transfer_config.py +2 -0
- pulumi_gcp/bigquery/dataset.py +2 -2
- pulumi_gcp/bigquery/get_table.py +23 -1
- pulumi_gcp/bigquery/iam_binding.py +2 -0
- pulumi_gcp/bigquery/iam_member.py +2 -0
- pulumi_gcp/bigquery/iam_policy.py +2 -0
- pulumi_gcp/bigquery/outputs.py +4 -0
- pulumi_gcp/bigquery/reservation.py +535 -0
- pulumi_gcp/bigquery/table.py +62 -0
- pulumi_gcp/bigqueryanalyticshub/_inputs.py +180 -0
- pulumi_gcp/bigqueryanalyticshub/data_exchange.py +80 -0
- pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_binding.py +2 -0
- pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_member.py +2 -0
- pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_policy.py +2 -0
- pulumi_gcp/bigqueryanalyticshub/listing.py +322 -2
- pulumi_gcp/bigqueryanalyticshub/listing_iam_binding.py +2 -0
- pulumi_gcp/bigqueryanalyticshub/listing_iam_member.py +2 -0
- pulumi_gcp/bigqueryanalyticshub/listing_iam_policy.py +2 -0
- pulumi_gcp/bigqueryanalyticshub/listing_subscription.py +32 -0
- pulumi_gcp/bigqueryanalyticshub/outputs.py +159 -0
- pulumi_gcp/bigquerydatapolicy/data_policy_iam_binding.py +2 -0
- pulumi_gcp/bigquerydatapolicy/data_policy_iam_member.py +2 -0
- pulumi_gcp/bigquerydatapolicy/data_policy_iam_policy.py +2 -0
- pulumi_gcp/bigtable/__init__.py +1 -0
- pulumi_gcp/bigtable/_inputs.py +33 -0
- pulumi_gcp/bigtable/outputs.py +36 -0
- pulumi_gcp/bigtable/schema_bundle.py +568 -0
- pulumi_gcp/binaryauthorization/attestor_iam_binding.py +2 -0
- pulumi_gcp/binaryauthorization/attestor_iam_member.py +2 -0
- pulumi_gcp/binaryauthorization/attestor_iam_policy.py +2 -0
- pulumi_gcp/certificateauthority/ca_pool_iam_binding.py +2 -0
- pulumi_gcp/certificateauthority/ca_pool_iam_member.py +2 -0
- pulumi_gcp/certificateauthority/ca_pool_iam_policy.py +2 -0
- pulumi_gcp/certificateauthority/certificate_template_iam_binding.py +2 -0
- pulumi_gcp/certificateauthority/certificate_template_iam_member.py +2 -0
- pulumi_gcp/certificateauthority/certificate_template_iam_policy.py +2 -0
- pulumi_gcp/cloudbuildv2/connection_iam_binding.py +2 -0
- pulumi_gcp/cloudbuildv2/connection_iam_member.py +2 -0
- pulumi_gcp/cloudbuildv2/connection_iam_policy.py +2 -0
- pulumi_gcp/clouddeploy/_inputs.py +48 -48
- pulumi_gcp/clouddeploy/deploy_policy.py +54 -74
- pulumi_gcp/clouddeploy/outputs.py +32 -32
- pulumi_gcp/cloudfunctions/_inputs.py +48 -0
- pulumi_gcp/cloudfunctions/function.py +94 -0
- pulumi_gcp/cloudfunctions/function_iam_binding.py +2 -0
- pulumi_gcp/cloudfunctions/function_iam_member.py +2 -0
- pulumi_gcp/cloudfunctions/function_iam_policy.py +2 -0
- pulumi_gcp/cloudfunctions/get_function.py +23 -1
- pulumi_gcp/cloudfunctions/outputs.py +70 -0
- pulumi_gcp/cloudfunctionsv2/function_iam_binding.py +2 -0
- pulumi_gcp/cloudfunctionsv2/function_iam_member.py +2 -0
- pulumi_gcp/cloudfunctionsv2/function_iam_policy.py +2 -0
- pulumi_gcp/cloudrun/iam_binding.py +2 -0
- pulumi_gcp/cloudrun/iam_member.py +2 -0
- pulumi_gcp/cloudrun/iam_policy.py +2 -0
- pulumi_gcp/cloudrunv2/_inputs.py +20 -0
- pulumi_gcp/cloudrunv2/job.py +2 -0
- pulumi_gcp/cloudrunv2/job_iam_binding.py +2 -0
- pulumi_gcp/cloudrunv2/job_iam_member.py +2 -0
- pulumi_gcp/cloudrunv2/job_iam_policy.py +2 -0
- pulumi_gcp/cloudrunv2/outputs.py +25 -0
- pulumi_gcp/cloudrunv2/service_iam_binding.py +2 -0
- pulumi_gcp/cloudrunv2/service_iam_member.py +2 -0
- pulumi_gcp/cloudrunv2/service_iam_policy.py +2 -0
- pulumi_gcp/cloudrunv2/worker_pool.py +2 -0
- pulumi_gcp/cloudrunv2/worker_pool_iam_binding.py +2 -0
- pulumi_gcp/cloudrunv2/worker_pool_iam_member.py +2 -0
- pulumi_gcp/cloudrunv2/worker_pool_iam_policy.py +2 -0
- pulumi_gcp/cloudtasks/queue_iam_binding.py +2 -0
- pulumi_gcp/cloudtasks/queue_iam_member.py +2 -0
- pulumi_gcp/cloudtasks/queue_iam_policy.py +2 -0
- pulumi_gcp/colab/runtime_template_iam_binding.py +2 -0
- pulumi_gcp/colab/runtime_template_iam_member.py +2 -0
- pulumi_gcp/colab/runtime_template_iam_policy.py +2 -0
- pulumi_gcp/composer/user_workloads_config_map.py +26 -2
- pulumi_gcp/compute/__init__.py +1 -0
- pulumi_gcp/compute/_inputs.py +1068 -22
- pulumi_gcp/compute/disk_iam_binding.py +2 -0
- pulumi_gcp/compute/disk_iam_member.py +2 -0
- pulumi_gcp/compute/disk_iam_policy.py +2 -0
- pulumi_gcp/compute/firewall_policy_with_rules.py +66 -0
- pulumi_gcp/compute/forwarding_rule.py +0 -21
- pulumi_gcp/compute/get_region_backend_service.py +12 -1
- pulumi_gcp/compute/get_router.py +12 -1
- pulumi_gcp/compute/image_iam_binding.py +2 -0
- pulumi_gcp/compute/image_iam_member.py +2 -0
- pulumi_gcp/compute/image_iam_policy.py +2 -0
- pulumi_gcp/compute/instance_iam_binding.py +2 -0
- pulumi_gcp/compute/instance_iam_member.py +2 -0
- pulumi_gcp/compute/instance_iam_policy.py +2 -0
- pulumi_gcp/compute/instance_template_iam_binding.py +2 -0
- pulumi_gcp/compute/instance_template_iam_member.py +2 -0
- pulumi_gcp/compute/instance_template_iam_policy.py +2 -0
- pulumi_gcp/compute/instant_snapshot_iam_binding.py +2 -0
- pulumi_gcp/compute/instant_snapshot_iam_member.py +2 -0
- pulumi_gcp/compute/instant_snapshot_iam_policy.py +2 -0
- pulumi_gcp/compute/machine_image_iam_binding.py +2 -0
- pulumi_gcp/compute/machine_image_iam_member.py +2 -0
- pulumi_gcp/compute/machine_image_iam_policy.py +2 -0
- pulumi_gcp/compute/outputs.py +966 -22
- pulumi_gcp/compute/preview_feature.py +396 -0
- pulumi_gcp/compute/region_backend_service.py +257 -0
- pulumi_gcp/compute/region_disk_iam_binding.py +2 -0
- pulumi_gcp/compute/region_disk_iam_member.py +2 -0
- pulumi_gcp/compute/region_disk_iam_policy.py +2 -0
- pulumi_gcp/compute/region_security_policy.py +54 -0
- pulumi_gcp/compute/region_url_map.py +392 -0
- pulumi_gcp/compute/reservation.py +4 -4
- pulumi_gcp/compute/router.py +54 -0
- pulumi_gcp/compute/service_attachment.py +126 -0
- pulumi_gcp/compute/snapshot_iam_binding.py +2 -0
- pulumi_gcp/compute/snapshot_iam_member.py +2 -0
- pulumi_gcp/compute/snapshot_iam_policy.py +2 -0
- pulumi_gcp/compute/storage_pool.py +154 -0
- pulumi_gcp/compute/storage_pool_iam_binding.py +2 -0
- pulumi_gcp/compute/storage_pool_iam_member.py +2 -0
- pulumi_gcp/compute/storage_pool_iam_policy.py +2 -0
- pulumi_gcp/compute/subnetwork.py +54 -0
- pulumi_gcp/compute/subnetwork_iam_binding.py +2 -0
- pulumi_gcp/compute/subnetwork_iam_member.py +2 -0
- pulumi_gcp/compute/subnetwork_iam_policy.py +2 -0
- pulumi_gcp/config/__init__.pyi +2 -4
- pulumi_gcp/config/vars.py +4 -8
- pulumi_gcp/container/_inputs.py +2622 -246
- pulumi_gcp/container/cluster.py +61 -21
- pulumi_gcp/container/get_cluster.py +12 -1
- pulumi_gcp/container/outputs.py +2877 -133
- pulumi_gcp/containeranalysis/note_iam_binding.py +2 -0
- pulumi_gcp/containeranalysis/note_iam_member.py +2 -0
- pulumi_gcp/containeranalysis/note_iam_policy.py +2 -0
- pulumi_gcp/datacatalog/entry_group_iam_binding.py +2 -0
- pulumi_gcp/datacatalog/entry_group_iam_member.py +2 -0
- pulumi_gcp/datacatalog/entry_group_iam_policy.py +2 -0
- pulumi_gcp/datacatalog/policy_tag_iam_binding.py +2 -0
- pulumi_gcp/datacatalog/policy_tag_iam_member.py +2 -0
- pulumi_gcp/datacatalog/policy_tag_iam_policy.py +2 -0
- pulumi_gcp/datacatalog/tag_template_iam_binding.py +2 -0
- pulumi_gcp/datacatalog/tag_template_iam_member.py +2 -0
- pulumi_gcp/datacatalog/tag_template_iam_policy.py +2 -0
- pulumi_gcp/datacatalog/taxonomy_iam_binding.py +2 -0
- pulumi_gcp/datacatalog/taxonomy_iam_member.py +2 -0
- pulumi_gcp/datacatalog/taxonomy_iam_policy.py +2 -0
- pulumi_gcp/datafusion/instance.py +18 -4
- pulumi_gcp/dataplex/aspect_type_iam_binding.py +2 -0
- pulumi_gcp/dataplex/aspect_type_iam_member.py +2 -0
- pulumi_gcp/dataplex/aspect_type_iam_policy.py +2 -0
- pulumi_gcp/dataplex/asset_iam_binding.py +2 -0
- pulumi_gcp/dataplex/asset_iam_member.py +2 -0
- pulumi_gcp/dataplex/asset_iam_policy.py +2 -0
- pulumi_gcp/dataplex/datascan_iam_binding.py +2 -0
- pulumi_gcp/dataplex/datascan_iam_member.py +2 -0
- pulumi_gcp/dataplex/datascan_iam_policy.py +2 -0
- pulumi_gcp/dataplex/entry_group_iam_binding.py +2 -0
- pulumi_gcp/dataplex/entry_group_iam_member.py +2 -0
- pulumi_gcp/dataplex/entry_group_iam_policy.py +2 -0
- pulumi_gcp/dataplex/entry_type_iam_binding.py +2 -0
- pulumi_gcp/dataplex/entry_type_iam_member.py +2 -0
- pulumi_gcp/dataplex/entry_type_iam_policy.py +2 -0
- pulumi_gcp/dataplex/glossary_iam_binding.py +2 -0
- pulumi_gcp/dataplex/glossary_iam_member.py +2 -0
- pulumi_gcp/dataplex/glossary_iam_policy.py +2 -0
- pulumi_gcp/dataplex/lake_iam_binding.py +2 -0
- pulumi_gcp/dataplex/lake_iam_member.py +2 -0
- pulumi_gcp/dataplex/lake_iam_policy.py +2 -0
- pulumi_gcp/dataplex/task_iam_binding.py +2 -0
- pulumi_gcp/dataplex/task_iam_member.py +2 -0
- pulumi_gcp/dataplex/task_iam_policy.py +2 -0
- pulumi_gcp/dataplex/zone_iam_binding.py +2 -0
- pulumi_gcp/dataplex/zone_iam_member.py +2 -0
- pulumi_gcp/dataplex/zone_iam_policy.py +2 -0
- pulumi_gcp/dataproc/_inputs.py +249 -14
- pulumi_gcp/dataproc/autoscaling_policy_iam_binding.py +2 -0
- pulumi_gcp/dataproc/autoscaling_policy_iam_member.py +2 -0
- pulumi_gcp/dataproc/autoscaling_policy_iam_policy.py +2 -0
- pulumi_gcp/dataproc/batch.py +6 -0
- pulumi_gcp/dataproc/cluster.py +2 -0
- pulumi_gcp/dataproc/metastore_database_iam_binding.py +2 -0
- pulumi_gcp/dataproc/metastore_database_iam_member.py +2 -0
- pulumi_gcp/dataproc/metastore_database_iam_policy.py +2 -0
- pulumi_gcp/dataproc/metastore_federation_iam_binding.py +2 -0
- pulumi_gcp/dataproc/metastore_federation_iam_member.py +2 -0
- pulumi_gcp/dataproc/metastore_federation_iam_policy.py +2 -0
- pulumi_gcp/dataproc/metastore_service_iam_binding.py +2 -0
- pulumi_gcp/dataproc/metastore_service_iam_member.py +2 -0
- pulumi_gcp/dataproc/metastore_service_iam_policy.py +2 -0
- pulumi_gcp/dataproc/metastore_table_iam_binding.py +2 -0
- pulumi_gcp/dataproc/metastore_table_iam_member.py +2 -0
- pulumi_gcp/dataproc/metastore_table_iam_policy.py +2 -0
- pulumi_gcp/dataproc/outputs.py +215 -12
- pulumi_gcp/dataproc/session_template.py +14 -2
- pulumi_gcp/developerconnect/__init__.py +1 -0
- pulumi_gcp/developerconnect/_inputs.py +583 -0
- pulumi_gcp/developerconnect/insights_config.py +895 -0
- pulumi_gcp/developerconnect/outputs.py +442 -0
- pulumi_gcp/diagflow/__init__.py +3 -0
- pulumi_gcp/diagflow/_inputs.py +11899 -7963
- pulumi_gcp/diagflow/conversation_profile.py +959 -0
- pulumi_gcp/diagflow/cx_generator.py +636 -0
- pulumi_gcp/diagflow/cx_playbook.py +967 -0
- pulumi_gcp/diagflow/cx_tool.py +2 -2
- pulumi_gcp/diagflow/cx_webhook.py +380 -36
- pulumi_gcp/diagflow/outputs.py +9099 -5946
- pulumi_gcp/discoveryengine/__init__.py +2 -0
- pulumi_gcp/discoveryengine/_inputs.py +465 -0
- pulumi_gcp/discoveryengine/cmek_config.py +707 -0
- pulumi_gcp/discoveryengine/outputs.py +412 -0
- pulumi_gcp/discoveryengine/recommendation_engine.py +813 -0
- pulumi_gcp/dns/dns_managed_zone_iam_binding.py +2 -0
- pulumi_gcp/dns/dns_managed_zone_iam_member.py +2 -0
- pulumi_gcp/dns/dns_managed_zone_iam_policy.py +2 -0
- pulumi_gcp/endpoints/service_iam_binding.py +2 -0
- pulumi_gcp/endpoints/service_iam_member.py +2 -0
- pulumi_gcp/endpoints/service_iam_policy.py +2 -0
- pulumi_gcp/firestore/field.py +6 -6
- pulumi_gcp/gemini/gemini_gcp_enablement_setting.py +107 -9
- pulumi_gcp/gemini/gemini_gcp_enablement_setting_binding.py +2 -2
- pulumi_gcp/gemini/repository_group_iam_binding.py +2 -0
- pulumi_gcp/gemini/repository_group_iam_member.py +2 -0
- pulumi_gcp/gemini/repository_group_iam_policy.py +2 -0
- pulumi_gcp/gkebackup/backup_plan_iam_binding.py +2 -0
- pulumi_gcp/gkebackup/backup_plan_iam_member.py +2 -0
- pulumi_gcp/gkebackup/backup_plan_iam_policy.py +2 -0
- pulumi_gcp/gkebackup/restore_plan_iam_binding.py +2 -0
- pulumi_gcp/gkebackup/restore_plan_iam_member.py +2 -0
- pulumi_gcp/gkebackup/restore_plan_iam_policy.py +2 -0
- pulumi_gcp/gkehub/feature_iam_binding.py +2 -0
- pulumi_gcp/gkehub/feature_iam_member.py +2 -0
- pulumi_gcp/gkehub/feature_iam_policy.py +2 -0
- pulumi_gcp/gkehub/membership_binding.py +6 -6
- pulumi_gcp/gkehub/membership_iam_binding.py +2 -0
- pulumi_gcp/gkehub/membership_iam_member.py +2 -0
- pulumi_gcp/gkehub/membership_iam_policy.py +2 -0
- pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
- pulumi_gcp/gkehub/namespace.py +4 -4
- pulumi_gcp/gkehub/scope_iam_binding.py +2 -0
- pulumi_gcp/gkehub/scope_iam_member.py +2 -0
- pulumi_gcp/gkehub/scope_iam_policy.py +2 -0
- pulumi_gcp/gkehub/scope_rbac_role_binding.py +8 -8
- pulumi_gcp/gkeonprem/vmware_admin_cluster.py +24 -3
- pulumi_gcp/healthcare/consent_store_iam_binding.py +2 -0
- pulumi_gcp/healthcare/consent_store_iam_member.py +2 -0
- pulumi_gcp/healthcare/consent_store_iam_policy.py +2 -0
- pulumi_gcp/iam/__init__.py +4 -0
- pulumi_gcp/iam/_inputs.py +98 -0
- pulumi_gcp/iam/get_workforce_pool_iam_policy.py +161 -0
- pulumi_gcp/iam/outputs.py +56 -0
- pulumi_gcp/iam/workforce_pool_iam_binding.py +763 -0
- pulumi_gcp/iam/workforce_pool_iam_member.py +763 -0
- pulumi_gcp/iam/workforce_pool_iam_policy.py +602 -0
- pulumi_gcp/iap/app_engine_service_iam_binding.py +2 -0
- pulumi_gcp/iap/app_engine_service_iam_member.py +2 -0
- pulumi_gcp/iap/app_engine_service_iam_policy.py +2 -0
- pulumi_gcp/iap/app_engine_version_iam_binding.py +2 -0
- pulumi_gcp/iap/app_engine_version_iam_member.py +2 -0
- pulumi_gcp/iap/app_engine_version_iam_policy.py +2 -0
- pulumi_gcp/iap/tunnel_dest_group.py +2 -2
- pulumi_gcp/iap/tunnel_dest_group_iam_binding.py +2 -0
- pulumi_gcp/iap/tunnel_dest_group_iam_member.py +2 -0
- pulumi_gcp/iap/tunnel_dest_group_iam_policy.py +2 -0
- pulumi_gcp/iap/tunnel_iam_binding.py +2 -0
- pulumi_gcp/iap/tunnel_iam_member.py +2 -0
- pulumi_gcp/iap/tunnel_iam_policy.py +2 -0
- pulumi_gcp/iap/tunnel_instance_iam_binding.py +2 -0
- pulumi_gcp/iap/tunnel_instance_iam_member.py +2 -0
- pulumi_gcp/iap/tunnel_instance_iam_policy.py +2 -0
- pulumi_gcp/iap/web_backend_service_iam_binding.py +2 -0
- pulumi_gcp/iap/web_backend_service_iam_member.py +2 -0
- pulumi_gcp/iap/web_backend_service_iam_policy.py +2 -0
- pulumi_gcp/iap/web_cloud_run_service_iam_binding.py +2 -0
- pulumi_gcp/iap/web_cloud_run_service_iam_member.py +2 -0
- pulumi_gcp/iap/web_cloud_run_service_iam_policy.py +2 -0
- pulumi_gcp/iap/web_iam_binding.py +2 -0
- pulumi_gcp/iap/web_iam_member.py +2 -0
- pulumi_gcp/iap/web_iam_policy.py +2 -0
- pulumi_gcp/iap/web_region_backend_service_iam_binding.py +2 -0
- pulumi_gcp/iap/web_region_backend_service_iam_member.py +2 -0
- pulumi_gcp/iap/web_region_backend_service_iam_policy.py +2 -0
- pulumi_gcp/iap/web_type_app_enging_iam_binding.py +2 -0
- pulumi_gcp/iap/web_type_app_enging_iam_member.py +2 -0
- pulumi_gcp/iap/web_type_app_enging_iam_policy.py +2 -0
- pulumi_gcp/iap/web_type_compute_iam_binding.py +2 -0
- pulumi_gcp/iap/web_type_compute_iam_member.py +2 -0
- pulumi_gcp/iap/web_type_compute_iam_policy.py +2 -0
- pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
- pulumi_gcp/kms/crypto_key.py +7 -0
- pulumi_gcp/kms/ekm_connection_iam_binding.py +2 -0
- pulumi_gcp/kms/ekm_connection_iam_member.py +2 -0
- pulumi_gcp/kms/ekm_connection_iam_policy.py +2 -0
- pulumi_gcp/kms/outputs.py +2 -0
- pulumi_gcp/logging/log_view_iam_binding.py +2 -0
- pulumi_gcp/logging/log_view_iam_member.py +2 -0
- pulumi_gcp/logging/log_view_iam_policy.py +2 -0
- pulumi_gcp/looker/instance.py +28 -7
- pulumi_gcp/managedkafka/_inputs.py +127 -0
- pulumi_gcp/managedkafka/cluster.py +131 -1
- pulumi_gcp/managedkafka/connect_cluster.py +4 -4
- pulumi_gcp/managedkafka/connector.py +4 -4
- pulumi_gcp/managedkafka/outputs.py +128 -0
- pulumi_gcp/memorystore/get_instance.py +12 -1
- pulumi_gcp/memorystore/instance.py +78 -12
- pulumi_gcp/modelarmor/__init__.py +1 -0
- pulumi_gcp/modelarmor/_inputs.py +683 -0
- pulumi_gcp/modelarmor/floorsetting.py +736 -0
- pulumi_gcp/modelarmor/outputs.py +618 -0
- pulumi_gcp/monitoring/_inputs.py +3 -3
- pulumi_gcp/monitoring/outputs.py +2 -2
- pulumi_gcp/networkconnectivity/_inputs.py +60 -0
- pulumi_gcp/networkconnectivity/internal_range.py +136 -0
- pulumi_gcp/networkconnectivity/outputs.py +55 -0
- pulumi_gcp/networkconnectivity/spoke.py +14 -14
- pulumi_gcp/networkmanagement/vpc_flow_logs_config.py +213 -168
- pulumi_gcp/notebooks/instance.py +18 -18
- pulumi_gcp/notebooks/instance_iam_binding.py +2 -0
- pulumi_gcp/notebooks/instance_iam_member.py +2 -0
- pulumi_gcp/notebooks/instance_iam_policy.py +2 -0
- pulumi_gcp/notebooks/runtime_iam_binding.py +2 -0
- pulumi_gcp/notebooks/runtime_iam_member.py +2 -0
- pulumi_gcp/notebooks/runtime_iam_policy.py +2 -0
- pulumi_gcp/oracledatabase/__init__.py +2 -0
- pulumi_gcp/oracledatabase/autonomous_database.py +262 -38
- pulumi_gcp/oracledatabase/cloud_vm_cluster.py +314 -50
- pulumi_gcp/oracledatabase/get_autonomous_database.py +23 -1
- pulumi_gcp/oracledatabase/get_cloud_vm_cluster.py +34 -1
- pulumi_gcp/oracledatabase/odb_network.py +721 -0
- pulumi_gcp/oracledatabase/odb_subnet.py +803 -0
- pulumi_gcp/oracledatabase/outputs.py +83 -0
- pulumi_gcp/organizations/folder.py +56 -0
- pulumi_gcp/organizations/get_folder.py +29 -1
- pulumi_gcp/orgpolicy/policy.py +2 -2
- pulumi_gcp/parametermanager/parameter_version.py +62 -0
- pulumi_gcp/parametermanager/regional_parameter_version.py +64 -0
- pulumi_gcp/projects/api_key.py +88 -1
- pulumi_gcp/provider.py +20 -40
- pulumi_gcp/pubsub/schema_iam_binding.py +2 -0
- pulumi_gcp/pubsub/schema_iam_member.py +2 -0
- pulumi_gcp/pubsub/schema_iam_policy.py +2 -0
- pulumi_gcp/pubsub/subscription.py +130 -6
- pulumi_gcp/pubsub/topic.py +116 -0
- pulumi_gcp/pubsub/topic_iam_binding.py +2 -0
- pulumi_gcp/pubsub/topic_iam_member.py +2 -0
- pulumi_gcp/pubsub/topic_iam_policy.py +2 -0
- pulumi_gcp/pulumi-plugin.json +1 -1
- pulumi_gcp/redis/cluster.py +70 -0
- pulumi_gcp/redis/get_cluster.py +12 -1
- pulumi_gcp/redis/instance.py +8 -12
- pulumi_gcp/secretmanager/get_regional_secret.py +12 -1
- pulumi_gcp/secretmanager/get_secret.py +12 -1
- pulumi_gcp/secretmanager/outputs.py +30 -0
- pulumi_gcp/secretmanager/regional_secret.py +61 -0
- pulumi_gcp/secretmanager/regional_secret_iam_binding.py +2 -0
- pulumi_gcp/secretmanager/regional_secret_iam_member.py +2 -0
- pulumi_gcp/secretmanager/regional_secret_iam_policy.py +2 -0
- pulumi_gcp/secretmanager/secret.py +61 -0
- pulumi_gcp/secretmanager/secret_iam_binding.py +2 -0
- pulumi_gcp/secretmanager/secret_iam_member.py +2 -0
- pulumi_gcp/secretmanager/secret_iam_policy.py +2 -0
- pulumi_gcp/secretmanager/secret_version.py +1 -48
- pulumi_gcp/securesourcemanager/branch_rule.py +16 -8
- pulumi_gcp/securesourcemanager/instance.py +112 -4
- pulumi_gcp/securesourcemanager/repository.py +112 -8
- pulumi_gcp/securesourcemanager/repository_iam_binding.py +2 -0
- pulumi_gcp/securesourcemanager/repository_iam_member.py +2 -0
- pulumi_gcp/securesourcemanager/repository_iam_policy.py +2 -0
- pulumi_gcp/securitycenter/instance_iam_binding.py +18 -4
- pulumi_gcp/securitycenter/instance_iam_member.py +18 -4
- pulumi_gcp/securitycenter/instance_iam_policy.py +18 -4
- pulumi_gcp/securitycenter/v2_organization_source_iam_binding.py +2 -0
- pulumi_gcp/securitycenter/v2_organization_source_iam_member.py +2 -0
- pulumi_gcp/securitycenter/v2_organization_source_iam_policy.py +2 -0
- pulumi_gcp/serviceaccount/get_account_key.py +1 -0
- pulumi_gcp/servicedirectory/namespace_iam_binding.py +2 -0
- pulumi_gcp/servicedirectory/namespace_iam_member.py +2 -0
- pulumi_gcp/servicedirectory/namespace_iam_policy.py +2 -0
- pulumi_gcp/servicedirectory/service_iam_binding.py +2 -0
- pulumi_gcp/servicedirectory/service_iam_member.py +2 -0
- pulumi_gcp/servicedirectory/service_iam_policy.py +2 -0
- pulumi_gcp/sourcerepo/repository_iam_binding.py +2 -0
- pulumi_gcp/sourcerepo/repository_iam_member.py +2 -0
- pulumi_gcp/sourcerepo/repository_iam_policy.py +2 -0
- pulumi_gcp/sql/_inputs.py +88 -10
- pulumi_gcp/sql/database.py +0 -12
- pulumi_gcp/sql/database_instance.py +108 -7
- pulumi_gcp/sql/get_database_instance.py +12 -1
- pulumi_gcp/sql/outputs.py +158 -11
- pulumi_gcp/storage/__init__.py +2 -0
- pulumi_gcp/storage/_inputs.py +555 -12
- pulumi_gcp/storage/bucket.py +7 -7
- pulumi_gcp/storage/bucket_object.py +34 -0
- pulumi_gcp/storage/get_bucket_object.py +12 -1
- pulumi_gcp/storage/get_bucket_object_content.py +12 -1
- pulumi_gcp/storage/get_insights_dataset_config.py +363 -0
- pulumi_gcp/storage/insights_dataset_config.py +1280 -0
- pulumi_gcp/storage/outputs.py +703 -7
- pulumi_gcp/tags/tag_key_iam_binding.py +2 -0
- pulumi_gcp/tags/tag_key_iam_member.py +2 -0
- pulumi_gcp/tags/tag_key_iam_policy.py +2 -0
- pulumi_gcp/tags/tag_value_iam_binding.py +2 -0
- pulumi_gcp/tags/tag_value_iam_member.py +2 -0
- pulumi_gcp/tags/tag_value_iam_policy.py +2 -0
- pulumi_gcp/tpu/get_tensorflow_versions.py +10 -0
- pulumi_gcp/vertex/__init__.py +2 -0
- pulumi_gcp/vertex/_inputs.py +3768 -3
- pulumi_gcp/vertex/ai_endpoint.py +4 -4
- pulumi_gcp/vertex/ai_endpoint_with_model_garden_deployment.py +940 -0
- pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
- pulumi_gcp/vertex/ai_index.py +21 -7
- pulumi_gcp/vertex/ai_rag_engine_config.py +354 -0
- pulumi_gcp/vertex/outputs.py +2678 -2
- pulumi_gcp/vmwareengine/network_peering.py +7 -7
- pulumi_gcp/workbench/_inputs.py +118 -0
- pulumi_gcp/workbench/instance.py +171 -2
- pulumi_gcp/workbench/outputs.py +91 -0
- {pulumi_gcp-8.40.0a1754721948.dist-info → pulumi_gcp-8.41.0.dist-info}/METADATA +1 -1
- {pulumi_gcp-8.40.0a1754721948.dist-info → pulumi_gcp-8.41.0.dist-info}/RECORD +469 -442
- {pulumi_gcp-8.40.0a1754721948.dist-info → pulumi_gcp-8.41.0.dist-info}/WHEEL +0 -0
- {pulumi_gcp-8.40.0a1754721948.dist-info → pulumi_gcp-8.41.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1698 @@
|
|
1
|
+
# coding=utf-8
|
2
|
+
# *** WARNING: this file was generated by pulumi-language-python. ***
|
3
|
+
# *** Do not edit by hand unless you're certain you know what you are doing! ***
|
4
|
+
|
5
|
+
import builtins as _builtins
|
6
|
+
import warnings
|
7
|
+
import sys
|
8
|
+
import pulumi
|
9
|
+
import pulumi.runtime
|
10
|
+
from typing import Any, Mapping, Optional, Sequence, Union, overload
|
11
|
+
if sys.version_info >= (3, 11):
|
12
|
+
from typing import NotRequired, TypedDict, TypeAlias
|
13
|
+
else:
|
14
|
+
from typing_extensions import NotRequired, TypedDict, TypeAlias
|
15
|
+
from .. import _utilities
|
16
|
+
from . import outputs
|
17
|
+
from ._inputs import *
|
18
|
+
|
19
|
+
__all__ = ['ApiProductArgs', 'ApiProduct']
|
20
|
+
|
21
|
+
@pulumi.input_type
|
22
|
+
class ApiProductArgs:
|
23
|
+
def __init__(__self__, *,
|
24
|
+
display_name: pulumi.Input[_builtins.str],
|
25
|
+
org_id: pulumi.Input[_builtins.str],
|
26
|
+
api_resources: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
27
|
+
approval_type: Optional[pulumi.Input[_builtins.str]] = None,
|
28
|
+
attributes: Optional[pulumi.Input[Sequence[pulumi.Input['ApiProductAttributeArgs']]]] = None,
|
29
|
+
description: Optional[pulumi.Input[_builtins.str]] = None,
|
30
|
+
environments: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
31
|
+
graphql_operation_group: Optional[pulumi.Input['ApiProductGraphqlOperationGroupArgs']] = None,
|
32
|
+
grpc_operation_group: Optional[pulumi.Input['ApiProductGrpcOperationGroupArgs']] = None,
|
33
|
+
name: Optional[pulumi.Input[_builtins.str]] = None,
|
34
|
+
operation_group: Optional[pulumi.Input['ApiProductOperationGroupArgs']] = None,
|
35
|
+
proxies: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
36
|
+
quota: Optional[pulumi.Input[_builtins.str]] = None,
|
37
|
+
quota_counter_scope: Optional[pulumi.Input[_builtins.str]] = None,
|
38
|
+
quota_interval: Optional[pulumi.Input[_builtins.str]] = None,
|
39
|
+
quota_time_unit: Optional[pulumi.Input[_builtins.str]] = None,
|
40
|
+
scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
41
|
+
space: Optional[pulumi.Input[_builtins.str]] = None):
|
42
|
+
"""
|
43
|
+
The set of arguments for constructing a ApiProduct resource.
|
44
|
+
:param pulumi.Input[_builtins.str] display_name: Name displayed in the UI or developer portal to developers registering for API access.
|
45
|
+
:param pulumi.Input[_builtins.str] org_id: The Apigee Organization associated with the Apigee API product,
|
46
|
+
in the format `organizations/{{org_name}}`.
|
47
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] api_resources: Comma-separated list of API resources to be bundled in the API product. By default, the resource paths are mapped from the proxy.pathsuffix variable.
|
48
|
+
The proxy path suffix is defined as the URI fragment following the ProxyEndpoint base path. For example, if the apiResources element is defined to be /forecastrss and the base path defined for the API proxy is /weather, then only requests to /weather/forecastrss are permitted by the API product.
|
49
|
+
:param pulumi.Input[_builtins.str] approval_type: Flag that specifies how API keys are approved to access the APIs defined by the API product.
|
50
|
+
Valid values are `auto` or `manual`.
|
51
|
+
Possible values are: `auto`, `manual`.
|
52
|
+
:param pulumi.Input[Sequence[pulumi.Input['ApiProductAttributeArgs']]] attributes: Array of attributes that may be used to extend the default API product profile with customer-specific metadata. You can specify a maximum of 18 attributes.
|
53
|
+
Use this property to specify the access level of the API product as either public, private, or internal.
|
54
|
+
Structure is documented below.
|
55
|
+
:param pulumi.Input[_builtins.str] description: Description of the API product. Include key information about the API product that is not captured by other fields.
|
56
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] environments: Comma-separated list of environment names to which the API product is bound. Requests to environments that are not listed are rejected.
|
57
|
+
By specifying one or more environments, you can bind the resources listed in the API product to a specific environment, preventing developers from accessing those resources through API proxies deployed in another environment.
|
58
|
+
:param pulumi.Input['ApiProductGraphqlOperationGroupArgs'] graphql_operation_group: Configuration used to group Apigee proxies or remote services with graphQL operation name, graphQL operation type and quotas. This grouping allows us to precisely set quota for a particular combination of graphQL name and operation type for a particular proxy request. If graphQL name is not set, this would imply quota will be applied on all graphQL requests matching the operation type.
|
59
|
+
Structure is documented below.
|
60
|
+
:param pulumi.Input['ApiProductGrpcOperationGroupArgs'] grpc_operation_group: Optional. Configuration used to group Apigee proxies with gRPC services and method names. This grouping allows us to set quota for a particular proxy with the gRPC service name and method. If a method name is not set, this implies quota and authorization are applied to all gRPC methods implemented by that proxy for that particular gRPC service.
|
61
|
+
Structure is documented below.
|
62
|
+
:param pulumi.Input[_builtins.str] name: Internal name of the API product.
|
63
|
+
:param pulumi.Input['ApiProductOperationGroupArgs'] operation_group: Configuration used to group Apigee proxies or remote services with resources, method types, and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources and how many calls can be made (using the quota setting).
|
64
|
+
Note: The apiResources setting cannot be specified for both the API product and operation group; otherwise the call will fail.
|
65
|
+
Structure is documented below.
|
66
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] proxies: Comma-separated list of API proxy names to which this API product is bound. By specifying API proxies, you can associate resources in the API product with specific API proxies, preventing developers from accessing those resources through other API proxies.
|
67
|
+
Apigee rejects requests to API proxies that are not listed.
|
68
|
+
:param pulumi.Input[_builtins.str] quota: Number of request messages permitted per app by this API product for the specified quotaInterval and quotaTimeUnit.
|
69
|
+
For example, a quota of 50, for a quotaInterval of 12 and a quotaTimeUnit of hours means 50 requests are allowed every 12 hours.
|
70
|
+
:param pulumi.Input[_builtins.str] quota_counter_scope: Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself.
|
71
|
+
Possible values are: `QUOTA_COUNTER_SCOPE_UNSPECIFIED`, `PROXY`, `OPERATION`.
|
72
|
+
:param pulumi.Input[_builtins.str] quota_interval: Time interval over which the number of request messages is calculated.
|
73
|
+
:param pulumi.Input[_builtins.str] quota_time_unit: Time unit defined for the quotaInterval. Valid values include second, minute, hour, day, month or year.
|
74
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] scopes: Comma-separated list of OAuth scopes that are validated at runtime. Apigee validates that the scopes in any access token presented match the scopes defined in the OAuth policy associated with the API product.
|
75
|
+
:param pulumi.Input[_builtins.str] space: Optional. The resource ID of the parent Space. If not set, the parent resource will be the Organization.
|
76
|
+
"""
|
77
|
+
pulumi.set(__self__, "display_name", display_name)
|
78
|
+
pulumi.set(__self__, "org_id", org_id)
|
79
|
+
if api_resources is not None:
|
80
|
+
pulumi.set(__self__, "api_resources", api_resources)
|
81
|
+
if approval_type is not None:
|
82
|
+
pulumi.set(__self__, "approval_type", approval_type)
|
83
|
+
if attributes is not None:
|
84
|
+
pulumi.set(__self__, "attributes", attributes)
|
85
|
+
if description is not None:
|
86
|
+
pulumi.set(__self__, "description", description)
|
87
|
+
if environments is not None:
|
88
|
+
pulumi.set(__self__, "environments", environments)
|
89
|
+
if graphql_operation_group is not None:
|
90
|
+
pulumi.set(__self__, "graphql_operation_group", graphql_operation_group)
|
91
|
+
if grpc_operation_group is not None:
|
92
|
+
pulumi.set(__self__, "grpc_operation_group", grpc_operation_group)
|
93
|
+
if name is not None:
|
94
|
+
pulumi.set(__self__, "name", name)
|
95
|
+
if operation_group is not None:
|
96
|
+
pulumi.set(__self__, "operation_group", operation_group)
|
97
|
+
if proxies is not None:
|
98
|
+
pulumi.set(__self__, "proxies", proxies)
|
99
|
+
if quota is not None:
|
100
|
+
pulumi.set(__self__, "quota", quota)
|
101
|
+
if quota_counter_scope is not None:
|
102
|
+
pulumi.set(__self__, "quota_counter_scope", quota_counter_scope)
|
103
|
+
if quota_interval is not None:
|
104
|
+
pulumi.set(__self__, "quota_interval", quota_interval)
|
105
|
+
if quota_time_unit is not None:
|
106
|
+
pulumi.set(__self__, "quota_time_unit", quota_time_unit)
|
107
|
+
if scopes is not None:
|
108
|
+
pulumi.set(__self__, "scopes", scopes)
|
109
|
+
if space is not None:
|
110
|
+
pulumi.set(__self__, "space", space)
|
111
|
+
|
112
|
+
@_builtins.property
|
113
|
+
@pulumi.getter(name="displayName")
|
114
|
+
def display_name(self) -> pulumi.Input[_builtins.str]:
|
115
|
+
"""
|
116
|
+
Name displayed in the UI or developer portal to developers registering for API access.
|
117
|
+
"""
|
118
|
+
return pulumi.get(self, "display_name")
|
119
|
+
|
120
|
+
@display_name.setter
|
121
|
+
def display_name(self, value: pulumi.Input[_builtins.str]):
|
122
|
+
pulumi.set(self, "display_name", value)
|
123
|
+
|
124
|
+
@_builtins.property
|
125
|
+
@pulumi.getter(name="orgId")
|
126
|
+
def org_id(self) -> pulumi.Input[_builtins.str]:
|
127
|
+
"""
|
128
|
+
The Apigee Organization associated with the Apigee API product,
|
129
|
+
in the format `organizations/{{org_name}}`.
|
130
|
+
"""
|
131
|
+
return pulumi.get(self, "org_id")
|
132
|
+
|
133
|
+
@org_id.setter
|
134
|
+
def org_id(self, value: pulumi.Input[_builtins.str]):
|
135
|
+
pulumi.set(self, "org_id", value)
|
136
|
+
|
137
|
+
@_builtins.property
|
138
|
+
@pulumi.getter(name="apiResources")
|
139
|
+
def api_resources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
|
140
|
+
"""
|
141
|
+
Comma-separated list of API resources to be bundled in the API product. By default, the resource paths are mapped from the proxy.pathsuffix variable.
|
142
|
+
The proxy path suffix is defined as the URI fragment following the ProxyEndpoint base path. For example, if the apiResources element is defined to be /forecastrss and the base path defined for the API proxy is /weather, then only requests to /weather/forecastrss are permitted by the API product.
|
143
|
+
"""
|
144
|
+
return pulumi.get(self, "api_resources")
|
145
|
+
|
146
|
+
@api_resources.setter
|
147
|
+
def api_resources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
|
148
|
+
pulumi.set(self, "api_resources", value)
|
149
|
+
|
150
|
+
@_builtins.property
|
151
|
+
@pulumi.getter(name="approvalType")
|
152
|
+
def approval_type(self) -> Optional[pulumi.Input[_builtins.str]]:
|
153
|
+
"""
|
154
|
+
Flag that specifies how API keys are approved to access the APIs defined by the API product.
|
155
|
+
Valid values are `auto` or `manual`.
|
156
|
+
Possible values are: `auto`, `manual`.
|
157
|
+
"""
|
158
|
+
return pulumi.get(self, "approval_type")
|
159
|
+
|
160
|
+
@approval_type.setter
|
161
|
+
def approval_type(self, value: Optional[pulumi.Input[_builtins.str]]):
|
162
|
+
pulumi.set(self, "approval_type", value)
|
163
|
+
|
164
|
+
@_builtins.property
|
165
|
+
@pulumi.getter
|
166
|
+
def attributes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ApiProductAttributeArgs']]]]:
|
167
|
+
"""
|
168
|
+
Array of attributes that may be used to extend the default API product profile with customer-specific metadata. You can specify a maximum of 18 attributes.
|
169
|
+
Use this property to specify the access level of the API product as either public, private, or internal.
|
170
|
+
Structure is documented below.
|
171
|
+
"""
|
172
|
+
return pulumi.get(self, "attributes")
|
173
|
+
|
174
|
+
@attributes.setter
|
175
|
+
def attributes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ApiProductAttributeArgs']]]]):
|
176
|
+
pulumi.set(self, "attributes", value)
|
177
|
+
|
178
|
+
@_builtins.property
|
179
|
+
@pulumi.getter
|
180
|
+
def description(self) -> Optional[pulumi.Input[_builtins.str]]:
|
181
|
+
"""
|
182
|
+
Description of the API product. Include key information about the API product that is not captured by other fields.
|
183
|
+
"""
|
184
|
+
return pulumi.get(self, "description")
|
185
|
+
|
186
|
+
@description.setter
|
187
|
+
def description(self, value: Optional[pulumi.Input[_builtins.str]]):
|
188
|
+
pulumi.set(self, "description", value)
|
189
|
+
|
190
|
+
@_builtins.property
|
191
|
+
@pulumi.getter
|
192
|
+
def environments(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
|
193
|
+
"""
|
194
|
+
Comma-separated list of environment names to which the API product is bound. Requests to environments that are not listed are rejected.
|
195
|
+
By specifying one or more environments, you can bind the resources listed in the API product to a specific environment, preventing developers from accessing those resources through API proxies deployed in another environment.
|
196
|
+
"""
|
197
|
+
return pulumi.get(self, "environments")
|
198
|
+
|
199
|
+
@environments.setter
|
200
|
+
def environments(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
|
201
|
+
pulumi.set(self, "environments", value)
|
202
|
+
|
203
|
+
@_builtins.property
|
204
|
+
@pulumi.getter(name="graphqlOperationGroup")
|
205
|
+
def graphql_operation_group(self) -> Optional[pulumi.Input['ApiProductGraphqlOperationGroupArgs']]:
|
206
|
+
"""
|
207
|
+
Configuration used to group Apigee proxies or remote services with graphQL operation name, graphQL operation type and quotas. This grouping allows us to precisely set quota for a particular combination of graphQL name and operation type for a particular proxy request. If graphQL name is not set, this would imply quota will be applied on all graphQL requests matching the operation type.
|
208
|
+
Structure is documented below.
|
209
|
+
"""
|
210
|
+
return pulumi.get(self, "graphql_operation_group")
|
211
|
+
|
212
|
+
@graphql_operation_group.setter
|
213
|
+
def graphql_operation_group(self, value: Optional[pulumi.Input['ApiProductGraphqlOperationGroupArgs']]):
|
214
|
+
pulumi.set(self, "graphql_operation_group", value)
|
215
|
+
|
216
|
+
@_builtins.property
|
217
|
+
@pulumi.getter(name="grpcOperationGroup")
|
218
|
+
def grpc_operation_group(self) -> Optional[pulumi.Input['ApiProductGrpcOperationGroupArgs']]:
|
219
|
+
"""
|
220
|
+
Optional. Configuration used to group Apigee proxies with gRPC services and method names. This grouping allows us to set quota for a particular proxy with the gRPC service name and method. If a method name is not set, this implies quota and authorization are applied to all gRPC methods implemented by that proxy for that particular gRPC service.
|
221
|
+
Structure is documented below.
|
222
|
+
"""
|
223
|
+
return pulumi.get(self, "grpc_operation_group")
|
224
|
+
|
225
|
+
@grpc_operation_group.setter
|
226
|
+
def grpc_operation_group(self, value: Optional[pulumi.Input['ApiProductGrpcOperationGroupArgs']]):
|
227
|
+
pulumi.set(self, "grpc_operation_group", value)
|
228
|
+
|
229
|
+
@_builtins.property
|
230
|
+
@pulumi.getter
|
231
|
+
def name(self) -> Optional[pulumi.Input[_builtins.str]]:
|
232
|
+
"""
|
233
|
+
Internal name of the API product.
|
234
|
+
"""
|
235
|
+
return pulumi.get(self, "name")
|
236
|
+
|
237
|
+
@name.setter
|
238
|
+
def name(self, value: Optional[pulumi.Input[_builtins.str]]):
|
239
|
+
pulumi.set(self, "name", value)
|
240
|
+
|
241
|
+
@_builtins.property
|
242
|
+
@pulumi.getter(name="operationGroup")
|
243
|
+
def operation_group(self) -> Optional[pulumi.Input['ApiProductOperationGroupArgs']]:
|
244
|
+
"""
|
245
|
+
Configuration used to group Apigee proxies or remote services with resources, method types, and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources and how many calls can be made (using the quota setting).
|
246
|
+
Note: The apiResources setting cannot be specified for both the API product and operation group; otherwise the call will fail.
|
247
|
+
Structure is documented below.
|
248
|
+
"""
|
249
|
+
return pulumi.get(self, "operation_group")
|
250
|
+
|
251
|
+
@operation_group.setter
|
252
|
+
def operation_group(self, value: Optional[pulumi.Input['ApiProductOperationGroupArgs']]):
|
253
|
+
pulumi.set(self, "operation_group", value)
|
254
|
+
|
255
|
+
@_builtins.property
|
256
|
+
@pulumi.getter
|
257
|
+
def proxies(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
|
258
|
+
"""
|
259
|
+
Comma-separated list of API proxy names to which this API product is bound. By specifying API proxies, you can associate resources in the API product with specific API proxies, preventing developers from accessing those resources through other API proxies.
|
260
|
+
Apigee rejects requests to API proxies that are not listed.
|
261
|
+
"""
|
262
|
+
return pulumi.get(self, "proxies")
|
263
|
+
|
264
|
+
@proxies.setter
|
265
|
+
def proxies(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
|
266
|
+
pulumi.set(self, "proxies", value)
|
267
|
+
|
268
|
+
@_builtins.property
|
269
|
+
@pulumi.getter
|
270
|
+
def quota(self) -> Optional[pulumi.Input[_builtins.str]]:
|
271
|
+
"""
|
272
|
+
Number of request messages permitted per app by this API product for the specified quotaInterval and quotaTimeUnit.
|
273
|
+
For example, a quota of 50, for a quotaInterval of 12 and a quotaTimeUnit of hours means 50 requests are allowed every 12 hours.
|
274
|
+
"""
|
275
|
+
return pulumi.get(self, "quota")
|
276
|
+
|
277
|
+
@quota.setter
|
278
|
+
def quota(self, value: Optional[pulumi.Input[_builtins.str]]):
|
279
|
+
pulumi.set(self, "quota", value)
|
280
|
+
|
281
|
+
@_builtins.property
|
282
|
+
@pulumi.getter(name="quotaCounterScope")
|
283
|
+
def quota_counter_scope(self) -> Optional[pulumi.Input[_builtins.str]]:
|
284
|
+
"""
|
285
|
+
Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself.
|
286
|
+
Possible values are: `QUOTA_COUNTER_SCOPE_UNSPECIFIED`, `PROXY`, `OPERATION`.
|
287
|
+
"""
|
288
|
+
return pulumi.get(self, "quota_counter_scope")
|
289
|
+
|
290
|
+
@quota_counter_scope.setter
|
291
|
+
def quota_counter_scope(self, value: Optional[pulumi.Input[_builtins.str]]):
|
292
|
+
pulumi.set(self, "quota_counter_scope", value)
|
293
|
+
|
294
|
+
@_builtins.property
|
295
|
+
@pulumi.getter(name="quotaInterval")
|
296
|
+
def quota_interval(self) -> Optional[pulumi.Input[_builtins.str]]:
|
297
|
+
"""
|
298
|
+
Time interval over which the number of request messages is calculated.
|
299
|
+
"""
|
300
|
+
return pulumi.get(self, "quota_interval")
|
301
|
+
|
302
|
+
@quota_interval.setter
|
303
|
+
def quota_interval(self, value: Optional[pulumi.Input[_builtins.str]]):
|
304
|
+
pulumi.set(self, "quota_interval", value)
|
305
|
+
|
306
|
+
@_builtins.property
|
307
|
+
@pulumi.getter(name="quotaTimeUnit")
|
308
|
+
def quota_time_unit(self) -> Optional[pulumi.Input[_builtins.str]]:
|
309
|
+
"""
|
310
|
+
Time unit defined for the quotaInterval. Valid values include second, minute, hour, day, month or year.
|
311
|
+
"""
|
312
|
+
return pulumi.get(self, "quota_time_unit")
|
313
|
+
|
314
|
+
@quota_time_unit.setter
|
315
|
+
def quota_time_unit(self, value: Optional[pulumi.Input[_builtins.str]]):
|
316
|
+
pulumi.set(self, "quota_time_unit", value)
|
317
|
+
|
318
|
+
@_builtins.property
|
319
|
+
@pulumi.getter
|
320
|
+
def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
|
321
|
+
"""
|
322
|
+
Comma-separated list of OAuth scopes that are validated at runtime. Apigee validates that the scopes in any access token presented match the scopes defined in the OAuth policy associated with the API product.
|
323
|
+
"""
|
324
|
+
return pulumi.get(self, "scopes")
|
325
|
+
|
326
|
+
@scopes.setter
|
327
|
+
def scopes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
|
328
|
+
pulumi.set(self, "scopes", value)
|
329
|
+
|
330
|
+
@_builtins.property
|
331
|
+
@pulumi.getter
|
332
|
+
def space(self) -> Optional[pulumi.Input[_builtins.str]]:
|
333
|
+
"""
|
334
|
+
Optional. The resource ID of the parent Space. If not set, the parent resource will be the Organization.
|
335
|
+
"""
|
336
|
+
return pulumi.get(self, "space")
|
337
|
+
|
338
|
+
@space.setter
|
339
|
+
def space(self, value: Optional[pulumi.Input[_builtins.str]]):
|
340
|
+
pulumi.set(self, "space", value)
|
341
|
+
|
342
|
+
|
343
|
+
@pulumi.input_type
|
344
|
+
class _ApiProductState:
|
345
|
+
def __init__(__self__, *,
|
346
|
+
api_resources: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
347
|
+
approval_type: Optional[pulumi.Input[_builtins.str]] = None,
|
348
|
+
attributes: Optional[pulumi.Input[Sequence[pulumi.Input['ApiProductAttributeArgs']]]] = None,
|
349
|
+
created_at: Optional[pulumi.Input[_builtins.str]] = None,
|
350
|
+
description: Optional[pulumi.Input[_builtins.str]] = None,
|
351
|
+
display_name: Optional[pulumi.Input[_builtins.str]] = None,
|
352
|
+
environments: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
353
|
+
graphql_operation_group: Optional[pulumi.Input['ApiProductGraphqlOperationGroupArgs']] = None,
|
354
|
+
grpc_operation_group: Optional[pulumi.Input['ApiProductGrpcOperationGroupArgs']] = None,
|
355
|
+
last_modified_at: Optional[pulumi.Input[_builtins.str]] = None,
|
356
|
+
name: Optional[pulumi.Input[_builtins.str]] = None,
|
357
|
+
operation_group: Optional[pulumi.Input['ApiProductOperationGroupArgs']] = None,
|
358
|
+
org_id: Optional[pulumi.Input[_builtins.str]] = None,
|
359
|
+
proxies: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
360
|
+
quota: Optional[pulumi.Input[_builtins.str]] = None,
|
361
|
+
quota_counter_scope: Optional[pulumi.Input[_builtins.str]] = None,
|
362
|
+
quota_interval: Optional[pulumi.Input[_builtins.str]] = None,
|
363
|
+
quota_time_unit: Optional[pulumi.Input[_builtins.str]] = None,
|
364
|
+
scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
365
|
+
space: Optional[pulumi.Input[_builtins.str]] = None):
|
366
|
+
"""
|
367
|
+
Input properties used for looking up and filtering ApiProduct resources.
|
368
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] api_resources: Comma-separated list of API resources to be bundled in the API product. By default, the resource paths are mapped from the proxy.pathsuffix variable.
|
369
|
+
The proxy path suffix is defined as the URI fragment following the ProxyEndpoint base path. For example, if the apiResources element is defined to be /forecastrss and the base path defined for the API proxy is /weather, then only requests to /weather/forecastrss are permitted by the API product.
|
370
|
+
:param pulumi.Input[_builtins.str] approval_type: Flag that specifies how API keys are approved to access the APIs defined by the API product.
|
371
|
+
Valid values are `auto` or `manual`.
|
372
|
+
Possible values are: `auto`, `manual`.
|
373
|
+
:param pulumi.Input[Sequence[pulumi.Input['ApiProductAttributeArgs']]] attributes: Array of attributes that may be used to extend the default API product profile with customer-specific metadata. You can specify a maximum of 18 attributes.
|
374
|
+
Use this property to specify the access level of the API product as either public, private, or internal.
|
375
|
+
Structure is documented below.
|
376
|
+
:param pulumi.Input[_builtins.str] created_at: Response only. Creation time of this environment as milliseconds since epoch.
|
377
|
+
:param pulumi.Input[_builtins.str] description: Description of the API product. Include key information about the API product that is not captured by other fields.
|
378
|
+
:param pulumi.Input[_builtins.str] display_name: Name displayed in the UI or developer portal to developers registering for API access.
|
379
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] environments: Comma-separated list of environment names to which the API product is bound. Requests to environments that are not listed are rejected.
|
380
|
+
By specifying one or more environments, you can bind the resources listed in the API product to a specific environment, preventing developers from accessing those resources through API proxies deployed in another environment.
|
381
|
+
:param pulumi.Input['ApiProductGraphqlOperationGroupArgs'] graphql_operation_group: Configuration used to group Apigee proxies or remote services with graphQL operation name, graphQL operation type and quotas. This grouping allows us to precisely set quota for a particular combination of graphQL name and operation type for a particular proxy request. If graphQL name is not set, this would imply quota will be applied on all graphQL requests matching the operation type.
|
382
|
+
Structure is documented below.
|
383
|
+
:param pulumi.Input['ApiProductGrpcOperationGroupArgs'] grpc_operation_group: Optional. Configuration used to group Apigee proxies with gRPC services and method names. This grouping allows us to set quota for a particular proxy with the gRPC service name and method. If a method name is not set, this implies quota and authorization are applied to all gRPC methods implemented by that proxy for that particular gRPC service.
|
384
|
+
Structure is documented below.
|
385
|
+
:param pulumi.Input[_builtins.str] last_modified_at: Response only. Modified time of this environment as milliseconds since epoch.
|
386
|
+
:param pulumi.Input[_builtins.str] name: Internal name of the API product.
|
387
|
+
:param pulumi.Input['ApiProductOperationGroupArgs'] operation_group: Configuration used to group Apigee proxies or remote services with resources, method types, and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources and how many calls can be made (using the quota setting).
|
388
|
+
Note: The apiResources setting cannot be specified for both the API product and operation group; otherwise the call will fail.
|
389
|
+
Structure is documented below.
|
390
|
+
:param pulumi.Input[_builtins.str] org_id: The Apigee Organization associated with the Apigee API product,
|
391
|
+
in the format `organizations/{{org_name}}`.
|
392
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] proxies: Comma-separated list of API proxy names to which this API product is bound. By specifying API proxies, you can associate resources in the API product with specific API proxies, preventing developers from accessing those resources through other API proxies.
|
393
|
+
Apigee rejects requests to API proxies that are not listed.
|
394
|
+
:param pulumi.Input[_builtins.str] quota: Number of request messages permitted per app by this API product for the specified quotaInterval and quotaTimeUnit.
|
395
|
+
For example, a quota of 50, for a quotaInterval of 12 and a quotaTimeUnit of hours means 50 requests are allowed every 12 hours.
|
396
|
+
:param pulumi.Input[_builtins.str] quota_counter_scope: Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself.
|
397
|
+
Possible values are: `QUOTA_COUNTER_SCOPE_UNSPECIFIED`, `PROXY`, `OPERATION`.
|
398
|
+
:param pulumi.Input[_builtins.str] quota_interval: Time interval over which the number of request messages is calculated.
|
399
|
+
:param pulumi.Input[_builtins.str] quota_time_unit: Time unit defined for the quotaInterval. Valid values include second, minute, hour, day, month or year.
|
400
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] scopes: Comma-separated list of OAuth scopes that are validated at runtime. Apigee validates that the scopes in any access token presented match the scopes defined in the OAuth policy associated with the API product.
|
401
|
+
:param pulumi.Input[_builtins.str] space: Optional. The resource ID of the parent Space. If not set, the parent resource will be the Organization.
|
402
|
+
"""
|
403
|
+
if api_resources is not None:
|
404
|
+
pulumi.set(__self__, "api_resources", api_resources)
|
405
|
+
if approval_type is not None:
|
406
|
+
pulumi.set(__self__, "approval_type", approval_type)
|
407
|
+
if attributes is not None:
|
408
|
+
pulumi.set(__self__, "attributes", attributes)
|
409
|
+
if created_at is not None:
|
410
|
+
pulumi.set(__self__, "created_at", created_at)
|
411
|
+
if description is not None:
|
412
|
+
pulumi.set(__self__, "description", description)
|
413
|
+
if display_name is not None:
|
414
|
+
pulumi.set(__self__, "display_name", display_name)
|
415
|
+
if environments is not None:
|
416
|
+
pulumi.set(__self__, "environments", environments)
|
417
|
+
if graphql_operation_group is not None:
|
418
|
+
pulumi.set(__self__, "graphql_operation_group", graphql_operation_group)
|
419
|
+
if grpc_operation_group is not None:
|
420
|
+
pulumi.set(__self__, "grpc_operation_group", grpc_operation_group)
|
421
|
+
if last_modified_at is not None:
|
422
|
+
pulumi.set(__self__, "last_modified_at", last_modified_at)
|
423
|
+
if name is not None:
|
424
|
+
pulumi.set(__self__, "name", name)
|
425
|
+
if operation_group is not None:
|
426
|
+
pulumi.set(__self__, "operation_group", operation_group)
|
427
|
+
if org_id is not None:
|
428
|
+
pulumi.set(__self__, "org_id", org_id)
|
429
|
+
if proxies is not None:
|
430
|
+
pulumi.set(__self__, "proxies", proxies)
|
431
|
+
if quota is not None:
|
432
|
+
pulumi.set(__self__, "quota", quota)
|
433
|
+
if quota_counter_scope is not None:
|
434
|
+
pulumi.set(__self__, "quota_counter_scope", quota_counter_scope)
|
435
|
+
if quota_interval is not None:
|
436
|
+
pulumi.set(__self__, "quota_interval", quota_interval)
|
437
|
+
if quota_time_unit is not None:
|
438
|
+
pulumi.set(__self__, "quota_time_unit", quota_time_unit)
|
439
|
+
if scopes is not None:
|
440
|
+
pulumi.set(__self__, "scopes", scopes)
|
441
|
+
if space is not None:
|
442
|
+
pulumi.set(__self__, "space", space)
|
443
|
+
|
444
|
+
@_builtins.property
|
445
|
+
@pulumi.getter(name="apiResources")
|
446
|
+
def api_resources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
|
447
|
+
"""
|
448
|
+
Comma-separated list of API resources to be bundled in the API product. By default, the resource paths are mapped from the proxy.pathsuffix variable.
|
449
|
+
The proxy path suffix is defined as the URI fragment following the ProxyEndpoint base path. For example, if the apiResources element is defined to be /forecastrss and the base path defined for the API proxy is /weather, then only requests to /weather/forecastrss are permitted by the API product.
|
450
|
+
"""
|
451
|
+
return pulumi.get(self, "api_resources")
|
452
|
+
|
453
|
+
@api_resources.setter
|
454
|
+
def api_resources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
|
455
|
+
pulumi.set(self, "api_resources", value)
|
456
|
+
|
457
|
+
@_builtins.property
|
458
|
+
@pulumi.getter(name="approvalType")
|
459
|
+
def approval_type(self) -> Optional[pulumi.Input[_builtins.str]]:
|
460
|
+
"""
|
461
|
+
Flag that specifies how API keys are approved to access the APIs defined by the API product.
|
462
|
+
Valid values are `auto` or `manual`.
|
463
|
+
Possible values are: `auto`, `manual`.
|
464
|
+
"""
|
465
|
+
return pulumi.get(self, "approval_type")
|
466
|
+
|
467
|
+
@approval_type.setter
|
468
|
+
def approval_type(self, value: Optional[pulumi.Input[_builtins.str]]):
|
469
|
+
pulumi.set(self, "approval_type", value)
|
470
|
+
|
471
|
+
@_builtins.property
|
472
|
+
@pulumi.getter
|
473
|
+
def attributes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ApiProductAttributeArgs']]]]:
|
474
|
+
"""
|
475
|
+
Array of attributes that may be used to extend the default API product profile with customer-specific metadata. You can specify a maximum of 18 attributes.
|
476
|
+
Use this property to specify the access level of the API product as either public, private, or internal.
|
477
|
+
Structure is documented below.
|
478
|
+
"""
|
479
|
+
return pulumi.get(self, "attributes")
|
480
|
+
|
481
|
+
@attributes.setter
|
482
|
+
def attributes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ApiProductAttributeArgs']]]]):
|
483
|
+
pulumi.set(self, "attributes", value)
|
484
|
+
|
485
|
+
@_builtins.property
|
486
|
+
@pulumi.getter(name="createdAt")
|
487
|
+
def created_at(self) -> Optional[pulumi.Input[_builtins.str]]:
|
488
|
+
"""
|
489
|
+
Response only. Creation time of this environment as milliseconds since epoch.
|
490
|
+
"""
|
491
|
+
return pulumi.get(self, "created_at")
|
492
|
+
|
493
|
+
@created_at.setter
|
494
|
+
def created_at(self, value: Optional[pulumi.Input[_builtins.str]]):
|
495
|
+
pulumi.set(self, "created_at", value)
|
496
|
+
|
497
|
+
@_builtins.property
|
498
|
+
@pulumi.getter
|
499
|
+
def description(self) -> Optional[pulumi.Input[_builtins.str]]:
|
500
|
+
"""
|
501
|
+
Description of the API product. Include key information about the API product that is not captured by other fields.
|
502
|
+
"""
|
503
|
+
return pulumi.get(self, "description")
|
504
|
+
|
505
|
+
@description.setter
|
506
|
+
def description(self, value: Optional[pulumi.Input[_builtins.str]]):
|
507
|
+
pulumi.set(self, "description", value)
|
508
|
+
|
509
|
+
@_builtins.property
|
510
|
+
@pulumi.getter(name="displayName")
|
511
|
+
def display_name(self) -> Optional[pulumi.Input[_builtins.str]]:
|
512
|
+
"""
|
513
|
+
Name displayed in the UI or developer portal to developers registering for API access.
|
514
|
+
"""
|
515
|
+
return pulumi.get(self, "display_name")
|
516
|
+
|
517
|
+
@display_name.setter
|
518
|
+
def display_name(self, value: Optional[pulumi.Input[_builtins.str]]):
|
519
|
+
pulumi.set(self, "display_name", value)
|
520
|
+
|
521
|
+
@_builtins.property
|
522
|
+
@pulumi.getter
|
523
|
+
def environments(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
|
524
|
+
"""
|
525
|
+
Comma-separated list of environment names to which the API product is bound. Requests to environments that are not listed are rejected.
|
526
|
+
By specifying one or more environments, you can bind the resources listed in the API product to a specific environment, preventing developers from accessing those resources through API proxies deployed in another environment.
|
527
|
+
"""
|
528
|
+
return pulumi.get(self, "environments")
|
529
|
+
|
530
|
+
@environments.setter
|
531
|
+
def environments(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
|
532
|
+
pulumi.set(self, "environments", value)
|
533
|
+
|
534
|
+
@_builtins.property
|
535
|
+
@pulumi.getter(name="graphqlOperationGroup")
|
536
|
+
def graphql_operation_group(self) -> Optional[pulumi.Input['ApiProductGraphqlOperationGroupArgs']]:
|
537
|
+
"""
|
538
|
+
Configuration used to group Apigee proxies or remote services with graphQL operation name, graphQL operation type and quotas. This grouping allows us to precisely set quota for a particular combination of graphQL name and operation type for a particular proxy request. If graphQL name is not set, this would imply quota will be applied on all graphQL requests matching the operation type.
|
539
|
+
Structure is documented below.
|
540
|
+
"""
|
541
|
+
return pulumi.get(self, "graphql_operation_group")
|
542
|
+
|
543
|
+
@graphql_operation_group.setter
|
544
|
+
def graphql_operation_group(self, value: Optional[pulumi.Input['ApiProductGraphqlOperationGroupArgs']]):
|
545
|
+
pulumi.set(self, "graphql_operation_group", value)
|
546
|
+
|
547
|
+
@_builtins.property
|
548
|
+
@pulumi.getter(name="grpcOperationGroup")
|
549
|
+
def grpc_operation_group(self) -> Optional[pulumi.Input['ApiProductGrpcOperationGroupArgs']]:
|
550
|
+
"""
|
551
|
+
Optional. Configuration used to group Apigee proxies with gRPC services and method names. This grouping allows us to set quota for a particular proxy with the gRPC service name and method. If a method name is not set, this implies quota and authorization are applied to all gRPC methods implemented by that proxy for that particular gRPC service.
|
552
|
+
Structure is documented below.
|
553
|
+
"""
|
554
|
+
return pulumi.get(self, "grpc_operation_group")
|
555
|
+
|
556
|
+
@grpc_operation_group.setter
|
557
|
+
def grpc_operation_group(self, value: Optional[pulumi.Input['ApiProductGrpcOperationGroupArgs']]):
|
558
|
+
pulumi.set(self, "grpc_operation_group", value)
|
559
|
+
|
560
|
+
@_builtins.property
|
561
|
+
@pulumi.getter(name="lastModifiedAt")
|
562
|
+
def last_modified_at(self) -> Optional[pulumi.Input[_builtins.str]]:
|
563
|
+
"""
|
564
|
+
Response only. Modified time of this environment as milliseconds since epoch.
|
565
|
+
"""
|
566
|
+
return pulumi.get(self, "last_modified_at")
|
567
|
+
|
568
|
+
@last_modified_at.setter
|
569
|
+
def last_modified_at(self, value: Optional[pulumi.Input[_builtins.str]]):
|
570
|
+
pulumi.set(self, "last_modified_at", value)
|
571
|
+
|
572
|
+
@_builtins.property
|
573
|
+
@pulumi.getter
|
574
|
+
def name(self) -> Optional[pulumi.Input[_builtins.str]]:
|
575
|
+
"""
|
576
|
+
Internal name of the API product.
|
577
|
+
"""
|
578
|
+
return pulumi.get(self, "name")
|
579
|
+
|
580
|
+
@name.setter
|
581
|
+
def name(self, value: Optional[pulumi.Input[_builtins.str]]):
|
582
|
+
pulumi.set(self, "name", value)
|
583
|
+
|
584
|
+
@_builtins.property
|
585
|
+
@pulumi.getter(name="operationGroup")
|
586
|
+
def operation_group(self) -> Optional[pulumi.Input['ApiProductOperationGroupArgs']]:
|
587
|
+
"""
|
588
|
+
Configuration used to group Apigee proxies or remote services with resources, method types, and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources and how many calls can be made (using the quota setting).
|
589
|
+
Note: The apiResources setting cannot be specified for both the API product and operation group; otherwise the call will fail.
|
590
|
+
Structure is documented below.
|
591
|
+
"""
|
592
|
+
return pulumi.get(self, "operation_group")
|
593
|
+
|
594
|
+
@operation_group.setter
|
595
|
+
def operation_group(self, value: Optional[pulumi.Input['ApiProductOperationGroupArgs']]):
|
596
|
+
pulumi.set(self, "operation_group", value)
|
597
|
+
|
598
|
+
@_builtins.property
|
599
|
+
@pulumi.getter(name="orgId")
|
600
|
+
def org_id(self) -> Optional[pulumi.Input[_builtins.str]]:
|
601
|
+
"""
|
602
|
+
The Apigee Organization associated with the Apigee API product,
|
603
|
+
in the format `organizations/{{org_name}}`.
|
604
|
+
"""
|
605
|
+
return pulumi.get(self, "org_id")
|
606
|
+
|
607
|
+
@org_id.setter
|
608
|
+
def org_id(self, value: Optional[pulumi.Input[_builtins.str]]):
|
609
|
+
pulumi.set(self, "org_id", value)
|
610
|
+
|
611
|
+
@_builtins.property
|
612
|
+
@pulumi.getter
|
613
|
+
def proxies(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
|
614
|
+
"""
|
615
|
+
Comma-separated list of API proxy names to which this API product is bound. By specifying API proxies, you can associate resources in the API product with specific API proxies, preventing developers from accessing those resources through other API proxies.
|
616
|
+
Apigee rejects requests to API proxies that are not listed.
|
617
|
+
"""
|
618
|
+
return pulumi.get(self, "proxies")
|
619
|
+
|
620
|
+
@proxies.setter
|
621
|
+
def proxies(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
|
622
|
+
pulumi.set(self, "proxies", value)
|
623
|
+
|
624
|
+
@_builtins.property
|
625
|
+
@pulumi.getter
|
626
|
+
def quota(self) -> Optional[pulumi.Input[_builtins.str]]:
|
627
|
+
"""
|
628
|
+
Number of request messages permitted per app by this API product for the specified quotaInterval and quotaTimeUnit.
|
629
|
+
For example, a quota of 50, for a quotaInterval of 12 and a quotaTimeUnit of hours means 50 requests are allowed every 12 hours.
|
630
|
+
"""
|
631
|
+
return pulumi.get(self, "quota")
|
632
|
+
|
633
|
+
@quota.setter
|
634
|
+
def quota(self, value: Optional[pulumi.Input[_builtins.str]]):
|
635
|
+
pulumi.set(self, "quota", value)
|
636
|
+
|
637
|
+
@_builtins.property
|
638
|
+
@pulumi.getter(name="quotaCounterScope")
|
639
|
+
def quota_counter_scope(self) -> Optional[pulumi.Input[_builtins.str]]:
|
640
|
+
"""
|
641
|
+
Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself.
|
642
|
+
Possible values are: `QUOTA_COUNTER_SCOPE_UNSPECIFIED`, `PROXY`, `OPERATION`.
|
643
|
+
"""
|
644
|
+
return pulumi.get(self, "quota_counter_scope")
|
645
|
+
|
646
|
+
@quota_counter_scope.setter
|
647
|
+
def quota_counter_scope(self, value: Optional[pulumi.Input[_builtins.str]]):
|
648
|
+
pulumi.set(self, "quota_counter_scope", value)
|
649
|
+
|
650
|
+
@_builtins.property
|
651
|
+
@pulumi.getter(name="quotaInterval")
|
652
|
+
def quota_interval(self) -> Optional[pulumi.Input[_builtins.str]]:
|
653
|
+
"""
|
654
|
+
Time interval over which the number of request messages is calculated.
|
655
|
+
"""
|
656
|
+
return pulumi.get(self, "quota_interval")
|
657
|
+
|
658
|
+
@quota_interval.setter
|
659
|
+
def quota_interval(self, value: Optional[pulumi.Input[_builtins.str]]):
|
660
|
+
pulumi.set(self, "quota_interval", value)
|
661
|
+
|
662
|
+
@_builtins.property
|
663
|
+
@pulumi.getter(name="quotaTimeUnit")
|
664
|
+
def quota_time_unit(self) -> Optional[pulumi.Input[_builtins.str]]:
|
665
|
+
"""
|
666
|
+
Time unit defined for the quotaInterval. Valid values include second, minute, hour, day, month or year.
|
667
|
+
"""
|
668
|
+
return pulumi.get(self, "quota_time_unit")
|
669
|
+
|
670
|
+
@quota_time_unit.setter
|
671
|
+
def quota_time_unit(self, value: Optional[pulumi.Input[_builtins.str]]):
|
672
|
+
pulumi.set(self, "quota_time_unit", value)
|
673
|
+
|
674
|
+
@_builtins.property
|
675
|
+
@pulumi.getter
|
676
|
+
def scopes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
|
677
|
+
"""
|
678
|
+
Comma-separated list of OAuth scopes that are validated at runtime. Apigee validates that the scopes in any access token presented match the scopes defined in the OAuth policy associated with the API product.
|
679
|
+
"""
|
680
|
+
return pulumi.get(self, "scopes")
|
681
|
+
|
682
|
+
@scopes.setter
|
683
|
+
def scopes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
|
684
|
+
pulumi.set(self, "scopes", value)
|
685
|
+
|
686
|
+
@_builtins.property
|
687
|
+
@pulumi.getter
|
688
|
+
def space(self) -> Optional[pulumi.Input[_builtins.str]]:
|
689
|
+
"""
|
690
|
+
Optional. The resource ID of the parent Space. If not set, the parent resource will be the Organization.
|
691
|
+
"""
|
692
|
+
return pulumi.get(self, "space")
|
693
|
+
|
694
|
+
@space.setter
|
695
|
+
def space(self, value: Optional[pulumi.Input[_builtins.str]]):
|
696
|
+
pulumi.set(self, "space", value)
|
697
|
+
|
698
|
+
|
699
|
+
@pulumi.type_token("gcp:apigee/apiProduct:ApiProduct")
|
700
|
+
class ApiProduct(pulumi.CustomResource):
|
701
|
+
@overload
|
702
|
+
def __init__(__self__,
|
703
|
+
resource_name: str,
|
704
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
705
|
+
api_resources: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
706
|
+
approval_type: Optional[pulumi.Input[_builtins.str]] = None,
|
707
|
+
attributes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ApiProductAttributeArgs', 'ApiProductAttributeArgsDict']]]]] = None,
|
708
|
+
description: Optional[pulumi.Input[_builtins.str]] = None,
|
709
|
+
display_name: Optional[pulumi.Input[_builtins.str]] = None,
|
710
|
+
environments: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
711
|
+
graphql_operation_group: Optional[pulumi.Input[Union['ApiProductGraphqlOperationGroupArgs', 'ApiProductGraphqlOperationGroupArgsDict']]] = None,
|
712
|
+
grpc_operation_group: Optional[pulumi.Input[Union['ApiProductGrpcOperationGroupArgs', 'ApiProductGrpcOperationGroupArgsDict']]] = None,
|
713
|
+
name: Optional[pulumi.Input[_builtins.str]] = None,
|
714
|
+
operation_group: Optional[pulumi.Input[Union['ApiProductOperationGroupArgs', 'ApiProductOperationGroupArgsDict']]] = None,
|
715
|
+
org_id: Optional[pulumi.Input[_builtins.str]] = None,
|
716
|
+
proxies: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
717
|
+
quota: Optional[pulumi.Input[_builtins.str]] = None,
|
718
|
+
quota_counter_scope: Optional[pulumi.Input[_builtins.str]] = None,
|
719
|
+
quota_interval: Optional[pulumi.Input[_builtins.str]] = None,
|
720
|
+
quota_time_unit: Optional[pulumi.Input[_builtins.str]] = None,
|
721
|
+
scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
722
|
+
space: Optional[pulumi.Input[_builtins.str]] = None,
|
723
|
+
__props__=None):
|
724
|
+
"""
|
725
|
+
An `ApiProduct` in Apigee.
|
726
|
+
|
727
|
+
To get more information about ApiProduct, see:
|
728
|
+
|
729
|
+
* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.apiproducts#ApiProduct)
|
730
|
+
* How-to Guides
|
731
|
+
* [Creating an API product](https://cloud.google.com/apigee/docs/api-platform/publish/what-api-product)
|
732
|
+
|
733
|
+
## Example Usage
|
734
|
+
|
735
|
+
### Apigee Api Product Basic
|
736
|
+
|
737
|
+
```python
|
738
|
+
import pulumi
|
739
|
+
import pulumi_gcp as gcp
|
740
|
+
|
741
|
+
current = gcp.organizations.get_client_config()
|
742
|
+
apigee_network = gcp.compute.Network("apigee_network", name="apigee-network")
|
743
|
+
apigee_range = gcp.compute.GlobalAddress("apigee_range",
|
744
|
+
name="apigee-range",
|
745
|
+
purpose="VPC_PEERING",
|
746
|
+
address_type="INTERNAL",
|
747
|
+
prefix_length=16,
|
748
|
+
network=apigee_network.id)
|
749
|
+
apigee_vpc_connection = gcp.servicenetworking.Connection("apigee_vpc_connection",
|
750
|
+
network=apigee_network.id,
|
751
|
+
service="servicenetworking.googleapis.com",
|
752
|
+
reserved_peering_ranges=[apigee_range.name])
|
753
|
+
apigee_org = gcp.apigee.Organization("apigee_org",
|
754
|
+
analytics_region="us-central1",
|
755
|
+
project_id=current.project,
|
756
|
+
authorized_network=apigee_network.id,
|
757
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))
|
758
|
+
apigee_instance = gcp.apigee.Instance("apigee_instance",
|
759
|
+
name="my-instance",
|
760
|
+
location="us-central1",
|
761
|
+
org_id=apigee_org.id,
|
762
|
+
peering_cidr_range="SLASH_22")
|
763
|
+
basic_api_product = gcp.apigee.ApiProduct("basic_api_product",
|
764
|
+
org_id=apigee_org.id,
|
765
|
+
name="my-product",
|
766
|
+
display_name="My Basic API Product",
|
767
|
+
approval_type="auto",
|
768
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_instance]))
|
769
|
+
```
|
770
|
+
### Apigee Api Product With Legacy Operation
|
771
|
+
|
772
|
+
```python
|
773
|
+
import pulumi
|
774
|
+
import pulumi_gcp as gcp
|
775
|
+
|
776
|
+
current = gcp.organizations.get_client_config()
|
777
|
+
apigee_network = gcp.compute.Network("apigee_network", name="apigee-network")
|
778
|
+
apigee_range = gcp.compute.GlobalAddress("apigee_range",
|
779
|
+
name="apigee-range",
|
780
|
+
purpose="VPC_PEERING",
|
781
|
+
address_type="INTERNAL",
|
782
|
+
prefix_length=16,
|
783
|
+
network=apigee_network.id)
|
784
|
+
apigee_vpc_connection = gcp.servicenetworking.Connection("apigee_vpc_connection",
|
785
|
+
network=apigee_network.id,
|
786
|
+
service="servicenetworking.googleapis.com",
|
787
|
+
reserved_peering_ranges=[apigee_range.name])
|
788
|
+
apigee_org = gcp.apigee.Organization("apigee_org",
|
789
|
+
analytics_region="us-central1",
|
790
|
+
project_id=current.project,
|
791
|
+
authorized_network=apigee_network.id,
|
792
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))
|
793
|
+
apigee_instance = gcp.apigee.Instance("apigee_instance",
|
794
|
+
name="my-instance",
|
795
|
+
location="us-central1",
|
796
|
+
org_id=apigee_org.id,
|
797
|
+
peering_cidr_range="SLASH_22")
|
798
|
+
full_api_product = gcp.apigee.ApiProduct("full_api_product",
|
799
|
+
org_id=apigee_org.id,
|
800
|
+
name="my-product",
|
801
|
+
display_name="My full API Product",
|
802
|
+
approval_type="auto",
|
803
|
+
description="This is a sample API Product created with Terraform.",
|
804
|
+
attributes=[{
|
805
|
+
"name": "access",
|
806
|
+
"value": "private",
|
807
|
+
}],
|
808
|
+
environments=[
|
809
|
+
"dev",
|
810
|
+
"hom",
|
811
|
+
],
|
812
|
+
proxies=["hello-world"],
|
813
|
+
api_resources=[
|
814
|
+
"/",
|
815
|
+
"/weather/**",
|
816
|
+
],
|
817
|
+
scopes=[
|
818
|
+
"read:weather",
|
819
|
+
"write:reports",
|
820
|
+
],
|
821
|
+
quota="10000",
|
822
|
+
quota_interval="1",
|
823
|
+
quota_time_unit="day",
|
824
|
+
quota_counter_scope="PROXY",
|
825
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_instance]))
|
826
|
+
```
|
827
|
+
### Apigee Api Product With Attributes
|
828
|
+
|
829
|
+
```python
|
830
|
+
import pulumi
|
831
|
+
import pulumi_gcp as gcp
|
832
|
+
|
833
|
+
current = gcp.organizations.get_client_config()
|
834
|
+
apigee_network = gcp.compute.Network("apigee_network", name="apigee-network")
|
835
|
+
apigee_range = gcp.compute.GlobalAddress("apigee_range",
|
836
|
+
name="apigee-range",
|
837
|
+
purpose="VPC_PEERING",
|
838
|
+
address_type="INTERNAL",
|
839
|
+
prefix_length=16,
|
840
|
+
network=apigee_network.id)
|
841
|
+
apigee_vpc_connection = gcp.servicenetworking.Connection("apigee_vpc_connection",
|
842
|
+
network=apigee_network.id,
|
843
|
+
service="servicenetworking.googleapis.com",
|
844
|
+
reserved_peering_ranges=[apigee_range.name])
|
845
|
+
apigee_org = gcp.apigee.Organization("apigee_org",
|
846
|
+
analytics_region="us-central1",
|
847
|
+
project_id=current.project,
|
848
|
+
authorized_network=apigee_network.id,
|
849
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))
|
850
|
+
apigee_instance = gcp.apigee.Instance("apigee_instance",
|
851
|
+
name="my-instance",
|
852
|
+
location="us-central1",
|
853
|
+
org_id=apigee_org.id,
|
854
|
+
peering_cidr_range="SLASH_22")
|
855
|
+
full_api_product = gcp.apigee.ApiProduct("full_api_product",
|
856
|
+
org_id=apigee_org.id,
|
857
|
+
name="my-product",
|
858
|
+
display_name="My full API Product",
|
859
|
+
approval_type="auto",
|
860
|
+
description="This is a sample API Product created with Terraform.",
|
861
|
+
quota="10000",
|
862
|
+
quota_interval="1",
|
863
|
+
quota_time_unit="day",
|
864
|
+
quota_counter_scope="PROXY",
|
865
|
+
environments=[
|
866
|
+
"dev",
|
867
|
+
"hom",
|
868
|
+
],
|
869
|
+
scopes=[
|
870
|
+
"read:weather",
|
871
|
+
"write:reports",
|
872
|
+
],
|
873
|
+
attributes=[
|
874
|
+
{
|
875
|
+
"name": "access",
|
876
|
+
"value": "private",
|
877
|
+
},
|
878
|
+
{
|
879
|
+
"name": "custom",
|
880
|
+
"value": "value",
|
881
|
+
},
|
882
|
+
],
|
883
|
+
operation_group={
|
884
|
+
"operation_config_type": "proxy",
|
885
|
+
"operation_configs": [
|
886
|
+
{
|
887
|
+
"api_source": "anoter-proxy",
|
888
|
+
"operations": [{
|
889
|
+
"resource": "/",
|
890
|
+
"methods": [
|
891
|
+
"POST",
|
892
|
+
"GET",
|
893
|
+
],
|
894
|
+
}],
|
895
|
+
"quota": {
|
896
|
+
"limit": "1000",
|
897
|
+
"interval": "5",
|
898
|
+
"time_unit": "minute",
|
899
|
+
},
|
900
|
+
"attributes": [{
|
901
|
+
"name": "custom",
|
902
|
+
"value": "value",
|
903
|
+
}],
|
904
|
+
},
|
905
|
+
{
|
906
|
+
"api_source": "hello-world",
|
907
|
+
"operations": [{
|
908
|
+
"resource": "/test",
|
909
|
+
"methods": [
|
910
|
+
"POST",
|
911
|
+
"GET",
|
912
|
+
],
|
913
|
+
}],
|
914
|
+
"quota": {
|
915
|
+
"limit": "10",
|
916
|
+
"interval": "30",
|
917
|
+
"time_unit": "second",
|
918
|
+
},
|
919
|
+
"attributes": [{
|
920
|
+
"name": "custom",
|
921
|
+
"value": "value",
|
922
|
+
}],
|
923
|
+
},
|
924
|
+
],
|
925
|
+
},
|
926
|
+
graphql_operation_group={
|
927
|
+
"operation_config_type": "proxy",
|
928
|
+
"operation_configs": [
|
929
|
+
{
|
930
|
+
"api_source": "hello-world",
|
931
|
+
"quota": {
|
932
|
+
"limit": "30",
|
933
|
+
"interval": "50",
|
934
|
+
"time_unit": "second",
|
935
|
+
},
|
936
|
+
"operations": [{
|
937
|
+
"operation_types": ["QUERY"],
|
938
|
+
"operation": "test",
|
939
|
+
}],
|
940
|
+
"attributes": [{
|
941
|
+
"name": "custom",
|
942
|
+
"value": "value",
|
943
|
+
}],
|
944
|
+
},
|
945
|
+
{
|
946
|
+
"api_source": "another-proxy",
|
947
|
+
"quota": {
|
948
|
+
"limit": "50000",
|
949
|
+
"interval": "12",
|
950
|
+
"time_unit": "hour",
|
951
|
+
},
|
952
|
+
"operations": [{
|
953
|
+
"operation_types": ["MUTATION"],
|
954
|
+
"operation": "test",
|
955
|
+
}],
|
956
|
+
"attributes": [{
|
957
|
+
"name": "custom",
|
958
|
+
"value": "value",
|
959
|
+
}],
|
960
|
+
},
|
961
|
+
],
|
962
|
+
},
|
963
|
+
grpc_operation_group={
|
964
|
+
"operation_configs": [
|
965
|
+
{
|
966
|
+
"api_source": "another-proxy",
|
967
|
+
"service": "grpc another test",
|
968
|
+
"methods": [
|
969
|
+
"method3",
|
970
|
+
"method4",
|
971
|
+
],
|
972
|
+
"quota": {
|
973
|
+
"limit": "1000000",
|
974
|
+
"interval": "1",
|
975
|
+
"time_unit": "month",
|
976
|
+
},
|
977
|
+
"attributes": [{
|
978
|
+
"name": "graph",
|
979
|
+
"value": "value",
|
980
|
+
}],
|
981
|
+
},
|
982
|
+
{
|
983
|
+
"api_source": "hello-world",
|
984
|
+
"service": "grpc test",
|
985
|
+
"methods": [
|
986
|
+
"method1",
|
987
|
+
"method2",
|
988
|
+
],
|
989
|
+
"quota": {
|
990
|
+
"limit": "5",
|
991
|
+
"interval": "1",
|
992
|
+
"time_unit": "second",
|
993
|
+
},
|
994
|
+
"attributes": [{
|
995
|
+
"name": "graph",
|
996
|
+
"value": "value",
|
997
|
+
}],
|
998
|
+
},
|
999
|
+
],
|
1000
|
+
},
|
1001
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_instance]))
|
1002
|
+
```
|
1003
|
+
|
1004
|
+
## Import
|
1005
|
+
|
1006
|
+
ApiProduct can be imported using any of these accepted formats:
|
1007
|
+
|
1008
|
+
* `{{org_id}}/apiproducts/{{name}}`
|
1009
|
+
|
1010
|
+
* `{{org_id}}/{{name}}`
|
1011
|
+
|
1012
|
+
When using the `pulumi import` command, ApiProduct can be imported using one of the formats above. For example:
|
1013
|
+
|
1014
|
+
```sh
|
1015
|
+
$ pulumi import gcp:apigee/apiProduct:ApiProduct default {{org_id}}/apiproducts/{{name}}
|
1016
|
+
```
|
1017
|
+
|
1018
|
+
```sh
|
1019
|
+
$ pulumi import gcp:apigee/apiProduct:ApiProduct default {{org_id}}/{{name}}
|
1020
|
+
```
|
1021
|
+
|
1022
|
+
:param str resource_name: The name of the resource.
|
1023
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
1024
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] api_resources: Comma-separated list of API resources to be bundled in the API product. By default, the resource paths are mapped from the proxy.pathsuffix variable.
|
1025
|
+
The proxy path suffix is defined as the URI fragment following the ProxyEndpoint base path. For example, if the apiResources element is defined to be /forecastrss and the base path defined for the API proxy is /weather, then only requests to /weather/forecastrss are permitted by the API product.
|
1026
|
+
:param pulumi.Input[_builtins.str] approval_type: Flag that specifies how API keys are approved to access the APIs defined by the API product.
|
1027
|
+
Valid values are `auto` or `manual`.
|
1028
|
+
Possible values are: `auto`, `manual`.
|
1029
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['ApiProductAttributeArgs', 'ApiProductAttributeArgsDict']]]] attributes: Array of attributes that may be used to extend the default API product profile with customer-specific metadata. You can specify a maximum of 18 attributes.
|
1030
|
+
Use this property to specify the access level of the API product as either public, private, or internal.
|
1031
|
+
Structure is documented below.
|
1032
|
+
:param pulumi.Input[_builtins.str] description: Description of the API product. Include key information about the API product that is not captured by other fields.
|
1033
|
+
:param pulumi.Input[_builtins.str] display_name: Name displayed in the UI or developer portal to developers registering for API access.
|
1034
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] environments: Comma-separated list of environment names to which the API product is bound. Requests to environments that are not listed are rejected.
|
1035
|
+
By specifying one or more environments, you can bind the resources listed in the API product to a specific environment, preventing developers from accessing those resources through API proxies deployed in another environment.
|
1036
|
+
:param pulumi.Input[Union['ApiProductGraphqlOperationGroupArgs', 'ApiProductGraphqlOperationGroupArgsDict']] graphql_operation_group: Configuration used to group Apigee proxies or remote services with graphQL operation name, graphQL operation type and quotas. This grouping allows us to precisely set quota for a particular combination of graphQL name and operation type for a particular proxy request. If graphQL name is not set, this would imply quota will be applied on all graphQL requests matching the operation type.
|
1037
|
+
Structure is documented below.
|
1038
|
+
:param pulumi.Input[Union['ApiProductGrpcOperationGroupArgs', 'ApiProductGrpcOperationGroupArgsDict']] grpc_operation_group: Optional. Configuration used to group Apigee proxies with gRPC services and method names. This grouping allows us to set quota for a particular proxy with the gRPC service name and method. If a method name is not set, this implies quota and authorization are applied to all gRPC methods implemented by that proxy for that particular gRPC service.
|
1039
|
+
Structure is documented below.
|
1040
|
+
:param pulumi.Input[_builtins.str] name: Internal name of the API product.
|
1041
|
+
:param pulumi.Input[Union['ApiProductOperationGroupArgs', 'ApiProductOperationGroupArgsDict']] operation_group: Configuration used to group Apigee proxies or remote services with resources, method types, and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources and how many calls can be made (using the quota setting).
|
1042
|
+
Note: The apiResources setting cannot be specified for both the API product and operation group; otherwise the call will fail.
|
1043
|
+
Structure is documented below.
|
1044
|
+
:param pulumi.Input[_builtins.str] org_id: The Apigee Organization associated with the Apigee API product,
|
1045
|
+
in the format `organizations/{{org_name}}`.
|
1046
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] proxies: Comma-separated list of API proxy names to which this API product is bound. By specifying API proxies, you can associate resources in the API product with specific API proxies, preventing developers from accessing those resources through other API proxies.
|
1047
|
+
Apigee rejects requests to API proxies that are not listed.
|
1048
|
+
:param pulumi.Input[_builtins.str] quota: Number of request messages permitted per app by this API product for the specified quotaInterval and quotaTimeUnit.
|
1049
|
+
For example, a quota of 50, for a quotaInterval of 12 and a quotaTimeUnit of hours means 50 requests are allowed every 12 hours.
|
1050
|
+
:param pulumi.Input[_builtins.str] quota_counter_scope: Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself.
|
1051
|
+
Possible values are: `QUOTA_COUNTER_SCOPE_UNSPECIFIED`, `PROXY`, `OPERATION`.
|
1052
|
+
:param pulumi.Input[_builtins.str] quota_interval: Time interval over which the number of request messages is calculated.
|
1053
|
+
:param pulumi.Input[_builtins.str] quota_time_unit: Time unit defined for the quotaInterval. Valid values include second, minute, hour, day, month or year.
|
1054
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] scopes: Comma-separated list of OAuth scopes that are validated at runtime. Apigee validates that the scopes in any access token presented match the scopes defined in the OAuth policy associated with the API product.
|
1055
|
+
:param pulumi.Input[_builtins.str] space: Optional. The resource ID of the parent Space. If not set, the parent resource will be the Organization.
|
1056
|
+
"""
|
1057
|
+
...
|
1058
|
+
@overload
|
1059
|
+
def __init__(__self__,
|
1060
|
+
resource_name: str,
|
1061
|
+
args: ApiProductArgs,
|
1062
|
+
opts: Optional[pulumi.ResourceOptions] = None):
|
1063
|
+
"""
|
1064
|
+
An `ApiProduct` in Apigee.
|
1065
|
+
|
1066
|
+
To get more information about ApiProduct, see:
|
1067
|
+
|
1068
|
+
* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.apiproducts#ApiProduct)
|
1069
|
+
* How-to Guides
|
1070
|
+
* [Creating an API product](https://cloud.google.com/apigee/docs/api-platform/publish/what-api-product)
|
1071
|
+
|
1072
|
+
## Example Usage
|
1073
|
+
|
1074
|
+
### Apigee Api Product Basic
|
1075
|
+
|
1076
|
+
```python
|
1077
|
+
import pulumi
|
1078
|
+
import pulumi_gcp as gcp
|
1079
|
+
|
1080
|
+
current = gcp.organizations.get_client_config()
|
1081
|
+
apigee_network = gcp.compute.Network("apigee_network", name="apigee-network")
|
1082
|
+
apigee_range = gcp.compute.GlobalAddress("apigee_range",
|
1083
|
+
name="apigee-range",
|
1084
|
+
purpose="VPC_PEERING",
|
1085
|
+
address_type="INTERNAL",
|
1086
|
+
prefix_length=16,
|
1087
|
+
network=apigee_network.id)
|
1088
|
+
apigee_vpc_connection = gcp.servicenetworking.Connection("apigee_vpc_connection",
|
1089
|
+
network=apigee_network.id,
|
1090
|
+
service="servicenetworking.googleapis.com",
|
1091
|
+
reserved_peering_ranges=[apigee_range.name])
|
1092
|
+
apigee_org = gcp.apigee.Organization("apigee_org",
|
1093
|
+
analytics_region="us-central1",
|
1094
|
+
project_id=current.project,
|
1095
|
+
authorized_network=apigee_network.id,
|
1096
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))
|
1097
|
+
apigee_instance = gcp.apigee.Instance("apigee_instance",
|
1098
|
+
name="my-instance",
|
1099
|
+
location="us-central1",
|
1100
|
+
org_id=apigee_org.id,
|
1101
|
+
peering_cidr_range="SLASH_22")
|
1102
|
+
basic_api_product = gcp.apigee.ApiProduct("basic_api_product",
|
1103
|
+
org_id=apigee_org.id,
|
1104
|
+
name="my-product",
|
1105
|
+
display_name="My Basic API Product",
|
1106
|
+
approval_type="auto",
|
1107
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_instance]))
|
1108
|
+
```
|
1109
|
+
### Apigee Api Product With Legacy Operation
|
1110
|
+
|
1111
|
+
```python
|
1112
|
+
import pulumi
|
1113
|
+
import pulumi_gcp as gcp
|
1114
|
+
|
1115
|
+
current = gcp.organizations.get_client_config()
|
1116
|
+
apigee_network = gcp.compute.Network("apigee_network", name="apigee-network")
|
1117
|
+
apigee_range = gcp.compute.GlobalAddress("apigee_range",
|
1118
|
+
name="apigee-range",
|
1119
|
+
purpose="VPC_PEERING",
|
1120
|
+
address_type="INTERNAL",
|
1121
|
+
prefix_length=16,
|
1122
|
+
network=apigee_network.id)
|
1123
|
+
apigee_vpc_connection = gcp.servicenetworking.Connection("apigee_vpc_connection",
|
1124
|
+
network=apigee_network.id,
|
1125
|
+
service="servicenetworking.googleapis.com",
|
1126
|
+
reserved_peering_ranges=[apigee_range.name])
|
1127
|
+
apigee_org = gcp.apigee.Organization("apigee_org",
|
1128
|
+
analytics_region="us-central1",
|
1129
|
+
project_id=current.project,
|
1130
|
+
authorized_network=apigee_network.id,
|
1131
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))
|
1132
|
+
apigee_instance = gcp.apigee.Instance("apigee_instance",
|
1133
|
+
name="my-instance",
|
1134
|
+
location="us-central1",
|
1135
|
+
org_id=apigee_org.id,
|
1136
|
+
peering_cidr_range="SLASH_22")
|
1137
|
+
full_api_product = gcp.apigee.ApiProduct("full_api_product",
|
1138
|
+
org_id=apigee_org.id,
|
1139
|
+
name="my-product",
|
1140
|
+
display_name="My full API Product",
|
1141
|
+
approval_type="auto",
|
1142
|
+
description="This is a sample API Product created with Terraform.",
|
1143
|
+
attributes=[{
|
1144
|
+
"name": "access",
|
1145
|
+
"value": "private",
|
1146
|
+
}],
|
1147
|
+
environments=[
|
1148
|
+
"dev",
|
1149
|
+
"hom",
|
1150
|
+
],
|
1151
|
+
proxies=["hello-world"],
|
1152
|
+
api_resources=[
|
1153
|
+
"/",
|
1154
|
+
"/weather/**",
|
1155
|
+
],
|
1156
|
+
scopes=[
|
1157
|
+
"read:weather",
|
1158
|
+
"write:reports",
|
1159
|
+
],
|
1160
|
+
quota="10000",
|
1161
|
+
quota_interval="1",
|
1162
|
+
quota_time_unit="day",
|
1163
|
+
quota_counter_scope="PROXY",
|
1164
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_instance]))
|
1165
|
+
```
|
1166
|
+
### Apigee Api Product With Attributes
|
1167
|
+
|
1168
|
+
```python
|
1169
|
+
import pulumi
|
1170
|
+
import pulumi_gcp as gcp
|
1171
|
+
|
1172
|
+
current = gcp.organizations.get_client_config()
|
1173
|
+
apigee_network = gcp.compute.Network("apigee_network", name="apigee-network")
|
1174
|
+
apigee_range = gcp.compute.GlobalAddress("apigee_range",
|
1175
|
+
name="apigee-range",
|
1176
|
+
purpose="VPC_PEERING",
|
1177
|
+
address_type="INTERNAL",
|
1178
|
+
prefix_length=16,
|
1179
|
+
network=apigee_network.id)
|
1180
|
+
apigee_vpc_connection = gcp.servicenetworking.Connection("apigee_vpc_connection",
|
1181
|
+
network=apigee_network.id,
|
1182
|
+
service="servicenetworking.googleapis.com",
|
1183
|
+
reserved_peering_ranges=[apigee_range.name])
|
1184
|
+
apigee_org = gcp.apigee.Organization("apigee_org",
|
1185
|
+
analytics_region="us-central1",
|
1186
|
+
project_id=current.project,
|
1187
|
+
authorized_network=apigee_network.id,
|
1188
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))
|
1189
|
+
apigee_instance = gcp.apigee.Instance("apigee_instance",
|
1190
|
+
name="my-instance",
|
1191
|
+
location="us-central1",
|
1192
|
+
org_id=apigee_org.id,
|
1193
|
+
peering_cidr_range="SLASH_22")
|
1194
|
+
full_api_product = gcp.apigee.ApiProduct("full_api_product",
|
1195
|
+
org_id=apigee_org.id,
|
1196
|
+
name="my-product",
|
1197
|
+
display_name="My full API Product",
|
1198
|
+
approval_type="auto",
|
1199
|
+
description="This is a sample API Product created with Terraform.",
|
1200
|
+
quota="10000",
|
1201
|
+
quota_interval="1",
|
1202
|
+
quota_time_unit="day",
|
1203
|
+
quota_counter_scope="PROXY",
|
1204
|
+
environments=[
|
1205
|
+
"dev",
|
1206
|
+
"hom",
|
1207
|
+
],
|
1208
|
+
scopes=[
|
1209
|
+
"read:weather",
|
1210
|
+
"write:reports",
|
1211
|
+
],
|
1212
|
+
attributes=[
|
1213
|
+
{
|
1214
|
+
"name": "access",
|
1215
|
+
"value": "private",
|
1216
|
+
},
|
1217
|
+
{
|
1218
|
+
"name": "custom",
|
1219
|
+
"value": "value",
|
1220
|
+
},
|
1221
|
+
],
|
1222
|
+
operation_group={
|
1223
|
+
"operation_config_type": "proxy",
|
1224
|
+
"operation_configs": [
|
1225
|
+
{
|
1226
|
+
"api_source": "anoter-proxy",
|
1227
|
+
"operations": [{
|
1228
|
+
"resource": "/",
|
1229
|
+
"methods": [
|
1230
|
+
"POST",
|
1231
|
+
"GET",
|
1232
|
+
],
|
1233
|
+
}],
|
1234
|
+
"quota": {
|
1235
|
+
"limit": "1000",
|
1236
|
+
"interval": "5",
|
1237
|
+
"time_unit": "minute",
|
1238
|
+
},
|
1239
|
+
"attributes": [{
|
1240
|
+
"name": "custom",
|
1241
|
+
"value": "value",
|
1242
|
+
}],
|
1243
|
+
},
|
1244
|
+
{
|
1245
|
+
"api_source": "hello-world",
|
1246
|
+
"operations": [{
|
1247
|
+
"resource": "/test",
|
1248
|
+
"methods": [
|
1249
|
+
"POST",
|
1250
|
+
"GET",
|
1251
|
+
],
|
1252
|
+
}],
|
1253
|
+
"quota": {
|
1254
|
+
"limit": "10",
|
1255
|
+
"interval": "30",
|
1256
|
+
"time_unit": "second",
|
1257
|
+
},
|
1258
|
+
"attributes": [{
|
1259
|
+
"name": "custom",
|
1260
|
+
"value": "value",
|
1261
|
+
}],
|
1262
|
+
},
|
1263
|
+
],
|
1264
|
+
},
|
1265
|
+
graphql_operation_group={
|
1266
|
+
"operation_config_type": "proxy",
|
1267
|
+
"operation_configs": [
|
1268
|
+
{
|
1269
|
+
"api_source": "hello-world",
|
1270
|
+
"quota": {
|
1271
|
+
"limit": "30",
|
1272
|
+
"interval": "50",
|
1273
|
+
"time_unit": "second",
|
1274
|
+
},
|
1275
|
+
"operations": [{
|
1276
|
+
"operation_types": ["QUERY"],
|
1277
|
+
"operation": "test",
|
1278
|
+
}],
|
1279
|
+
"attributes": [{
|
1280
|
+
"name": "custom",
|
1281
|
+
"value": "value",
|
1282
|
+
}],
|
1283
|
+
},
|
1284
|
+
{
|
1285
|
+
"api_source": "another-proxy",
|
1286
|
+
"quota": {
|
1287
|
+
"limit": "50000",
|
1288
|
+
"interval": "12",
|
1289
|
+
"time_unit": "hour",
|
1290
|
+
},
|
1291
|
+
"operations": [{
|
1292
|
+
"operation_types": ["MUTATION"],
|
1293
|
+
"operation": "test",
|
1294
|
+
}],
|
1295
|
+
"attributes": [{
|
1296
|
+
"name": "custom",
|
1297
|
+
"value": "value",
|
1298
|
+
}],
|
1299
|
+
},
|
1300
|
+
],
|
1301
|
+
},
|
1302
|
+
grpc_operation_group={
|
1303
|
+
"operation_configs": [
|
1304
|
+
{
|
1305
|
+
"api_source": "another-proxy",
|
1306
|
+
"service": "grpc another test",
|
1307
|
+
"methods": [
|
1308
|
+
"method3",
|
1309
|
+
"method4",
|
1310
|
+
],
|
1311
|
+
"quota": {
|
1312
|
+
"limit": "1000000",
|
1313
|
+
"interval": "1",
|
1314
|
+
"time_unit": "month",
|
1315
|
+
},
|
1316
|
+
"attributes": [{
|
1317
|
+
"name": "graph",
|
1318
|
+
"value": "value",
|
1319
|
+
}],
|
1320
|
+
},
|
1321
|
+
{
|
1322
|
+
"api_source": "hello-world",
|
1323
|
+
"service": "grpc test",
|
1324
|
+
"methods": [
|
1325
|
+
"method1",
|
1326
|
+
"method2",
|
1327
|
+
],
|
1328
|
+
"quota": {
|
1329
|
+
"limit": "5",
|
1330
|
+
"interval": "1",
|
1331
|
+
"time_unit": "second",
|
1332
|
+
},
|
1333
|
+
"attributes": [{
|
1334
|
+
"name": "graph",
|
1335
|
+
"value": "value",
|
1336
|
+
}],
|
1337
|
+
},
|
1338
|
+
],
|
1339
|
+
},
|
1340
|
+
opts = pulumi.ResourceOptions(depends_on=[apigee_instance]))
|
1341
|
+
```
|
1342
|
+
|
1343
|
+
## Import
|
1344
|
+
|
1345
|
+
ApiProduct can be imported using any of these accepted formats:
|
1346
|
+
|
1347
|
+
* `{{org_id}}/apiproducts/{{name}}`
|
1348
|
+
|
1349
|
+
* `{{org_id}}/{{name}}`
|
1350
|
+
|
1351
|
+
When using the `pulumi import` command, ApiProduct can be imported using one of the formats above. For example:
|
1352
|
+
|
1353
|
+
```sh
|
1354
|
+
$ pulumi import gcp:apigee/apiProduct:ApiProduct default {{org_id}}/apiproducts/{{name}}
|
1355
|
+
```
|
1356
|
+
|
1357
|
+
```sh
|
1358
|
+
$ pulumi import gcp:apigee/apiProduct:ApiProduct default {{org_id}}/{{name}}
|
1359
|
+
```
|
1360
|
+
|
1361
|
+
:param str resource_name: The name of the resource.
|
1362
|
+
:param ApiProductArgs args: The arguments to use to populate this resource's properties.
|
1363
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
1364
|
+
"""
|
1365
|
+
...
|
1366
|
+
def __init__(__self__, resource_name: str, *args, **kwargs):
|
1367
|
+
resource_args, opts = _utilities.get_resource_args_opts(ApiProductArgs, pulumi.ResourceOptions, *args, **kwargs)
|
1368
|
+
if resource_args is not None:
|
1369
|
+
__self__._internal_init(resource_name, opts, **resource_args.__dict__)
|
1370
|
+
else:
|
1371
|
+
__self__._internal_init(resource_name, *args, **kwargs)
|
1372
|
+
|
1373
|
+
def _internal_init(__self__,
|
1374
|
+
resource_name: str,
|
1375
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
1376
|
+
api_resources: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
1377
|
+
approval_type: Optional[pulumi.Input[_builtins.str]] = None,
|
1378
|
+
attributes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ApiProductAttributeArgs', 'ApiProductAttributeArgsDict']]]]] = None,
|
1379
|
+
description: Optional[pulumi.Input[_builtins.str]] = None,
|
1380
|
+
display_name: Optional[pulumi.Input[_builtins.str]] = None,
|
1381
|
+
environments: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
1382
|
+
graphql_operation_group: Optional[pulumi.Input[Union['ApiProductGraphqlOperationGroupArgs', 'ApiProductGraphqlOperationGroupArgsDict']]] = None,
|
1383
|
+
grpc_operation_group: Optional[pulumi.Input[Union['ApiProductGrpcOperationGroupArgs', 'ApiProductGrpcOperationGroupArgsDict']]] = None,
|
1384
|
+
name: Optional[pulumi.Input[_builtins.str]] = None,
|
1385
|
+
operation_group: Optional[pulumi.Input[Union['ApiProductOperationGroupArgs', 'ApiProductOperationGroupArgsDict']]] = None,
|
1386
|
+
org_id: Optional[pulumi.Input[_builtins.str]] = None,
|
1387
|
+
proxies: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
1388
|
+
quota: Optional[pulumi.Input[_builtins.str]] = None,
|
1389
|
+
quota_counter_scope: Optional[pulumi.Input[_builtins.str]] = None,
|
1390
|
+
quota_interval: Optional[pulumi.Input[_builtins.str]] = None,
|
1391
|
+
quota_time_unit: Optional[pulumi.Input[_builtins.str]] = None,
|
1392
|
+
scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
1393
|
+
space: Optional[pulumi.Input[_builtins.str]] = None,
|
1394
|
+
__props__=None):
|
1395
|
+
opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
|
1396
|
+
if not isinstance(opts, pulumi.ResourceOptions):
|
1397
|
+
raise TypeError('Expected resource options to be a ResourceOptions instance')
|
1398
|
+
if opts.id is None:
|
1399
|
+
if __props__ is not None:
|
1400
|
+
raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
|
1401
|
+
__props__ = ApiProductArgs.__new__(ApiProductArgs)
|
1402
|
+
|
1403
|
+
__props__.__dict__["api_resources"] = api_resources
|
1404
|
+
__props__.__dict__["approval_type"] = approval_type
|
1405
|
+
__props__.__dict__["attributes"] = attributes
|
1406
|
+
__props__.__dict__["description"] = description
|
1407
|
+
if display_name is None and not opts.urn:
|
1408
|
+
raise TypeError("Missing required property 'display_name'")
|
1409
|
+
__props__.__dict__["display_name"] = display_name
|
1410
|
+
__props__.__dict__["environments"] = environments
|
1411
|
+
__props__.__dict__["graphql_operation_group"] = graphql_operation_group
|
1412
|
+
__props__.__dict__["grpc_operation_group"] = grpc_operation_group
|
1413
|
+
__props__.__dict__["name"] = name
|
1414
|
+
__props__.__dict__["operation_group"] = operation_group
|
1415
|
+
if org_id is None and not opts.urn:
|
1416
|
+
raise TypeError("Missing required property 'org_id'")
|
1417
|
+
__props__.__dict__["org_id"] = org_id
|
1418
|
+
__props__.__dict__["proxies"] = proxies
|
1419
|
+
__props__.__dict__["quota"] = quota
|
1420
|
+
__props__.__dict__["quota_counter_scope"] = quota_counter_scope
|
1421
|
+
__props__.__dict__["quota_interval"] = quota_interval
|
1422
|
+
__props__.__dict__["quota_time_unit"] = quota_time_unit
|
1423
|
+
__props__.__dict__["scopes"] = scopes
|
1424
|
+
__props__.__dict__["space"] = space
|
1425
|
+
__props__.__dict__["created_at"] = None
|
1426
|
+
__props__.__dict__["last_modified_at"] = None
|
1427
|
+
super(ApiProduct, __self__).__init__(
|
1428
|
+
'gcp:apigee/apiProduct:ApiProduct',
|
1429
|
+
resource_name,
|
1430
|
+
__props__,
|
1431
|
+
opts)
|
1432
|
+
|
1433
|
+
@staticmethod
|
1434
|
+
def get(resource_name: str,
|
1435
|
+
id: pulumi.Input[str],
|
1436
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
1437
|
+
api_resources: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
1438
|
+
approval_type: Optional[pulumi.Input[_builtins.str]] = None,
|
1439
|
+
attributes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ApiProductAttributeArgs', 'ApiProductAttributeArgsDict']]]]] = None,
|
1440
|
+
created_at: Optional[pulumi.Input[_builtins.str]] = None,
|
1441
|
+
description: Optional[pulumi.Input[_builtins.str]] = None,
|
1442
|
+
display_name: Optional[pulumi.Input[_builtins.str]] = None,
|
1443
|
+
environments: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
1444
|
+
graphql_operation_group: Optional[pulumi.Input[Union['ApiProductGraphqlOperationGroupArgs', 'ApiProductGraphqlOperationGroupArgsDict']]] = None,
|
1445
|
+
grpc_operation_group: Optional[pulumi.Input[Union['ApiProductGrpcOperationGroupArgs', 'ApiProductGrpcOperationGroupArgsDict']]] = None,
|
1446
|
+
last_modified_at: Optional[pulumi.Input[_builtins.str]] = None,
|
1447
|
+
name: Optional[pulumi.Input[_builtins.str]] = None,
|
1448
|
+
operation_group: Optional[pulumi.Input[Union['ApiProductOperationGroupArgs', 'ApiProductOperationGroupArgsDict']]] = None,
|
1449
|
+
org_id: Optional[pulumi.Input[_builtins.str]] = None,
|
1450
|
+
proxies: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
1451
|
+
quota: Optional[pulumi.Input[_builtins.str]] = None,
|
1452
|
+
quota_counter_scope: Optional[pulumi.Input[_builtins.str]] = None,
|
1453
|
+
quota_interval: Optional[pulumi.Input[_builtins.str]] = None,
|
1454
|
+
quota_time_unit: Optional[pulumi.Input[_builtins.str]] = None,
|
1455
|
+
scopes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
1456
|
+
space: Optional[pulumi.Input[_builtins.str]] = None) -> 'ApiProduct':
|
1457
|
+
"""
|
1458
|
+
Get an existing ApiProduct resource's state with the given name, id, and optional extra
|
1459
|
+
properties used to qualify the lookup.
|
1460
|
+
|
1461
|
+
:param str resource_name: The unique name of the resulting resource.
|
1462
|
+
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
|
1463
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
1464
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] api_resources: Comma-separated list of API resources to be bundled in the API product. By default, the resource paths are mapped from the proxy.pathsuffix variable.
|
1465
|
+
The proxy path suffix is defined as the URI fragment following the ProxyEndpoint base path. For example, if the apiResources element is defined to be /forecastrss and the base path defined for the API proxy is /weather, then only requests to /weather/forecastrss are permitted by the API product.
|
1466
|
+
:param pulumi.Input[_builtins.str] approval_type: Flag that specifies how API keys are approved to access the APIs defined by the API product.
|
1467
|
+
Valid values are `auto` or `manual`.
|
1468
|
+
Possible values are: `auto`, `manual`.
|
1469
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['ApiProductAttributeArgs', 'ApiProductAttributeArgsDict']]]] attributes: Array of attributes that may be used to extend the default API product profile with customer-specific metadata. You can specify a maximum of 18 attributes.
|
1470
|
+
Use this property to specify the access level of the API product as either public, private, or internal.
|
1471
|
+
Structure is documented below.
|
1472
|
+
:param pulumi.Input[_builtins.str] created_at: Response only. Creation time of this environment as milliseconds since epoch.
|
1473
|
+
:param pulumi.Input[_builtins.str] description: Description of the API product. Include key information about the API product that is not captured by other fields.
|
1474
|
+
:param pulumi.Input[_builtins.str] display_name: Name displayed in the UI or developer portal to developers registering for API access.
|
1475
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] environments: Comma-separated list of environment names to which the API product is bound. Requests to environments that are not listed are rejected.
|
1476
|
+
By specifying one or more environments, you can bind the resources listed in the API product to a specific environment, preventing developers from accessing those resources through API proxies deployed in another environment.
|
1477
|
+
:param pulumi.Input[Union['ApiProductGraphqlOperationGroupArgs', 'ApiProductGraphqlOperationGroupArgsDict']] graphql_operation_group: Configuration used to group Apigee proxies or remote services with graphQL operation name, graphQL operation type and quotas. This grouping allows us to precisely set quota for a particular combination of graphQL name and operation type for a particular proxy request. If graphQL name is not set, this would imply quota will be applied on all graphQL requests matching the operation type.
|
1478
|
+
Structure is documented below.
|
1479
|
+
:param pulumi.Input[Union['ApiProductGrpcOperationGroupArgs', 'ApiProductGrpcOperationGroupArgsDict']] grpc_operation_group: Optional. Configuration used to group Apigee proxies with gRPC services and method names. This grouping allows us to set quota for a particular proxy with the gRPC service name and method. If a method name is not set, this implies quota and authorization are applied to all gRPC methods implemented by that proxy for that particular gRPC service.
|
1480
|
+
Structure is documented below.
|
1481
|
+
:param pulumi.Input[_builtins.str] last_modified_at: Response only. Modified time of this environment as milliseconds since epoch.
|
1482
|
+
:param pulumi.Input[_builtins.str] name: Internal name of the API product.
|
1483
|
+
:param pulumi.Input[Union['ApiProductOperationGroupArgs', 'ApiProductOperationGroupArgsDict']] operation_group: Configuration used to group Apigee proxies or remote services with resources, method types, and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources and how many calls can be made (using the quota setting).
|
1484
|
+
Note: The apiResources setting cannot be specified for both the API product and operation group; otherwise the call will fail.
|
1485
|
+
Structure is documented below.
|
1486
|
+
:param pulumi.Input[_builtins.str] org_id: The Apigee Organization associated with the Apigee API product,
|
1487
|
+
in the format `organizations/{{org_name}}`.
|
1488
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] proxies: Comma-separated list of API proxy names to which this API product is bound. By specifying API proxies, you can associate resources in the API product with specific API proxies, preventing developers from accessing those resources through other API proxies.
|
1489
|
+
Apigee rejects requests to API proxies that are not listed.
|
1490
|
+
:param pulumi.Input[_builtins.str] quota: Number of request messages permitted per app by this API product for the specified quotaInterval and quotaTimeUnit.
|
1491
|
+
For example, a quota of 50, for a quotaInterval of 12 and a quotaTimeUnit of hours means 50 requests are allowed every 12 hours.
|
1492
|
+
:param pulumi.Input[_builtins.str] quota_counter_scope: Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself.
|
1493
|
+
Possible values are: `QUOTA_COUNTER_SCOPE_UNSPECIFIED`, `PROXY`, `OPERATION`.
|
1494
|
+
:param pulumi.Input[_builtins.str] quota_interval: Time interval over which the number of request messages is calculated.
|
1495
|
+
:param pulumi.Input[_builtins.str] quota_time_unit: Time unit defined for the quotaInterval. Valid values include second, minute, hour, day, month or year.
|
1496
|
+
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] scopes: Comma-separated list of OAuth scopes that are validated at runtime. Apigee validates that the scopes in any access token presented match the scopes defined in the OAuth policy associated with the API product.
|
1497
|
+
:param pulumi.Input[_builtins.str] space: Optional. The resource ID of the parent Space. If not set, the parent resource will be the Organization.
|
1498
|
+
"""
|
1499
|
+
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
|
1500
|
+
|
1501
|
+
__props__ = _ApiProductState.__new__(_ApiProductState)
|
1502
|
+
|
1503
|
+
__props__.__dict__["api_resources"] = api_resources
|
1504
|
+
__props__.__dict__["approval_type"] = approval_type
|
1505
|
+
__props__.__dict__["attributes"] = attributes
|
1506
|
+
__props__.__dict__["created_at"] = created_at
|
1507
|
+
__props__.__dict__["description"] = description
|
1508
|
+
__props__.__dict__["display_name"] = display_name
|
1509
|
+
__props__.__dict__["environments"] = environments
|
1510
|
+
__props__.__dict__["graphql_operation_group"] = graphql_operation_group
|
1511
|
+
__props__.__dict__["grpc_operation_group"] = grpc_operation_group
|
1512
|
+
__props__.__dict__["last_modified_at"] = last_modified_at
|
1513
|
+
__props__.__dict__["name"] = name
|
1514
|
+
__props__.__dict__["operation_group"] = operation_group
|
1515
|
+
__props__.__dict__["org_id"] = org_id
|
1516
|
+
__props__.__dict__["proxies"] = proxies
|
1517
|
+
__props__.__dict__["quota"] = quota
|
1518
|
+
__props__.__dict__["quota_counter_scope"] = quota_counter_scope
|
1519
|
+
__props__.__dict__["quota_interval"] = quota_interval
|
1520
|
+
__props__.__dict__["quota_time_unit"] = quota_time_unit
|
1521
|
+
__props__.__dict__["scopes"] = scopes
|
1522
|
+
__props__.__dict__["space"] = space
|
1523
|
+
return ApiProduct(resource_name, opts=opts, __props__=__props__)
|
1524
|
+
|
1525
|
+
@_builtins.property
|
1526
|
+
@pulumi.getter(name="apiResources")
|
1527
|
+
def api_resources(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
|
1528
|
+
"""
|
1529
|
+
Comma-separated list of API resources to be bundled in the API product. By default, the resource paths are mapped from the proxy.pathsuffix variable.
|
1530
|
+
The proxy path suffix is defined as the URI fragment following the ProxyEndpoint base path. For example, if the apiResources element is defined to be /forecastrss and the base path defined for the API proxy is /weather, then only requests to /weather/forecastrss are permitted by the API product.
|
1531
|
+
"""
|
1532
|
+
return pulumi.get(self, "api_resources")
|
1533
|
+
|
1534
|
+
@_builtins.property
|
1535
|
+
@pulumi.getter(name="approvalType")
|
1536
|
+
def approval_type(self) -> pulumi.Output[Optional[_builtins.str]]:
|
1537
|
+
"""
|
1538
|
+
Flag that specifies how API keys are approved to access the APIs defined by the API product.
|
1539
|
+
Valid values are `auto` or `manual`.
|
1540
|
+
Possible values are: `auto`, `manual`.
|
1541
|
+
"""
|
1542
|
+
return pulumi.get(self, "approval_type")
|
1543
|
+
|
1544
|
+
@_builtins.property
|
1545
|
+
@pulumi.getter
|
1546
|
+
def attributes(self) -> pulumi.Output[Optional[Sequence['outputs.ApiProductAttribute']]]:
|
1547
|
+
"""
|
1548
|
+
Array of attributes that may be used to extend the default API product profile with customer-specific metadata. You can specify a maximum of 18 attributes.
|
1549
|
+
Use this property to specify the access level of the API product as either public, private, or internal.
|
1550
|
+
Structure is documented below.
|
1551
|
+
"""
|
1552
|
+
return pulumi.get(self, "attributes")
|
1553
|
+
|
1554
|
+
@_builtins.property
|
1555
|
+
@pulumi.getter(name="createdAt")
|
1556
|
+
def created_at(self) -> pulumi.Output[_builtins.str]:
|
1557
|
+
"""
|
1558
|
+
Response only. Creation time of this environment as milliseconds since epoch.
|
1559
|
+
"""
|
1560
|
+
return pulumi.get(self, "created_at")
|
1561
|
+
|
1562
|
+
@_builtins.property
|
1563
|
+
@pulumi.getter
|
1564
|
+
def description(self) -> pulumi.Output[Optional[_builtins.str]]:
|
1565
|
+
"""
|
1566
|
+
Description of the API product. Include key information about the API product that is not captured by other fields.
|
1567
|
+
"""
|
1568
|
+
return pulumi.get(self, "description")
|
1569
|
+
|
1570
|
+
@_builtins.property
|
1571
|
+
@pulumi.getter(name="displayName")
|
1572
|
+
def display_name(self) -> pulumi.Output[_builtins.str]:
|
1573
|
+
"""
|
1574
|
+
Name displayed in the UI or developer portal to developers registering for API access.
|
1575
|
+
"""
|
1576
|
+
return pulumi.get(self, "display_name")
|
1577
|
+
|
1578
|
+
@_builtins.property
|
1579
|
+
@pulumi.getter
|
1580
|
+
def environments(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
|
1581
|
+
"""
|
1582
|
+
Comma-separated list of environment names to which the API product is bound. Requests to environments that are not listed are rejected.
|
1583
|
+
By specifying one or more environments, you can bind the resources listed in the API product to a specific environment, preventing developers from accessing those resources through API proxies deployed in another environment.
|
1584
|
+
"""
|
1585
|
+
return pulumi.get(self, "environments")
|
1586
|
+
|
1587
|
+
@_builtins.property
|
1588
|
+
@pulumi.getter(name="graphqlOperationGroup")
|
1589
|
+
def graphql_operation_group(self) -> pulumi.Output[Optional['outputs.ApiProductGraphqlOperationGroup']]:
|
1590
|
+
"""
|
1591
|
+
Configuration used to group Apigee proxies or remote services with graphQL operation name, graphQL operation type and quotas. This grouping allows us to precisely set quota for a particular combination of graphQL name and operation type for a particular proxy request. If graphQL name is not set, this would imply quota will be applied on all graphQL requests matching the operation type.
|
1592
|
+
Structure is documented below.
|
1593
|
+
"""
|
1594
|
+
return pulumi.get(self, "graphql_operation_group")
|
1595
|
+
|
1596
|
+
@_builtins.property
|
1597
|
+
@pulumi.getter(name="grpcOperationGroup")
|
1598
|
+
def grpc_operation_group(self) -> pulumi.Output[Optional['outputs.ApiProductGrpcOperationGroup']]:
|
1599
|
+
"""
|
1600
|
+
Optional. Configuration used to group Apigee proxies with gRPC services and method names. This grouping allows us to set quota for a particular proxy with the gRPC service name and method. If a method name is not set, this implies quota and authorization are applied to all gRPC methods implemented by that proxy for that particular gRPC service.
|
1601
|
+
Structure is documented below.
|
1602
|
+
"""
|
1603
|
+
return pulumi.get(self, "grpc_operation_group")
|
1604
|
+
|
1605
|
+
@_builtins.property
|
1606
|
+
@pulumi.getter(name="lastModifiedAt")
|
1607
|
+
def last_modified_at(self) -> pulumi.Output[_builtins.str]:
|
1608
|
+
"""
|
1609
|
+
Response only. Modified time of this environment as milliseconds since epoch.
|
1610
|
+
"""
|
1611
|
+
return pulumi.get(self, "last_modified_at")
|
1612
|
+
|
1613
|
+
@_builtins.property
|
1614
|
+
@pulumi.getter
|
1615
|
+
def name(self) -> pulumi.Output[_builtins.str]:
|
1616
|
+
"""
|
1617
|
+
Internal name of the API product.
|
1618
|
+
"""
|
1619
|
+
return pulumi.get(self, "name")
|
1620
|
+
|
1621
|
+
@_builtins.property
|
1622
|
+
@pulumi.getter(name="operationGroup")
|
1623
|
+
def operation_group(self) -> pulumi.Output[Optional['outputs.ApiProductOperationGroup']]:
|
1624
|
+
"""
|
1625
|
+
Configuration used to group Apigee proxies or remote services with resources, method types, and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources and how many calls can be made (using the quota setting).
|
1626
|
+
Note: The apiResources setting cannot be specified for both the API product and operation group; otherwise the call will fail.
|
1627
|
+
Structure is documented below.
|
1628
|
+
"""
|
1629
|
+
return pulumi.get(self, "operation_group")
|
1630
|
+
|
1631
|
+
@_builtins.property
|
1632
|
+
@pulumi.getter(name="orgId")
|
1633
|
+
def org_id(self) -> pulumi.Output[_builtins.str]:
|
1634
|
+
"""
|
1635
|
+
The Apigee Organization associated with the Apigee API product,
|
1636
|
+
in the format `organizations/{{org_name}}`.
|
1637
|
+
"""
|
1638
|
+
return pulumi.get(self, "org_id")
|
1639
|
+
|
1640
|
+
@_builtins.property
|
1641
|
+
@pulumi.getter
|
1642
|
+
def proxies(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
|
1643
|
+
"""
|
1644
|
+
Comma-separated list of API proxy names to which this API product is bound. By specifying API proxies, you can associate resources in the API product with specific API proxies, preventing developers from accessing those resources through other API proxies.
|
1645
|
+
Apigee rejects requests to API proxies that are not listed.
|
1646
|
+
"""
|
1647
|
+
return pulumi.get(self, "proxies")
|
1648
|
+
|
1649
|
+
@_builtins.property
|
1650
|
+
@pulumi.getter
|
1651
|
+
def quota(self) -> pulumi.Output[Optional[_builtins.str]]:
|
1652
|
+
"""
|
1653
|
+
Number of request messages permitted per app by this API product for the specified quotaInterval and quotaTimeUnit.
|
1654
|
+
For example, a quota of 50, for a quotaInterval of 12 and a quotaTimeUnit of hours means 50 requests are allowed every 12 hours.
|
1655
|
+
"""
|
1656
|
+
return pulumi.get(self, "quota")
|
1657
|
+
|
1658
|
+
@_builtins.property
|
1659
|
+
@pulumi.getter(name="quotaCounterScope")
|
1660
|
+
def quota_counter_scope(self) -> pulumi.Output[Optional[_builtins.str]]:
|
1661
|
+
"""
|
1662
|
+
Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself.
|
1663
|
+
Possible values are: `QUOTA_COUNTER_SCOPE_UNSPECIFIED`, `PROXY`, `OPERATION`.
|
1664
|
+
"""
|
1665
|
+
return pulumi.get(self, "quota_counter_scope")
|
1666
|
+
|
1667
|
+
@_builtins.property
|
1668
|
+
@pulumi.getter(name="quotaInterval")
|
1669
|
+
def quota_interval(self) -> pulumi.Output[Optional[_builtins.str]]:
|
1670
|
+
"""
|
1671
|
+
Time interval over which the number of request messages is calculated.
|
1672
|
+
"""
|
1673
|
+
return pulumi.get(self, "quota_interval")
|
1674
|
+
|
1675
|
+
@_builtins.property
|
1676
|
+
@pulumi.getter(name="quotaTimeUnit")
|
1677
|
+
def quota_time_unit(self) -> pulumi.Output[Optional[_builtins.str]]:
|
1678
|
+
"""
|
1679
|
+
Time unit defined for the quotaInterval. Valid values include second, minute, hour, day, month or year.
|
1680
|
+
"""
|
1681
|
+
return pulumi.get(self, "quota_time_unit")
|
1682
|
+
|
1683
|
+
@_builtins.property
|
1684
|
+
@pulumi.getter
|
1685
|
+
def scopes(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
|
1686
|
+
"""
|
1687
|
+
Comma-separated list of OAuth scopes that are validated at runtime. Apigee validates that the scopes in any access token presented match the scopes defined in the OAuth policy associated with the API product.
|
1688
|
+
"""
|
1689
|
+
return pulumi.get(self, "scopes")
|
1690
|
+
|
1691
|
+
@_builtins.property
|
1692
|
+
@pulumi.getter
|
1693
|
+
def space(self) -> pulumi.Output[Optional[_builtins.str]]:
|
1694
|
+
"""
|
1695
|
+
Optional. The resource ID of the parent Space. If not set, the parent resource will be the Organization.
|
1696
|
+
"""
|
1697
|
+
return pulumi.get(self, "space")
|
1698
|
+
|