From 94f144f4b46e994a1f0fefcbdbf66ddc34e2f207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Andreassa?= Date: Thu, 30 Jul 2026 16:51:15 -0700 Subject: [PATCH] chore: Update submodules (googleapis, gapic-showcase) and gem defaults --- .gitignore | 1 + .../test/gapic/presenters/service_test.rb | 38 +-- shared/gapic-showcase | 2 +- shared/gem_defaults.rb | 3 +- shared/googleapis | 2 +- shared/input/compute_small_desc.bin | Bin 296697 -> 302091 bytes shared/input/compute_small_wrapper_desc.bin | Bin 296705 -> 302099 bytes shared/input/garbage_desc.bin | Bin 272731 -> 278101 bytes shared/input/googleads_desc.bin | Bin 346578 -> 397797 bytes shared/input/grafeas_v1_desc.bin | Bin 487469 -> 519575 bytes shared/input/language_v1_desc.bin | Bin 223568 -> 228962 bytes shared/input/language_v1beta1_desc.bin | Bin 165471 -> 165471 bytes shared/input/language_v1beta2_desc.bin | Bin 226155 -> 231549 bytes shared/input/language_wrapper_desc.bin | Bin 222906 -> 228300 bytes shared/input/location_desc.bin | Bin 137944 -> 143338 bytes shared/input/secretmanager_v1beta1_desc.bin | Bin 240918 -> 246312 bytes shared/input/secretmanager_wrapper_desc.bin | Bin 240918 -> 246312 bytes shared/input/showcase_desc.bin | Bin 396665 -> 407960 bytes shared/input/speech_v1_desc.bin | Bin 333084 -> 338454 bytes shared/input/testing_desc.bin | Bin 223194 -> 228831 bytes shared/input/vision_v1_desc.bin | Bin 422519 -> 427870 bytes .../ads/google_ads/{v19 => v21}/services.rb | 10 +- .../{v19 => v21}/services/campaign_service.rb | 14 +- .../services/campaign_service/client.rb | 68 ++-- .../services/campaign_service/credentials.rb | 2 +- .../services/campaign_service/paths.rb | 2 +- .../services/campaign_service_pb.rb | 28 +- .../services/campaign_service_services_pb.rb | 14 +- .../googleads/{v19 => v21}/common/bidding.rb | 28 +- .../{v19 => v21}/common/custom_parameter.rb | 2 +- .../{v19 => v21}/common/frequency_cap.rb | 10 +- .../common/real_time_bidding_setting.rb | 2 +- .../{v19 => v21}/common/targeting_setting.rb | 12 +- .../third_party_integration_partners.rb | 190 +++++++++++ .../ads/googleads/v21/enums/ad_group_type.rb | 98 ++++++ .../enums/ad_serving_optimization_status.rb | 2 +- .../enums/advertising_channel_sub_type.rb | 2 +- .../enums/advertising_channel_type.rb | 2 +- .../enums/app_campaign_app_store.rb | 2 +- ...app_campaign_bidding_strategy_goal_type.rb | 2 +- .../enums/asset_automation_status.rb | 2 +- .../enums/asset_automation_type.rb | 31 +- .../{v19 => v21}/enums/asset_field_type.rb | 5 +- .../{v19 => v21}/enums/asset_set_type.rb | 2 +- .../enums/bidding_strategy_system_status.rb | 2 +- .../enums/bidding_strategy_type.rb | 2 +- .../enums/brand_safety_suitability.rb | 2 +- .../enums/campaign_experiment_type.rb | 2 +- .../enums/campaign_keyword_match_type.rb | 2 +- .../enums/campaign_primary_status.rb | 2 +- .../enums/campaign_primary_status_reason.rb | 6 +- .../enums/campaign_serving_status.rb | 2 +- .../{v19 => v21}/enums/campaign_status.rb | 2 +- .../enums/eu_political_advertising_status.rb | 2 +- .../{v19 => v21}/enums/fixed_cpm_goal.rb | 2 +- .../fixed_cpm_target_frequency_time_unit.rb | 2 +- .../enums/frequency_cap_event_type.rb | 2 +- .../{v19 => v21}/enums/frequency_cap_level.rb | 2 +- .../enums/frequency_cap_time_unit.rb | 2 +- .../{v19 => v21}/enums/listing_type.rb | 2 +- .../enums/location_source_type.rb | 2 +- .../enums/negative_geo_target_type.rb | 2 +- .../v21/enums/non_skippable_max_duration.rb | 54 +++ .../v21/enums/non_skippable_min_duration.rb | 57 ++++ .../enums/optimization_goal_type.rb | 2 +- .../{v19 => v21}/enums/payment_mode.rb | 2 +- .../enums/performance_max_upgrade_status.rb | 2 +- .../enums/positive_geo_target_type.rb | 2 +- .../enums/response_content_type.rb | 2 +- .../enums/target_frequency_time_unit.rb | 2 +- .../enums/target_impression_share_location.rb | 2 +- .../{v19 => v21}/enums/targeting_dimension.rb | 2 +- ...rd_party_brand_lift_integration_partner.rb | 57 ++++ ..._party_brand_safety_integration_partner.rb | 54 +++ .../third_party_reach_integration_partner.rb | 72 ++++ ...d_party_viewability_integration_partner.rb | 51 +++ .../enums/vanity_pharma_display_url_mode.rb | 2 +- .../{v19 => v21}/enums/vanity_pharma_text.rb | 2 +- .../v21/enums/video_ad_format_restriction.rb | 47 +++ .../video_ad_sequence_interaction_type.rb | 62 ++++ .../video_ad_sequence_minimum_duration.rb | 54 +++ .../{v19 => v21}/resources/campaign.rb | 317 +++++++++++++----- .../{v19 => v21}/services/campaign_service.rb | 22 +- .../googleads/proto_docs/google/api/client.rb | 178 ++++++++-- .../proto_docs/google/api/client.rb | 178 ++++++++-- .../grafeas_v1/lib/grafeas/v1/common_pb.rb | 2 +- .../grafeas_v1/lib/grafeas/v1/cvss_pb.rb | 4 +- .../grafeas_v1/lib/grafeas/v1/discovery_pb.rb | 3 +- .../lib/grafeas/v1/grafeas/client.rb | 16 +- .../grafeas_v1/lib/grafeas/v1/grafeas_pb.rb | 2 +- .../grafeas_v1/lib/grafeas/v1/risk_pb.rb | 19 ++ .../grafeas_v1/lib/grafeas/v1/secret_pb.rb | 3 +- .../lib/grafeas/v1/vulnerability_pb.rb | 3 +- .../proto_docs/google/api/client.rb | 178 ++++++++-- .../proto_docs/grafeas/v1/common.rb | 7 + .../grafeas_v1/proto_docs/grafeas/v1/cvss.rb | 114 ++++++- .../proto_docs/grafeas/v1/discovery.rb | 24 ++ .../proto_docs/grafeas/v1/grafeas.rb | 26 ++ .../grafeas_v1/proto_docs/grafeas/v1/risk.rb | 57 ++++ .../proto_docs/grafeas/v1/secret.rb | 72 +++- .../proto_docs/grafeas/v1/vulnerability.rb | 12 + .../test/grafeas/v1/grafeas_test.rb | 24 +- .../proto_docs/google/api/client.rb | 178 ++++++++-- .../proto_docs/google/api/client.rb | 178 ++++++++-- .../location/proto_docs/google/api/client.rb | 178 ++++++++-- .../proto_docs/google/api/client.rb | 178 ++++++++-- .../speech_v1/proto_docs/google/api/client.rb | 178 ++++++++-- .../vision_v1/proto_docs/google/api/client.rb | 178 ++++++++-- .../vision_v1/proto_docs/google/type/color.rb | 16 +- .../proto_docs/google/type/latlng.rb | 6 +- .../garbage/proto_docs/google/api/client.rb | 178 ++++++++-- .../google/showcase/v1beta1/compliance_pb.rb | 2 +- .../showcase/v1beta1/sequence_service.rb | 3 + .../v1beta1/sequence_service/client.rb | 18 +- .../showcase/v1beta1/sequence_service/rest.rb | 3 + .../v1beta1/sequence_service/rest/client.rb | 18 +- .../showcase/v1beta1/sequence_services_pb.rb | 17 +- .../showcase/proto_docs/google/api/client.rb | 178 ++++++++-- .../showcase/proto_docs/google/api/routing.rb | 10 +- .../proto_docs/google/rpc/error_details.rb | 8 +- .../google/showcase/v1beta1/compliance.rb | 20 ++ .../google/showcase/v1beta1/sequence.rb | 17 +- .../testing/proto_docs/google/api/client.rb | 178 ++++++++-- .../testing/proto_docs/google/api/routing.rb | 10 +- 124 files changed, 3495 insertions(+), 660 deletions(-) rename shared/output/ads/googleads/lib/google/ads/google_ads/{v19 => v21}/services.rb (80%) rename shared/output/ads/googleads/lib/google/ads/google_ads/{v19 => v21}/services/campaign_service.rb (75%) rename shared/output/ads/googleads/lib/google/ads/google_ads/{v19 => v21}/services/campaign_service/client.rb (93%) rename shared/output/ads/googleads/lib/google/ads/google_ads/{v19 => v21}/services/campaign_service/credentials.rb (98%) rename shared/output/ads/googleads/lib/google/ads/google_ads/{v19 => v21}/services/campaign_service/paths.rb (98%) rename shared/output/ads/googleads/lib/google/ads/googleads/{v19 => v21}/services/campaign_service_pb.rb (63%) rename shared/output/ads/googleads/lib/google/ads/googleads/{v19 => v21}/services/campaign_service_services_pb.rb (85%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/common/bidding.rb (91%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/common/custom_parameter.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/common/frequency_cap.rb (89%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/common/real_time_bidding_setting.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/common/targeting_setting.rb (91%) create mode 100644 shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/third_party_integration_partners.rb create mode 100644 shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/ad_group_type.rb rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/ad_serving_optimization_status.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/advertising_channel_sub_type.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/advertising_channel_type.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/app_campaign_app_store.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/app_campaign_bidding_strategy_goal_type.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/asset_automation_status.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/asset_automation_type.rb (60%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/asset_field_type.rb (97%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/asset_set_type.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/bidding_strategy_system_status.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/bidding_strategy_type.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/brand_safety_suitability.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/campaign_experiment_type.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/campaign_keyword_match_type.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/campaign_primary_status.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/campaign_primary_status_reason.rb (97%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/campaign_serving_status.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/campaign_status.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/eu_political_advertising_status.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/fixed_cpm_goal.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/fixed_cpm_target_frequency_time_unit.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/frequency_cap_event_type.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/frequency_cap_level.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/frequency_cap_time_unit.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/listing_type.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/location_source_type.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/negative_geo_target_type.rb (98%) create mode 100644 shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/non_skippable_max_duration.rb create mode 100644 shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/non_skippable_min_duration.rb rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/optimization_goal_type.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/payment_mode.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/performance_max_upgrade_status.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/positive_geo_target_type.rb (99%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/response_content_type.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/target_frequency_time_unit.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/target_impression_share_location.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/targeting_dimension.rb (99%) create mode 100644 shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_brand_lift_integration_partner.rb create mode 100644 shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_brand_safety_integration_partner.rb create mode 100644 shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_reach_integration_partner.rb create mode 100644 shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_viewability_integration_partner.rb rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/vanity_pharma_display_url_mode.rb (98%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/enums/vanity_pharma_text.rb (99%) create mode 100644 shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_format_restriction.rb create mode 100644 shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_sequence_interaction_type.rb create mode 100644 shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_sequence_minimum_duration.rb rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/resources/campaign.rb (74%) rename shared/output/ads/googleads/proto_docs/google/ads/googleads/{v19 => v21}/services/campaign_service.rb (93%) create mode 100644 shared/output/cloud/grafeas_v1/lib/grafeas/v1/risk_pb.rb create mode 100644 shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/risk.rb diff --git a/.gitignore b/.gitignore index c04ef5080..4c0ca379f 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /node_modules/ /package-lock.json /.toys/**/Gemfile.lock +.toys-tmp-gemfile* diff --git a/gapic-generator-ads/test/gapic/presenters/service_test.rb b/gapic-generator-ads/test/gapic/presenters/service_test.rb index 9af78be6b..a1b1f90c3 100644 --- a/gapic-generator-ads/test/gapic/presenters/service_test.rb +++ b/gapic-generator-ads/test/gapic/presenters/service_test.rb @@ -37,46 +37,46 @@ def test_references end def test_proto_methods - assert_equal "::Google::Ads::GoogleAds::V19::Services::CampaignService", presenter.proto_service_name_full - assert_equal "google/ads/googleads/v19/services/campaign_service_pb.rb", presenter.proto_service_file_path + assert_equal "::Google::Ads::GoogleAds::V21::Services::CampaignService", presenter.proto_service_name_full + assert_equal "google/ads/googleads/v21/services/campaign_service_pb.rb", presenter.proto_service_file_path assert_equal "campaign_service_pb.rb", presenter.proto_service_file_name - assert_equal "google/ads/googleads/v19/services/campaign_service_pb", presenter.proto_service_require - assert_equal "google/ads/googleads/v19/services/campaign_service_services_pb.rb", presenter.proto_services_file_path + assert_equal "google/ads/googleads/v21/services/campaign_service_pb", presenter.proto_service_require + assert_equal "google/ads/googleads/v21/services/campaign_service_services_pb.rb", presenter.proto_services_file_path assert_equal "campaign_service_services_pb.rb", presenter.proto_services_file_name - assert_equal "google/ads/googleads/v19/services/campaign_service_services_pb", presenter.proto_services_require - assert_equal "::Google::Ads::GoogleAds::V19::Services::CampaignService::Stub", + assert_equal "google/ads/googleads/v21/services/campaign_service_services_pb", presenter.proto_services_require + assert_equal "::Google::Ads::GoogleAds::V21::Services::CampaignService::Stub", presenter.proto_service_stub_name_full end def test_credentials_methods assert_equal "Credentials", presenter.credentials_name - assert_equal "::Google::Ads::GoogleAds::V19::Services::CampaignService::Credentials", + assert_equal "::Google::Ads::GoogleAds::V21::Services::CampaignService::Credentials", presenter.credentials_name_full - assert_equal "google/ads/google_ads/v19/services/campaign_service/credentials.rb", presenter.credentials_file_path + assert_equal "google/ads/google_ads/v21/services/campaign_service/credentials.rb", presenter.credentials_file_path assert_equal "credentials.rb", presenter.credentials_file_name - assert_equal "google/ads/google_ads/v19/services/campaign_service/credentials", presenter.credentials_require + assert_equal "google/ads/google_ads/v21/services/campaign_service/credentials", presenter.credentials_require end def test_operations_methods assert_equal "Operations", presenter.operations_name - assert_equal "::Google::Ads::GoogleAds::V19::Services::CampaignService::Operations", presenter.operations_name_full - assert_equal "google/ads/google_ads/v19/services/campaign_service/operations.rb", presenter.operations_file_path + assert_equal "::Google::Ads::GoogleAds::V21::Services::CampaignService::Operations", presenter.operations_name_full + assert_equal "google/ads/google_ads/v21/services/campaign_service/operations.rb", presenter.operations_file_path assert_equal "operations.rb", presenter.operations_file_name - assert_equal "google/ads/google_ads/v19/services/campaign_service/operations", presenter.operations_require + assert_equal "google/ads/google_ads/v21/services/campaign_service/operations", presenter.operations_require end def test_helpers_methods - assert_equal "google/ads/google_ads/v19/services/campaign_service/helpers.rb", presenter.helpers_file_path + assert_equal "google/ads/google_ads/v21/services/campaign_service/helpers.rb", presenter.helpers_file_path assert_equal "helpers.rb", presenter.helpers_file_name - assert_equal "google/ads/google_ads/v19/services/campaign_service/helpers", presenter.helpers_require + assert_equal "google/ads/google_ads/v21/services/campaign_service/helpers", presenter.helpers_require end def test_test_client_file_path - assert_equal "google/ads/google_ads/v19/services/campaign_service_test.rb", presenter.test_client_file_path + assert_equal "google/ads/google_ads/v21/services/campaign_service_test.rb", presenter.test_client_file_path end def test_test_client_operations_file_path - assert_equal "google/ads/google_ads/v19/services/campaign_service_operations_test.rb", + assert_equal "google/ads/google_ads/v21/services/campaign_service_operations_test.rb", presenter.test_client_operations_file_path end @@ -105,11 +105,11 @@ def test_paths_name end def test_paths_name_full - assert_equal "::Google::Ads::GoogleAds::V19::Services::CampaignService::Paths", presenter.paths_name_full + assert_equal "::Google::Ads::GoogleAds::V21::Services::CampaignService::Paths", presenter.paths_name_full end def test_paths_file_path - assert_equal "google/ads/google_ads/v19/services/campaign_service/paths.rb", presenter.paths_file_path + assert_equal "google/ads/google_ads/v21/services/campaign_service/paths.rb", presenter.paths_file_path end def test_paths_file_name @@ -117,6 +117,6 @@ def test_paths_file_name end def test_paths_require - assert_equal "google/ads/google_ads/v19/services/campaign_service/paths", presenter.paths_require + assert_equal "google/ads/google_ads/v21/services/campaign_service/paths", presenter.paths_require end end diff --git a/shared/gapic-showcase b/shared/gapic-showcase index 60f4159fb..b6c247f15 160000 --- a/shared/gapic-showcase +++ b/shared/gapic-showcase @@ -1 +1 @@ -Subproject commit 60f4159fbf6474304c8b0c088c28e77647763e83 +Subproject commit b6c247f153369044d599969f6929ecdeb066c4c6 diff --git a/shared/gem_defaults.rb b/shared/gem_defaults.rb index b99694bfb..16babf22c 100644 --- a/shared/gem_defaults.rb +++ b/shared/gem_defaults.rb @@ -36,6 +36,7 @@ def gem_defaults "grafeas/v1/intoto_statement.proto", "grafeas/v1/package.proto", "grafeas/v1/provenance.proto", + "grafeas/v1/risk.proto", "grafeas/v1/sbom.proto", "grafeas/v1/secret.proto", "grafeas/v1/severity.proto", @@ -153,7 +154,7 @@ def gem_defaults }, googleads: { protos: [ - "google/ads/googleads/v19/services/campaign_service.proto" + "google/ads/googleads/v21/services/campaign_service.proto" ], generator: :ads }, diff --git a/shared/googleapis b/shared/googleapis index 7e90a532b..c5dcac8b1 160000 --- a/shared/googleapis +++ b/shared/googleapis @@ -1 +1 @@ -Subproject commit 7e90a532b8fc4a127ffda6932dc0af894c2ac3c8 +Subproject commit c5dcac8b1de4cb23c610bd4890b184e36845c56e diff --git a/shared/input/compute_small_desc.bin b/shared/input/compute_small_desc.bin index b3adca3141a6a9bd038f513d5ed2eef1def29533..6d6ac2e832288b33acf67429d7bff106777c15a9 100644 GIT binary patch delta 9206 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 delta 4481 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 L3ER#zezN}Gqon&x diff --git a/shared/input/garbage_desc.bin b/shared/input/garbage_desc.bin index 638cf5e40d24cf70121f314506884252b93203c5..10836dad3058067a3a7ae854c8ba2ea769dfa6f7 100644 GIT binary patch delta 9597 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 delta 4831 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 LZakW&T?zdMle$-F diff --git a/shared/input/googleads_desc.bin b/shared/input/googleads_desc.bin index f2bb6d234240ee4c432d9f6de548a8eb3173063e..e4ea7bcbc683857721ec98dc36397288fad4d842 100644 GIT binary patch delta 59019 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 delta 23875 zcmd6Pd3aPs)_2#|BsV~y2@pD4XCpxN6$l9s_I*)NR1_iv1R+5Pii!plQDN9@pb(Ws zahSmc6t&$@P*etW#AU<4U``Q}(4Nhbi)8*=?bLsMET^e1!Z9R3?9bKwg)t!^SZR=?Mr`mKN{yTGWf)i#ZHZSg8P**=^#_Ws+D=FBzq|IVCV_`9Pf=S{{pvY@Z?#vMgndNHbS zb?%N>SBV1Cw0?P4QRPSTIOCtQ;1l`x1s^Ktx1&Shdc*K^(G|p(Qv3p44j0d-%Y>2< zblF~FRQR|gKqXe1*{-;IWo6%n88aH{hkQ4}YUWcdJ-@Pq(5B;Z5D$JkKW@j;@?Msl z!TfXd?!U{xj+4E%i#W|JE@OP^YR~*&dVd{%bxdn(C9|ZA;U1ru6MVIQuzC)+tmc*? zk^(KRm0Mycwa#!$0;TMZ*3&jOo?XxL{0|1duem1Ja$wiKHUg7GckvkTt`Fle;%S}Z z;4$D`-zC?@<37<8TsrX4el`vVPE#0%1E(pB!-3P(I@`hFz-j8#*}9Kf8td~eWS+&r zMT0i^7BaN822G8P@%X%p7{4Pp|B}i?l$cL0VlmCF3VH}T$lICh5j;6Kw_6LC0Tizx z1uUnC`nR+63b!bz*u4_$Tv|TwQs!9`{C048{8AQ^WlaL6MVKpsB||2ctYEyE;R6jY zD_Bf|TLjDs);`giVK|u2yNdDEEI)YnxJki+q23BpOm%9*c5*dK>*N-}yqe|aS=*@9 zaX#>I(^R(8+r*gSY2=1V;{krO%cK0(w+#i6Ed$QG{>Ufap^c;T%h-dCh&^hnVLXH19@gT~_dh5m&T& zh{gDz7)3z0ozz0-Fn7Gz|+TBlsoqb zHjMICgJie3xoPp^uD&Q521j2M0rxoR>%gJKPY3@p@X5i=IUHF&9l@b?KOMoLc0bMF z%hYaE2F}wA&U_u3-NNU6o_StFv#$!&=o{~5nZduDKeE;HET)a61sdLh8ve?Tug|}W zjeErv0U|`a;)*~KB3@yw?aoFKB3@xRwj-e!L&eTjR!hrEfHCHAmmb#5WSADD-@f1{ zV-{BLiwL0J-xm=;w%F(P9XNonk8II^HnjA4-(;STf}1X^Z}lei*hzwINs7N4OuOiZ z>UUjO&;a|c3yUIP-*sV81nj#6d)P+6(+`6q#(q-$VFZB``;f)O8*8>So%A7VWw#tf zAbdzIzZQzc`@A1B&zHfgF1{xIV;0lOx*U4NlU|<&PhLEs=u^gf8W_+Z>QmOMuUiDn zr)apn3xt;5@y96QP*8~{yB!a{c}cgT<4k5coMfouEUUX)1kiC-Rc&n~ zCvWBRe#1QfX2GtPu5a}Xi^;KjpcScfGI;FLg~cb`Py!l|PP(B4MIfDYLrE*h_WsED zPb|1@+*O6o&C*b>u&<$g#SNxm!*1wCfK{`zf?IFsLAS?mxRx#x=3NoB z4k)Z^8~kM6=qSp@*$KfBH_oN1dv83SE`Ms#;7zVYzn#BMQMJX3XzdYvZPAoCtTQH> zwLqVw;HD+*g6H36Ry%(R6nnb^6g*TrSkHfqwcYXJ;>~6S@}>^xU-q)Z7Vf$w12MZ@ zu-9Gff-n8$H4?UB=~%k_X}^tI7G<^_XIC_Osp=fvl`fBHW2`qdErEhnYiHP(4#7{> z#s=S5JC%yv?s_(w+J2oeW7S%JuzuYndh+f%)9HWOto!eF?eqJ+C9!%x0wq}V3C8-; zwV1P`ku_mJPv9&`R|{>qUV1gGIfg_qpZ%!VH=6~kDPPt9NRQyi#^Md5TV{VTt<3?ktN6 z{z|qc0_)c`m8`9Pv+}>dF6a>jyESxcPd1N>f48&r%Fk4L2fs4n*}pTZz23A+w$T$3 zrBoT8GOLYU9yE!k>Bnl=BfQTK!K;_15byRr=P*{Ah_UYSSy(By^z;eV@RX>1SBtp_ zr-<9Bo<7W9t#_BQH2v@ZR_Cn|{ki>GN%UwkdA{nJL$!-BcYiJEqdE4_hL zwW0@CFJW}X5PEnC`^0FueCas`0M#D1%+=ByG=wIsWIN(9#TA;ZeW4!py-3t$n^44YztX^ZzBHUHw87_SRt1Oe@s%A}jUs-^=yJa-K-2kdymA z=IkG0-~T{^Tuob4^ zjz60a zF~aHLqu)eL8bv5$%Sx*ypUxc<3UjQlAYI`qST zSc37dhC_gJB7p93n$0Gp?Wfu3b0W<-6OE)VE#kFLT*nWaF?liP-3ee7=X40Civ&OC z>P(*&?qQ%=aBT4M-;Bu)9m3#g>S=q^N3nbpA>Cy0a~pqnTolsQ(CC(YH|I~c*84l! z3yk%LvD$DOxh9i88}a%MdQ&D(&<$Dq-0QCN>?rubAuPW~8rywz7`7|OvlShb$Nx@> zp339rw%t?te?WrmE;GxamLEHTlMv39^H1n{q=KJ2PCnVyMG9dpILPR8Nl#7-e|=X^ z9*VTkuXp$4ZFNJh|JK6ZE*iRGYbd)f-(*7d-T~aKRa*??v=G+&2J#8G{<({-9~1>L zI8-x~pEUh>;A4^IZk9sRNAOZZ-871u&Dx(W-1SwX{{YqU0)BqXZS$_-p?TMc16^n( z)0OKRLZU46{QY84Ynu=Pp<9}I<5Mhr!!z9e_e60^Y#wIS&2E@8YhvAOfAlG8TU~WP zP}IUkGF3O)_q3%l2daw~<>;@R=W}$LKJcNbODp(Xee`|1;I6$pl6_DxJ%9x%?G$L4 zYZj&fop{i$ZkCjpABrq`j6#OK%0a~nAtkH=CT3EBW>nJwnEf*J*pEbFR3tESSo#Md zl`3M!F_JM~^ro^K?af0J49XJ+1?@OBf>N@MKlBGQH?A1P5EY84BF1yN5laP(%Z_@= z2f{2}F{DfjF$PRcc(4%xAI#QsKeihS_sP{eodVn-pt~MbJw(Q-Njmn3c%DEukim`IVR$t~TgvL5n)Q{%dg=UDN*~+G^j4s2WS63-TKq z$W)v6jo1L5P|CNWD@EAQh2M#n=|-n~FQ!G=#w=X^`n_#Ow56@i{z1?x&Ti$>9|Ub^ zohF|O%Qj~J=#+Sv9xnb-nB_&gpTv%E<&S?7|DeLwe+zmILfT(P*L(gWUJh5f_Ggi< zm;5675#_C4M4i6-S3$3FboOszI9(fmvkkY~xwbrQmoGgn#?bS}PTSp(aYjs`@{%)R zY_#!Lrnc4mcQKHj4gFn=r0YGu+xGwVcUwmFSuup@cbpZ2aSgqDR%DW`p7=%16YODq zjg((!_psX6PP(RUR^!y!Q|qUUpIJMrvA%BB_^Fd-C&mRtC(%cIQlml(l(9IX=7^@n17_QeDIN+DYT5)?ZUs-`Ftgy73bm>KkV@ zOiyG1)+w&!lHk?vm;s4CuSq_yy_8iq^W302wgSjqF-<`+)4zG~9}{xWJYw(KFQCHuH%No`L2z z#wYxq{^mB;Cz3oDnp?{!l05^=ZJbY}c>0;!=01_?>1A$P_(Yng+T6DEiGarz5$_Y} zPTf{Mk>QBQY3&o4&b`kkvOGf!UmKsuc4Q>@L`TnXeKsK5HuW?Q+xtXk&j@pyh+V6v zhq>+G6SWr)~Jf*OZSOV zPiJ%6lz|PaC)0|ta8@lU?B>Q~+qX8ctLF-;8UxGFtxfFa$uLA%j&5yYcTa&K0*P*I zVx@zLoig3p#2%h>Q!}fFPtd(ht@89X)Xvx(lq&eyJG`kna{H8b(r_&yRvx&jHR>x<`k-ouJnpIC5Z{eY{=3#QQ zo|!4@n}$i}NPy^2cUYXWv8OT)4~Ai5A5Vu1R0jO8PNS98+OizNJvbQ`!@Y$d#X6)7 zs5Qbns+m>ih{I|07DLtmF1WHTFiT&SB}X=miBbZG*J4au zntf^jq4WZAOh#r{33QnplXXc%2^M3NxG+iy7DGy0%9fmEEXi}BgHVJ+zOGPy1^tN_dlmJp|nlC3TfDAqj zZ(#0m1>iuYUN_~)_5JIkVCZFSeH0AoQSa*%h9Qg9g)ji*IrXQb$aa;)9Z}K1R5Ixvm0jA1!mVxubbEy z7}(G-1&^G@25KixY?xEuh-0#_3Ia!1v!YZMP~N-W^NR| zB8Dh@1^l_bE@6BH{JHss(2@o@_o;b&KDOqabYVA{(&@^E#=7Z&+DT*x+wZ7n=2?EL z+UUb+_}?U(^ypk!++^zj8g#fRtOLr>;ieWoM<&X^xT#G>qzoNyLYhFBALF4Zrq~$| zsBe#lrr08Dpixu!ytgpE40?7oBY$>XW8>6%-7HUb_1(g(bb1d){wzqnMS4`8TsU?S zLtL%4q9ZS3M` zbb4jBn8hWA!RR&OVwRK~Apm_bOX(j*x8n|Isr{_c4mzUDQvGedJb%Da25Y*y)9c`+ z3|$%~K-^M>(Gn&=+){eezl+{`df>Un8nx$u0&zXZ-A>kNu1CvSq2f3~+lI2Y!5tuR7Fy1ByCfC(X z8jsNjXKI)gm|Z))ZZ;N87-6%n3rwu74_rY5u@R$n@Z`Xp*>#fwQ|o6p;_#Yy|4=(G z(1=JM1vhzW-SkN`Uh8Hy&JH-37H*p80DNk_sXx0GBYkqitQob9bP3eWt(`G*dR=88 zXYAMnKP(cam{+MASX^7Tig~@ffhGE_XI&#w-a{zAL{_tYTcSI}&V7jL5Hj}` z)+Q^AW#>QO%)QLGkEHTe{Ya^-=)W}@32{qqjkpi$0ck7qMYxzWJJV9I1#Ks0H^CVNFxFvbC~1j5_v^5zk-%E)Y|JdTKT+BG8tke z{wH`~@QfLA8YxZ}=$YlRDuep6VP@T|T8!{1forEWUg>n|MD$_p)G74^`pt6LIngpb z>jv(?m9^JU{n~onszN5UGPA(sy4uD$v+6J#So*RG*{x0B{JL87pLsjduWkljl34n0 z6*6NQ)Nu!#_m=7z#q0F5zY(h=PD9>b6^<-64h$W=9WT*zFE6#IS$4X2px3 zojSg&JkWnHq)Q?z|Enwz5So5XF;Y0Z4zcNjmQAFq@Z3Ga|j z_FUSGbov*Q@9EzwWxsB?8|Em0C%}A<#kc_*1Yo|$(gIeMX=jYjiyV^AF#+Y7iBjtx z(x31lvy!c=O@k>_&U=W-!}{eOa%MT*v0Mip&j5dz~}F9jtDDDp~s}H*p3lnQjm_Z1UIgM0GY>FyIx_L_KFs?_C1{` z99ef?GX8@;SS<&%`w|HRuq;j4lw0Thn#mJvpniBLhmBgB4TH(Bvmdz2caWgT36|Bz zQ4IvN{sikkz_MSB0u7#XlF9G&)}C@>1?~og>yqidXECnnP!-JIlj(MG)5*xw`-Snd zEHuBD?8(~x!m#U^Zj_{CJ@08Ie`org-f~(KZrzcEM;KYBBYk8i@ttM~?(hWxf=)9m zyX~fd0Dn5oa(`!DtBu+E5DB{u5c7U#%9?5PLCW4OoZrTUe?nj+UgOS~dOd<7mgxGq z8hKg5EgTD^cy4%^g{If-!n4Z?TA{IF_)J`4;ii@(2M6F5=y~ zJKGN=(=FzFg?_M)EN{D*BfdOrhcHT`^Dg6Zx&En-e5eU`t{LoPx@A1POtI7Hmho^D z0|8Q&ahSpOBM{&=%Xv6z62Z9Ya*n83V{Cu~w;<pgp2+LE#-AJDM_<+T0} zL?h86;(=%+68S(h5-l1YAf!UmY-GIso%4tFQv+o|!r!?Sur4;urldFTgIqqOe;p{t zPQ#ts?|1?s4@QL8xo{8i@Ja;)2ziiWrDFFx2=c2Ft;$KW<%J@Cdp*8Sz0o3GPYmbLTWW4erT^E+9ac zkX|`NwrLY0@dZYFYoGU7&R^#`G(_gL#cD0hI%IcSYaEPtU*K}D{&|QznD_#3o@rfT z#lSc4g#2$e_jd9R(uao2Qk^zTW(@`6D7Z%$`3YlFRJj3F%RY7s13Z&c$(V_AOP<(YW`F9HZlQIHs}B5`ohcPlWo4Fd0@Fc2olIL zC%8_#T&}1(!NXe~&;fdahqpW+0Q3Y;>_A@>Py|gN_c_UBGR~Zk=Cu2uYOgCVm({x0 zc-gfa58Uk&Dw>*c?VSdL0IZYTpJYAnV!?xd;`+hy@`Z|@qFG7EPdqL?%t{{m6L~)l zrm#h(ZaB^P0-=kplr9-Ycr?G;9aT)tf%DYMzUSfA zwFzz9wnS_~+qNwcn|Pt!mWWNfwoSH>O)fCF*tu*K{2`%Vu9xRsfZGSd?QRC-2SsL$ zqfj#-KPdVQaEm~GDAMj`&U8xcwl#)FZWDaF&{s9czGddtwP*~Gw?~jExqrLp*PrHF zYAe?5&j|jU2z}Zh2eC1@e^%IENZ=V*pB1V0M=vOX^;v=VK_4oh2&JAAI9RtwO02Ea zbD~*+^|kE+Sa822_{%~!T`j*HjoUrK{+`CeEkN%P>D3OF1?WAZx7$4ypkIzaTQ>B| z1YKjaj`PXALO(rA_Nmz$@%%V+|K5n_$3ezkfx~NC-#EzFE4t*-VHvd?tKioKe?#c1 z*)mv-TXz68$9(p>h;!T7958PPZ;}Jk958Q))BsLQ38jTk?iadwqwHC*U+^@iQVa0x z7lGbx5j^`v-~Lv<;c1C!Na(qZvY_Z4!QBwh5T2i%!V%$h&E*5a5s{JQNNwYjM}^*SjqF-*RB-$A9S?5q>C*lzu0Qw)%zQ6(P0MP%4;!=Ct!TtEE zMCgOp$)bW^BRqca{2K8hKX`s6FS6&mlrhQ)-^#g0>gY6o)VLRGGF@KftL)F`7(+2&lJ~^5lrXH z)LW&y21vGzut3UuXAO{S)&Mt4xlk(mq>QKdythlfSeE$v*e?E*w0^xVaRCn;CK=>UJ&9;M73hcjFhG)1GTl8XyNRNzra;#LJcZKAurH-E`pKijf z+sITjaz&((sgScm`rILw3OOqzhM3*RR5Wsh%w8RCWU4J`Wu%d*rjd6_xeAROYGkMR zylW+2CzZd4S%l2e18p*jrNP`k z%k*K+;11aB+blDNT8E`+O}fwfh~ztDXhf47$0y<5T_mOh`4Jgwe>LXe=|Fx&=5%({ zPKVl$$Sym=woA9Mw?%B1ZW^*(%Ew?k`W)25Gq4Ypy5-HXu5Tz}uMF5L6tPzZ1c#(A z*=a)t1czi=I(CT!k?He3Bl&YM{~%p+qs-JF+$@W(0Lis}CeWUVpk)H>8HtyVwnZ|5 z_KZaIv#p5Z|zwZ~2lHlC92m-^qg$`d8# z)*Y5P;M^}$U7#Fr?w7r4oQa?l=3>b+^x0Ned6<6O@ufSg~X*KKtHjVUx;`_ z1z=uKt?VzfJ-h-iFQ{C1%}{~n?o#2MSB2f&T?&h|6LxdEV*jLc;yU?F$;&D{^1A}{ zWfhLGU4iW_dYdfsI}d2 z(?`(z6<_TY{tY;x2yVJGK`&b`SGC)(V$$*6k1W{T=Y3nrcU3e0P@2E|`n(OY+eO{c zbdX(3bcdL?Rh+xE=?*b(E6nQlq}3hn_O?oYS9zT!LwDm`Z>x-V;am&thE)3G`$`|# zAQzNYqKDsC(haYb0DoT$~!75I)s_^QBnB*Iq(z9Yo9z}B?dCqGv@>ppo? zSv43xk1$q)@$(2{H5fl9M)O{l_w>mxmF%g9uVn*!*&6l)KWMJPJ;DEFguf^Fza)P1 z!yg{r3!j=R`K^lc&(|qfHR>24#qySND}HhNn}m95|FsHTQ$auiMD3y*>|-&eVG<4+8F05P(d%**x99GW1)Xs^L+*lM7X6y|PeMu?3-j7OKCp_%WtS za11=3@k;+dy|7pfayk_!mPB>e-*g~7pCy$$eN0Eb^BG=V3__+b-XY-EasH;em#BfQ z@bfq+7P1_qq=Zv>yIxVE4(8v^oQ)8OK)Rj9wlYX40_k?vCIPRdi3Jar=(|c)W&RSz zTR3&-oO=mtY3qVIU|B*h;pv?>qf_kVYs%ED{N;>$9S*`-&YIcFT2ukYa)!^8M;i{5 z?$jH~)cN_yh_{#A$i)Q9oy=Kso77AcvE(i>EJ$x!t<%a?S^nyXUT8UfE+?!Poh+|r z*rV7i=$W;8KC!Hgu+S;-+6W6}1+68Paw7#czgr(ES6z$lX56(9oeu-;Ok%JVlx zq|w>#rie5;+uanA7K;tAj_s<-i#A83(3$S$h!i^0-Aq#GbO*npf)i}UQ+4Yxsv{}r zEv2v9L2B;w6`k8|VR+L{VIB3szJ=lF1QRI7r{3O&ndbxjMpyMx{KH68F+U%Kd`}!X z>kZx1yz1>>F{~g0csq-;dmTjpZ)bjcrH>+jx6|(jttaoKjBEM09@|}Q%*PM%*xPgv ziOQUJIVghXan>Q(Ov;>G?J1pIsp<=!im(vSQ!Li@PSgR*Q!FK5g={e>?$o<0)zkSq zBRu46J6Wu~*aQnzV*V7fHRbf%KD+dm9%^jCt_TY`+b$N{)@ds_+b))vWY50l4b2{% zU!{Uodm;v*w6s0$uN9#VAofreC|MdsKm_30`#B_H`&u06>4_C^#X z=i5t)(upJ|=X*`Bs8%%vuQBK37(}qV#*$qrN3n;C1`;*=qH6_5O&WF%Z6= z#o0cNH*0{{&(iI4YZL*opOtmBr$CMu4DwywvX@#|fZzFXH6<^6m&JB*8b@CEF3T@+ zdEkcc>s`e2euRfy?|l~QdI-7R`z)^z%e^3PHZwwhJC9n`)$DL)K zoAr$TsyO~E{eBeTnS|j5diMzBFT*`Lb^&+b>>S|*+<`+8a0@8Gh2W5)cq{kZu74xA zTe$;=6hfc8&4$B0;BIr_P=t23xo{`~?lyue2ORbqOE_kw8wRPe#3ekY9sNdylwQgQ zSkCczvY?+es~@fg>G;8FqHj6n4BSE)Bd9_`SA`Z1R*IFa!aG826`I*}NLnM?Ci7ONxu`zUbsA|EAH%7Bk zCv4=gbjoIHLEW&C;|IOS;FLIts7waOC;eoh&8~&)yvfb3h3u@!&14}u1M?E@7UXas z&}_j^6q=C(B2jsJdpU<9WNqPvlx4#uUN=6-J&)+`hO3hJ2RQ}>X+UX`@?pD=a1RY0 zb~Ui`Bp-G)u(Ko|cKZlBuSdD(ZGF=SRTlp!^%22QVx-(baDjpyE|8rOxx)oQ5qj+) zAfzA@543(p$B$HB6gtZhXuPMOa!%? zx3dp&?9|2G93QBxx0!&kH+02l6<}3+xij~~aLSq9%bgPr6oIjq`|OP_io`^@Ido1E zLjnGE{rq{VsrvN@0tSG5J%T{-{&nu0k$?pVuk-u@>s7nCsQi|`{(SY1>bD{g6z|`P zKv2AYi#zc?#>D%#$l<6b@sjpm-1EMke*t>(Uv5uQYNb4&cV7V0A8<`?Cs7`7O>d`A z9w5^f0|;+qKjNM*bo>}q6#o$x6{Zi7orvwMafwRY!zB*6a415rLoOVOXxbryTSNx7 z$o$7S&-MR@>HEg0Ey@2QwoYk?4y^MoM7&#np-L|Rj~(xTU?7}sM-c*!Q@8hpzDSY$ zntLA9-(0BrBz{dkw}Rq&9L0t2Iloy5|5>hgk5fsZD=tzE%=bOz@?C|&jVjctAG!W) zteRf_BQjFVh%|Ia{E?^F>D`6^nLl!T+jBd`1)`wFFI+FYSlvA$v@4IN_#euo1aL)s`Y_BqEd`&+rsGX_z=EE}Y@`Y>bk-iGcC~{jW<@|E>!} z6eD@(0uiMx`R4)wZIQQT|EMEnhP3lPq(@(>R_S*JDxcnV8S-vky$o|q);QHwj~l0o zOHs+5(d-P-r6Sfo5=Ie-O9c{sSI~@x-*%*|3!dg*pm&W^AN>)rM#o;R5_QJqDqoMf z9Q&(lE?2qwzROiv)V=x0`3*q1*|gNM`Ic34|)DubiS(YMtq zzaBY3wbPR)s5HH3f=cX(>h{VJza@!*v(ukxPqT-6P{P~ zjaR5;@!Nz-wUR8UjB7lq{S#G6)}w-(sg{UP>rsKJwu`9)+{XoP?oSTr{omqi@0k-- z>r_yhQS3!^hU$+Cd}`UzR7WYKH%wHWE)EH9LZ&*F~ZPJ9hjstQg=FLCL-$W6s=lYDW(n#vrA8y zq|#D%Ip#tg{IZhVC0ew!5=|Y9?w9nvlaxOd2^p@M_+2IW5~(@B)WK5m75%SCYEarM zf}5XG1P(UC@)hB0gBR|!IQ8xmo`318I#nINPpB07@kC{Ik#FeR>(qqQH}Lk`Gz>&= zz9A6H5KvJE&3sFHC#$B^x7^l(h&peHxE4tDr8+3RtM8wzF3Nn@d1+2WqKbreNHjq1 zo6q}!@EjA&U$4`qsD}3R$t&e*d>~>1=ExTL#z;)i2dAiOdm?+mb{`O7rGu{fpa_T3_i=IFsJ=rMwhZ=sDa-yv4SjeU-ma#ZuYB=sa)Kw# z`O3Gg{q-|_WK6gAr@!qy;g5{z)+V<1Y0zLZ2Ha}zkf}?IH%uwT&3f>a(RY+{WC>BClV@pLY13uLt43Q~x&l z@1HC4!MrK-cuF0oCk@Y|PcDC2dG*i7mHG7?^LWb_>SlVJ`=$CfuAv#vs#gv2iLcdZ zhc8Kwd|sJf`T)oPB92HxcG*9lSM*cOI`su*ewzc=Y~2&5qx>{R(ydRXx{U7k;LaspkKm zR>^FB^E*d_yey-z@ER!THoUzKev8wxyT4IgN%#M0DIXEty2eP!#Lz_K|7T16AFZq0 A$p8QV diff --git a/shared/input/grafeas_v1_desc.bin b/shared/input/grafeas_v1_desc.bin index fa7074f97371a8853e2b8be2a21102843b12b7a8..1c4c1bd8639022cfde68cf40022ff38d5a723e20 100644 GIT binary patch delta 56543 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 S!v^DXe`S2`ng7@Ex&IG?btNVM delta 28133 zcmeHvd3cr8)$iHEIq%7PGQNZaLgtW=1WpnNGXZ1@h$321u~kG6!;DNSh+jaFQ3()W zGXw}0#EMLY_E0F3r4(+9NatcjP+NaF2gv#X80M21JJ$5y#klQq#jNEn7E1R(FxbV~=6fI*>|#Y7?T)aItcn9M3bN1v zZ@QMY&;gom5kv=_z;n!ZR2`b?FHCuk1(WS!@ClOWBkH}W{!ZZ|9wQ*Z=!oY?03rGa ztxZQwf{&5LV5gG2h_{+Sy*LqCaq>ifpoly=s#9cCC)Ph8whp(|l5H|0a(z``m7o8R z7^$pgmQbCm1KT72=)<03>U{S=L|rp5u!xu6tOgBWH>;Zl1@5wc6*k-BX}vuLhS;vi zO(WT7EVO}^kYPo|z3R>(Y;8S$2LSM7I}s`XVt`VzJ%|S8<=Y`mB^^=6%iK>`KR}KL zfvm1gM-Kv7U8ho)%4J`!7M)KJbkneTjZuQ2 zn}$8-LZF+5Wi>`gaKv<8?0!lB*>nUJGcW;U(-XYOC4g*tVMmwDcEk*xXV;sNHt1$V z>1@!=NNDeJu|YQ@JJ+QPIbtUFW)K3|%qUq1WHS@Ir3-;8WM&M;@OfDsqQl{q^INf(7(U-+PuwMj z&j)v72<*ZK`NN(e82R6WR;J5~ks%hy5?2&Jd|n_6Vla3u=vW*bj?W9DhG4Xv0egl3 zjNuEThF~<$hoYJSWKKO0#u5yhPY;M1LT}SWt)!D77DWw%&)~NRyE92IF?am+d@1v$ zMpmx3+Cp_&Gfoj}F_T4hie6*Du*70k5ACBEoCS+n0l9%8!H6YH=0^umpah~r3;~KI zESHwnPyl{}wPHyp2@vh06qq3pFo{c1PlwB+43qM-ppyiM%oqYBk20)xvYw`J0?Qa* zjd@bcWRk`&V-^{mbPzPr$nU@)}NLFljygr^h` zAX&j+YEKB@l`+!@T1rBArU62ah?+*wJXf`rL3*!({bNF~oWN)yv}L6ez$Il}bfWNU z+)JzsR|iQGUBhItt2JN@0K!`@Ai!`99im2SNlG@vmIpAa*BEbofB{KEY<=K2j$F$S z8jNWGg9i{fF@zq0;9!;q_pV09Ra9#~#y2u6(bYlUz&0@WykS^xu3x~kbumDI;|A8w zTTwrW+{k3R=m7FVAlk$bpx8)pdoV_ReEYwlq{cp`uR$E~bAZD#UA+_W6IjmdOZq`8OzkrG3IqJA55+C)i! zXo}4%pp6Yga+HK7*2L1BC+67LBIr} zt> zEb`GL{(g_hx%Q$LSARPox<`8M;PaE%R`u*Y{tUZY-S#XW+vXd_p5)?3Hx3!O6f5b- zWM7rq^{mKo>2?+}yCBa_uz4`g5$V1>J7_ap9oqVC&`6xm_^IC8?$1r^qA~cG>Fc6K zW{X^v-~^IFCj~B+Fh-%TDzfq*Kgp5{aj%?&=%x?iVs*=5Ue~$Uy?tm)iQ-_QKDz*4qm3R=SE6d6!1n!$NYu>Etg6o{f}V zC)O~3`A?bMUgZuJ?bYBL#g~z$o5TthdU_=@`g|Z-FX5xNh{uy33)$SlX@3nb&-&Jm zA{cPAA$yG0FK5_$7(@f1tB z#a(%v?!0f-aMdtTjOb0LCl(tX4y@jVX6*rX=%LS6d_{O!%zF31!Bw#{^t?h1zzHxDsCBy@mA62`8re>;wo-D`?C1hAy}mIdZkyJxTNpuV&o5 zW%cbzu4c(b7l0sHO%dTfO@dwCphEYGIrI<@Xa)5R3da==e|;Cw`s&l`CQSkc>(w*& zikrjh86G%h3`NNG3@;oPq(Kb#n2wBfKLv7dRs#b#yN934oZ3AqnCMt)2r(6`tMZ{g3ql$*!1`AV~1e_M{{@ayR3J z>WO8dR1KUW>?(ks2&h*w1`#syC*HU#ILxFtrzgqrR~oQqN2ki~1k((gr}nc86HVthl+w z9%5N#nlV5yKE%3&O{zklpGVZhX`(syOa~Im;F+G`(vY7WVePZ+=~^oM?5L`mE@oC7 z^}HEp2uO~y1ml_jL2{Jk$;|K{2eUu6YdU5@04ud?pF>_-d> zc;aiS{cN$c;mfA-W*ZP67QQoVfvK0lc&tA>ual< z?#EeEyila63G+lrHAb6sqIqw8%o2>R1BAejS%+-<7gDo^I^Qr}k+nB+e4bePUvZsr zzsON%?#IE>d_RsN{Hmz{iSY{aIQfQUm}8awee5pdxSF;t`nUyL$*MicH}=PWl5a%b7P6Ruvlbu z$8RuR!d=GZ<*|gji~)l267Dj_gWxglTcH9EimoY-ahDx#`FMnBc53{CB2cy5Qd7(JuG;nDD zD94o?A4ukgNW(+I&$@3wZcpEMH6AQB@C5S|)(FVl!0{CRl)0oBu~nU0B>vKUYiml1 zC0ludd2JFUEyq^gxr@Ep6N(jSj(qa4NMc=^Ta(giH1h=Wej`#^k7iz4rtPg?9J{rF zs_`54-tAe)JU(`N76J&u-DDvOE&AcHSIw(OXxYoTiE`%kv6p9d(OU-~NcQr|D!mPm zU){%j2h?}c=?VwYdh;xRHg(-x1B$(gngqYr5@kr8#|F_pDMd|YviyF0*SO^@-65KlS@R#KEum9+dB*qz;lrqkBWR&bB?=7 z>L3>guIIQLTmgc|Iqnp>JSe1}<47bttmPu4Ur;YD74`iu#5kZ3Auq%@(4M-$9TUNV zI>KMz;R^c&GhGb6s2+Pvyx9L@j0Hvbi!l~-wYbRL2p{AW;V+WIQ9#4{;xhNWp;j-$ zN?!I>GJzcbb#-AGO#ixPdLY5*bu8D#aNVrC=1!V7 z55aXVqU-V%2z-cs8S2yu5vl;8iGEW*GnBL=S?j~b29&*0sIh8s_XappE z&AV0GD<~uo1|z=Zs$sQQ+5KCXK01)DOD$Q8$LjvIqPiM1=GqSqnuUAq z2M7V%1+M)Y^xDyGen#*vS&ykU>%?FGRX`hc&3aL#X0I1{YTbI#ZU9D_`ceotAtH3Q zEXJE{+If@=Np>P(;)-8%1eu zL~uU^6^x+?M?^5eRRMY)Q(tU^L5{g=f-#iTIVM7hcE09=z;i-%-XschPq=2q7|PXr>fB2+X`J?C5MdwOqEIxTU z20-^~(y><4;fnZM^`}i@MBZ-&PjTmg$FKaYKyqsU42-wqOTu?q4OgOn%1gqZV~+zR zrQ7Aps!@sYxi1T@ZZ2{< zfdN-MKLQe#yW;r~K#*J!j(L9o#QIzj$Y<+|VPtIPS~4vi;R`$lytN&T~@EKq-M;YDg(FImh_F!fk3c_Om8 zx4ez9Y3j>9a++Fi%Q1Xiy1H+MzbKMAK;F&O$RAlr>iM+5804QQ&m^*aZLQ@wf}d9iwJknD9^M>pdHEHX|V@rW}lU>(sh ztH^`Ez9SA*_Z!$32P$0l%&;%E!n&wR3y+5?`y^2Ei7ToFvQD+x=+t5UZPm0ioLq{+YOC#tAQGubu$LKRiGSoVelctH>33J(vJy;FPO z)>Q@`f--}>_z?B&P+6AR3mNEagnnR&cOP}}(?D*1AEceBRHw19Kp$kCd$^-8+ZuJ> zFxe}=MuwuJuw6t=ateyqh8Mtr>V;vlQ~p34Tplm7=D@@xyOTQ#wi>LGYh_vf;8wh- z>NFU|?;uf&a6py^1k2Z^*J#TVq`juL zZ9lt4bA@YO%SWo0YGuu}*W%S_h{#W_%{HE)A3ow*L~!>T7>;!P1m6t9k?@nAnjv%^ zrA7~zy{{b=)sH-5l$$2iuOTr?=afl5@{Cb!`@8zNo-rz;#?5fcn|!yci^FA3@=g8} z1Wc3O7B{QE50}~5H*@XTh^Po<;$}n#?@T~`uloqurQ{aeXP`Gm(8}C`TE_#L2Y|6i zNKVZkls|mPjcV-(IV)|fsV-wItMQp@NnZyUZ744vNo$Txq&RTY_OHd z&)SilgRM7MWb_U>L+}$xk-JA&S9#>i-Lg_9{C0v#h#qQL`~G~LpY2g!L|JNT0%+&U zb(7gyzR_MXn|_)McL!ggMxt^}KMgY5SE7+HCH*wW9AAM(c60>&9InHVKi{_#IpDsS z+T2MK=g*lkZ$bY3^QX_;bhA~Rk{@huZ>B4-cJm^&^I5sIyy#yt;6;d9wA2^@zbry| z;#xf(l1o%zjCEaki7_fhkfW4jcnNJpTTy~7H&%~_4a?L+W2_(dEpsCV42#*9;i_Qx zlV6k}!n+Wt%dmv?M2(xI4D*>P8=!l*up3;4nV1Rv9=i96q-TStp!u?V74N-~JP~rM0`l5I_*rh^= zy}!)Qs#Zy}taA14A?ftM!v?t6TydO;{;gObx{3Z^@q6L&!1&ro|FPC(*0t6RV5AW4 z2BJ1I92JfCjHs>ZYG3r|ur{M3%`NixtjFk9bhwg;(V3m2bVyr?(YPu9fv)Go7=0jP zWKPy^)!|>r_UfKHtm9qBw9=On`D0qG4JFjaU~N!yF!YE3x2qfPv<`K>y%ia?g52JU z40$VYJIIg;G-T)p8K=6Avwm4Mu9ddb3NkK}DzV1E)C@ANQ<*)(rNX9~ptA0=W>rr> zUcwtijUW>e(qk~FCSr!pzEQ6Hr4_=)7=aDsrB=zn@D^Rs4IwN!ESrnp5E3Ft{a9)I{(^uPpE;gcGW!z&`snNGufqp>1!RuQw zAZhiXlqdt*#`QP=d%Fy9zd&n5hpbX{vb}7->7>l=4%o(#V+2A11|SYZ5x6frLKWu6 zD78d70kI--<4I|;DQH(njE+P!N3|u%6xsDa@LIt-m|T-a5Gg~hDb=u|CoY*{T^4RPsuTT9%q3>JIzk;K49$Q3^&A9C`fpm+UVv)$uX!w zeQ~cfuV=%*lEYLe<0PfFBBv{I0~L&PRu5qU1$?!&&T0v7^3u>ccA%`ET|pOqI18mh zHnFbV=ve{~M%bbjPPRsbQQ9{-P#_^{3u{j;JVZjt?k!}8>of^oGEM69$<`=phcrbd z1QL)mG0T)e0D?r<;N7CwlgxKW-8$78?mWqYdDzi(?S-ZG;Ap2HU90{!)hY=CG*4>n zTKMWVoNCVkh?m-JniSHWRwJfaw^uyvC4J#sgk?C=NNs@7;c05s*-M9}e*f%OuS~Ok z7T)hQ7Xk?yT~0AH;$1XA$M zJfae3SPO=t>CwEifrOclFq}AsgkBX#SUY21dIz zn_*2#JId?~dp11Lb+Y5?)C+QM^>J@IXfzlfXEmLE3MV1jNvN`r;n!uZIo9S z8Z@tSb-)^4Qak5ZqpB}4H!n^iX|r6SN|{GU+vO64pnfhPHq2#}H`nUl>vC&dY0F$D zr|<}A(_E$|E`4+nZ)A!8$mCnIS-bKmG1Z3t$dD!VxCK#QdW!|C zZO68?^@IAp4_rbwl&y?iQ9*h~HO;dI4SvUqjU*Q>n(`f%+*h-59Bw`HYSkk(2}FFLn&w;Ahd+pskTE}CXzMf^ zg-rPYby{7cNnps2RonZm!TnK6^7a;E;P5dk2)i7}rXMq0l|G?V90Vaj z8Ts-RIgN+Ejztc#=GQDkCs$|?h`wexA;)VP80j0;Wq~z;DokD!Ad7s%EYp?DIN9SH zme~#$2NHuS8!Ak{T40T-h}M>X1r2IT-oB?Y+xM)r+zmD%NB)DU0Sm1@RsV>|!370q zH?T5}`w76bHYVC&=L8<%{Asm!p>@CW2*M|a3 z+ojBzEthe$OBu((2-s*DZ&QL}57`PDLH1b2(~FTLGQ6SFD)g_FShH2~A7oeUnWf`f~=wZ z@-{l%2?NB&NYles4y)eSS_z6N8#y}Xy;)IA*~qa#wJs$>%4YT1zgZ)?Z|1UJbR0#H z&Aet%3<1K;eCRNJBO;OT^(L|Q3-#hB;YeV)jL{o z-vwAuykCSOO?$1w#cV_5hLCz!-vhN(pq!-vB|nUEq+af=Z|b?-FPsTKs#f z(%D5S%?3ZJ1qXHuzE_?3y>;J2{4%^uC3v^^mw%bFn^M{-&Hvf~2SoZ|R~!UF?LBr_?}m5 zD*crX3JJ!>RLl*af^dRtJasZateRI*pi(cabj-7~splT^EDaD-J0_eH?$ijOg&y~& zMi@P{Uy-Fd!KV0kG>$x_c2)VyMxXMg1|(sZu)8{;^00h@_!a46+g%Dcb7d@*GMqA}2 zA#3bgp$F=-uL$2CP=y$g|D#E>=TDkDFMr;w{JKf_-(;2lrZv!ch3XNsEvRZ6xFq;x zHTz9$3;Z%_nZoTQPc2ipz2vC{5Ncf#&Sh6ELTI&q@2N!?t=4O_SY#eldr=(uchy|& zFU~+gq@8^a6rgHv0F{t;u`R~XwrH<5|Iw_l~!Dh$sxD78k0joe*g%Y52fq=w$swxc{yXV`z{-TXSdF z2*u^U2;bL2z4EqImiiZgjAch~(xuhUg$ll76%Y8_3#h=tIX@S8{*!c5Mg3f)n)qs} zsGkd*PdcFLD(Y7{pgvXkm8XuWjDF>XQd1fIib5$>Cs5D&58?ZVPzU??JGJ=_Qioic zidcc~1pmRf^b}LS0>Z4Asb78P`HrbyedqZOK&;qz!ui2nF+%7S``%kI!sr$IJGpci ziX=IKCDQk}y5T*mi?c*R4{9_{B0ZK$zFa;2p7r1a{4xpv4;wF)ZV&|s8!wfv%K(G| zOJ(|UX<|Adv;vPwH>MLtE3iz$Wx8ll;J8xVd)2DAVP#AXxy(xGHlQYPa+#G9`2<=I zfQU3JB@+B}5hPGcSt*g>FVZ~WQmfT~8h`QV)zZBfCux^jEv=Btgq&!#L@C7Zqzm|J zncCasX^IBGr1jD(mh1!?q;IRb_0LwR(?Euz1xqGFt(SbGTKi|~t_k>M35kgO)(K8fbw4pXgtW<#(1&&JH^uASegYqVotV6Q$CIt|3 zls74Wn3VD+MWB|VXi^lClWFg5QMm*Bow{w2ZY%~8lD0@U76Sy&EfTS~7aS(V32c|X zXC%5d)qxU!w(9kPmEmlc!9x2%a7-bCG)w+db=L>h0~7Jf7zB7QZT1WT5KNmrg8+m< znx*qo*C2$@s_ya(LKtn3C&?fbY*I+gJyH#N%POb_fZ)F;CXO6vkLRfP3UPbLQK>?e zLet)>p7_ujP_b8<`aU5+vRAqx2OvoHN;l-B5cD&tesaYcrUrau1uA|PlSP5&XVMKk z7^#OM@YKLwsc4UtzUS2MuJQLv*)M}dx-l~qW|9ZhuRgK{4Lm5_7bB1eI|rqEj{^w4 z2c>(D0|>qcCGK$)15-)c!;}|=fuBp? zDU~wVU*-H<;*RkU7^cz69hLmJx@oX~;RO6LynqLr=TU!z5V<4JY#6KnA3laiZ%Rh_1FJ}J}96B{7pAgxOO5YZ3q$dymZ z+*-Xq3Di8LKi%<5k{NsWilJ(MBC7kUsU}*vqp@&=uHMl zOy;8JGyrLk=QIEz_98hASrH(tcu|(zpsh%t7J5;38ik|~m+9z0ljuNu?=!1!%4HcW z(OvTCWX0E2`CqK=177z80|~*edx8N%@avvnfDrsT1bc6&RV@Bz0rXoX{$~OHKm4-* zk%iOzzdRfNn*i~@2|zhm)Dq)=6CnOK0gxm{l{x-50h~bmZvxPt44`XP{BHul68NJ5 zc%jArCII~*0(xA=|0V$bHR}KLHvuARCkIkO{J-sAw12ujuzF;?ftwzT@doaA1NXJ@ z2JZh=1NXrH5$F_e;Ep$N#~Zlg4czetZoFXQ4czet?sx-tyn#F3z#VVkjyG_}8@Rn5 zU@8H}8@Qu=&hZ9rv>>2k8*KysEe+h2|N9NxtJwd22lw@<@!sut?{>U*JKnqPc6G*k px8uFr@!sut?{>U*JKnn;@7<>E?0E0C`KOEjZ}x8Y`9JR6{!fk@K287t diff --git a/shared/input/language_v1_desc.bin b/shared/input/language_v1_desc.bin index f745b5008da8a0082c3a756547c67b77ce862b12..d813e67e9f447fcb99c0932fd17e88cd70995e4c 100644 GIT binary patch delta 9357 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 Fe*uLX3;+NC diff --git a/shared/input/language_v1beta1_desc.bin b/shared/input/language_v1beta1_desc.bin index 848cb8c6cdadf2ede6ed752cd371edd07d66ab11..63329328151ee180a777433f04dd861de8bcef89 100644 GIT binary patch delta 30 lcmccL!*#!hYl9;*quKWSc1CTc=3LhHTvo>IxvWf|8UU;b3Vi?o delta 28 jcmccL!*#!hYl9>6_PlmR9j4}7*7jUh#_hSROrIJ6pZf|% diff --git a/shared/input/language_v1beta2_desc.bin b/shared/input/language_v1beta2_desc.bin index c0bb5ef8558070887ba72cd1c4a55f8831d440c9..8069e7355ab1e19c013d41bf6d690e97d50971df 100644 GIT binary patch delta 9352 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 diff --git a/shared/input/location_desc.bin b/shared/input/location_desc.bin index 28cf36824845b15b31dee82855132b5e26d48c78..ae282a89b2d351eb3cab2ef7af133145281aec84 100644 GIT binary patch delta 9304 zcma)CdvsJqn$K7FcBfMz4=xa}A>j(cDr8M*xdnf z-P5zm_+W960k;^BC@h2Gum^=%3_gGr5mp#{L_|eV7hMKLR2)3BXFSX7@2h)ncSmq$ z_=D45-TI#O`@X9BD(`L!eg0ACnOcJ`?poeL^+L^ALZN#W1iBUkX!l+IXctE34H7Hg z?b@)G{amS<%_wVxtcb@NQ_T_4|!RpKM(&Lygf)Q(G+2I>5yI(s6?$t;u9-+=)axVv(udw`s{lORRNHDw#>n%`tSn zzL|bO*&!QA_Bqc)Yl@Vawv>}@OU9ei14v81@O;weIhhO$NW1b2n5+~xqZE_Q}Hp+HdR(MJMrk^{B)Ig znucV{^=N)xME2=vRy@`o%jmTV%i6JX%qj~nYRHLvv5d0Vu!>C6SDsUDBJ?skFV^G+M`7|H%V z5c2q#lVyloLuHu;4s2J?Q~mL<#Y6yDC;J$kY!vas>6HL3olU1$`{I{8ucQT z>iIKXq}q^eM)b z>;J;ca#g#NBr{IT^W3%*3fBjq(6EfOxG=1`Ht(bKfUhS>W>uwdfT})vq8C^jHK~R#5Q;J_(i;G^kqsRI`9urKix_76khm>TP?*2Eo3Dh7ObC zHG8pTt|c)h=A!w*FZkwix75Dyi~#7=zE!1%qTcYI%cJ z0}$?3H3#XY$nHD~gKsyL^z&F4e7kADK)J$I1N7}xzdlGSuh^RpNPtJFw718@VBAaA zNS}m=y)-%^9jz6?+pp5EQEUDFyjBL_{=A_K!2N9Km6`+8?h`QuW@EpnWF!YX4iH{Hoo+DIu5%NPIzQGTv z=+El2H)&kI4=L1F?la)D!O%NN*dw-gjp?STRBzjMM`vR^mge*9By1=8pMNe+d&f-g zgIe)6c9CDcMOTc65Vu%DBmIzN=zzW_kihiXgzXNgi`{Dxb?!w|O!*7UN>Wc#jaZ7!1AR%rki`&f$6=2&} z3oO)c6&9+xW=>m2#GV#UHa0q`w4G^l?2fjMhD5X-C!=VSx~-c!42-Ccx@ktQ9-qd( zMN_UiH|V_1Kd{XFiA9{V`fpMHIWzQC=N6dK*?h~K&c=D2jknw|)-7VN8aWHIU1)&R zUU<*|2_IJrKw~0SAZP_26-Cdf1Mkp;0gsAMmE6J!5;Tge;94QJ3M0Ih)XooRrfPVX znyj?~OLUKrL7u{a-OzRDT?){I4Z;k`3R&!qL*oWfQj;Hm&JE(iA@U@7teCM$l^vl| z6E+ocvaOp$$;cchTf0e&u9N@bD+S87bVc5$G8((3kd+r}izpeEW92fsMT{J!K^0_U zw`ov~$8Vrun~wsJVBO}U03;Zk0Z)rz` z<(BLamt2tb5xLKG7n6^v{m1Cl$;a{{cuPB$7r|TFG2v}#A;IUXV+=U1;3Zb@xG4He zz3~ZF^0>c}B^>$_s`sY|{Ruzx7=)k`e&|6$&axXh4)^8;XAW*|}vJWc@kAww06*d%l|dE%jGxKc_p(doGU}{S{TKGha|&b;C)zL@hf>PpE1PX@B`}fNqYZ>WKUHSPvN+5-6@KwJ5S;K{P-!VQ~OWRgz?~Z zuO*PBg?ZN!kWlrEfqT=h^n&tbafc!5!b{cIFX_u4Qq@=8{1uJC`Qh=+)K9Jbilk%L z188oKDc0<6Po+X2u^}!;A{}=aUQNJPn6kq_Uyy48NSLz2KwUZQMi%6LLktZc6Sm(5 zS^3|AaH!qMv?XyxRUP}F{MTR5g?*)akm_-=Du_9Z4QI8CX(=a~ai-r9ZSROX{^`rM zb=RcuK*o8~v#FKqwN0|eju|s1&&vsRzTTQU4^!RAx3Wn7_r0E4LwhWa;~>xW!(^a3 zz;ib-OLghoZ&cNIVPXL8H?YAj$CW351bp2n`u)FtO~0sk-3Zjkfzk}<hNuWv*z?+w9UWL0dv>bTZ9`x-mvMa8;bIcZ9~))ma)4$=@IF!Y zHx#bJ`O#eGic|S#|`wOevG)HfAP6d^sU}DWg-f8u~A1GUM+7AN;G3T^VS|+d8 zb3mO@!_Ux-!_F8&=RFuXoM()_Rq{XhHrvYzerFWjXHs|rskLV)IjcwO20-piIe$y@ zrc@ecFBtWm5wc|`DoQV|T4&YpZ)wqw&-&?!LB##6pPnGWa@Mfi3o=No?pXuvl671u zda;-HnqBXIOaDf<-fMbI77Xk0Vt1nl39frhZ1gw7qcSVF)GT@k9$jZI@N>GLalZh` z(Gp8I?t$A+N>2K$oAiJHJ5vT7OU=+g`FF6SjGb9#iV@)}(A08pR`(nF_M)~}Q=6Sh z#adgPlpS@`9NjH1VeL$k8(wKN)V&rLWC1=9=H9hILenyHz>us?KG1MynK^8@oT4@3 z>vB_E6dtcN`(mRBR^fI~-4F?9CQ@EBJLJK2(}Zw0}rvz;h{lWdV*n4(P?a4?e} zFoXxOY39IX`IUtw;r^4x%Z)eF^EhHp$=Goxn$Ac&nJ8ESyS)=lM8vownT};*3mr5W z6L&hPq_>de2;jpenuFY@Dd&Y;ZHga-<2sy)&UReBSg8}w>SvEM6H%{g*_4dOou-U# zR>D$mbzNub>=^vg?Rqrc>(ItTSF-?B=dL`I1O3ph%OBeU(^i`y_cB|a)hoZ+#8KlI zpEt`H{%cI^PH&MmHrm>na$2#sG~4OeoemqymqxwZ7;_t~8joz-c}_Xch8eLil z%sMuHG$q?RI$1^IV%t~9#gR3!RvjM@GKX+iuZwffmO9<&_3Q)mV<;j%a=q2{zzHW2 z6L?uHv%E!v)?SC)tq3I0xyHm+^fNamC|~P19a1_Z&7G-eCYDUt(UuI>(M?8wnY^B} zmwt72IulLt3!B}NO15ifp z%JmUrojK4=Cy+3B9nwj*=rshj!4!7*CT(wf^p042XS-d9I}dhE*#fZTpr+O1B@VrF z_z`Vtayqa$SjNT3o76%lm9vU3L(t@7iw~6>xPG}& z+4df=^4IJ97M#ZbzDq%~vXyOn!Lx%-(H*r0^EN?*e{BeoK@z&+y zk)N{wQ2hj#^PBHq5ap}ojeCvO8vm7Q~%QxRqrkpxvj-b?C+geAQ(9Y$?n}1B=o*&dXFF=u@0{eH7^Lu!@Ma}@S?qDqI?sI7D!9A%tlV5tla1K(7bSf&()J?Ug}9b_Ta`p6w&J$Or+`F!F>jn~^}=Wzf6KsP z92D8b-sb8bd-(BE+6z3_8hSi(dk^3Xbn@Qb8O^e`%p%82^Gty)UQWY))MGf{Ud}+m z``1kG4hvGdXSoeEknsLB6J3+juJeG?A+F`e$e!)3dBnbv%Ss1Mh)y<Kpql+u>v4?>*>vpCGgb;$vJ>Zvr>tYl1;hi)Mh8qgmM?l;IxbY z7clCZt-t3Y<~U2^ZwUb0bJr*rF@X@lYabwtfJ3JDIw0huCD0&T}y zH5O_tLNJDI1~8L!G7X?eGQ=K?P!b*zNn#TX5->a%GD+2)!x`3r zI(jdGZd0|}={9T34*Cva)%RYem#mWAw1KRm7D^>+$17AxiQAtcnPB=;d>;tw7mMgF zRvTZXXH(WDN>1>Z;s!1V4@;|{m7=Wf+edR$%|6O`-ajEt9o9+v(gUHjrVd&M+eVws+7#w30YzL*WEd zC56U#CYUNIZLFMaL-25&YJP*}M%NK1yD_A_l;YGvOn|JT>>RnmhM@c^m2r$#MyrSe zE`$N8qJ#;a2}l)XWy?Ek2&`&l9iuy=)x;@oi~yvXQnNf$2T^XGoM}T0)7Yd+JE=Ij zDP9%^I>f4)FuBIS%myvROk)>?~;dRyEv7rO~a#UW)>N zY^7@=ZeamHw$j9Fdb5uba};iZ05J*2WhE@fx-91wkM%u^v+7po>bP z_3>0eK5Fy;^`7j?WIt9lHt871o#=B{R4x(_jyvI%h zm9?n@y>xG^Ee_EtYopLO7ot_xMj4s%IVTNdc39o~7Ck@jaJ(UY?WM$PT#Q!TVKS$9 zCMXWmw3sZjv!Zz&YV6yzINA}^zq8h1(Cdm5*=|fYXSC9UXjbF1=vHyrSd6<0t)O?laAAx zSYNzSt-wAC6}T9!z&?u3@Gy{Izv|bR{y0WUub)DmLL@N#R5%@HgVEo>0QoMfKfFUT z#|=<$tgIJUw9wK!N0{u@R_{A>6D6%!{nMpO${${`Z1G&FZs^BUzrUYKXCcNJc0eG_ zISM%nhlw=jC^Jj`#jpwS^b&C_+-P<5)0%H0eDoA$t1YLfNWFQA=0y?h$UxY7y+rBG z3SffzlGb>R%?!PcsM2>SGGm0;ORx1hLKAZBMhRQ5Ba}Z84`uTH&3O=cBiHNRsS&<}JaHP*H>L$%P_f3meh!DOG=lGSr2?Q%^A*aSlCDws2_56%M^cTXLAOay zmVjn#R2A>jy)zn_ogoLO_VV~bTM#e-Y2@iM>{F0n23};}%joRFE}G&9LLcxK83#g( zEJ2sCOD#AHLG1F%fDdbC}Ati9Xc38q^DFRg*uUbFo%-4+Wgs%juKs1;GTSm8TZS^=xC%?{;hchqx`q z+T$Qi)z0aYU6Af|I~PoowGIeohxO=36rp(??9Qzq3k=u}b_Xm>aCERa(dE!%y@MxB zmcO<0Vyt(mch1oh^Sj~<1{k{H4EnHjvFS{)pq@f7qcM5ZSuTQmRrNpVjrqNC3O(g} z;}m+z_p&?XgRJisy;^U2sD;eHarX7A%^%au)Z^YBhIH#ssFNR~^(Va6!wI4jUh83k z=!9;45s0K2c$a(I7>NPkTggg6OnI1QSH3HPP>NYo%`d zN6gd0Uy^Daq{japs84=E}LufeFkkm@(gkI^tc0=hIr;IS*d4&4nf2)t8M?HXNrf>@+*6W7DxbCnxL*b^bHDxwJxDRjn3eg}AC(Ey)Uj zYG2d6Pt?m?FE~B?l3MaP)u@&)$W%wapz&(z1-f0Wx9U(k&zZwO;@?hr-Q!$bJe+Au`ZRO=AU zngyhD(+7`DP-5&%zoOiG+T0!?#*dgbk(?qk>=?X)58+{0Ms6)z z9{J(Q#aGs+1Yhv>^9&!Kv;#@JVdEF3dD}9U6?!#bd&E zT-`N7^HYxrf400INc(HCTh)!w!kliw_8n3?f$SETVHl(^k-AsqT&5>-dc6+7iI`rI zm@M%*ix^ma>b1-CBr|YQ;0FPPm#NZGTJF5ul0be^1S4`a zB%P$s$AB6drC(h);0Xy%v~Iu?5==k_gz0>Cz{Ca(2z+JQ_r)Y#?O9>%_z(Sw^3MwQ Z+Z1lwpWwVJU;=ekOqy&pC-Iz#{{?Az1=j!o diff --git a/shared/input/secretmanager_v1beta1_desc.bin b/shared/input/secretmanager_v1beta1_desc.bin index 4f221353f8750222328290e302d556066b54ba55..2a0931e56513bce04fbbbc40d15eee9808b2f964 100644 GIT binary patch delta 9272 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 delta 4437 zcmai2eQcH08NcUu-urcKOX2MY?QMJeWefDE`2;&j204P@wk=l$T;Wy$*2eV+IE z{hsGM=Xaj>J$-3Y*7F~Zd-AZ@Qdt)pLLWDA3~sfO$)wT? z3UFiQkYpHa`E!P)^tJ*_zaEyY|5ktk9gd^f1>6?L^8fL)US}0TnYc3DQV81(zNe7v zdxK<`wrodP{JGQ%g_w&m1Xco5bbSIXq9e67ffq&Aa%EWokm5;!S@GL-c`4@4$W%e& z3_0Go@=RgO!s)&#jX7hcny+99JG4mzUeaevar^j9B2uhA6eJc1*jA@bmSME6Qy}6% z=_FI9h>rJ7GIfgV95us%@Znb7T#i|FTLm(`7-76(oLh^4AY`j3PN?+`gynbXedTz# zu1g@~K|n~C2p9M!Azh-VSS@iNw6^Qk3M{MJE-=oEk%Vj)Sw+5Sf<#G~n&v<(+uErI zD$rE7GhG;$ZtYALW)ZSe6qk6Apl$8ai5m#nm4*Zf*_DO_3E5>J)154A`X2qn4QQUa zN5F4Uh>$&ELaA3+h>$&^qEaSGF-my1$=Ki& ztZb`C@EE-|4^>XVjf!x(GQ0&U!h1w!zHbuVBMOVvaUL-XcBoebKF|+VVJNFtL~Qja zSz)x+r&}lCvDQ8TITvn zBfbF^JCP>7K)jducif>T2RpW=r!8F8(Z%{;YJ%|zCpvW&&&$(%+zT^5tHGbD} zJl&9>@ru|44`al5T-cL+lN85AO;W9Pva)%@dUp-h)D5Sz8Zi#13pHXKHih2oKq$r& zI$4Xk$rA#F9<34J2~p%{F#^f{HvX(4bc(k)wy|@T(+Eci;ddbIXU?BvOqH4le)73oBlujH`7p|?{4IasIie}j=x%xBydF|9d%z8dG0!CGTUWy zA`(tAs{5+YD_c=;qjX*fR|WjSjL5Hwf)b~zd`je1QC`8(2g|ZU--*CR2t8PVNfTpA z@@-&S--$@J!)%#Wb?6nXh&S;!x4Hu!F-=Bxz$2zf;tqJkK|8b=flmEG6B@EM!=not zx-Bjpf0J&DPe+qWvQ?mz=S&xO{5)6xdUb8>I>mu&JQe-6H;G1-*U+G)dR%S3r|=z5W(O>`*@f@9Uyg zG-dUhEi!ZwLwCr~l_n4QM0AqqkWWODM28H~U(K#Y%vz4>-d0>l9)))T=rmsBRXJ;+ zNz749saD(IVA$|usiE1(63Js}kfAz;yh$F&H2WB;Yt%j$M05D{IVcq^!|>ik5lD{S zVR)mLCMkwtS9la=;18o}l6u@p%YlDV|8y>%Xg!%`u*h&S&0vnyN!adOitP+`Ureun=Mp^=)9wdS^P~!ocHNy zlJ2}uN0W5t4c$|wzshv~bD$>vFQMn$ik_nXnz3uvjUBM@HqO14Hk2iaapxWx913sO zX)?j*X4mJj-k2Tw0)dzH);8Rd{e_X-vu3`>%v87tY)t*74PC;%2$icIacoMY(tndcIU>(dTqx`b(sikA-;%7`n_<@51$(-n68dZa1w3RFqjLFg6J zg_RzX+Publ$$YG8yf!we>CZJ3*IY*$eO^Pdp38G{((cghcc87gLyoD|XtG0&sn)2n zL$ca8Oygr_ncF1t;;-nx-+>+a%rw|qFTg~-dLiF1Z!JKx{$>Fh8X4ri&j=ysHW_ul zIB1e_o6N~o&zkpH%#^xUq9op-@B0Bh`aa`a-LsG*c5or;^j8ac-O5>n8a-zb8XJjm zF9&3BD7?!7O(xhYc{$kOY?`^;9F(YyZ`Lm^!dKr6G)Q&4CIj#2!Xoplns6u509clFI zBTG=6=$CL_w8qJ@`Xyhq)lLj~59@y{L2cr&MA(c3#t6n7mMW&IoETau-MSQ$f0U94 zdNF2sDH(}+xmeIqb|#)#de{ByHmqweUHtHxq_Y_Encd}6XJd>>=usKVP^At%C(eL= zb1BLb172?#!>?^?K#rfFik%pCV^Dv)6eWp4uSbjtGG|_j=IikDo#uJGVf3oUfP+a(^HrrRouiH^Ur*S3~{{t&=uU!BD diff --git a/shared/input/secretmanager_wrapper_desc.bin b/shared/input/secretmanager_wrapper_desc.bin index bbd86c566e1f742baf45c90e99c73932f3b2bfb8..6d9f77488efcc893411d114965ae556f8abbc35d 100644 GIT binary patch delta 9272 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 delta 4437 zcmai2eQcH08NcUu-urcKOX2MY?QMJeWefDE`2;&j204P@wk=l$T;Wy$*2eV+IE z{hsGM=Xaj>J$-3Y*7F~Zd-AZ@Qdt)pLLWDA3~sfO$)wT? z3UFiQkYpHa`E!P)^tJ*_zaEyY|5ktk9gd^f1>6?L^8fL)US}0TnYc3DQV81(zNe7v zdxK<`wrodP{JGQ%g_w&m1Xco5bbSIXq9e67ffq&Aa%EWokm5;!S@GL-c`4@4$W%e& z3_0Go@=RgO!s)&#jX7hcny+99JG4mzUeaevar^j9B2uhA6eJc1*jA@bmSME6Qy}6% z=_FI9h>rJ7GIfgV95us%@Znb7T#i|FTLm(`7-76(oLh^4AY`j3PN?+`gynbXedTz# zu1g@~K|n~C2p9M!Azh-VSS@iNw6^Qk3M{MJE-=oEk%Vj)Sw+5Sf<#G~n&v<(+uErI zD$rE7GhG;$ZtYALW)ZSe6qk6Apl$8ai5m#nm4*Zf*_DO_3E5>J)154A`X2qn4QQUa zN5F4Uh>$&ELaA3+h>$&^qEaSGF-my1$=Ki& ztZb`C@EE-|4^>XVjf!x(GQ0&U!h1w!zHbuVBMOVvaUL-XcBoebKF|+VVJNFtL~Qja zSz)x+r&}lCvDQ8TITvn zBfbF^JCP>7K)jducif>T2RpW=r!8F8(Z%{;YJ%|zCpvW&&&$(%+zT^5tHGbD} zJl&9>@ru|44`al5T-cL+lN85AO;W9Pva)%@dUp-h)D5Sz8Zi#13pHXKHih2oKq$r& zI$4Xk$rA#F9<34J2~p%{F#^f{HvX(4bc(k)wy|@T(+Eci;ddbIXU?BvOqH4le)73oBlujH`7p|?{4IasIie}j=x%xBydF|9d%z8dG0!CGTUWy zA`(tAs{5+YD_c=;qjX*fR|WjSjL5Hwf)b~zd`je1QC`8(2g|ZU--*CR2t8PVNfTpA z@@-&S--$@J!)%#Wb?6nXh&S;!x4Hu!F-=Bxz$2zf;tqJkK|8b=flmEG6B@EM!=not zx-Bjpf0J&DPe+qWvQ?mz=S&xO{5)6xdUb8>I>mu&JQe-6H;G1-*U+G)dR%S3r|=z5W(O>`*@f@9Uyg zG-dUhEi!ZwLwCr~l_n4QM0AqqkWWODM28H~U(K#Y%vz4>-d0>l9)))T=rmsBRXJ;+ zNz749saD(IVA$|usiE1(63Js}kfAz;yh$F&H2WB;Yt%j$M05D{IVcq^!|>ik5lD{S zVR)mLCMkwtS9la=;18o}l6u@p%YlDV|8y>%Xg!%`u*h&S&0vnyN!adOitP+`Ureun=Mp^=)9wdS^P~!ocHNy zlJ2}uN0W5t4c$|wzshv~bD$>vFQMn$ik_nXnz3uvjUBM@HqO14Hk2iaapxWx913sO zX)?j*X4mJj-k2Tw0)dzH);8Rd{e_X-vu3`>%v87tY)t*74PC;%2$icIacoMY(tndcIU>(dTqx`b(sikA-;%7`n_<@51$(-n68dZa1w3RFqjLFg6J zg_RzX+Publ$$YG8yf!we>CZJ3*IY*$eO^Pdp38G{((cghcc87gLyoD|XtG0&sn)2n zL$ca8Oygr_ncF1t;;-nx-+>+a%rw|qFTg~-dLiF1Z!JKx{$>Fh8X4ri&j=ysHW_ul zIB1e_o6N~o&zkpH%#^xUq9op-@B0Bh`aa`a-LsG*c5or;^j8ac-O5>n8a-zb8XJjm zF9&3BD7?!7O(xhYc{$kOY?`^;9F(YyZ`Lm^!dKr6G)Q&4CIj#2!Xoplns6u509clFI zBTG=6=$CL_w8qJ@`Xyhq)lLj~59@y{L2cr&MA(c3#t6n7mMW&IoETau-MSQ$f0U94 zdNF2sDH(}+xmeIqb|#)#de{ByHmqweUHtHxq_Y_Encd}6XJd>>=usKVP^At%C(eL= zb1BLb172?#!>?^?K#rfFik%pCV^Dv)6eWp4uSbjtGG|_j=IikDo#uJGVf3oUfP+a(^HrrRouiH^Ur*S3~{{t&=uU!BD diff --git a/shared/input/showcase_desc.bin b/shared/input/showcase_desc.bin index 91f0e833c3de39a63f3853f52988b9c79d3e2674..9cb28542e27d5cd92267afbc109bf03b4fb9818b 100644 GIT binary patch delta 26872 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� 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 Pt_6&LVRbDqX8r9yj$QD7 diff --git a/shared/input/testing_desc.bin b/shared/input/testing_desc.bin index 383118668b7b29cedbfb108fb247794937543b97..3855138e352d341f33c2b3b533cd947117f9bc34 100644 GIT binary patch delta 10153 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 Xpy@OlcJZ^xw#0OM%%z9;iTC~s40%=* diff --git a/shared/input/vision_v1_desc.bin b/shared/input/vision_v1_desc.bin index a09057736716b25bf97a375ff1bbe251c2a65fdd..8cec9e11a940a51f6d812d433cfe31c7d694ed64 100644 GIT binary patch delta 10348 zcmb7K3wTu3ouB`?cP5jQCl?4|Aju^>#E?t~4$d zpF00@|F83Zp7THXuip%R@1Drkn@Z_|?9Xnd264wj<=KbI=?=$V$j-fu7LF7T{3`qX zwe+WgU{V$>Sf;LflxCf8ohQpW<4cpV>zhcdNKksN#uL~FW~>19bLwJg!umZ~Jpebl+QFLcsrD3Egb_an0A$#Sh;OPiBw zO~!lDiKO0E(WKEnqfCE2ugIafyvj6nezo@drX1?)IzX&-fgI*^I$ch8x}`PIi~r_y z*Qy7bhkBo9^4CTF#;mzhWJS`sxz|ahTb3?QJN@X`0Y>u>@9PYF%#+QKWo=GpYFftqt*s+DGM~^kbabG0GI5WB*zSp zs!3X$+gcqb)8@3bEOnN}Zi&O$VQ?v()Z{yxeSKwK7tL)JQ-NrPN8@_l?kD)1XtnD} z4)a4HA0Z1e9OTw$S)xM+y0pig&Ndwbh0Vp@;+4E+HOV1uagNKbcy|n;>7u3(p#~Cf z@PKccB4tgGgHpXqkrX|N?v&&4Hn7RU=5qIg)L%4ucJaSZ8D;7^>)#bvHGBjuQ zy!p+u%8hArWqFsAUY2NUNyR&`rQW1tRcF7kiIPAgi#6a*~ei=r-aM^W~Jr%}I@wS_KGS8pL(HQXi!sTEu3e6?{4-ISI8M(agM zAAyD}<62P_*{gQ^klG*k?@FnDJ42KxDaBwleJj<4Z95u`O50Y6t#m=jVFNV6GFn0N zhT6WBrk+JpvW<*nu7JU%)4eAjaT!xla;4(wnN+#L5MRfBPB*f zRQ9RuG+ms8gx9FOhbp*^8FN zQ?`yM8+Ea_v(4^Kr0u1S-J5dS?0C1`l}M%S)>z6(MWrl}LFN?FtRg;0433!Ug9d{a zT`aGX!XztnCk37%icGVwaMH1OXUdK(P4uSK&MZwWzmvjM@(AlkB4C-T6+K7qHmoKQ z*37U7-m9sw+y}vXH4PpjFVZCVc(;5YDa=VayL~~%N|VvE8MSc zex8yI_mc>DBmyM&Q^9Z_1j+q0vPxd3NdT=?A(fjFOWy ziD{Wief9zkRxci)VJhQSBEfijPjKny#?;zE&NI4OpZ@CaiAEQCGr*8WIo@6OaT1jb{Ppfx#(&WacNfdhTXF?B2@bXGs(crHhGt%0YL46}?=OAn4vu^kbSHeS^dZk1Yq<8#L0F!h!Y%OZl0rC?c&- z_57InF73-J8iw#bDsp362oAhH8r9@+E(=87+bXk%Rz=^=Ys!)LHWk)+ zG#q(vQ^Q1`2BCLEHN6I!BY7GQy(3iUM~DQ?5vp%QP6*gH^d1HNqE5a>lZL)W;URLL zflV76dLI#b#dF!Zy)=W=pkp+&()LfvDevGp4Ltz=sPFDa^H{TwzAza?ZcPLW$o+^4 z-H-qsB=siQjYqZ%69ld9$b~I|3Fik78QUt!G zo<2ZLj>fwv zO|xg~8_$iK)nq&9)|I*u*-D<0WlR`2w9;= zMc{e$+CiE!_)!tAklQ#7LPo#}Z4hF+Dt?`|S{nqMbBB;2{=gR9lzsDc3euEK!VJqY zS>Uci&?Zq>onL^YO=487{D?eKU~Etu-eJ|{#|fUA`^=!EYDq!afRHq1_^IQvKvDno_o#eZ>62%x{k> z>O;!y@fl$ejQ0490D{pTW^{_(8s=RcRA26+)6s*%%WN$2s;C&JHvCrp~6C94_IdJ1TDlE4!hq3Kz?skEE zLhX5*_FsM?&w?A*i98E#TqlIrxWa-@O(!_?xK0;Zp;IF8p&<27J8|?`a*)iy+zU?m zUM*xVoK{7@B75R#-wRj-&S~EZ0KxM#d!Y$Dr4{;E1U?7PV>@Y_<~f9W#m52%5caHO zo}aprG7SJCYAXxsH{XY}h7FnS)B5+WRJVG-DpW)!UkBegw7l>7c z_+IwrBXloWs|-0*-h?d22Uh1xUKfm^4{_n+pV^ z0Ar1ze)KMVXUZDGEX-lDifas6lV1So8Uy=Y;!z?>?=w`-QHo8zufI@cd7n`=AxFuP zdY=((#P(d7fY&PXJ(_jl+Wv(42;W~@4$rl$?aOTHBHrc(LsUezs@vbAwXTuJ9-~S% z{Ui-h3y#r+>ds>{X)=)9S_~2>v%x5I&rATpaf2~rs9eXrxrkNWYKWT1chpD6=$*4U zisKYjjmOdQXY;T0aYWBU$EjZJIZjh1gV4R=fQ{zkU2ymt=sF|q5 zNvg=$dZ2;fn|B0q8|1)wQ*ID8&2E}FaiV)xauEj%n$E%l>OkbP=3Oma@y;2Y@f36Q z?P4G|u~j#bigZ0YU{q9lcHw|IV4(lqi`zyJ3G-7U@PYdCNxG-(r$(?^j*wO~rGaD_6D8s&pzmBvAo{8}A-pK7Xq?Zpmog24H;QBo=^H4ZFxQbkTtr21rD z%@A--vYJrWs zpwv@>PgL*&T2lRqA;xP;EQ0bA10@}O1vuE|XX=g*C{z8JzgsK<=QE?IL|(6P0R2(f zr)lxnKN>=(D+t+`e>8?v$baYCW3d(b+z8xdQe+dUhfh;t-hi2jqsLKy&(x$y8fGz+ z`rHWHvKNJ*m`lqUWq(MwUUtS$LM+0(XZ$1t2$C~~dl_%$=q;%fPZ;FK}BfKv3OjqUC-CJ1Vh4tIfcD*wMB25qK^x{@*jw68wC74)KjYNfP7KCLv`f!SvDP#wn8-I6%mdrB z`G#Xg8Qf4(cwzA{y&XsG>1n&uiKWugPIUKkf!)=MnI3H1lSswW@mn0s{JK{-$pp5~ zjx2=%zh`1H$J3HhcH}x!jEQt=b9VQ3;d;bUy`r456Pb2s;|>v96P=w-Yg*3^p{eIx zcQf^N9Q)Ekb&SXBF;&Env0tqHwdWxmIRWXqB(g40ZJil*FPs43h;?RdX0$xP=fP4= zipNZJrk|5mHrCORbUI?JPAa~_VXgUEr`?S;S7jZKtlK$NlP-3D-M|_{Q_T?nZ%uS% zdU{#J(&e@<5DiRAVk8(yip1{$)S7R^@0lu zNunE3~{8`arSK9N{JqK&ZHp6R2H#4bUc2 z*pVC5brr#3nOtD?52jowX<>K~!>Ag1##&pQ9vB~PT8_L(-r^*4I`Cx#e0@7{``g6z ziK|AbzKm=#t84U>w^X40J!Rr(Hq*{10zRNsi;@CD@8v(eRxn5p;mJwo|cwcg(i=U9V8uPPPZkK%90iiF1Z#$dKuv;5T z^=)UfUm8ogn{11vW40?Vqr>@}0z(i8CcZ!(^8Fy6l04-5fr)ebe7!5& zmA9Eqd( zAB6brW~e}3i$etFzt5V1-6+ieKjDy_Ia@diqaGMNYX<9Z&BL693*&R97#bOkr;YYl zZztDO_nENXPAyNRovsGApSHQmGYPZ>jh@Ogh}?Y6#Ct})W{8h3nz(RO+Y2-4M30^5 zaoqECy`7B3Q;zKao?nLf`=c^{poq9%JW`*{dc*CQ}j(*MaimHJR=l%O9YSIJSDr;aN*ju_i zobMZc6R*e31KlOj!$k|xyu99xFMcBRYjOT0(65XQ;MV4J!K3k>PUkihbL@pXV;Od` zk7IqYG|SC0j)4897!jGnv8`TNBZg)CA~Aq(t}nQG>}%@9H25H;z{tHt0)&|TruU8j z5N6+R4v)yUxuBP^kKQyf0@z3PbeI~oI9HgR2mTO=WTN(>TN8f!NZGf>J3F~ndaXtx z_d4*Z%3Zv>b2&FY0QN1hPW;UPvvN>Gm-~-`-m!(>0;Rpg+g;0mr)2M$d5KQfn|os! zmX^NN@e(`TPnX<|3H276aPL{z5)AOB>D@m8>MdICzzQG?@TQ4@#b>So5I~2xR-Yhy zzUSqry_gG04^DVaraO&x-rW{&Mdx?V7jDPJb0+UJcM2TfBQKH=RsCE)5I^3HuYOqk z6`K?bm8j2|q${D#>25`Vi>Gng<(A^blkXV6gTm%G3**Heq59W8%2|xB=-9O%BOC>X zOz+{SOn1~nXeLWTJ<0529}$iL`mc8I9{zJfOvzUK2i-ZyU&>h+~1W*l-bfiEhlZ%0QLk6R zmQfL?mtl#AHe*=eJiUnLbpGisRt84t#W9w_KX>8n+(ZhE3N&Wt&KA36x=_~8qnc;Kb@ueO1d4qiH!f6PeBBsEQZ0Vns0l4;avG*C$*y?a=qoOJkisSUP^Cv7>(o~c8w(rO zk#}IwZZy|XxJY+wfJp9jR9Yq%dVVw?QSTf!u5WlGPr~)!5oXIrH~1PPj}WF3&7LdG z_3Eofj78D)c@oZ#^@M0~N%+LMo)9j7;z=BaA2=mtj~y{qi2BVW+-H1uLb92v+`|(< z#-g#~IH@pAnY?19`qojSit9ygv1C6@jp?px~P_ekQtvg{{S67ouEY8FlOgX*0L~7LF+~IlypK8_Mlg6T| f+8jP7Vr`-2;lq7K?Om%*8u-`Dt~wd~!#)2Cw<8#( delta 5535 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 diff --git a/shared/output/ads/googleads/lib/google/ads/google_ads/v19/services.rb b/shared/output/ads/googleads/lib/google/ads/google_ads/v21/services.rb similarity index 80% rename from shared/output/ads/googleads/lib/google/ads/google_ads/v19/services.rb rename to shared/output/ads/googleads/lib/google/ads/google_ads/v21/services.rb index 0b5d06217..9cff6e536 100644 --- a/shared/output/ads/googleads/lib/google/ads/google_ads/v19/services.rb +++ b/shared/output/ads/googleads/lib/google/ads/google_ads/v21/services.rb @@ -16,20 +16,20 @@ # Auto-generated by gapic-generator-ruby. DO NOT EDIT! -require "google/ads/google_ads/v19/services/campaign_service" +require "google/ads/google_ads/v21/services/campaign_service" require "google/ads/google_ads/version" module Google module Ads module GoogleAds - module V19 + module V21 ## # API client module. # # @example Load this package, including all its services, and instantiate a gRPC client # - # require "google/ads/google_ads/v19/services" - # client = ::Google::Ads::GoogleAds::V19::Services::CampaignService::Client.new + # require "google/ads/google_ads/v21/services" + # client = ::Google::Ads::GoogleAds::V21::Services::CampaignService::Client.new # module Services end @@ -39,4 +39,4 @@ module Services end helper_path = ::File.join __dir__, "services", "_helpers.rb" -require "google/ads/google_ads/v19/services/_helpers" if ::File.file? helper_path +require "google/ads/google_ads/v21/services/_helpers" if ::File.file? helper_path diff --git a/shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service.rb b/shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service.rb similarity index 75% rename from shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service.rb rename to shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service.rb index 3c31bb1ac..04fc05b24 100644 --- a/shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service.rb +++ b/shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service.rb @@ -22,22 +22,22 @@ require "google/ads/google_ads/version" -require "google/ads/google_ads/v19/services/campaign_service/credentials" -require "google/ads/google_ads/v19/services/campaign_service/paths" -require "google/ads/google_ads/v19/services/campaign_service/client" +require "google/ads/google_ads/v21/services/campaign_service/credentials" +require "google/ads/google_ads/v21/services/campaign_service/paths" +require "google/ads/google_ads/v21/services/campaign_service/client" module Google module Ads module GoogleAds - module V19 + module V21 module Services ## # Service to manage campaigns. # # @example Load this service and instantiate a gRPC client # - # require "google/ads/google_ads/v19/services/campaign_service" - # client = ::Google::Ads::GoogleAds::V19::Services::CampaignService::Client.new + # require "google/ads/google_ads/v21/services/campaign_service" + # client = ::Google::Ads::GoogleAds::V21::Services::CampaignService::Client.new # module CampaignService end @@ -48,4 +48,4 @@ module CampaignService end helper_path = ::File.join __dir__, "campaign_service", "helpers.rb" -require "google/ads/google_ads/v19/services/campaign_service/helpers" if ::File.file? helper_path +require "google/ads/google_ads/v21/services/campaign_service/helpers" if ::File.file? helper_path diff --git a/shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service/client.rb b/shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service/client.rb similarity index 93% rename from shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service/client.rb rename to shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service/client.rb index ed2a61199..800af28e4 100644 --- a/shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service/client.rb +++ b/shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service/client.rb @@ -17,12 +17,12 @@ # Auto-generated by gapic-generator-ruby. DO NOT EDIT! # require "google/ads/google_ads/error" -require "google/ads/googleads/v19/services/campaign_service_pb" +require "google/ads/googleads/v21/services/campaign_service_pb" module Google module Ads module GoogleAds - module V19 + module V21 module Services module CampaignService ## @@ -45,13 +45,13 @@ class Client ## # Configure the CampaignService Client class. # - # See {::Google::Ads::GoogleAds::V19::Services::CampaignService::Client::Configuration} + # See {::Google::Ads::GoogleAds::V21::Services::CampaignService::Client::Configuration} # for a description of the configuration fields. # # @example # # # Modify the configuration for all CampaignService clients - # ::Google::Ads::GoogleAds::V19::Services::CampaignService::Client.configure do |config| + # ::Google::Ads::GoogleAds::V21::Services::CampaignService::Client.configure do |config| # config.timeout = 10.0 # end # @@ -77,7 +77,7 @@ def self.configure # but structural changes (adding new fields, etc.) are not allowed. Structural changes # should be made on {Client.configure}. # - # See {::Google::Ads::GoogleAds::V19::Services::CampaignService::Client::Configuration} + # See {::Google::Ads::GoogleAds::V21::Services::CampaignService::Client::Configuration} # for a description of the configuration fields. # # @yield [config] Configure the Client client. @@ -105,10 +105,10 @@ def universe_domain # @example # # # Create a client using the default configuration - # client = ::Google::Ads::GoogleAds::V19::Services::CampaignService::Client.new + # client = ::Google::Ads::GoogleAds::V21::Services::CampaignService::Client.new # # # Create a client using a custom configuration - # client = ::Google::Ads::GoogleAds::V19::Services::CampaignService::Client.new do |config| + # client = ::Google::Ads::GoogleAds::V21::Services::CampaignService::Client.new do |config| # config.timeout = 10.0 # end # @@ -120,7 +120,7 @@ def initialize # the gRPC module only when it's required. # See https://github.com/googleapis/toolkit/issues/446 require "gapic/grpc" - require "google/ads/googleads/v19/services/campaign_service_services_pb" + require "google/ads/googleads/v21/services/campaign_service_services_pb" # Create the configuration object @config = Configuration.new Client.configure @@ -144,7 +144,7 @@ def initialize @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id @campaign_service_stub = ::Gapic::ServiceStub.new( - ::Google::Ads::GoogleAds::V19::Services::CampaignService::Stub, + ::Google::Ads::GoogleAds::V21::Services::CampaignService::Stub, credentials: credentials, endpoint: @config.endpoint, endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, @@ -219,9 +219,9 @@ def logger # # @overload mutate_campaigns(request, options = nil) # Pass arguments to `mutate_campaigns` via a request object, either of type - # {::Google::Ads::GoogleAds::V19::Services::MutateCampaignsRequest} or an equivalent Hash. + # {::Google::Ads::GoogleAds::V21::Services::MutateCampaignsRequest} or an equivalent Hash. # - # @param request [::Google::Ads::GoogleAds::V19::Services::MutateCampaignsRequest, ::Hash] + # @param request [::Google::Ads::GoogleAds::V21::Services::MutateCampaignsRequest, ::Hash] # A request object representing the call parameters. Required. To specify no # parameters, or to keep all the default parameter values, pass an empty Hash. # @param options [::Gapic::CallOptions, ::Hash] @@ -234,7 +234,7 @@ def logger # # @param customer_id [::String] # Required. The ID of the customer whose campaigns are being modified. - # @param operations [::Array<::Google::Ads::GoogleAds::V19::Services::CampaignOperation, ::Hash>] + # @param operations [::Array<::Google::Ads::GoogleAds::V21::Services::CampaignOperation, ::Hash>] # Required. The list of operations to perform on individual campaigns. # @param partial_failure [::Boolean] # If true, successful operations will be carried out and invalid @@ -244,37 +244,37 @@ def logger # @param validate_only [::Boolean] # If true, the request is validated but not executed. Only errors are # returned, not results. - # @param response_content_type [::Google::Ads::GoogleAds::V19::Enums::ResponseContentTypeEnum::ResponseContentType] + # @param response_content_type [::Google::Ads::GoogleAds::V21::Enums::ResponseContentTypeEnum::ResponseContentType] # The response content type setting. Determines whether the mutable resource # or just the resource name should be returned post mutation. # # @yield [response, operation] Access the result along with the RPC operation - # @yieldparam response [::Google::Ads::GoogleAds::V19::Services::MutateCampaignsResponse] + # @yieldparam response [::Google::Ads::GoogleAds::V21::Services::MutateCampaignsResponse] # @yieldparam operation [::GRPC::ActiveCall::Operation] # - # @return [::Google::Ads::GoogleAds::V19::Services::MutateCampaignsResponse] + # @return [::Google::Ads::GoogleAds::V21::Services::MutateCampaignsResponse] # # @raise [Google::Ads::GoogleAds::Error] if the RPC is aborted. # # @example Basic example - # require "google/ads/google_ads/v19/services" + # require "google/ads/google_ads/v21/services" # # # Create a client object. The client can be reused for multiple calls. - # client = Google::Ads::GoogleAds::V19::Services::CampaignService::Client.new + # client = Google::Ads::GoogleAds::V21::Services::CampaignService::Client.new # # # Create a request. To set request fields, pass in keyword arguments. - # request = Google::Ads::GoogleAds::V19::Services::MutateCampaignsRequest.new + # request = Google::Ads::GoogleAds::V21::Services::MutateCampaignsRequest.new # # # Call the mutate_campaigns method. # result = client.mutate_campaigns request # - # # The returned object is of type Google::Ads::GoogleAds::V19::Services::MutateCampaignsResponse. + # # The returned object is of type Google::Ads::GoogleAds::V21::Services::MutateCampaignsResponse. # p result # def mutate_campaigns request, options = nil raise ::ArgumentError, "request must be provided" if request.nil? - request = ::Gapic::Protobuf.coerce request, to: ::Google::Ads::GoogleAds::V19::Services::MutateCampaignsRequest + request = ::Gapic::Protobuf.coerce request, to: ::Google::Ads::GoogleAds::V21::Services::MutateCampaignsRequest # Converts hash and nil to an options object options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h @@ -331,9 +331,9 @@ def mutate_campaigns request, options = nil # # @overload enable_p_max_brand_guidelines(request, options = nil) # Pass arguments to `enable_p_max_brand_guidelines` via a request object, either of type - # {::Google::Ads::GoogleAds::V19::Services::EnablePMaxBrandGuidelinesRequest} or an equivalent Hash. + # {::Google::Ads::GoogleAds::V21::Services::EnablePMaxBrandGuidelinesRequest} or an equivalent Hash. # - # @param request [::Google::Ads::GoogleAds::V19::Services::EnablePMaxBrandGuidelinesRequest, ::Hash] + # @param request [::Google::Ads::GoogleAds::V21::Services::EnablePMaxBrandGuidelinesRequest, ::Hash] # A request object representing the call parameters. Required. To specify no # parameters, or to keep all the default parameter values, pass an empty Hash. # @param options [::Gapic::CallOptions, ::Hash] @@ -346,37 +346,37 @@ def mutate_campaigns request, options = nil # # @param customer_id [::String] # Required. The ID of the customer whose campaigns are being enabled. - # @param operations [::Array<::Google::Ads::GoogleAds::V19::Services::EnableOperation, ::Hash>] + # @param operations [::Array<::Google::Ads::GoogleAds::V21::Services::EnableOperation, ::Hash>] # Required. The list of individual campaign operations. A maximum of 10 # enable operations can be executed in a request. # # @yield [response, operation] Access the result along with the RPC operation - # @yieldparam response [::Google::Ads::GoogleAds::V19::Services::EnablePMaxBrandGuidelinesResponse] + # @yieldparam response [::Google::Ads::GoogleAds::V21::Services::EnablePMaxBrandGuidelinesResponse] # @yieldparam operation [::GRPC::ActiveCall::Operation] # - # @return [::Google::Ads::GoogleAds::V19::Services::EnablePMaxBrandGuidelinesResponse] + # @return [::Google::Ads::GoogleAds::V21::Services::EnablePMaxBrandGuidelinesResponse] # # @raise [Google::Ads::GoogleAds::Error] if the RPC is aborted. # # @example Basic example - # require "google/ads/google_ads/v19/services" + # require "google/ads/google_ads/v21/services" # # # Create a client object. The client can be reused for multiple calls. - # client = Google::Ads::GoogleAds::V19::Services::CampaignService::Client.new + # client = Google::Ads::GoogleAds::V21::Services::CampaignService::Client.new # # # Create a request. To set request fields, pass in keyword arguments. - # request = Google::Ads::GoogleAds::V19::Services::EnablePMaxBrandGuidelinesRequest.new + # request = Google::Ads::GoogleAds::V21::Services::EnablePMaxBrandGuidelinesRequest.new # # # Call the enable_p_max_brand_guidelines method. # result = client.enable_p_max_brand_guidelines request # - # # The returned object is of type Google::Ads::GoogleAds::V19::Services::EnablePMaxBrandGuidelinesResponse. + # # The returned object is of type Google::Ads::GoogleAds::V21::Services::EnablePMaxBrandGuidelinesResponse. # p result # def enable_p_max_brand_guidelines request, options = nil raise ::ArgumentError, "request must be provided" if request.nil? - request = ::Gapic::Protobuf.coerce request, to: ::Google::Ads::GoogleAds::V19::Services::EnablePMaxBrandGuidelinesRequest + request = ::Gapic::Protobuf.coerce request, to: ::Google::Ads::GoogleAds::V21::Services::EnablePMaxBrandGuidelinesRequest # Converts hash and nil to an options object options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h @@ -422,7 +422,7 @@ def enable_p_max_brand_guidelines request, options = nil # providing control over timeouts, retry behavior, logging, transport # parameters, and other low-level controls. Certain parameters can also be # applied individually to specific RPCs. See - # {::Google::Ads::GoogleAds::V19::Services::CampaignService::Client::Configuration::Rpcs} + # {::Google::Ads::GoogleAds::V21::Services::CampaignService::Client::Configuration::Rpcs} # for a list of RPCs that can be configured independently. # # Configuration can be applied globally to all clients, or to a single client @@ -433,13 +433,13 @@ def enable_p_max_brand_guidelines request, options = nil # # Modify the global config, setting the timeout for # # mutate_campaigns to 20 seconds, # # and all remaining timeouts to 10 seconds. - # ::Google::Ads::GoogleAds::V19::Services::CampaignService::Client.configure do |config| + # ::Google::Ads::GoogleAds::V21::Services::CampaignService::Client.configure do |config| # config.timeout = 10.0 # config.rpcs.mutate_campaigns.timeout = 20.0 # end # # # Apply the above configuration only to a new client. - # client = ::Google::Ads::GoogleAds::V19::Services::CampaignService::Client.new do |config| + # client = ::Google::Ads::GoogleAds::V21::Services::CampaignService::Client.new do |config| # config.timeout = 10.0 # config.rpcs.mutate_campaigns.timeout = 20.0 # end @@ -473,7 +473,7 @@ def enable_p_max_brand_guidelines request, options = nil # json_key_io: ::File.open("/path/to/keyfile.json") # ) # - # client = ::Google::Ads::GoogleAds::V19::Services::CampaignService::Client.new do |config| + # client = ::Google::Ads::GoogleAds::V21::Services::CampaignService::Client.new do |config| # config.credentials = credentials # end # diff --git a/shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service/credentials.rb b/shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service/credentials.rb similarity index 98% rename from shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service/credentials.rb rename to shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service/credentials.rb index bc5043101..00109331b 100644 --- a/shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service/credentials.rb +++ b/shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service/credentials.rb @@ -21,7 +21,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Services module CampaignService # Credentials for the CampaignService API. diff --git a/shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service/paths.rb b/shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service/paths.rb similarity index 98% rename from shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service/paths.rb rename to shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service/paths.rb index 7635baf79..6a7bf523a 100644 --- a/shared/output/ads/googleads/lib/google/ads/google_ads/v19/services/campaign_service/paths.rb +++ b/shared/output/ads/googleads/lib/google/ads/google_ads/v21/services/campaign_service/paths.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Services module CampaignService # Path helper methods for the CampaignService API. diff --git a/shared/output/ads/googleads/lib/google/ads/googleads/v19/services/campaign_service_pb.rb b/shared/output/ads/googleads/lib/google/ads/googleads/v21/services/campaign_service_pb.rb similarity index 63% rename from shared/output/ads/googleads/lib/google/ads/googleads/v19/services/campaign_service_pb.rb rename to shared/output/ads/googleads/lib/google/ads/googleads/v21/services/campaign_service_pb.rb index da31d882e..da54759b1 100644 --- a/shared/output/ads/googleads/lib/google/ads/googleads/v19/services/campaign_service_pb.rb +++ b/shared/output/ads/googleads/lib/google/ads/googleads/v21/services/campaign_service_pb.rb @@ -1,11 +1,11 @@ # frozen_string_literal: true # Generated by the protocol buffer compiler. DO NOT EDIT! -# source: google/ads/googleads/v19/services/campaign_service.proto +# source: google/ads/googleads/v21/services/campaign_service.proto require 'google/protobuf' -require 'google/ads/googleads/v19/enums/response_content_type_pb' -require 'google/ads/googleads/v19/resources/campaign_pb' +require 'google/ads/googleads/v21/enums/response_content_type_pb' +require 'google/ads/googleads/v21/resources/campaign_pb' require 'google/api/annotations_pb' require 'google/api/client_pb' require 'google/api/field_behavior_pb' @@ -14,7 +14,7 @@ require 'google/rpc/status_pb' -descriptor_data = "\n8google/ads/googleads/v19/services/campaign_service.proto\x12!google.ads.googleads.v19.services\x1a:google/ads/googleads/v19/enums/response_content_type.proto\x1a\x31google/ads/googleads/v19/resources/campaign.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a google/protobuf/field_mask.proto\x1a\x17google/rpc/status.proto\"\x9d\x02\n\x16MutateCampaignsRequest\x12\x18\n\x0b\x63ustomer_id\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12M\n\noperations\x18\x02 \x03(\x0b\x32\x34.google.ads.googleads.v19.services.CampaignOperationB\x03\xe0\x41\x02\x12\x17\n\x0fpartial_failure\x18\x03 \x01(\x08\x12\x15\n\rvalidate_only\x18\x04 \x01(\x08\x12j\n\x15response_content_type\x18\x05 \x01(\x0e\x32K.google.ads.googleads.v19.enums.ResponseContentTypeEnum.ResponseContentType\"\x8b\x02\n\x11\x43\x61mpaignOperation\x12/\n\x0bupdate_mask\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.FieldMask\x12>\n\x06\x63reate\x18\x01 \x01(\x0b\x32,.google.ads.googleads.v19.resources.CampaignH\x00\x12>\n\x06update\x18\x02 \x01(\x0b\x32,.google.ads.googleads.v19.resources.CampaignH\x00\x12\x38\n\x06remove\x18\x03 \x01(\tB&\xfa\x41#\n!googleads.googleapis.com/CampaignH\x00\x42\x0b\n\toperation\"\x96\x01\n\x17MutateCampaignsResponse\x12\x31\n\x15partial_failure_error\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\x12H\n\x07results\x18\x02 \x03(\x0b\x32\x37.google.ads.googleads.v19.services.MutateCampaignResult\"\x95\x01\n\x14MutateCampaignResult\x12=\n\rresource_name\x18\x01 \x01(\tB&\xfa\x41#\n!googleads.googleapis.com/Campaign\x12>\n\x08\x63\x61mpaign\x18\x02 \x01(\x0b\x32,.google.ads.googleads.v19.resources.Campaign\"\x89\x01\n EnablePMaxBrandGuidelinesRequest\x12\x18\n\x0b\x63ustomer_id\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12K\n\noperations\x18\x02 \x03(\x0b\x32\x32.google.ads.googleads.v19.services.EnableOperationB\x03\xe0\x41\x02\"\xb7\x02\n\x0f\x45nableOperation\x12;\n\x08\x63\x61mpaign\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\n!googleads.googleapis.com/Campaign\x12\'\n\x1a\x61uto_populate_brand_assets\x18\x02 \x01(\x08\x42\x03\xe0\x41\x02\x12Q\n\x0c\x62rand_assets\x18\x03 \x01(\x0b\x32\x36.google.ads.googleads.v19.services.BrandCampaignAssetsB\x03\xe0\x41\x01\x12\x1d\n\x10\x66inal_uri_domain\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x17\n\nmain_color\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12\x19\n\x0c\x61\x63\x63\x65nt_color\x18\x06 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0b\x66ont_family\x18\x07 \x01(\tB\x03\xe0\x41\x01\"s\n\x13\x42randCampaignAssets\x12 \n\x13\x62usiness_name_asset\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x17\n\nlogo_asset\x18\x02 \x03(\tB\x03\xe0\x41\x02\x12!\n\x14landscape_logo_asset\x18\x03 \x03(\tB\x03\xe0\x41\x01\"i\n!EnablePMaxBrandGuidelinesResponse\x12\x44\n\x07results\x18\x01 \x03(\x0b\x32\x33.google.ads.googleads.v19.services.EnablementResult\"z\n\x10\x45nablementResult\x12\x38\n\x08\x63\x61mpaign\x18\x01 \x01(\tB&\xfa\x41#\n!googleads.googleapis.com/Campaign\x12,\n\x10\x65nablement_error\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status2\xc9\x04\n\x0f\x43\x61mpaignService\x12\xdd\x01\n\x0fMutateCampaigns\x12\x39.google.ads.googleads.v19.services.MutateCampaignsRequest\x1a:.google.ads.googleads.v19.services.MutateCampaignsResponse\"S\xda\x41\x16\x63ustomer_id,operations\x82\xd3\xe4\x93\x02\x34\"//v19/customers/{customer_id=*}/campaigns:mutate:\x01*\x12\x8e\x02\n\x19\x45nablePMaxBrandGuidelines\x12\x43.google.ads.googleads.v19.services.EnablePMaxBrandGuidelinesRequest\x1a\x44.google.ads.googleads.v19.services.EnablePMaxBrandGuidelinesResponse\"f\xda\x41\x16\x63ustomer_id,operations\x82\xd3\xe4\x93\x02G\"B/v19/customers/{customer_id=*}/campaigns:enablePMaxBrandGuidelines:\x01*\x1a\x45\xca\x41\x18googleads.googleapis.com\xd2\x41\'https://www.googleapis.com/auth/adwordsB\x80\x02\n%com.google.ads.googleads.v19.servicesB\x14\x43\x61mpaignServiceProtoP\x01ZIgoogle.golang.org/genproto/googleapis/ads/googleads/v19/services;services\xa2\x02\x03GAA\xaa\x02!Google.Ads.GoogleAds.V19.Services\xca\x02!Google\\Ads\\GoogleAds\\V19\\Services\xea\x02%Google::Ads::GoogleAds::V19::Servicesb\x06proto3" +descriptor_data = "\n8google/ads/googleads/v21/services/campaign_service.proto\x12!google.ads.googleads.v21.services\x1a:google/ads/googleads/v21/enums/response_content_type.proto\x1a\x31google/ads/googleads/v21/resources/campaign.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a google/protobuf/field_mask.proto\x1a\x17google/rpc/status.proto\"\x9d\x02\n\x16MutateCampaignsRequest\x12\x18\n\x0b\x63ustomer_id\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12M\n\noperations\x18\x02 \x03(\x0b\x32\x34.google.ads.googleads.v21.services.CampaignOperationB\x03\xe0\x41\x02\x12\x17\n\x0fpartial_failure\x18\x03 \x01(\x08\x12\x15\n\rvalidate_only\x18\x04 \x01(\x08\x12j\n\x15response_content_type\x18\x05 \x01(\x0e\x32K.google.ads.googleads.v21.enums.ResponseContentTypeEnum.ResponseContentType\"\x8b\x02\n\x11\x43\x61mpaignOperation\x12/\n\x0bupdate_mask\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.FieldMask\x12>\n\x06\x63reate\x18\x01 \x01(\x0b\x32,.google.ads.googleads.v21.resources.CampaignH\x00\x12>\n\x06update\x18\x02 \x01(\x0b\x32,.google.ads.googleads.v21.resources.CampaignH\x00\x12\x38\n\x06remove\x18\x03 \x01(\tB&\xfa\x41#\n!googleads.googleapis.com/CampaignH\x00\x42\x0b\n\toperation\"\x96\x01\n\x17MutateCampaignsResponse\x12\x31\n\x15partial_failure_error\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\x12H\n\x07results\x18\x02 \x03(\x0b\x32\x37.google.ads.googleads.v21.services.MutateCampaignResult\"\x95\x01\n\x14MutateCampaignResult\x12=\n\rresource_name\x18\x01 \x01(\tB&\xfa\x41#\n!googleads.googleapis.com/Campaign\x12>\n\x08\x63\x61mpaign\x18\x02 \x01(\x0b\x32,.google.ads.googleads.v21.resources.Campaign\"\x89\x01\n EnablePMaxBrandGuidelinesRequest\x12\x18\n\x0b\x63ustomer_id\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12K\n\noperations\x18\x02 \x03(\x0b\x32\x32.google.ads.googleads.v21.services.EnableOperationB\x03\xe0\x41\x02\"\xb7\x02\n\x0f\x45nableOperation\x12;\n\x08\x63\x61mpaign\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\n!googleads.googleapis.com/Campaign\x12\'\n\x1a\x61uto_populate_brand_assets\x18\x02 \x01(\x08\x42\x03\xe0\x41\x02\x12Q\n\x0c\x62rand_assets\x18\x03 \x01(\x0b\x32\x36.google.ads.googleads.v21.services.BrandCampaignAssetsB\x03\xe0\x41\x01\x12\x1d\n\x10\x66inal_uri_domain\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x17\n\nmain_color\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12\x19\n\x0c\x61\x63\x63\x65nt_color\x18\x06 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0b\x66ont_family\x18\x07 \x01(\tB\x03\xe0\x41\x01\"s\n\x13\x42randCampaignAssets\x12 \n\x13\x62usiness_name_asset\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x17\n\nlogo_asset\x18\x02 \x03(\tB\x03\xe0\x41\x02\x12!\n\x14landscape_logo_asset\x18\x03 \x03(\tB\x03\xe0\x41\x01\"i\n!EnablePMaxBrandGuidelinesResponse\x12\x44\n\x07results\x18\x01 \x03(\x0b\x32\x33.google.ads.googleads.v21.services.EnablementResult\"z\n\x10\x45nablementResult\x12\x38\n\x08\x63\x61mpaign\x18\x01 \x01(\tB&\xfa\x41#\n!googleads.googleapis.com/Campaign\x12,\n\x10\x65nablement_error\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status2\xc9\x04\n\x0f\x43\x61mpaignService\x12\xdd\x01\n\x0fMutateCampaigns\x12\x39.google.ads.googleads.v21.services.MutateCampaignsRequest\x1a:.google.ads.googleads.v21.services.MutateCampaignsResponse\"S\xda\x41\x16\x63ustomer_id,operations\x82\xd3\xe4\x93\x02\x34\"//v21/customers/{customer_id=*}/campaigns:mutate:\x01*\x12\x8e\x02\n\x19\x45nablePMaxBrandGuidelines\x12\x43.google.ads.googleads.v21.services.EnablePMaxBrandGuidelinesRequest\x1a\x44.google.ads.googleads.v21.services.EnablePMaxBrandGuidelinesResponse\"f\xda\x41\x16\x63ustomer_id,operations\x82\xd3\xe4\x93\x02G\"B/v21/customers/{customer_id=*}/campaigns:enablePMaxBrandGuidelines:\x01*\x1a\x45\xca\x41\x18googleads.googleapis.com\xd2\x41\'https://www.googleapis.com/auth/adwordsB\x80\x02\n%com.google.ads.googleads.v21.servicesB\x14\x43\x61mpaignServiceProtoP\x01ZIgoogle.golang.org/genproto/googleapis/ads/googleads/v21/services;services\xa2\x02\x03GAA\xaa\x02!Google.Ads.GoogleAds.V21.Services\xca\x02!Google\\Ads\\GoogleAds\\V21\\Services\xea\x02%Google::Ads::GoogleAds::V21::Servicesb\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) @@ -22,17 +22,17 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Services - MutateCampaignsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v19.services.MutateCampaignsRequest").msgclass - CampaignOperation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v19.services.CampaignOperation").msgclass - MutateCampaignsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v19.services.MutateCampaignsResponse").msgclass - MutateCampaignResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v19.services.MutateCampaignResult").msgclass - EnablePMaxBrandGuidelinesRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v19.services.EnablePMaxBrandGuidelinesRequest").msgclass - EnableOperation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v19.services.EnableOperation").msgclass - BrandCampaignAssets = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v19.services.BrandCampaignAssets").msgclass - EnablePMaxBrandGuidelinesResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v19.services.EnablePMaxBrandGuidelinesResponse").msgclass - EnablementResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v19.services.EnablementResult").msgclass + MutateCampaignsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v21.services.MutateCampaignsRequest").msgclass + CampaignOperation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v21.services.CampaignOperation").msgclass + MutateCampaignsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v21.services.MutateCampaignsResponse").msgclass + MutateCampaignResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v21.services.MutateCampaignResult").msgclass + EnablePMaxBrandGuidelinesRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v21.services.EnablePMaxBrandGuidelinesRequest").msgclass + EnableOperation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v21.services.EnableOperation").msgclass + BrandCampaignAssets = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v21.services.BrandCampaignAssets").msgclass + EnablePMaxBrandGuidelinesResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v21.services.EnablePMaxBrandGuidelinesResponse").msgclass + EnablementResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v21.services.EnablementResult").msgclass end end end diff --git a/shared/output/ads/googleads/lib/google/ads/googleads/v19/services/campaign_service_services_pb.rb b/shared/output/ads/googleads/lib/google/ads/googleads/v21/services/campaign_service_services_pb.rb similarity index 85% rename from shared/output/ads/googleads/lib/google/ads/googleads/v19/services/campaign_service_services_pb.rb rename to shared/output/ads/googleads/lib/google/ads/googleads/v21/services/campaign_service_services_pb.rb index f1b59178e..c64cee01a 100644 --- a/shared/output/ads/googleads/lib/google/ads/googleads/v19/services/campaign_service_services_pb.rb +++ b/shared/output/ads/googleads/lib/google/ads/googleads/v21/services/campaign_service_services_pb.rb @@ -1,7 +1,7 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! -# Source: google/ads/googleads/v19/services/campaign_service.proto for package 'Google.Ads.GoogleAds.V19.Services' +# Source: google/ads/googleads/v21/services/campaign_service.proto for package 'Google.Ads.GoogleAds.V21.Services' # Original file comments: -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,12 +17,12 @@ # require 'grpc' -require 'google/ads/googleads/v19/services/campaign_service_pb' +require 'google/ads/googleads/v21/services/campaign_service_pb' module Google module Ads module GoogleAds - module V19 + module V21 module Services module CampaignService # Proto file describing the Campaign service. @@ -34,7 +34,7 @@ class Service self.marshal_class_method = :encode self.unmarshal_class_method = :decode - self.service_name = 'google.ads.googleads.v19.services.CampaignService' + self.service_name = 'google.ads.googleads.v21.services.CampaignService' # Creates, updates, or removes campaigns. Operation statuses are returned. # @@ -74,7 +74,7 @@ class Service # [StringFormatError]() # [StringLengthError]() # [UrlFieldError]() - rpc :MutateCampaigns, ::Google::Ads::GoogleAds::V19::Services::MutateCampaignsRequest, ::Google::Ads::GoogleAds::V19::Services::MutateCampaignsResponse + rpc :MutateCampaigns, ::Google::Ads::GoogleAds::V21::Services::MutateCampaignsRequest, ::Google::Ads::GoogleAds::V21::Services::MutateCampaignsResponse # Enables Brand Guidelines for Performance Max campaigns. # # List of thrown errors: @@ -90,7 +90,7 @@ class Service # [QuotaError]() # [RequestError]() # [ResourceCountLimitExceededError]() - rpc :EnablePMaxBrandGuidelines, ::Google::Ads::GoogleAds::V19::Services::EnablePMaxBrandGuidelinesRequest, ::Google::Ads::GoogleAds::V19::Services::EnablePMaxBrandGuidelinesResponse + rpc :EnablePMaxBrandGuidelines, ::Google::Ads::GoogleAds::V21::Services::EnablePMaxBrandGuidelinesRequest, ::Google::Ads::GoogleAds::V21::Services::EnablePMaxBrandGuidelinesResponse end Stub = Service.rpc_stub_class diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/bidding.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/bidding.rb similarity index 91% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/bidding.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/bidding.rb index 03cea95ee..c1adf3eb7 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/bidding.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/bidding.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Common # Commission is an automatic bidding strategy in which the advertiser pays a # certain portion of the conversion value. @@ -118,6 +118,13 @@ class MaximizeConversions # Minimum bid limit that can be set by the bid strategy. # The limit applies to all keywords managed by the strategy. # Mutable for portfolio bidding strategies only. + # @!attribute [rw] target_roas_tolerance_percent_millis + # @return [::Integer] + # The percent of ROAS(return on advertising spend) degradation tolerance + # allowed to increase traffic diversity and conversion volume, specified in + # millis (for example, 10,000 = 10%). A value of 10,000 means that the + # advertiser can expect ROAS degradation of up to 10% of the specified target + # ROAS. class MaximizeConversionValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -148,7 +155,7 @@ class TargetCpa # Target CPM (cost per thousand impressions) is an automated bidding strategy # that sets bids to optimize performance given the target CPM you set. # @!attribute [rw] target_frequency_goal - # @return [::Google::Ads::GoogleAds::V19::Common::TargetCpmTargetFrequencyGoal] + # @return [::Google::Ads::GoogleAds::V21::Common::TargetCpmTargetFrequencyGoal] # Target Frequency bidding goal details. class TargetCpm include ::Google::Protobuf::MessageExts @@ -161,7 +168,7 @@ class TargetCpm # Target Frequency count representing how many times you want to reach # a single user. # @!attribute [rw] time_unit - # @return [::Google::Ads::GoogleAds::V19::Enums::TargetFrequencyTimeUnitEnum::TargetFrequencyTimeUnit] + # @return [::Google::Ads::GoogleAds::V21::Enums::TargetFrequencyTimeUnitEnum::TargetFrequencyTimeUnit] # Time window expressing the period over which you want to reach # the specified target_count. class TargetCpmTargetFrequencyGoal @@ -173,7 +180,7 @@ class TargetCpmTargetFrequencyGoal # search ads are shown at the top of the first page (or other targeted # location). # @!attribute [rw] location - # @return [::Google::Ads::GoogleAds::V19::Enums::TargetImpressionShareLocationEnum::TargetImpressionShareLocation] + # @return [::Google::Ads::GoogleAds::V21::Enums::TargetImpressionShareLocationEnum::TargetImpressionShareLocation] # The targeted location on the search results page. # @!attribute [rw] location_fraction_micros # @return [::Integer] @@ -205,6 +212,13 @@ class TargetImpressionShare # Minimum bid limit that can be set by the bid strategy. # The limit applies to all keywords managed by the strategy. # This should only be set for portfolio bid strategies. + # @!attribute [rw] target_roas_tolerance_percent_millis + # @return [::Integer] + # The percent of ROAS(return on advertising spend) degradation tolerance + # allowed to increase traffic diversity and conversion volume, specified in + # millis (for example, 10,000 = 10%). A value of 10,000 means that the + # advertiser can expect ROAS degradation of up to 10% of the specified target + # ROAS. This field is only mutable for portfolio bidding strategies. class TargetRoas include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -253,11 +267,11 @@ class PercentCpc # Fixed CPM (cost per thousand impression) bidding strategy. A manual bidding # strategy with a fixed CPM. # @!attribute [rw] goal - # @return [::Google::Ads::GoogleAds::V19::Enums::FixedCpmGoalEnum::FixedCpmGoal] + # @return [::Google::Ads::GoogleAds::V21::Enums::FixedCpmGoalEnum::FixedCpmGoal] # Fixed CPM bidding goal. Determines the exact bidding optimization # parameters. # @!attribute [rw] target_frequency_info - # @return [::Google::Ads::GoogleAds::V19::Common::FixedCpmTargetFrequencyGoalInfo] + # @return [::Google::Ads::GoogleAds::V21::Common::FixedCpmTargetFrequencyGoalInfo] # Target frequency bidding goal details. class FixedCpm include ::Google::Protobuf::MessageExts @@ -271,7 +285,7 @@ class FixedCpm # Target frequency count represents the number of times an advertiser wants # to show the ad to target a single user. # @!attribute [rw] time_unit - # @return [::Google::Ads::GoogleAds::V19::Enums::FixedCpmTargetFrequencyTimeUnitEnum::FixedCpmTargetFrequencyTimeUnit] + # @return [::Google::Ads::GoogleAds::V21::Enums::FixedCpmTargetFrequencyTimeUnitEnum::FixedCpmTargetFrequencyTimeUnit] # Time window expressing the period over which you want to reach # the specified target_count. class FixedCpmTargetFrequencyGoalInfo diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/custom_parameter.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/custom_parameter.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/custom_parameter.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/custom_parameter.rb index 9469deb25..06fbd9e99 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/custom_parameter.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/custom_parameter.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Common # A mapping that can be used by custom parameter tags in a # `tracking_url_template`, `final_urls`, or `mobile_final_urls`. diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/frequency_cap.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/frequency_cap.rb similarity index 89% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/frequency_cap.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/frequency_cap.rb index 56ad641c5..3152b9e7d 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/frequency_cap.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/frequency_cap.rb @@ -20,12 +20,12 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Common # A rule specifying the maximum number of times an ad (or some set of ads) can # be shown to a user over a particular time period. # @!attribute [rw] key - # @return [::Google::Ads::GoogleAds::V19::Common::FrequencyCapKey] + # @return [::Google::Ads::GoogleAds::V21::Common::FrequencyCapKey] # The key of a particular frequency cap. There can be no more # than one frequency cap with the same key. # @!attribute [rw] cap @@ -39,14 +39,14 @@ class FrequencyCapEntry # A group of fields used as keys for a frequency cap. # There can be no more than one frequency cap with the same key. # @!attribute [rw] level - # @return [::Google::Ads::GoogleAds::V19::Enums::FrequencyCapLevelEnum::FrequencyCapLevel] + # @return [::Google::Ads::GoogleAds::V21::Enums::FrequencyCapLevelEnum::FrequencyCapLevel] # The level on which the cap is to be applied (for example, ad group ad, ad # group). The cap is applied to all the entities of this level. # @!attribute [rw] event_type - # @return [::Google::Ads::GoogleAds::V19::Enums::FrequencyCapEventTypeEnum::FrequencyCapEventType] + # @return [::Google::Ads::GoogleAds::V21::Enums::FrequencyCapEventTypeEnum::FrequencyCapEventType] # The type of event that the cap applies to (for example, impression). # @!attribute [rw] time_unit - # @return [::Google::Ads::GoogleAds::V19::Enums::FrequencyCapTimeUnitEnum::FrequencyCapTimeUnit] + # @return [::Google::Ads::GoogleAds::V21::Enums::FrequencyCapTimeUnitEnum::FrequencyCapTimeUnit] # Unit of time the cap is defined at (for example, day, week). # @!attribute [rw] time_length # @return [::Integer] diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/real_time_bidding_setting.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/real_time_bidding_setting.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/real_time_bidding_setting.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/real_time_bidding_setting.rb index ac641bc3a..af63d473f 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/real_time_bidding_setting.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/real_time_bidding_setting.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Common # Settings for Real-Time Bidding, a feature only available for campaigns # targeting the Ad Exchange network. diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/targeting_setting.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/targeting_setting.rb similarity index 91% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/targeting_setting.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/targeting_setting.rb index dd441a818..c55bedb5c 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/common/targeting_setting.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/targeting_setting.rb @@ -20,17 +20,17 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Common # Settings for the targeting-related features, at the campaign and ad group # levels. For more details about the targeting setting, visit # https://support.google.com/google-ads/answer/7365594 # @!attribute [rw] target_restrictions - # @return [::Array<::Google::Ads::GoogleAds::V19::Common::TargetRestriction>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::TargetRestriction>] # The per-targeting-dimension setting to restrict the reach of your campaign # or ad group. # @!attribute [rw] target_restriction_operations - # @return [::Array<::Google::Ads::GoogleAds::V19::Common::TargetRestrictionOperation>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::TargetRestrictionOperation>] # The list of operations changing the target restrictions. # # Adding a target restriction with a targeting dimension that already exists @@ -42,7 +42,7 @@ class TargetingSetting # The list of per-targeting-dimension targeting settings. # @!attribute [rw] targeting_dimension - # @return [::Google::Ads::GoogleAds::V19::Enums::TargetingDimensionEnum::TargetingDimension] + # @return [::Google::Ads::GoogleAds::V21::Enums::TargetingDimensionEnum::TargetingDimension] # The targeting dimension that these settings apply to. # @!attribute [rw] bid_only # @return [::Boolean] @@ -60,10 +60,10 @@ class TargetRestriction # Operation to be performed on a target restriction list in a mutate. # @!attribute [rw] operator - # @return [::Google::Ads::GoogleAds::V19::Common::TargetRestrictionOperation::Operator] + # @return [::Google::Ads::GoogleAds::V21::Common::TargetRestrictionOperation::Operator] # Type of list operation to perform. # @!attribute [rw] value - # @return [::Google::Ads::GoogleAds::V19::Common::TargetRestriction] + # @return [::Google::Ads::GoogleAds::V21::Common::TargetRestriction] # The target restriction being added to or removed from the list. class TargetRestrictionOperation include ::Google::Protobuf::MessageExts diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/third_party_integration_partners.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/third_party_integration_partners.rb new file mode 100644 index 000000000..dbf5a807c --- /dev/null +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/common/third_party_integration_partners.rb @@ -0,0 +1,190 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Ads + module GoogleAds + module V21 + module Common + # Container for Customer level third party integration partners. + # @!attribute [rw] viewability_integration_partners + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::CustomerThirdPartyViewabilityIntegrationPartner>] + # Allowed third party integration partners for YouTube viewability + # verification. + # @!attribute [rw] brand_lift_integration_partners + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::CustomerThirdPartyBrandLiftIntegrationPartner>] + # Allowed third party integration partners for Brand Lift verification. + # @!attribute [rw] brand_safety_integration_partners + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::CustomerThirdPartyBrandSafetyIntegrationPartner>] + # Allowed third party integration partners for brand safety verification. + # @!attribute [rw] reach_integration_partners + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::CustomerThirdPartyReachIntegrationPartner>] + # Allowed third party integration partners for reach verification. + class CustomerThirdPartyIntegrationPartners + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Container for third party viewability integration data for Customer. + # @!attribute [rw] viewability_integration_partner + # @return [::Google::Ads::GoogleAds::V21::Enums::ThirdPartyViewabilityIntegrationPartnerEnum::ThirdPartyViewabilityIntegrationPartner] + # Allowed third party integration partners for YouTube viewability + # verification. + # @!attribute [rw] allow_share_cost + # @return [::Boolean] + # If true, cost data can be shared with this vendor. + class CustomerThirdPartyViewabilityIntegrationPartner + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Container for third party brand safety integration data for Customer. + # @!attribute [rw] brand_safety_integration_partner + # @return [::Google::Ads::GoogleAds::V21::Enums::ThirdPartyBrandSafetyIntegrationPartnerEnum::ThirdPartyBrandSafetyIntegrationPartner] + # Allowed third party integration partners for brand safety verification. + class CustomerThirdPartyBrandSafetyIntegrationPartner + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Container for third party Brand Lift integration data for Customer. + # @!attribute [rw] brand_lift_integration_partner + # @return [::Google::Ads::GoogleAds::V21::Enums::ThirdPartyBrandLiftIntegrationPartnerEnum::ThirdPartyBrandLiftIntegrationPartner] + # Allowed Third Party integration partners for Brand Lift verification. + # @!attribute [rw] allow_share_cost + # @return [::Boolean] + # If true, cost data can be shared with this vendor. + class CustomerThirdPartyBrandLiftIntegrationPartner + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Container for third party reach integration data for Customer. + # @!attribute [rw] reach_integration_partner + # @return [::Google::Ads::GoogleAds::V21::Enums::ThirdPartyReachIntegrationPartnerEnum::ThirdPartyReachIntegrationPartner] + # Allowed Third Party integration partners for reach verification. + # @!attribute [rw] allow_share_cost + # @return [::Boolean] + # If true, cost data can be shared with this vendor. + class CustomerThirdPartyReachIntegrationPartner + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Container for Campaign level third party integration partners. + # @!attribute [rw] viewability_integration_partners + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::CampaignThirdPartyViewabilityIntegrationPartner>] + # Third party integration partners for YouTube viewability + # verification for this Campaign. + # @!attribute [rw] brand_lift_integration_partners + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::CampaignThirdPartyBrandLiftIntegrationPartner>] + # Third party integration partners for Brand Lift verification for this + # Campaign. + # @!attribute [rw] brand_safety_integration_partners + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::CampaignThirdPartyBrandSafetyIntegrationPartner>] + # Third party integration partners for brand safety verification for this + # Campaign. + # @!attribute [rw] reach_integration_partners + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::CampaignThirdPartyReachIntegrationPartner>] + # Third party integration partners for reach verification for this Campaign. + class CampaignThirdPartyIntegrationPartners + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Container for third party viewability integration data for Campaign. + # @!attribute [rw] viewability_integration_partner + # @return [::Google::Ads::GoogleAds::V21::Enums::ThirdPartyViewabilityIntegrationPartnerEnum::ThirdPartyViewabilityIntegrationPartner] + # Allowed third party integration partners for YouTube viewability + # verification. + # @!attribute [rw] viewability_integration_partner_data + # @return [::Google::Ads::GoogleAds::V21::Common::ThirdPartyIntegrationPartnerData] + # Third party partner data for YouTube viewability verification. This is + # optional metadata for partners to join or attach data to Ads campaigns. + # @!attribute [rw] share_cost + # @return [::Boolean] + # If true, then cost data will be shared with this vendor. + class CampaignThirdPartyViewabilityIntegrationPartner + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Container for third party brand safety integration data for Campaign. + # @!attribute [rw] brand_safety_integration_partner + # @return [::Google::Ads::GoogleAds::V21::Enums::ThirdPartyBrandSafetyIntegrationPartnerEnum::ThirdPartyBrandSafetyIntegrationPartner] + # Allowed third party integration partners for brand safety verification. + # @!attribute [rw] brand_safety_integration_partner_data + # @return [::Google::Ads::GoogleAds::V21::Common::ThirdPartyIntegrationPartnerData] + # Third party partner data for YouTube brand safety verification. This is + # optional metadata for partners to join or attach data to Ads campaigns. + class CampaignThirdPartyBrandSafetyIntegrationPartner + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Container for third party Brand Lift integration data for Campaign. + # @!attribute [rw] brand_lift_integration_partner + # @return [::Google::Ads::GoogleAds::V21::Enums::ThirdPartyBrandLiftIntegrationPartnerEnum::ThirdPartyBrandLiftIntegrationPartner] + # Allowed third party integration partners for Brand Lift verification. + # @!attribute [rw] brand_lift_integration_partner_data + # @return [::Google::Ads::GoogleAds::V21::Common::ThirdPartyIntegrationPartnerData] + # Third party partner data for YouTube Brand Lift verification. This is + # optional metadata for partners to join or attach data to Ads campaigns. + # @!attribute [rw] share_cost + # @return [::Boolean] + # If true, then cost data will be shared with this vendor. + class CampaignThirdPartyBrandLiftIntegrationPartner + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Container for third party reach integration data for Campaign. + # @!attribute [rw] reach_integration_partner + # @return [::Google::Ads::GoogleAds::V21::Enums::ThirdPartyReachIntegrationPartnerEnum::ThirdPartyReachIntegrationPartner] + # Allowed third party integration partners for reach verification. + # @!attribute [rw] reach_integration_partner_data + # @return [::Google::Ads::GoogleAds::V21::Common::ThirdPartyIntegrationPartnerData] + # Third party partner data for YouTube Reach verification. This is + # optional metadata for partners to join or attach data to Ads campaigns. + # @!attribute [rw] share_cost + # @return [::Boolean] + # If true, then cost data will be shared with this vendor. + class CampaignThirdPartyReachIntegrationPartner + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Contains third party measurement partner related data for video campaigns. + # @!attribute [rw] client_id + # @return [::String] + # The client ID that allows the measurement partner to join multiple + # campaigns for a particular advertiser. + # @!attribute [rw] third_party_placement_id + # @return [::String] + # The third party placement ID that maps the measurement partner data with a + # campaign (or a group of related campaigns) specific data. + class ThirdPartyIntegrationPartnerData + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + end + end + end +end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/ad_group_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/ad_group_type.rb new file mode 100644 index 000000000..ffe65cd4b --- /dev/null +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/ad_group_type.rb @@ -0,0 +1,98 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Ads + module GoogleAds + module V21 + module Enums + # Defines types of an ad group, specific to a particular campaign channel + # type. This type drives validations that restrict which entities can be + # added to the ad group. + class AdGroupTypeEnum + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum listing the possible types of an ad group. + module AdGroupType + # The type has not been specified. + UNSPECIFIED = 0 + + # The received value is not known in this version. + # + # This is a response-only value. + UNKNOWN = 1 + + # The default ad group type for Search campaigns. + SEARCH_STANDARD = 2 + + # The default ad group type for Display campaigns. + DISPLAY_STANDARD = 3 + + # The ad group type for Shopping campaigns serving standard product ads. + SHOPPING_PRODUCT_ADS = 4 + + # The default ad group type for Hotel campaigns. + HOTEL_ADS = 6 + + # The type for ad groups in Smart Shopping campaigns. + SHOPPING_SMART_ADS = 7 + + # Short unskippable in-stream video ads. + VIDEO_BUMPER = 8 + + # TrueView (skippable) in-stream video ads. + VIDEO_TRUE_VIEW_IN_STREAM = 9 + + # TrueView in-display video ads. + VIDEO_TRUE_VIEW_IN_DISPLAY = 10 + + # Unskippable in-stream video ads. + VIDEO_NON_SKIPPABLE_IN_STREAM = 11 + + # Ad group type for Dynamic Search Ads ad groups. + SEARCH_DYNAMIC_ADS = 13 + + # The type for ad groups in Shopping Comparison Listing campaigns. + SHOPPING_COMPARISON_LISTING_ADS = 14 + + # The ad group type for Promoted Hotel ad groups. + PROMOTED_HOTEL_ADS = 15 + + # Video responsive ad groups. + VIDEO_RESPONSIVE = 16 + + # Video efficient reach ad groups. + VIDEO_EFFICIENT_REACH = 17 + + # Ad group type for Smart campaigns. + SMART_CAMPAIGN_ADS = 18 + + # Ad group type for Travel campaigns. + TRAVEL_ADS = 19 + + # Ad group type for YouTube Audio campaigns. + YOUTUBE_AUDIO = 20 + end + end + end + end + end + end +end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/ad_serving_optimization_status.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/ad_serving_optimization_status.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/ad_serving_optimization_status.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/ad_serving_optimization_status.rb index 5d1d3d6f8..6bb41acb5 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/ad_serving_optimization_status.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/ad_serving_optimization_status.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Possible ad serving statuses of a campaign. class AdServingOptimizationStatusEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/advertising_channel_sub_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/advertising_channel_sub_type.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/advertising_channel_sub_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/advertising_channel_sub_type.rb index f4aad8b94..86523a560 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/advertising_channel_sub_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/advertising_channel_sub_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # An immutable specialization of an Advertising Channel. class AdvertisingChannelSubTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/advertising_channel_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/advertising_channel_type.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/advertising_channel_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/advertising_channel_type.rb index bbf3e56f4..7df452efc 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/advertising_channel_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/advertising_channel_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # The channel type a campaign may target to serve on. class AdvertisingChannelTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/app_campaign_app_store.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/app_campaign_app_store.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/app_campaign_app_store.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/app_campaign_app_store.rb index 075ffff33..333d525be 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/app_campaign_app_store.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/app_campaign_app_store.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # The application store that distributes mobile applications. class AppCampaignAppStoreEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/app_campaign_bidding_strategy_goal_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/app_campaign_bidding_strategy_goal_type.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/app_campaign_bidding_strategy_goal_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/app_campaign_bidding_strategy_goal_type.rb index 3769c24b4..9dbcb934e 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/app_campaign_bidding_strategy_goal_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/app_campaign_bidding_strategy_goal_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing goal towards which the bidding strategy of an # app campaign should optimize for. diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_automation_status.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_automation_status.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_automation_status.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_automation_status.rb index ebc430341..d71c9ecdf 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_automation_status.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_automation_status.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing the status of asset automation. class AssetAutomationStatusEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_automation_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_automation_type.rb similarity index 60% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_automation_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_automation_type.rb index 9a29faed6..ca2bfadb0 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_automation_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_automation_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing the type of asset automation. class AssetAutomationTypeEnum @@ -35,19 +35,25 @@ module AssetAutomationType # Used as a return value only. Represents value unknown in this version. UNKNOWN = 1 - # Text asset automation includes headlines and descriptions. - # By default, advertisers are opted-in for Performance Max and + # Text asset automation (text customization) includes headlines and + # descriptions, allowing Google to create customized text assets using your + # existing ads, landing page copy, and generative AI across your campaign's + # ads. By default, advertisers are opted-in for Performance Max and # opted-out for Search. + # + # Contrast this with `FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION`, which + # dynamically generates text assets to match the content of dynamically + # selected landing pages when final URL expansion is active. TEXT_ASSET_AUTOMATION = 2 # Converts horizontal video assets to vertical orientation using # content-aware technology. By default, advertisers are opted in for - # DemandGenVideoResponsiveAd. + # DemandGenVideoResponsiveAdInfo. GENERATE_VERTICAL_YOUTUBE_VIDEOS = 3 # Shortens video assets to better capture user attention using # content-aware technology. By default, advertisers are opted in for - # DemandGenVideoResponsiveAd. + # DemandGenVideoResponsiveAdInfo. GENERATE_SHORTER_YOUTUBE_VIDEOS = 4 # Generates a preview of the landing page shown in the engagement panel. @@ -61,6 +67,21 @@ module AssetAutomationType # Generates video enhancements (vertical and shorter videos) for PMax # campaigns. Opted in by default. GENERATE_ENHANCED_YOUTUBE_VIDEOS = 6 + + # Controls automation for text assets related to Final URL expansion. This + # includes automatically creating dynamic landing pages from the final URL + # and generating text assets from the content of those landing pages. This + # setting is turned OFF by default for Search campaigns, but it is turned + # ON by default for Performance Max campaigns. + # + # Enabling final URL expansion also enables text asset automation. There is + # no way to opt out of text asset automation and still use final URL + # expansion. + # + # Contrast this with standard `TEXT_ASSET_AUTOMATION` (text customization), + # which customizes copy across all ads in the campaign even when final URL + # expansion does not occur. + FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION = 11 end end end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_field_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_field_type.rb similarity index 97% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_field_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_field_type.rb index f4ed3d0a0..0e8f8a56d 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_field_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_field_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing the possible placements of an asset. class AssetFieldTypeEnum @@ -126,6 +126,9 @@ module AssetFieldType # The asset is linked for use as a tall portrait marketing image. TALL_PORTRAIT_MARKETING_IMAGE = 32 + + # The asset is linked for use as related YouTube videos. + RELATED_YOUTUBE_VIDEOS = 33 end end end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_set_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_set_type.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_set_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_set_type.rb index e52d9e17d..1c0debf21 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/asset_set_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/asset_set_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing possible types of an asset set. class AssetSetTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/bidding_strategy_system_status.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/bidding_strategy_system_status.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/bidding_strategy_system_status.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/bidding_strategy_system_status.rb index 2770a5aa1..38bf3501a 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/bidding_strategy_system_status.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/bidding_strategy_system_status.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Message describing BiddingStrategy system statuses. class BiddingStrategySystemStatusEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/bidding_strategy_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/bidding_strategy_type.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/bidding_strategy_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/bidding_strategy_type.rb index 5a9d616a8..b5488a657 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/bidding_strategy_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/bidding_strategy_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing possible bidding strategy types. class BiddingStrategyTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/brand_safety_suitability.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/brand_safety_suitability.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/brand_safety_suitability.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/brand_safety_suitability.rb index 81fea24a5..9bb9a9140 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/brand_safety_suitability.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/brand_safety_suitability.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum with 3-Tier brand safety suitability control. class BrandSafetySuitabilityEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_experiment_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_experiment_type.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_experiment_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_experiment_type.rb index a67a37645..c3788d6f7 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_experiment_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_experiment_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing campaign experiment type. class CampaignExperimentTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_keyword_match_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_keyword_match_type.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_keyword_match_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_keyword_match_type.rb index ae91a57ff..b6da68071 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_keyword_match_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_keyword_match_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing keyword match type. class CampaignKeywordMatchTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_primary_status.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_primary_status.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_primary_status.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_primary_status.rb index 98883303e..00e957012 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_primary_status.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_primary_status.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing possible campaign primary status. class CampaignPrimaryStatusEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_primary_status_reason.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_primary_status_reason.rb similarity index 97% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_primary_status_reason.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_primary_status_reason.rb index 046131524..688360428 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_primary_status_reason.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_primary_status_reason.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing possible campaign primary status reasons. class CampaignPrimaryStatusReasonEnum @@ -154,6 +154,10 @@ module CampaignPrimaryStatusReason # All asset groups in this campaign are paused. ASSET_GROUPS_PAUSED = 38 + + # The campaign has location restrictions but does not specify location + # targeting. + MISSING_LOCATION_TARGETING = 39 end end end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_serving_status.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_serving_status.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_serving_status.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_serving_status.rb index aa9a256b9..2c1f0eb86 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_serving_status.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_serving_status.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Message describing Campaign serving statuses. class CampaignServingStatusEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_status.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_status.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_status.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_status.rb index 22d4468d7..483109338 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/campaign_status.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/campaign_status.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing possible statuses of a campaign. class CampaignStatusEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/eu_political_advertising_status.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/eu_political_advertising_status.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/eu_political_advertising_status.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/eu_political_advertising_status.rb index 2dd789a58..f41f07d4c 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/eu_political_advertising_status.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/eu_political_advertising_status.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing whether or not the campaign contains political # advertising targeted towards the European Union. diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/fixed_cpm_goal.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/fixed_cpm_goal.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/fixed_cpm_goal.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/fixed_cpm_goal.rb index 8be626837..fffcac633 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/fixed_cpm_goal.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/fixed_cpm_goal.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for describing the goal of the Fixed CPM bidding strategy. class FixedCpmGoalEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/fixed_cpm_target_frequency_time_unit.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/fixed_cpm_target_frequency_time_unit.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/fixed_cpm_target_frequency_time_unit.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/fixed_cpm_target_frequency_time_unit.rb index 4f381fdfc..172eb0326 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/fixed_cpm_target_frequency_time_unit.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/fixed_cpm_target_frequency_time_unit.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing bidding goal target frequency time units. class FixedCpmTargetFrequencyTimeUnitEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/frequency_cap_event_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/frequency_cap_event_type.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/frequency_cap_event_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/frequency_cap_event_type.rb index ca7d32806..da826bfdf 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/frequency_cap_event_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/frequency_cap_event_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing the type of event that the cap applies to. class FrequencyCapEventTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/frequency_cap_level.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/frequency_cap_level.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/frequency_cap_level.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/frequency_cap_level.rb index 24871520b..d6a2b3604 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/frequency_cap_level.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/frequency_cap_level.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing the level on which the cap is to be applied. class FrequencyCapLevelEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/frequency_cap_time_unit.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/frequency_cap_time_unit.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/frequency_cap_time_unit.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/frequency_cap_time_unit.rb index 82a524390..df7786057 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/frequency_cap_time_unit.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/frequency_cap_time_unit.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing the unit of time the cap is defined at. class FrequencyCapTimeUnitEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/listing_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/listing_type.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/listing_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/listing_type.rb index c3201cc32..9109f7ff5 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/listing_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/listing_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing possible listing types. class ListingTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/location_source_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/location_source_type.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/location_source_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/location_source_type.rb index 91570109d..f5ccbd684 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/location_source_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/location_source_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Used to distinguish the location source type. class LocationSourceTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/negative_geo_target_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/negative_geo_target_type.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/negative_geo_target_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/negative_geo_target_type.rb index 01e5db863..fd4cd4790 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/negative_geo_target_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/negative_geo_target_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing possible negative geo target types. class NegativeGeoTargetTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/non_skippable_max_duration.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/non_skippable_max_duration.rb new file mode 100644 index 000000000..bc7769889 --- /dev/null +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/non_skippable_max_duration.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Ads + module GoogleAds + module V21 + module Enums + # Container for enum describing the allowed maximum duration values for videos + # used in non-skippable video responsive ads. + class NonSkippableMaxDurationEnum + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum describing the allowed maximum duration values for videos used in + # non-skippable video responsive ads. + module NonSkippableMaxDuration + # Not specified. + UNSPECIFIED = 0 + + # Used for return value only. Represents value unknown in this version. + UNKNOWN = 1 + + # Indicates that non-skippable ads must be at most 15 seconds long. + MAX_DURATION_FIFTEEN_SECONDS = 2 + + # Indicates that non-skippable ads must be at most 30 seconds long. + MAX_DURATION_THIRTY_SECONDS = 3 + + # Indicates that non-skippable ads must be at most 60 seconds long. + MAX_DURATION_SIXTY_SECONDS = 4 + end + end + end + end + end + end +end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/non_skippable_min_duration.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/non_skippable_min_duration.rb new file mode 100644 index 000000000..ca45c2c95 --- /dev/null +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/non_skippable_min_duration.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Ads + module GoogleAds + module V21 + module Enums + # Container for enum describing the allowed minimum duration values for videos + # used in non-skippable video responsive ads. + class NonSkippableMinDurationEnum + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum describing the allowed minimum duration values for videos used in + # non-skippable video responsive ads. + module NonSkippableMinDuration + # Not specified. + UNSPECIFIED = 0 + + # Used for return value only. Represents value unknown in this version. + UNKNOWN = 1 + + # Indicates that non-skippable ads must be at least 5 seconds long. + MIN_DURATION_FIVE_SECONDS = 2 + + # Indicates that non-skippable ads must be at least 7 seconds long. + MIN_DURATION_SEVEN_SECONDS = 3 + + # Indicates that non-skippable ads must be at least 16 seconds long. + MIN_DURATION_SIXTEEN_SECONDS = 4 + + # Indicates that non-skippable ads must be at least 31 seconds long. + MIN_DURATION_THIRTY_ONE_SECONDS = 5 + end + end + end + end + end + end +end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/optimization_goal_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/optimization_goal_type.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/optimization_goal_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/optimization_goal_type.rb index 644dee22b..12387567b 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/optimization_goal_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/optimization_goal_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing the type of optimization goal. class OptimizationGoalTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/payment_mode.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/payment_mode.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/payment_mode.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/payment_mode.rb index ae5b2bdf5..6ae4a97b7 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/payment_mode.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/payment_mode.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing possible payment modes. class PaymentModeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/performance_max_upgrade_status.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/performance_max_upgrade_status.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/performance_max_upgrade_status.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/performance_max_upgrade_status.rb index 86b17a406..8c322eeb1 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/performance_max_upgrade_status.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/performance_max_upgrade_status.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Performance Max Upgrade status for campaign. class PerformanceMaxUpgradeStatusEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/positive_geo_target_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/positive_geo_target_type.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/positive_geo_target_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/positive_geo_target_type.rb index 837f0c93a..a90c83743 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/positive_geo_target_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/positive_geo_target_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing possible positive geo target types. class PositiveGeoTargetTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/response_content_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/response_content_type.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/response_content_type.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/response_content_type.rb index 220d18beb..2212318f1 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/response_content_type.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/response_content_type.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for possible response content types. class ResponseContentTypeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/target_frequency_time_unit.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/target_frequency_time_unit.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/target_frequency_time_unit.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/target_frequency_time_unit.rb index e48bff8d9..19ab4f6f3 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/target_frequency_time_unit.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/target_frequency_time_unit.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing bidding goal Target Frequency time units. class TargetFrequencyTimeUnitEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/target_impression_share_location.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/target_impression_share_location.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/target_impression_share_location.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/target_impression_share_location.rb index 6e6e3aebc..d8c58e03b 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/target_impression_share_location.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/target_impression_share_location.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # Container for enum describing where on the first search results page the # automated bidding system should target impressions for the diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/targeting_dimension.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/targeting_dimension.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/targeting_dimension.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/targeting_dimension.rb index 2c3db259d..0a619737a 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/targeting_dimension.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/targeting_dimension.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # The dimensions that can be targeted. class TargetingDimensionEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_brand_lift_integration_partner.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_brand_lift_integration_partner.rb new file mode 100644 index 000000000..de464d051 --- /dev/null +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_brand_lift_integration_partner.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Ads + module GoogleAds + module V21 + module Enums + # Container for enum describing available third party integration partners for + # Brand Lift verification. + class ThirdPartyBrandLiftIntegrationPartnerEnum + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum describing available third party integration partners for Brand Lift + # verification. + module ThirdPartyBrandLiftIntegrationPartner + # Not specified. + UNSPECIFIED = 0 + + # Used for return value only. Represents value unknown in this version. + UNKNOWN = 1 + + # Kantar + KANTAR_MILLWARD_BROWN = 2 + + # Dynata + DYNATA = 3 + + # Intage + INTAGE = 4 + + # Macromill + MACROMILL = 5 + end + end + end + end + end + end +end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_brand_safety_integration_partner.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_brand_safety_integration_partner.rb new file mode 100644 index 000000000..40b7c39c7 --- /dev/null +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_brand_safety_integration_partner.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Ads + module GoogleAds + module V21 + module Enums + # Container for enum describing available third party integration partners for + # brand safety verification. + class ThirdPartyBrandSafetyIntegrationPartnerEnum + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum describing available third party integration partners for brand safety + # verification. + module ThirdPartyBrandSafetyIntegrationPartner + # Not specified. + UNSPECIFIED = 0 + + # Used for return value only. Represents value unknown in this version. + UNKNOWN = 1 + + # DoubleVerify. + DOUBLE_VERIFY = 2 + + # Integral Ad Science. + INTEGRAL_AD_SCIENCE = 3 + + # Zefr. + ZEFR = 4 + end + end + end + end + end + end +end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_reach_integration_partner.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_reach_integration_partner.rb new file mode 100644 index 000000000..409ac6552 --- /dev/null +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_reach_integration_partner.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Ads + module GoogleAds + module V21 + module Enums + # Container for enum describing available third party integration partners for + # reach verification. + class ThirdPartyReachIntegrationPartnerEnum + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum describing available third party integration partners for reach + # verification. + module ThirdPartyReachIntegrationPartner + # Not specified. + UNSPECIFIED = 0 + + # Used for return value only. Represents value unknown in this version. + UNKNOWN = 1 + + # Nielsen. + NIELSEN = 2 + + # Comscore. + COMSCORE = 3 + + # Kantar. + KANTAR_MILLWARD_BROWN = 4 + + # Video Research. + VIDEO_RESEARCH = 5 + + # Gemius. + GEMIUS = 6 + + # MediaScope. + MEDIA_SCOPE = 7 + + # AudienceProject + AUDIENCE_PROJECT = 8 + + # VideoAmp + VIDEO_AMP = 9 + + # iSpot.tv + ISPOT_TV = 10 + end + end + end + end + end + end +end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_viewability_integration_partner.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_viewability_integration_partner.rb new file mode 100644 index 000000000..c282477bf --- /dev/null +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/third_party_viewability_integration_partner.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Ads + module GoogleAds + module V21 + module Enums + # Container for enum describing available third party integration partners for + # YouTube viewability verification. + class ThirdPartyViewabilityIntegrationPartnerEnum + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum describing available third party integration partners for YouTube + # viewability verification. + module ThirdPartyViewabilityIntegrationPartner + # Not specified. + UNSPECIFIED = 0 + + # Used for return value only. Represents value unknown in this version. + UNKNOWN = 1 + + # DoubleVerify. + DOUBLE_VERIFY = 2 + + # Integral Ad Science. + INTEGRAL_AD_SCIENCE = 3 + end + end + end + end + end + end +end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/vanity_pharma_display_url_mode.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/vanity_pharma_display_url_mode.rb similarity index 98% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/vanity_pharma_display_url_mode.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/vanity_pharma_display_url_mode.rb index 3283f9de6..ff8660b7c 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/vanity_pharma_display_url_mode.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/vanity_pharma_display_url_mode.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # The display mode for vanity pharma URLs. class VanityPharmaDisplayUrlModeEnum diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/vanity_pharma_text.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/vanity_pharma_text.rb similarity index 99% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/vanity_pharma_text.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/vanity_pharma_text.rb index d5bc96a48..9ac6f2869 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/enums/vanity_pharma_text.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/vanity_pharma_text.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Enums # The text that will be displayed in display URL of the text ad when website # description is the selected display mode for vanity pharma URLs. diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_format_restriction.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_format_restriction.rb new file mode 100644 index 000000000..9670384ad --- /dev/null +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_format_restriction.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Ads + module GoogleAds + module V21 + module Enums + # Container for enum describing format restrictions for video responsive ads in + # video campaigns. + class VideoAdFormatRestrictionEnum + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum describing format restrictions for responsive ads in video campaigns. + module VideoAdFormatRestriction + # Not specified. + UNSPECIFIED = 0 + + # Used for return value only. Represents value unknown in this version. + UNKNOWN = 1 + + # Non-skippable in-stream video responsive ad. + NON_SKIPPABLE_IN_STREAM = 2 + end + end + end + end + end + end +end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_sequence_interaction_type.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_sequence_interaction_type.rb new file mode 100644 index 000000000..56464d0c9 --- /dev/null +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_sequence_interaction_type.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Ads + module GoogleAds + module V21 + module Enums + # Container for enum describing an interaction between a viewer and a video in + # a video ad sequence. + class VideoAdSequenceInteractionTypeEnum + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum describing an interaction between a viewer and a video in a video ad + # sequence. + module VideoAdSequenceInteractionType + # Not specified. + UNSPECIFIED = 0 + + # Used for return value only. Represents value unknown in this version. + UNKNOWN = 1 + + # The viewer engaged with or watched at least 30 seconds of the ad (or the + # entire ad, if it was less than 30 seconds). Only available for campaigns + # using Target CPM as the bidding strategy and skippable in-stream ads as + # the ad format. + PAID_VIEW = 2 + + # The viewer skipped the ad. Only available for campaigns using Target CPM + # as the bidding strategy and skippable in-stream ads as the ad format. + SKIP = 3 + + # The ad was shown to the viewer. + IMPRESSION = 4 + + # An ad impression that was not immediately skipped, but didn't reach the + # billable event either. + ENGAGED_IMPRESSION = 5 + end + end + end + end + end + end +end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_sequence_minimum_duration.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_sequence_minimum_duration.rb new file mode 100644 index 000000000..4e41d9cd5 --- /dev/null +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/enums/video_ad_sequence_minimum_duration.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Ads + module GoogleAds + module V21 + module Enums + # Container for enum describing possible times after starting a video ad + # sequence when a user is eligible to repeat the sequence. + class VideoAdSequenceMinimumDurationEnum + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum describing possible times after starting a video ad sequence when a + # user is eligible to repeat the sequence. + module VideoAdSequenceMinimumDuration + # Not specified. + UNSPECIFIED = 0 + + # Used for return value only. Represents value unknown in this version. + UNKNOWN = 1 + + # Users are eligible to restart a sequence once they have completed the + # sequence and at least 7 days have passed since sequence start. + WEEK = 2 + + # Users are eligible to restart a sequence once at least 30 days have + # passed since sequence start. Users are eligible to start the sequence + # again even if they haven't completed the sequence. + MONTH = 3 + end + end + end + end + end + end +end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/resources/campaign.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/resources/campaign.rb similarity index 74% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/resources/campaign.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/resources/campaign.rb index 48823e46d..8dac7965f 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/resources/campaign.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/resources/campaign.rb @@ -20,7 +20,7 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Resources # A campaign. # @!attribute [rw] resource_name @@ -42,35 +42,35 @@ module Resources # It must not contain any null (code point 0x0), NL line feed # (code point 0xA) or carriage return (code point 0xD) characters. # @!attribute [r] primary_status - # @return [::Google::Ads::GoogleAds::V19::Enums::CampaignPrimaryStatusEnum::CampaignPrimaryStatus] + # @return [::Google::Ads::GoogleAds::V21::Enums::CampaignPrimaryStatusEnum::CampaignPrimaryStatus] # Output only. The primary status of the campaign. # # Provides insight into why a campaign is not serving or not serving # optimally. Modification to the campaign and its related entities might take # a while to be reflected in this status. # @!attribute [r] primary_status_reasons - # @return [::Array<::Google::Ads::GoogleAds::V19::Enums::CampaignPrimaryStatusReasonEnum::CampaignPrimaryStatusReason>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Enums::CampaignPrimaryStatusReasonEnum::CampaignPrimaryStatusReason>] # Output only. The primary status reasons of the campaign. # # Provides insight into why a campaign is not serving or not serving # optimally. These reasons are aggregated to determine an overall # CampaignPrimaryStatus. # @!attribute [rw] status - # @return [::Google::Ads::GoogleAds::V19::Enums::CampaignStatusEnum::CampaignStatus] + # @return [::Google::Ads::GoogleAds::V21::Enums::CampaignStatusEnum::CampaignStatus] # The status of the campaign. # # When a new campaign is added, the status defaults to ENABLED. # @!attribute [r] serving_status - # @return [::Google::Ads::GoogleAds::V19::Enums::CampaignServingStatusEnum::CampaignServingStatus] + # @return [::Google::Ads::GoogleAds::V21::Enums::CampaignServingStatusEnum::CampaignServingStatus] # Output only. The ad serving status of the campaign. # @!attribute [r] bidding_strategy_system_status - # @return [::Google::Ads::GoogleAds::V19::Enums::BiddingStrategySystemStatusEnum::BiddingStrategySystemStatus] + # @return [::Google::Ads::GoogleAds::V21::Enums::BiddingStrategySystemStatusEnum::BiddingStrategySystemStatus] # Output only. The system status of the campaign's bidding strategy. # @!attribute [rw] ad_serving_optimization_status - # @return [::Google::Ads::GoogleAds::V19::Enums::AdServingOptimizationStatusEnum::AdServingOptimizationStatus] + # @return [::Google::Ads::GoogleAds::V21::Enums::AdServingOptimizationStatusEnum::AdServingOptimizationStatus] # The ad serving optimization status of the campaign. # @!attribute [rw] advertising_channel_type - # @return [::Google::Ads::GoogleAds::V19::Enums::AdvertisingChannelTypeEnum::AdvertisingChannelType] + # @return [::Google::Ads::GoogleAds::V21::Enums::AdvertisingChannelTypeEnum::AdvertisingChannelType] # Immutable. The primary serving target for ads within the campaign. # The targeting options can be refined in `network_settings`. # @@ -80,7 +80,7 @@ module Resources # Can be set only when creating campaigns. # After the campaign is created, the field can not be changed. # @!attribute [rw] advertising_channel_sub_type - # @return [::Google::Ads::GoogleAds::V19::Enums::AdvertisingChannelSubTypeEnum::AdvertisingChannelSubType] + # @return [::Google::Ads::GoogleAds::V21::Enums::AdvertisingChannelSubTypeEnum::AdvertisingChannelSubType] # Immutable. Optional refinement to `advertising_channel_type`. # Must be a valid sub-type of the parent channel type. # @@ -90,60 +90,60 @@ module Resources # @return [::String] # The URL template for constructing a tracking URL. # @!attribute [rw] url_custom_parameters - # @return [::Array<::Google::Ads::GoogleAds::V19::Common::CustomParameter>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::CustomParameter>] # The list of mappings used to substitute custom parameter tags in a # `tracking_url_template`, `final_urls`, or `mobile_final_urls`. # @!attribute [rw] local_services_campaign_settings - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::LocalServicesCampaignSettings] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::LocalServicesCampaignSettings] # The Local Services Campaign related settings. # @!attribute [rw] travel_campaign_settings - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::TravelCampaignSettings] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::TravelCampaignSettings] # Settings for Travel campaign. # @!attribute [rw] demand_gen_campaign_settings - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::DemandGenCampaignSettings] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::DemandGenCampaignSettings] # Settings for Demand Gen campaign. # @!attribute [rw] video_campaign_settings - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::VideoCampaignSettings] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::VideoCampaignSettings] # Settings for Video campaign. # @!attribute [rw] pmax_campaign_settings - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::PmaxCampaignSettings] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::PmaxCampaignSettings] # Settings for Performance Max campaign. # @!attribute [rw] real_time_bidding_setting - # @return [::Google::Ads::GoogleAds::V19::Common::RealTimeBiddingSetting] + # @return [::Google::Ads::GoogleAds::V21::Common::RealTimeBiddingSetting] # Settings for Real-Time Bidding, a feature only available for campaigns # targeting the Ad Exchange network. # @!attribute [rw] network_settings - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::NetworkSettings] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::NetworkSettings] # The network settings for the campaign. # @!attribute [rw] hotel_setting - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::HotelSettingInfo] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::HotelSettingInfo] # Immutable. The hotel setting for the campaign. # @!attribute [rw] dynamic_search_ads_setting - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::DynamicSearchAdsSetting] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::DynamicSearchAdsSetting] # The setting for controlling Dynamic Search Ads (DSA). # @!attribute [rw] shopping_setting - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::ShoppingSetting] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::ShoppingSetting] # The setting for controlling Shopping campaigns. # @!attribute [rw] targeting_setting - # @return [::Google::Ads::GoogleAds::V19::Common::TargetingSetting] + # @return [::Google::Ads::GoogleAds::V21::Common::TargetingSetting] # Setting for targeting related features. # @!attribute [rw] audience_setting - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::AudienceSetting] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::AudienceSetting] # Immutable. Setting for audience related features. # @!attribute [rw] geo_target_type_setting - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::GeoTargetTypeSetting] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::GeoTargetTypeSetting] # The setting for ads geotargeting. # @!attribute [rw] local_campaign_setting - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::LocalCampaignSetting] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::LocalCampaignSetting] # The setting for local campaign. # @!attribute [rw] app_campaign_setting - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::AppCampaignSetting] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::AppCampaignSetting] # The setting related to App Campaign. # @!attribute [r] labels # @return [::Array<::String>] # Output only. The resource names of labels attached to this campaign. # @!attribute [r] experiment_type - # @return [::Google::Ads::GoogleAds::V19::Enums::CampaignExperimentTypeEnum::CampaignExperimentType] + # @return [::Google::Ads::GoogleAds::V21::Enums::CampaignExperimentTypeEnum::CampaignExperimentType] # Output only. The type of campaign: normal, draft, or experiment. # @!attribute [r] base_campaign # @return [::String] @@ -155,7 +155,7 @@ module Resources # @return [::String] # The resource name of the campaign budget of the campaign. # @!attribute [r] bidding_strategy_type - # @return [::Google::Ads::GoogleAds::V19::Enums::BiddingStrategyTypeEnum::BiddingStrategyType] + # @return [::Google::Ads::GoogleAds::V21::Enums::BiddingStrategyTypeEnum::BiddingStrategyType] # Output only. The type of bidding strategy. # # A bidding strategy can be created by setting either the bidding scheme to @@ -191,32 +191,32 @@ module Resources # Suffix used to append query parameters to landing pages that are served # with parallel tracking. # @!attribute [rw] frequency_caps - # @return [::Array<::Google::Ads::GoogleAds::V19::Common::FrequencyCapEntry>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Common::FrequencyCapEntry>] # A list that limits how often each user will see this campaign's ads. # @!attribute [rw] video_brand_safety_suitability - # @return [::Google::Ads::GoogleAds::V19::Enums::BrandSafetySuitabilityEnum::BrandSafetySuitability] + # @return [::Google::Ads::GoogleAds::V21::Enums::BrandSafetySuitabilityEnum::BrandSafetySuitability] # Brand Safety setting at the individual campaign level. Allows for selecting # an inventory type to show your ads on content that is the right fit for # your brand. See https://support.google.com/google-ads/answer/7515513. # @!attribute [rw] vanity_pharma - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::VanityPharma] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::VanityPharma] # Describes how unbranded pharma ads will be displayed. # @!attribute [rw] selective_optimization - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::SelectiveOptimization] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::SelectiveOptimization] # Selective optimization setting for this campaign, which includes a set of # conversion actions to optimize this campaign towards. # This feature only applies to app campaigns that use MULTI_CHANNEL as # AdvertisingChannelType and APP_CAMPAIGN or APP_CAMPAIGN_FOR_ENGAGEMENT as # AdvertisingChannelSubType. # @!attribute [rw] optimization_goal_setting - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::OptimizationGoalSetting] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::OptimizationGoalSetting] # Optimization goal setting for this campaign, which includes a set of # optimization goal types. # @!attribute [r] tracking_setting - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::TrackingSetting] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::TrackingSetting] # Output only. Campaign-level settings for tracking information. # @!attribute [rw] payment_mode - # @return [::Google::Ads::GoogleAds::V19::Enums::PaymentModeEnum::PaymentMode] + # @return [::Google::Ads::GoogleAds::V21::Enums::PaymentModeEnum::PaymentMode] # Payment mode for the campaign. # @!attribute [r] optimization_score # @return [::Float] @@ -232,12 +232,12 @@ module Resources # # This field is read-only. # @!attribute [rw] excluded_parent_asset_field_types - # @return [::Array<::Google::Ads::GoogleAds::V19::Enums::AssetFieldTypeEnum::AssetFieldType>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Enums::AssetFieldTypeEnum::AssetFieldType>] # The asset field types that should be excluded from this campaign. Asset # links with these field types will not be inherited by this campaign from # the upper level. # @!attribute [rw] excluded_parent_asset_set_types - # @return [::Array<::Google::Ads::GoogleAds::V19::Enums::AssetSetTypeEnum::AssetSetType>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Enums::AssetSetTypeEnum::AssetSetType>] # The asset set types that should be excluded from this campaign. Asset set # links with these types will not be inherited by this campaign from # the upper level. @@ -257,23 +257,23 @@ module Resources # only be set for Performance Max campaigns, where the default value is # false. # @!attribute [r] performance_max_upgrade - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::PerformanceMaxUpgrade] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::PerformanceMaxUpgrade] # Output only. Information about campaigns being upgraded to Performance Max. # @!attribute [rw] hotel_property_asset_set # @return [::String] # Immutable. The resource name for a set of hotel properties for Performance # Max for travel goals campaigns. # @!attribute [rw] listing_type - # @return [::Google::Ads::GoogleAds::V19::Enums::ListingTypeEnum::ListingType] + # @return [::Google::Ads::GoogleAds::V21::Enums::ListingTypeEnum::ListingType] # Immutable. Listing type of ads served for this campaign. # Field is restricted for usage with Performance Max campaigns. # @!attribute [rw] asset_automation_settings - # @return [::Array<::Google::Ads::GoogleAds::V19::Resources::Campaign::AssetAutomationSetting>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Resources::Campaign::AssetAutomationSetting>] # Contains the opt-in/out status of each AssetAutomationType. # See documentation of each asset automation type enum for default # opt in/out behavior. # @!attribute [rw] keyword_match_type - # @return [::Google::Ads::GoogleAds::V19::Enums::CampaignKeywordMatchTypeEnum::CampaignKeywordMatchType] + # @return [::Google::Ads::GoogleAds::V21::Enums::CampaignKeywordMatchTypeEnum::CampaignKeywordMatchType] # Keyword match type of Campaign. Set to BROAD to set broad matching for all # keywords in a campaign. # @!attribute [rw] brand_guidelines_enabled @@ -298,106 +298,120 @@ module Resources # Performance Max campaigns with Travel Goals. Attempting to set this field # to true for a Travel Goals campaign will result in an error. # @!attribute [rw] brand_guidelines - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::BrandGuidelines] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::BrandGuidelines] # These settings control how your brand appears in automatically generated # assets and formats within this campaign. Note: These settings can only be # used for Performance Max campaigns that have Brand Guidelines enabled. + # @!attribute [rw] third_party_integration_partners + # @return [::Google::Ads::GoogleAds::V21::Common::CampaignThirdPartyIntegrationPartners] + # Third-Party integration partners. + # @!attribute [rw] ai_max_setting + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::AiMaxSetting] + # Settings for AI Max in Search and Shopping campaigns. # @!attribute [rw] contains_eu_political_advertising - # @return [::Google::Ads::GoogleAds::V19::Enums::EuPoliticalAdvertisingStatusEnum::EuPoliticalAdvertisingStatus] + # @return [::Google::Ads::GoogleAds::V21::Enums::EuPoliticalAdvertisingStatusEnum::EuPoliticalAdvertisingStatus] # The advertiser should self-declare whether this campaign contains # political advertising content targeted towards the European Union. + # @!attribute [r] missing_eu_political_advertising_declaration + # @return [::Boolean] + # Output only. Indicates whether this campaign is missing a declaration about + # whether it contains political advertising targeted towards the EU and is + # ineligible for any exemptions. If this field is true, use the + # contains_eu_political_advertising field to add the required declaration. + # + # This field is read-only. # @!attribute [rw] bidding_strategy # @return [::String] # The resource name of the portfolio bidding strategy used by the campaign. # # Note: The following fields are mutually exclusive: `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_roas`, `target_spend`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commission - # @return [::Google::Ads::GoogleAds::V19::Common::Commission] + # @return [::Google::Ads::GoogleAds::V21::Common::Commission] # Commission is an automatic bidding strategy in which the advertiser pays # a certain portion of the conversion value. # # Note: The following fields are mutually exclusive: `commission`, `bidding_strategy`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_roas`, `target_spend`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] manual_cpa - # @return [::Google::Ads::GoogleAds::V19::Common::ManualCpa] + # @return [::Google::Ads::GoogleAds::V21::Common::ManualCpa] # Standard Manual CPA bidding strategy. # Manual bidding strategy that allows advertiser to set the bid per # advertiser-specified action. Supported only for Local Services campaigns. # # Note: The following fields are mutually exclusive: `manual_cpa`, `bidding_strategy`, `commission`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_roas`, `target_spend`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] manual_cpc - # @return [::Google::Ads::GoogleAds::V19::Common::ManualCpc] + # @return [::Google::Ads::GoogleAds::V21::Common::ManualCpc] # Standard Manual CPC bidding strategy. # Manual click-based bidding where user pays per click. # # Note: The following fields are mutually exclusive: `manual_cpc`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_roas`, `target_spend`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] manual_cpm - # @return [::Google::Ads::GoogleAds::V19::Common::ManualCpm] + # @return [::Google::Ads::GoogleAds::V21::Common::ManualCpm] # Standard Manual CPM bidding strategy. # Manual impression-based bidding where user pays per thousand # impressions. # # Note: The following fields are mutually exclusive: `manual_cpm`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_roas`, `target_spend`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] manual_cpv - # @return [::Google::Ads::GoogleAds::V19::Common::ManualCpv] + # @return [::Google::Ads::GoogleAds::V21::Common::ManualCpv] # A bidding strategy that pays a configurable amount per video view. # # Note: The following fields are mutually exclusive: `manual_cpv`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_roas`, `target_spend`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] maximize_conversions - # @return [::Google::Ads::GoogleAds::V19::Common::MaximizeConversions] + # @return [::Google::Ads::GoogleAds::V21::Common::MaximizeConversions] # Standard Maximize Conversions bidding strategy that automatically # maximizes number of conversions while spending your budget. # # Note: The following fields are mutually exclusive: `maximize_conversions`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_roas`, `target_spend`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] maximize_conversion_value - # @return [::Google::Ads::GoogleAds::V19::Common::MaximizeConversionValue] + # @return [::Google::Ads::GoogleAds::V21::Common::MaximizeConversionValue] # Standard Maximize Conversion Value bidding strategy that automatically # sets bids to maximize revenue while spending your budget. # # Note: The following fields are mutually exclusive: `maximize_conversion_value`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `target_cpa`, `target_impression_share`, `target_roas`, `target_spend`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] target_cpa - # @return [::Google::Ads::GoogleAds::V19::Common::TargetCpa] + # @return [::Google::Ads::GoogleAds::V21::Common::TargetCpa] # Standard Target CPA bidding strategy that automatically sets bids to # help get as many conversions as possible at the target # cost-per-acquisition (CPA) you set. # # Note: The following fields are mutually exclusive: `target_cpa`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_impression_share`, `target_roas`, `target_spend`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] target_impression_share - # @return [::Google::Ads::GoogleAds::V19::Common::TargetImpressionShare] + # @return [::Google::Ads::GoogleAds::V21::Common::TargetImpressionShare] # Target Impression Share bidding strategy. An automated bidding strategy # that sets bids to achieve a chosen percentage of impressions. # # Note: The following fields are mutually exclusive: `target_impression_share`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_roas`, `target_spend`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] target_roas - # @return [::Google::Ads::GoogleAds::V19::Common::TargetRoas] + # @return [::Google::Ads::GoogleAds::V21::Common::TargetRoas] # Standard Target ROAS bidding strategy that automatically maximizes # revenue while averaging a specific target return on ad spend (ROAS). # # Note: The following fields are mutually exclusive: `target_roas`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_spend`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] target_spend - # @return [::Google::Ads::GoogleAds::V19::Common::TargetSpend] + # @return [::Google::Ads::GoogleAds::V21::Common::TargetSpend] # Standard Target Spend bidding strategy that automatically sets your bids # to help get as many clicks as possible within your budget. # # Note: The following fields are mutually exclusive: `target_spend`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_roas`, `percent_cpc`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] percent_cpc - # @return [::Google::Ads::GoogleAds::V19::Common::PercentCpc] + # @return [::Google::Ads::GoogleAds::V21::Common::PercentCpc] # Standard Percent Cpc bidding strategy where bids are a fraction of the # advertised price for some good or service. # # Note: The following fields are mutually exclusive: `percent_cpc`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_roas`, `target_spend`, `target_cpm`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] target_cpm - # @return [::Google::Ads::GoogleAds::V19::Common::TargetCpm] + # @return [::Google::Ads::GoogleAds::V21::Common::TargetCpm] # A bidding strategy that automatically optimizes cost per thousand # impressions. # # Note: The following fields are mutually exclusive: `target_cpm`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_roas`, `target_spend`, `percent_cpc`, `fixed_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] fixed_cpm - # @return [::Google::Ads::GoogleAds::V19::Common::FixedCpm] + # @return [::Google::Ads::GoogleAds::V21::Common::FixedCpm] # A manual bidding strategy with a fixed CPM. # # Note: The following fields are mutually exclusive: `fixed_cpm`, `bidding_strategy`, `commission`, `manual_cpa`, `manual_cpc`, `manual_cpm`, `manual_cpv`, `maximize_conversions`, `maximize_conversion_value`, `target_cpa`, `target_impression_share`, `target_roas`, `target_spend`, `percent_cpc`, `target_cpm`, `target_cpv`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] target_cpv - # @return [::Google::Ads::GoogleAds::V19::Common::TargetCpv] + # @return [::Google::Ads::GoogleAds::V21::Common::TargetCpv] # An automated bidding strategy that sets bids to optimize performance # given the target CPV you set. # @@ -416,7 +430,7 @@ class Campaign # Output only. The resource name of the legacy campaign upgraded to # Performance Max. # @!attribute [r] status - # @return [::Google::Ads::GoogleAds::V19::Enums::PerformanceMaxUpgradeStatusEnum::PerformanceMaxUpgradeStatus] + # @return [::Google::Ads::GoogleAds::V21::Enums::PerformanceMaxUpgradeStatusEnum::PerformanceMaxUpgradeStatus] # Output only. The upgrade status of a campaign requested to be upgraded to # Performance Max. class PerformanceMaxUpgrade @@ -430,7 +444,7 @@ class PerformanceMaxUpgrade # Whether ads will be served with google.com search results. # @!attribute [rw] target_search_network # @return [::Boolean] - # Whether ads will be served on partner sites in the Google Search Network + # Whether ads will be served on sites in the Google Search Partners Network # (requires `target_google_search` to also be `true`). # @!attribute [rw] target_content_network # @return [::Boolean] @@ -438,8 +452,11 @@ class PerformanceMaxUpgrade # Network. Placements are specified using the Placement criterion. # @!attribute [rw] target_partner_search_network # @return [::Boolean] - # Whether ads will be served on the Google Partner Network. - # This is available only to some select Google partner accounts. + # Whether ads will be served on the partner network. This is available + # only to some select partner accounts. Unless you have been instructed to + # use this field, it likely does not apply to your account. This does not + # control whether ads will be served on Google Search Partners Network; use + # `target_search_network` for that instead. # @!attribute [rw] target_youtube # @return [::Boolean] # Whether ads will be served on YouTube. @@ -488,11 +505,13 @@ class DynamicSearchAdsSetting # @!attribute [rw] feed_label # @return [::String] # Feed label of products to include in the campaign. - # Only one of feed_label or sales_country can be set. - # If used instead of sales_country, the feed_label field accepts country - # codes in the same format for example: 'XX'. - # Otherwise can be any string used for feed label in Google Merchant - # Center. + # Valid feed labels may contain a maximum of 20 characters including + # uppercase letters, numbers, hyphens, and underscores. + # If you previously used the deprecated `sales_country` in the two-letter + # country code (`XX`) format, the `feed_label` field should be used + # instead. For more information see the + # [feed label](//support.google.com/merchants/answer/12453549) + # support article. # @!attribute [rw] campaign_priority # @return [::Integer] # Priority of the campaign. Campaigns with numerically higher priorities @@ -511,11 +530,12 @@ class DynamicSearchAdsSetting # inventory in Performance Max campaigns, use `listing_type` instead. # @!attribute [rw] advertising_partner_ids # @return [::Array<::Integer>] - # Immutable. The list of Google Ads accounts IDs of advertising partners - # cooperating within the campaign. This feature is currently available only - # for accounts having an advertising partner link. This feature is - # currently supported only for Performance Max, Shopping, Search and Demand - # Gen campaign types. + # The list of Google Ads accounts IDs of advertising partners cooperating + # within the campaign. + # This feature is currently available only for accounts having an + # advertising partner link. Once set, the field is immutable. + # This feature is currently supported only for Performance Max, Shopping, + # Search and Demand Gen campaign types. # @!attribute [rw] disable_product_feed # @return [::Boolean] # Disable the optional product feed. This field is currently supported @@ -538,10 +558,10 @@ class TrackingSetting # Represents a collection of settings related to ads geotargeting. # @!attribute [rw] positive_geo_target_type - # @return [::Google::Ads::GoogleAds::V19::Enums::PositiveGeoTargetTypeEnum::PositiveGeoTargetType] + # @return [::Google::Ads::GoogleAds::V21::Enums::PositiveGeoTargetTypeEnum::PositiveGeoTargetType] # The setting used for positive geotargeting in this particular campaign. # @!attribute [rw] negative_geo_target_type - # @return [::Google::Ads::GoogleAds::V19::Enums::NegativeGeoTargetTypeEnum::NegativeGeoTargetType] + # @return [::Google::Ads::GoogleAds::V21::Enums::NegativeGeoTargetTypeEnum::NegativeGeoTargetType] # The setting used for negative geotargeting in this particular campaign. class GeoTargetTypeSetting include ::Google::Protobuf::MessageExts @@ -550,7 +570,7 @@ class GeoTargetTypeSetting # Campaign setting for local campaigns. # @!attribute [rw] location_source_type - # @return [::Google::Ads::GoogleAds::V19::Enums::LocationSourceTypeEnum::LocationSourceType] + # @return [::Google::Ads::GoogleAds::V21::Enums::LocationSourceTypeEnum::LocationSourceType] # The location source type for this local campaign. class LocalCampaignSetting include ::Google::Protobuf::MessageExts @@ -559,14 +579,14 @@ class LocalCampaignSetting # Campaign-level settings for App Campaigns. # @!attribute [rw] bidding_strategy_goal_type - # @return [::Google::Ads::GoogleAds::V19::Enums::AppCampaignBiddingStrategyGoalTypeEnum::AppCampaignBiddingStrategyGoalType] + # @return [::Google::Ads::GoogleAds::V21::Enums::AppCampaignBiddingStrategyGoalTypeEnum::AppCampaignBiddingStrategyGoalType] # Represents the goal which the bidding strategy of this app campaign # should optimize towards. # @!attribute [rw] app_id # @return [::String] # Immutable. A string that uniquely identifies a mobile application. # @!attribute [rw] app_store - # @return [::Google::Ads::GoogleAds::V19::Enums::AppCampaignAppStoreEnum::AppCampaignAppStore] + # @return [::Google::Ads::GoogleAds::V21::Enums::AppCampaignAppStoreEnum::AppCampaignAppStore] # Immutable. The application store that distributes this specific app. class AppCampaignSetting include ::Google::Protobuf::MessageExts @@ -575,10 +595,10 @@ class AppCampaignSetting # Describes how unbranded pharma ads will be displayed. # @!attribute [rw] vanity_pharma_display_url_mode - # @return [::Google::Ads::GoogleAds::V19::Enums::VanityPharmaDisplayUrlModeEnum::VanityPharmaDisplayUrlMode] + # @return [::Google::Ads::GoogleAds::V21::Enums::VanityPharmaDisplayUrlModeEnum::VanityPharmaDisplayUrlMode] # The display mode for vanity pharma URLs. # @!attribute [rw] vanity_pharma_text - # @return [::Google::Ads::GoogleAds::V19::Enums::VanityPharmaTextEnum::VanityPharmaText] + # @return [::Google::Ads::GoogleAds::V21::Enums::VanityPharmaTextEnum::VanityPharmaText] # The text that will be displayed in display URL of the text ad when # website description is the selected display mode for vanity pharma URLs. class VanityPharma @@ -603,7 +623,7 @@ class SelectiveOptimization # Optimization goal setting for this campaign, which includes a set of # optimization goal types. # @!attribute [rw] optimization_goal_types - # @return [::Array<::Google::Ads::GoogleAds::V19::Enums::OptimizationGoalTypeEnum::OptimizationGoalType>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Enums::OptimizationGoalTypeEnum::OptimizationGoalType>] # The list of optimization goal types. class OptimizationGoalSetting include ::Google::Protobuf::MessageExts @@ -623,7 +643,7 @@ class AudienceSetting # Settings for LocalServicesCampaign subresource. # @!attribute [rw] category_bids - # @return [::Array<::Google::Ads::GoogleAds::V19::Resources::Campaign::CategoryBid>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Resources::Campaign::CategoryBid>] # Categorical level bids associated with MANUAL_CPA bidding strategy. class LocalServicesCampaignSettings include ::Google::Protobuf::MessageExts @@ -672,9 +692,20 @@ class DemandGenCampaignSettings end # Settings for Video campaign. + # @!attribute [rw] video_ad_sequence + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::VideoCampaignSettings::VideoAdSequence] + # Container for video ads sequencing definition. # @!attribute [rw] video_ad_inventory_control - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::VideoCampaignSettings::VideoAdInventoryControl] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::VideoCampaignSettings::VideoAdInventoryControl] # Inventory control for video responsive ads in reach campaigns. + # + # Note: The following fields are mutually exclusive: `video_ad_inventory_control`, `video_ad_format_control`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] video_ad_format_control + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::VideoCampaignSettings::VideoAdFormatControl] + # Format-restricting control enabling usage of video responsive ads in + # format defined Video campaigns (for example, non-skippable). + # + # Note: The following fields are mutually exclusive: `video_ad_format_control`, `video_ad_inventory_control`. If a field in that set is populated, all other fields in the set will automatically be cleared. class VideoCampaignSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -691,15 +722,85 @@ class VideoCampaignSettings # @!attribute [rw] allow_shorts # @return [::Boolean] # Determine if video responsive ads can be used as shorts format. + # @!attribute [rw] allow_non_skippable_in_stream + # @return [::Boolean] + # Determine if video responsive ads can be used for non-skippable + # in-stream ads. This is only available for campaigns that allow mixing + # of non-skippable with other formats (Video reach campaign with Target + # Frequency bidding strategy goal). class VideoAdInventoryControl include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end + + # Format-restricting control enabling usage of video responsive ads in + # format defined Video campaigns (for example, non-skippable). + # @!attribute [rw] format_restriction + # @return [::Google::Ads::GoogleAds::V21::Enums::VideoAdFormatRestrictionEnum::VideoAdFormatRestriction] + # All contained responsive ads are expected to respect this restriction. + # @!attribute [rw] non_skippable_in_stream_restrictions + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::VideoCampaignSettings::NonSkippableInStreamRestrictions] + # Restrictions for non-skippable format. + class VideoAdFormatControl + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Restrictions for non-skippable format. + # @!attribute [rw] min_duration + # @return [::Google::Ads::GoogleAds::V21::Enums::NonSkippableMinDurationEnum::NonSkippableMinDuration] + # The minimum allowed duration for non-skippable ads. + # @!attribute [rw] max_duration + # @return [::Google::Ads::GoogleAds::V21::Enums::NonSkippableMaxDurationEnum::NonSkippableMaxDuration] + # The maximum allowed duration for non-skippable ads. + class NonSkippableInStreamRestrictions + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Container for video ads sequencing definition. + # @!attribute [rw] steps + # @return [::Array<::Google::Ads::GoogleAds::V21::Resources::Campaign::VideoCampaignSettings::VideoAdSequenceStep>] + # The list of sequence steps and data associated with them. + # @!attribute [rw] minimum_duration + # @return [::Google::Ads::GoogleAds::V21::Enums::VideoAdSequenceMinimumDurationEnum::VideoAdSequenceMinimumDuration] + # Users are eligible to repeat sequence after this period. Defaults to + # WEEK if not specified. + class VideoAdSequence + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Information about a step within a video sequence. + # @!attribute [rw] video_ad_sequence_step_id + # @return [::Integer] + # The ID of this sequence step. + # @!attribute [rw] asset_id + # @return [::Integer] + # The ID of the Asset for this step. The asset must be type + # YOUTUBE_VIDEO. + # @!attribute [rw] ad_group_type + # @return [::Google::Ads::GoogleAds::V21::Enums::AdGroupTypeEnum::AdGroupType] + # The ad group type for this step (denoting the video format). + # @!attribute [rw] previous_step_id + # @return [::Integer] + # The ID of the previous step. This field is required for all + # steps except the first one. It must point to a step that appears in the + # step definition list before this step. + # @!attribute [rw] previous_step_interaction_type + # @return [::Google::Ads::GoogleAds::V21::Enums::VideoAdSequenceInteractionTypeEnum::VideoAdSequenceInteractionType] + # Type of interaction *on the previous step* required in order for the + # user to advance to this step. As with the previous step ID, it's + # required for every step except for the first one. + class VideoAdSequenceStep + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end end # Settings for Performance Max campaigns. # @!attribute [rw] brand_targeting_overrides - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign::PmaxCampaignSettings::BrandTargetingOverrides] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::PmaxCampaignSettings::BrandTargetingOverrides] # Overrides of brand targeting for various ad types. class PmaxCampaignSettings include ::Google::Protobuf::MessageExts @@ -718,10 +819,10 @@ class BrandTargetingOverrides # Asset automation setting contains pair of AssetAutomationType and the # asset automation opt-in/out status # @!attribute [rw] asset_automation_type - # @return [::Google::Ads::GoogleAds::V19::Enums::AssetAutomationTypeEnum::AssetAutomationType] + # @return [::Google::Ads::GoogleAds::V21::Enums::AssetAutomationTypeEnum::AssetAutomationType] # The asset automation type advertiser would like to opt-in/out. # @!attribute [rw] asset_automation_status - # @return [::Google::Ads::GoogleAds::V19::Enums::AssetAutomationStatusEnum::AssetAutomationStatus] + # @return [::Google::Ads::GoogleAds::V21::Enums::AssetAutomationStatusEnum::AssetAutomationStatus] # The opt-in/out status of asset automation type. class AssetAutomationSetting include ::Google::Protobuf::MessageExts @@ -748,6 +849,54 @@ class BrandGuidelines include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end + + # Settings for AI Max in Search and Shopping campaigns. + # @!attribute [rw] enable_ai_max + # @return [::Boolean] + # Controls whether or not AI Max features are served for this campaign. + # + # Individual AI Max features are enabled or disabled by their respective + # settings. But if enable_ai_max is set to false or cleared, then no AI + # Max features will serve for this campaign, regardless of the other + # settings. + # + # Supported in Search and Shopping campaigns. + # + # For Search campaigns, Search Term Matching is enabled by default when + # AI Max is enabled, and can be disabled at the ad group level. + # + # For Shopping campaigns, Text customization is always enabled when AI Max + # is enabled. + # @!attribute [r] bundling_required + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign::AiMaxSetting::AiMaxBundlingRequired] + # Output only. Search campaigns only. Indicates whether a campaign has + # adopted AI Max before, and is required to have AI Max enabled to adopt + # campaign-level text asset automation and brand list targeting in all API + # versions. + class AiMaxSetting + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum describing whether AI Max must be enabled to serve and update + # text asset automation and brand list features newly bundled with AI Max. + module AiMaxBundlingRequired + # Not specified. + UNSPECIFIED = 0 + + # Used for return value only. Represents value unknown in this version. + UNKNOWN = 1 + + # Search campaign is using text asset automation or brand + # list targeting, and AI Max is not required to be enabled to serve these + # features. + NOT_REQUIRED = 2 + + # AI Max is required to be enabled for this search campaign to serve + # existing text asset automation and brand list targeting, or to add new + # text asset automation and brand list targeting settings. + REQUIRED = 3 + end + end end end end diff --git a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/services/campaign_service.rb b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/services/campaign_service.rb similarity index 93% rename from shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/services/campaign_service.rb rename to shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/services/campaign_service.rb index 64b84d238..697f8676b 100644 --- a/shared/output/ads/googleads/proto_docs/google/ads/googleads/v19/services/campaign_service.rb +++ b/shared/output/ads/googleads/proto_docs/google/ads/googleads/v21/services/campaign_service.rb @@ -20,15 +20,15 @@ module Google module Ads module GoogleAds - module V19 + module V21 module Services # Request message for - # {::Google::Ads::GoogleAds::V19::Services::CampaignService::Client#mutate_campaigns CampaignService.MutateCampaigns}. + # {::Google::Ads::GoogleAds::V21::Services::CampaignService::Client#mutate_campaigns CampaignService.MutateCampaigns}. # @!attribute [rw] customer_id # @return [::String] # Required. The ID of the customer whose campaigns are being modified. # @!attribute [rw] operations - # @return [::Array<::Google::Ads::GoogleAds::V19::Services::CampaignOperation>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Services::CampaignOperation>] # Required. The list of operations to perform on individual campaigns. # @!attribute [rw] partial_failure # @return [::Boolean] @@ -41,7 +41,7 @@ module Services # If true, the request is validated but not executed. Only errors are # returned, not results. # @!attribute [rw] response_content_type - # @return [::Google::Ads::GoogleAds::V19::Enums::ResponseContentTypeEnum::ResponseContentType] + # @return [::Google::Ads::GoogleAds::V21::Enums::ResponseContentTypeEnum::ResponseContentType] # The response content type setting. Determines whether the mutable resource # or just the resource name should be returned post mutation. class MutateCampaignsRequest @@ -54,12 +54,12 @@ class MutateCampaignsRequest # @return [::Google::Protobuf::FieldMask] # FieldMask that determines which resource fields are modified in an update. # @!attribute [rw] create - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign] # Create operation: No resource name is expected for the new campaign. # # Note: The following fields are mutually exclusive: `create`, `update`, `remove`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] update - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign] # Update operation: The campaign is expected to have a valid # resource name. # @@ -85,7 +85,7 @@ class CampaignOperation # operations. If any errors occur outside the operations (for example, auth # errors), we return an RPC level error. # @!attribute [rw] results - # @return [::Array<::Google::Ads::GoogleAds::V19::Services::MutateCampaignResult>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Services::MutateCampaignResult>] # All results for the mutate. class MutateCampaignsResponse include ::Google::Protobuf::MessageExts @@ -97,7 +97,7 @@ class MutateCampaignsResponse # @return [::String] # Returned for successful operations. # @!attribute [rw] campaign - # @return [::Google::Ads::GoogleAds::V19::Resources::Campaign] + # @return [::Google::Ads::GoogleAds::V21::Resources::Campaign] # The mutated campaign with only mutable fields after mutate. The field will # only be returned when response_content_type is set to "MUTABLE_RESOURCE". class MutateCampaignResult @@ -110,7 +110,7 @@ class MutateCampaignResult # @return [::String] # Required. The ID of the customer whose campaigns are being enabled. # @!attribute [rw] operations - # @return [::Array<::Google::Ads::GoogleAds::V19::Services::EnableOperation>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Services::EnableOperation>] # Required. The list of individual campaign operations. A maximum of 10 # enable operations can be executed in a request. class EnablePMaxBrandGuidelinesRequest @@ -128,7 +128,7 @@ class EnablePMaxBrandGuidelinesRequest # This field is required. If true, top-performing brand assets will be # automatically populated. If false, the brand_assets field is required. # @!attribute [rw] brand_assets - # @return [::Google::Ads::GoogleAds::V19::Services::BrandCampaignAssets] + # @return [::Google::Ads::GoogleAds::V21::Services::BrandCampaignAssets] # Optional. The brand assets linked to the campaign. This field is required # when the value of auto_populate_brand_assets is false. # @!attribute [rw] final_uri_domain @@ -170,7 +170,7 @@ class BrandCampaignAssets # Brand Guidelines campaign enablement response. # @!attribute [rw] results - # @return [::Array<::Google::Ads::GoogleAds::V19::Services::EnablementResult>] + # @return [::Array<::Google::Ads::GoogleAds::V21::Services::EnablementResult>] # Campaign enablement results per campaign. class EnablePMaxBrandGuidelinesResponse include ::Google::Protobuf::MessageExts diff --git a/shared/output/ads/googleads/proto_docs/google/api/client.rb b/shared/output/ads/googleads/proto_docs/google/api/client.rb index d59ba51a5..3ab0b096d 100644 --- a/shared/output/ads/googleads/proto_docs/google/api/client.rb +++ b/shared/output/ads/googleads/proto_docs/google/api/client.rb @@ -31,6 +31,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -141,9 +143,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -155,11 +158,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -190,6 +193,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -318,10 +335,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -344,10 +363,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -356,14 +375,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -372,11 +391,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -411,6 +443,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -428,6 +462,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -469,5 +574,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/cloud/compute_small/proto_docs/google/api/client.rb b/shared/output/cloud/compute_small/proto_docs/google/api/client.rb index d59ba51a5..3ab0b096d 100644 --- a/shared/output/cloud/compute_small/proto_docs/google/api/client.rb +++ b/shared/output/cloud/compute_small/proto_docs/google/api/client.rb @@ -31,6 +31,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -141,9 +143,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -155,11 +158,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -190,6 +193,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -318,10 +335,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -344,10 +363,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -356,14 +375,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -372,11 +391,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -411,6 +443,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -428,6 +462,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -469,5 +574,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/common_pb.rb b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/common_pb.rb index babf82fb9..ce9669d62 100644 --- a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/common_pb.rb +++ b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/common_pb.rb @@ -5,7 +5,7 @@ require 'google/protobuf' -descriptor_data = "\n\x17grafeas/v1/common.proto\x12\ngrafeas.v1\"(\n\nRelatedUrl\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\"5\n\tSignature\x12\x11\n\tsignature\x18\x01 \x01(\x0c\x12\x15\n\rpublic_key_id\x18\x02 \x01(\t\"d\n\x08\x45nvelope\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\x12\x14\n\x0cpayload_type\x18\x02 \x01(\t\x12\x31\n\nsignatures\x18\x03 \x03(\x0b\x32\x1d.grafeas.v1.EnvelopeSignature\"/\n\x11\x45nvelopeSignature\x12\x0b\n\x03sig\x18\x01 \x01(\x0c\x12\r\n\x05keyid\x18\x02 \x01(\t\"R\n\x0c\x46ileLocation\x12\x11\n\tfile_path\x18\x01 \x01(\t\x12/\n\rlayer_details\x18\x02 \x01(\x0b\x32\x18.grafeas.v1.LayerDetails\"B\n\tBaseImage\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nrepository\x18\x02 \x01(\t\x12\x13\n\x0blayer_count\x18\x03 \x01(\x05\"}\n\x0cLayerDetails\x12\r\n\x05index\x18\x01 \x01(\x05\x12\x0f\n\x07\x64iff_id\x18\x02 \x01(\t\x12\x10\n\x08\x63hain_id\x18\x05 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x03 \x01(\t\x12*\n\x0b\x62\x61se_images\x18\x04 \x03(\x0b\x32\x15.grafeas.v1.BaseImage\"/\n\x07License\x12\x12\n\nexpression\x18\x01 \x01(\t\x12\x10\n\x08\x63omments\x18\x02 \x01(\t\",\n\x06\x44igest\x12\x0c\n\x04\x61lgo\x18\x01 \x01(\t\x12\x14\n\x0c\x64igest_bytes\x18\x02 \x01(\x0c*\xfc\x01\n\x08NoteKind\x12\x19\n\x15NOTE_KIND_UNSPECIFIED\x10\x00\x12\x11\n\rVULNERABILITY\x10\x01\x12\t\n\x05\x42UILD\x10\x02\x12\t\n\x05IMAGE\x10\x03\x12\x0b\n\x07PACKAGE\x10\x04\x12\x0e\n\nDEPLOYMENT\x10\x05\x12\r\n\tDISCOVERY\x10\x06\x12\x0f\n\x0b\x41TTESTATION\x10\x07\x12\x0b\n\x07UPGRADE\x10\x08\x12\x0e\n\nCOMPLIANCE\x10\t\x12\x14\n\x10\x44SSE_ATTESTATION\x10\n\x12\x1c\n\x18VULNERABILITY_ASSESSMENT\x10\x0b\x12\x12\n\x0eSBOM_REFERENCE\x10\x0c\x12\n\n\x06SECRET\x10\rBQ\n\rio.grafeas.v1P\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRAb\x06proto3" +descriptor_data = "\n\x17grafeas/v1/common.proto\x12\ngrafeas.v1\"(\n\nRelatedUrl\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\"5\n\tSignature\x12\x11\n\tsignature\x18\x01 \x01(\x0c\x12\x15\n\rpublic_key_id\x18\x02 \x01(\t\"d\n\x08\x45nvelope\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\x12\x14\n\x0cpayload_type\x18\x02 \x01(\t\x12\x31\n\nsignatures\x18\x03 \x03(\x0b\x32\x1d.grafeas.v1.EnvelopeSignature\"/\n\x11\x45nvelopeSignature\x12\x0b\n\x03sig\x18\x01 \x01(\x0c\x12\r\n\x05keyid\x18\x02 \x01(\t\"g\n\x0c\x46ileLocation\x12\x11\n\tfile_path\x18\x01 \x01(\t\x12/\n\rlayer_details\x18\x02 \x01(\x0b\x32\x18.grafeas.v1.LayerDetails\x12\x13\n\x0bline_number\x18\x03 \x01(\x05\"T\n\tBaseImage\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nrepository\x18\x02 \x01(\t\x12\x13\n\x0blayer_count\x18\x03 \x01(\x05\x12\x10\n\x08registry\x18\x04 \x01(\t\"}\n\x0cLayerDetails\x12\r\n\x05index\x18\x01 \x01(\x05\x12\x0f\n\x07\x64iff_id\x18\x02 \x01(\t\x12\x10\n\x08\x63hain_id\x18\x05 \x01(\t\x12\x0f\n\x07\x63ommand\x18\x03 \x01(\t\x12*\n\x0b\x62\x61se_images\x18\x04 \x03(\x0b\x32\x15.grafeas.v1.BaseImage\"/\n\x07License\x12\x12\n\nexpression\x18\x01 \x01(\t\x12\x10\n\x08\x63omments\x18\x02 \x01(\t\",\n\x06\x44igest\x12\x0c\n\x04\x61lgo\x18\x01 \x01(\t\x12\x14\n\x0c\x64igest_bytes\x18\x02 \x01(\x0c*\xfc\x01\n\x08NoteKind\x12\x19\n\x15NOTE_KIND_UNSPECIFIED\x10\x00\x12\x11\n\rVULNERABILITY\x10\x01\x12\t\n\x05\x42UILD\x10\x02\x12\t\n\x05IMAGE\x10\x03\x12\x0b\n\x07PACKAGE\x10\x04\x12\x0e\n\nDEPLOYMENT\x10\x05\x12\r\n\tDISCOVERY\x10\x06\x12\x0f\n\x0b\x41TTESTATION\x10\x07\x12\x0b\n\x07UPGRADE\x10\x08\x12\x0e\n\nCOMPLIANCE\x10\t\x12\x14\n\x10\x44SSE_ATTESTATION\x10\n\x12\x1c\n\x18VULNERABILITY_ASSESSMENT\x10\x0b\x12\x12\n\x0eSBOM_REFERENCE\x10\x0c\x12\n\n\x06SECRET\x10\rBQ\n\rio.grafeas.v1P\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRAb\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) diff --git a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/cvss_pb.rb b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/cvss_pb.rb index 12a5b5d82..6855ca3fe 100644 --- a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/cvss_pb.rb +++ b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/cvss_pb.rb @@ -5,7 +5,7 @@ require 'google/protobuf' -descriptor_data = "\n\x15grafeas/v1/cvss.proto\x12\ngrafeas.v1\"\xc5\t\n\x06\x43VSSv3\x12\x12\n\nbase_score\x18\x01 \x01(\x02\x12\x1c\n\x14\x65xploitability_score\x18\x02 \x01(\x02\x12\x14\n\x0cimpact_score\x18\x03 \x01(\x02\x12\x36\n\rattack_vector\x18\x05 \x01(\x0e\x32\x1f.grafeas.v1.CVSSv3.AttackVector\x12>\n\x11\x61ttack_complexity\x18\x06 \x01(\x0e\x32#.grafeas.v1.CVSSv3.AttackComplexity\x12\x42\n\x13privileges_required\x18\x07 \x01(\x0e\x32%.grafeas.v1.CVSSv3.PrivilegesRequired\x12<\n\x10user_interaction\x18\x08 \x01(\x0e\x32\".grafeas.v1.CVSSv3.UserInteraction\x12\'\n\x05scope\x18\t \x01(\x0e\x32\x18.grafeas.v1.CVSSv3.Scope\x12\x39\n\x16\x63onfidentiality_impact\x18\n \x01(\x0e\x32\x19.grafeas.v1.CVSSv3.Impact\x12\x33\n\x10integrity_impact\x18\x0b \x01(\x0e\x32\x19.grafeas.v1.CVSSv3.Impact\x12\x36\n\x13\x61vailability_impact\x18\x0c \x01(\x0e\x32\x19.grafeas.v1.CVSSv3.Impact\"\x99\x01\n\x0c\x41ttackVector\x12\x1d\n\x19\x41TTACK_VECTOR_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41TTACK_VECTOR_NETWORK\x10\x01\x12\x1a\n\x16\x41TTACK_VECTOR_ADJACENT\x10\x02\x12\x17\n\x13\x41TTACK_VECTOR_LOCAL\x10\x03\x12\x1a\n\x16\x41TTACK_VECTOR_PHYSICAL\x10\x04\"l\n\x10\x41ttackComplexity\x12!\n\x1d\x41TTACK_COMPLEXITY_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41TTACK_COMPLEXITY_LOW\x10\x01\x12\x1a\n\x16\x41TTACK_COMPLEXITY_HIGH\x10\x02\"\x92\x01\n\x12PrivilegesRequired\x12#\n\x1fPRIVILEGES_REQUIRED_UNSPECIFIED\x10\x00\x12\x1c\n\x18PRIVILEGES_REQUIRED_NONE\x10\x01\x12\x1b\n\x17PRIVILEGES_REQUIRED_LOW\x10\x02\x12\x1c\n\x18PRIVILEGES_REQUIRED_HIGH\x10\x03\"m\n\x0fUserInteraction\x12 \n\x1cUSER_INTERACTION_UNSPECIFIED\x10\x00\x12\x19\n\x15USER_INTERACTION_NONE\x10\x01\x12\x1d\n\x19USER_INTERACTION_REQUIRED\x10\x02\"F\n\x05Scope\x12\x15\n\x11SCOPE_UNSPECIFIED\x10\x00\x12\x13\n\x0fSCOPE_UNCHANGED\x10\x01\x12\x11\n\rSCOPE_CHANGED\x10\x02\"R\n\x06Impact\x12\x16\n\x12IMPACT_UNSPECIFIED\x10\x00\x12\x0f\n\x0bIMPACT_HIGH\x10\x01\x12\x0e\n\nIMPACT_LOW\x10\x02\x12\x0f\n\x0bIMPACT_NONE\x10\x03\"\xb8\x0b\n\x04\x43VSS\x12\x12\n\nbase_score\x18\x01 \x01(\x02\x12\x1c\n\x14\x65xploitability_score\x18\x02 \x01(\x02\x12\x14\n\x0cimpact_score\x18\x03 \x01(\x02\x12\x34\n\rattack_vector\x18\x04 \x01(\x0e\x32\x1d.grafeas.v1.CVSS.AttackVector\x12<\n\x11\x61ttack_complexity\x18\x05 \x01(\x0e\x32!.grafeas.v1.CVSS.AttackComplexity\x12\x37\n\x0e\x61uthentication\x18\x06 \x01(\x0e\x32\x1f.grafeas.v1.CVSS.Authentication\x12@\n\x13privileges_required\x18\x07 \x01(\x0e\x32#.grafeas.v1.CVSS.PrivilegesRequired\x12:\n\x10user_interaction\x18\x08 \x01(\x0e\x32 .grafeas.v1.CVSS.UserInteraction\x12%\n\x05scope\x18\t \x01(\x0e\x32\x16.grafeas.v1.CVSS.Scope\x12\x37\n\x16\x63onfidentiality_impact\x18\n \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\x12\x31\n\x10integrity_impact\x18\x0b \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\x12\x34\n\x13\x61vailability_impact\x18\x0c \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\"\x99\x01\n\x0c\x41ttackVector\x12\x1d\n\x19\x41TTACK_VECTOR_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41TTACK_VECTOR_NETWORK\x10\x01\x12\x1a\n\x16\x41TTACK_VECTOR_ADJACENT\x10\x02\x12\x17\n\x13\x41TTACK_VECTOR_LOCAL\x10\x03\x12\x1a\n\x16\x41TTACK_VECTOR_PHYSICAL\x10\x04\"\x8a\x01\n\x10\x41ttackComplexity\x12!\n\x1d\x41TTACK_COMPLEXITY_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41TTACK_COMPLEXITY_LOW\x10\x01\x12\x1a\n\x16\x41TTACK_COMPLEXITY_HIGH\x10\x02\x12\x1c\n\x18\x41TTACK_COMPLEXITY_MEDIUM\x10\x03\"\x81\x01\n\x0e\x41uthentication\x12\x1e\n\x1a\x41UTHENTICATION_UNSPECIFIED\x10\x00\x12\x1b\n\x17\x41UTHENTICATION_MULTIPLE\x10\x01\x12\x19\n\x15\x41UTHENTICATION_SINGLE\x10\x02\x12\x17\n\x13\x41UTHENTICATION_NONE\x10\x03\"\x92\x01\n\x12PrivilegesRequired\x12#\n\x1fPRIVILEGES_REQUIRED_UNSPECIFIED\x10\x00\x12\x1c\n\x18PRIVILEGES_REQUIRED_NONE\x10\x01\x12\x1b\n\x17PRIVILEGES_REQUIRED_LOW\x10\x02\x12\x1c\n\x18PRIVILEGES_REQUIRED_HIGH\x10\x03\"m\n\x0fUserInteraction\x12 \n\x1cUSER_INTERACTION_UNSPECIFIED\x10\x00\x12\x19\n\x15USER_INTERACTION_NONE\x10\x01\x12\x1d\n\x19USER_INTERACTION_REQUIRED\x10\x02\"F\n\x05Scope\x12\x15\n\x11SCOPE_UNSPECIFIED\x10\x00\x12\x13\n\x0fSCOPE_UNCHANGED\x10\x01\x12\x11\n\rSCOPE_CHANGED\x10\x02\"{\n\x06Impact\x12\x16\n\x12IMPACT_UNSPECIFIED\x10\x00\x12\x0f\n\x0bIMPACT_HIGH\x10\x01\x12\x0e\n\nIMPACT_LOW\x10\x02\x12\x0f\n\x0bIMPACT_NONE\x10\x03\x12\x12\n\x0eIMPACT_PARTIAL\x10\x04\x12\x13\n\x0fIMPACT_COMPLETE\x10\x05*S\n\x0b\x43VSSVersion\x12\x1c\n\x18\x43VSS_VERSION_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x43VSS_VERSION_2\x10\x01\x12\x12\n\x0e\x43VSS_VERSION_3\x10\x02\x42\\\n\rio.grafeas.v1B\tCVSSProtoP\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRAb\x06proto3" +descriptor_data = "\n\x15grafeas/v1/cvss.proto\x12\ngrafeas.v1\"\xc5\t\n\x06\x43VSSv3\x12\x12\n\nbase_score\x18\x01 \x01(\x02\x12\x1c\n\x14\x65xploitability_score\x18\x02 \x01(\x02\x12\x14\n\x0cimpact_score\x18\x03 \x01(\x02\x12\x36\n\rattack_vector\x18\x05 \x01(\x0e\x32\x1f.grafeas.v1.CVSSv3.AttackVector\x12>\n\x11\x61ttack_complexity\x18\x06 \x01(\x0e\x32#.grafeas.v1.CVSSv3.AttackComplexity\x12\x42\n\x13privileges_required\x18\x07 \x01(\x0e\x32%.grafeas.v1.CVSSv3.PrivilegesRequired\x12<\n\x10user_interaction\x18\x08 \x01(\x0e\x32\".grafeas.v1.CVSSv3.UserInteraction\x12\'\n\x05scope\x18\t \x01(\x0e\x32\x18.grafeas.v1.CVSSv3.Scope\x12\x39\n\x16\x63onfidentiality_impact\x18\n \x01(\x0e\x32\x19.grafeas.v1.CVSSv3.Impact\x12\x33\n\x10integrity_impact\x18\x0b \x01(\x0e\x32\x19.grafeas.v1.CVSSv3.Impact\x12\x36\n\x13\x61vailability_impact\x18\x0c \x01(\x0e\x32\x19.grafeas.v1.CVSSv3.Impact\"\x99\x01\n\x0c\x41ttackVector\x12\x1d\n\x19\x41TTACK_VECTOR_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41TTACK_VECTOR_NETWORK\x10\x01\x12\x1a\n\x16\x41TTACK_VECTOR_ADJACENT\x10\x02\x12\x17\n\x13\x41TTACK_VECTOR_LOCAL\x10\x03\x12\x1a\n\x16\x41TTACK_VECTOR_PHYSICAL\x10\x04\"l\n\x10\x41ttackComplexity\x12!\n\x1d\x41TTACK_COMPLEXITY_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41TTACK_COMPLEXITY_LOW\x10\x01\x12\x1a\n\x16\x41TTACK_COMPLEXITY_HIGH\x10\x02\"\x92\x01\n\x12PrivilegesRequired\x12#\n\x1fPRIVILEGES_REQUIRED_UNSPECIFIED\x10\x00\x12\x1c\n\x18PRIVILEGES_REQUIRED_NONE\x10\x01\x12\x1b\n\x17PRIVILEGES_REQUIRED_LOW\x10\x02\x12\x1c\n\x18PRIVILEGES_REQUIRED_HIGH\x10\x03\"m\n\x0fUserInteraction\x12 \n\x1cUSER_INTERACTION_UNSPECIFIED\x10\x00\x12\x19\n\x15USER_INTERACTION_NONE\x10\x01\x12\x1d\n\x19USER_INTERACTION_REQUIRED\x10\x02\"F\n\x05Scope\x12\x15\n\x11SCOPE_UNSPECIFIED\x10\x00\x12\x13\n\x0fSCOPE_UNCHANGED\x10\x01\x12\x11\n\rSCOPE_CHANGED\x10\x02\"R\n\x06Impact\x12\x16\n\x12IMPACT_UNSPECIFIED\x10\x00\x12\x0f\n\x0bIMPACT_HIGH\x10\x01\x12\x0e\n\nIMPACT_LOW\x10\x02\x12\x0f\n\x0bIMPACT_NONE\x10\x03\"\xce\x12\n\x04\x43VSS\x12\x12\n\nbase_score\x18\x01 \x01(\x02\x12\x1c\n\x14\x65xploitability_score\x18\x02 \x01(\x02\x12\x14\n\x0cimpact_score\x18\x03 \x01(\x02\x12\x34\n\rattack_vector\x18\x04 \x01(\x0e\x32\x1d.grafeas.v1.CVSS.AttackVector\x12<\n\x11\x61ttack_complexity\x18\x05 \x01(\x0e\x32!.grafeas.v1.CVSS.AttackComplexity\x12\x37\n\x0e\x61uthentication\x18\x06 \x01(\x0e\x32\x1f.grafeas.v1.CVSS.Authentication\x12@\n\x13privileges_required\x18\x07 \x01(\x0e\x32#.grafeas.v1.CVSS.PrivilegesRequired\x12:\n\x10user_interaction\x18\x08 \x01(\x0e\x32 .grafeas.v1.CVSS.UserInteraction\x12%\n\x05scope\x18\t \x01(\x0e\x32\x16.grafeas.v1.CVSS.Scope\x12\x37\n\x16\x63onfidentiality_impact\x18\n \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\x12\x31\n\x10integrity_impact\x18\x0b \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\x12\x34\n\x13\x61vailability_impact\x18\x0c \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\x12@\n\x13\x61ttack_requirements\x18\r \x01(\x0e\x32#.grafeas.v1.CVSS.AttackRequirements\x12I\n(vulnerable_system_confidentiality_impact\x18\x0e \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\x12\x43\n\"vulnerable_system_integrity_impact\x18\x0f \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\x12\x46\n%vulnerable_system_availability_impact\x18\x10 \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\x12I\n(subsequent_system_confidentiality_impact\x18\x11 \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\x12\x43\n\"subsequent_system_integrity_impact\x18\x12 \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\x12\x46\n%subsequent_system_availability_impact\x18\x13 \x01(\x0e\x32\x17.grafeas.v1.CVSS.Impact\x12:\n\x10\x65xploit_maturity\x18\x14 \x01(\x0e\x32 .grafeas.v1.CVSS.ExploitMaturity\"\x99\x01\n\x0c\x41ttackVector\x12\x1d\n\x19\x41TTACK_VECTOR_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41TTACK_VECTOR_NETWORK\x10\x01\x12\x1a\n\x16\x41TTACK_VECTOR_ADJACENT\x10\x02\x12\x17\n\x13\x41TTACK_VECTOR_LOCAL\x10\x03\x12\x1a\n\x16\x41TTACK_VECTOR_PHYSICAL\x10\x04\"\x8a\x01\n\x10\x41ttackComplexity\x12!\n\x1d\x41TTACK_COMPLEXITY_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41TTACK_COMPLEXITY_LOW\x10\x01\x12\x1a\n\x16\x41TTACK_COMPLEXITY_HIGH\x10\x02\x12\x1c\n\x18\x41TTACK_COMPLEXITY_MEDIUM\x10\x03\"\x81\x01\n\x0e\x41uthentication\x12\x1e\n\x1a\x41UTHENTICATION_UNSPECIFIED\x10\x00\x12\x1b\n\x17\x41UTHENTICATION_MULTIPLE\x10\x01\x12\x19\n\x15\x41UTHENTICATION_SINGLE\x10\x02\x12\x17\n\x13\x41UTHENTICATION_NONE\x10\x03\"\x92\x01\n\x12PrivilegesRequired\x12#\n\x1fPRIVILEGES_REQUIRED_UNSPECIFIED\x10\x00\x12\x1c\n\x18PRIVILEGES_REQUIRED_NONE\x10\x01\x12\x1b\n\x17PRIVILEGES_REQUIRED_LOW\x10\x02\x12\x1c\n\x18PRIVILEGES_REQUIRED_HIGH\x10\x03\"\xa8\x01\n\x0fUserInteraction\x12 \n\x1cUSER_INTERACTION_UNSPECIFIED\x10\x00\x12\x19\n\x15USER_INTERACTION_NONE\x10\x01\x12\x1d\n\x19USER_INTERACTION_REQUIRED\x10\x02\x12\x1c\n\x18USER_INTERACTION_PASSIVE\x10\x03\x12\x1b\n\x17USER_INTERACTION_ACTIVE\x10\x04\"F\n\x05Scope\x12\x15\n\x11SCOPE_UNSPECIFIED\x10\x00\x12\x13\n\x0fSCOPE_UNCHANGED\x10\x01\x12\x11\n\rSCOPE_CHANGED\x10\x02\"{\n\x06Impact\x12\x16\n\x12IMPACT_UNSPECIFIED\x10\x00\x12\x0f\n\x0bIMPACT_HIGH\x10\x01\x12\x0e\n\nIMPACT_LOW\x10\x02\x12\x0f\n\x0bIMPACT_NONE\x10\x03\x12\x12\n\x0eIMPACT_PARTIAL\x10\x04\x12\x13\n\x0fIMPACT_COMPLETE\x10\x05\"x\n\x12\x41ttackRequirements\x12#\n\x1f\x41TTACK_REQUIREMENTS_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x41TTACK_REQUIREMENTS_NONE\x10\x01\x12\x1f\n\x1b\x41TTACK_REQUIREMENTS_PRESENT\x10\x02\"\xaf\x01\n\x0f\x45xploitMaturity\x12 \n\x1c\x45XPLOIT_MATURITY_UNSPECIFIED\x10\x00\x12 \n\x1c\x45XPLOIT_MATURITY_NOT_DEFINED\x10\x01\x12\x1d\n\x19\x45XPLOIT_MATURITY_ATTACKED\x10\x02\x12\x18\n\x14\x45XPLOIT_MATURITY_POC\x10\x03\x12\x1f\n\x1b\x45XPLOIT_MATURITY_UNREPORTED\x10\x04*g\n\x0b\x43VSSVersion\x12\x1c\n\x18\x43VSS_VERSION_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x43VSS_VERSION_2\x10\x01\x12\x12\n\x0e\x43VSS_VERSION_3\x10\x02\x12\x12\n\x0e\x43VSS_VERSION_4\x10\x03\x42\\\n\rio.grafeas.v1B\tCVSSProtoP\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRAb\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) @@ -27,6 +27,8 @@ module V1 CVSS::UserInteraction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.CVSS.UserInteraction").enummodule CVSS::Scope = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.CVSS.Scope").enummodule CVSS::Impact = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.CVSS.Impact").enummodule + CVSS::AttackRequirements = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.CVSS.AttackRequirements").enummodule + CVSS::ExploitMaturity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.CVSS.ExploitMaturity").enummodule CVSSVersion = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.CVSSVersion").enummodule end end diff --git a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/discovery_pb.rb b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/discovery_pb.rb index 8af350fa0..eb72608cb 100644 --- a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/discovery_pb.rb +++ b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/discovery_pb.rb @@ -10,7 +10,7 @@ require 'grafeas/v1/common_pb' -descriptor_data = "\n\x1agrafeas/v1/discovery.proto\x12\ngrafeas.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x17grafeas/v1/common.proto\"<\n\rDiscoveryNote\x12+\n\ranalysis_kind\x18\x01 \x01(\x0e\x32\x14.grafeas.v1.NoteKind\"\xfc\n\n\x13\x44iscoveryOccurrence\x12O\n\x13\x63ontinuous_analysis\x18\x01 \x01(\x0e\x32\x32.grafeas.v1.DiscoveryOccurrence.ContinuousAnalysis\x12G\n\x0f\x61nalysis_status\x18\x02 \x01(\x0e\x32..grafeas.v1.DiscoveryOccurrence.AnalysisStatus\x12M\n\x12\x61nalysis_completed\x18\x07 \x01(\x0b\x32\x31.grafeas.v1.DiscoveryOccurrence.AnalysisCompleted\x12*\n\x0e\x61nalysis_error\x18\x08 \x03(\x0b\x32\x12.google.rpc.Status\x12\x31\n\x15\x61nalysis_status_error\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\x12\x0b\n\x03\x63pe\x18\x04 \x01(\t\x12\x32\n\x0elast_scan_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x0c\x61rchive_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12?\n\x0bsbom_status\x18\t \x01(\x0b\x32*.grafeas.v1.DiscoveryOccurrence.SBOMStatus\x12[\n\x19vulnerability_attestation\x18\n \x01(\x0b\x32\x38.grafeas.v1.DiscoveryOccurrence.VulnerabilityAttestation\x1a*\n\x11\x41nalysisCompleted\x12\x15\n\ranalysis_type\x18\x01 \x03(\t\x1a\xa9\x01\n\nSBOMStatus\x12H\n\nsbom_state\x18\x01 \x01(\x0e\x32\x34.grafeas.v1.DiscoveryOccurrence.SBOMStatus.SBOMState\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"B\n\tSBOMState\x12\x1a\n\x16SBOM_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x1a\xb3\x02\n\x18VulnerabilityAttestation\x12\x35\n\x11last_attempt_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x65\n\x05state\x18\x02 \x01(\x0e\x32V.grafeas.v1.DiscoveryOccurrence.VulnerabilityAttestation.VulnerabilityAttestationState\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"j\n\x1dVulnerabilityAttestationState\x12/\n+VULNERABILITY_ATTESTATION_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x0b\n\x07\x46\x41ILURE\x10\x02\"S\n\x12\x43ontinuousAnalysis\x12#\n\x1f\x43ONTINUOUS_ANALYSIS_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0c\n\x08INACTIVE\x10\x02\"\xa3\x01\n\x0e\x41nalysisStatus\x12\x1f\n\x1b\x41NALYSIS_STATUS_UNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\x0c\n\x08SCANNING\x10\x02\x12\x14\n\x10\x46INISHED_SUCCESS\x10\x03\x12\x0c\n\x08\x43OMPLETE\x10\x03\x12\x13\n\x0f\x46INISHED_FAILED\x10\x04\x12\x18\n\x14\x46INISHED_UNSUPPORTED\x10\x05\x1a\x02\x10\x01\x42Q\n\rio.grafeas.v1P\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRAb\x06proto3" +descriptor_data = "\n\x1agrafeas/v1/discovery.proto\x12\ngrafeas.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x17grafeas/v1/common.proto\"<\n\rDiscoveryNote\x12+\n\ranalysis_kind\x18\x01 \x01(\x0e\x32\x14.grafeas.v1.NoteKind\"\xfd\x0c\n\x13\x44iscoveryOccurrence\x12O\n\x13\x63ontinuous_analysis\x18\x01 \x01(\x0e\x32\x32.grafeas.v1.DiscoveryOccurrence.ContinuousAnalysis\x12G\n\x0f\x61nalysis_status\x18\x02 \x01(\x0e\x32..grafeas.v1.DiscoveryOccurrence.AnalysisStatus\x12M\n\x12\x61nalysis_completed\x18\x07 \x01(\x0b\x32\x31.grafeas.v1.DiscoveryOccurrence.AnalysisCompleted\x12*\n\x0e\x61nalysis_error\x18\x08 \x03(\x0b\x32\x12.google.rpc.Status\x12\x31\n\x15\x61nalysis_status_error\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\x12\x0b\n\x03\x63pe\x18\x04 \x01(\t\x12\x32\n\x0elast_scan_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x0c\x61rchive_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12?\n\x0bsbom_status\x18\t \x01(\x0b\x32*.grafeas.v1.DiscoveryOccurrence.SBOMStatus\x12[\n\x19vulnerability_attestation\x18\n \x01(\x0b\x32\x38.grafeas.v1.DiscoveryOccurrence.VulnerabilityAttestation\x12\x33\n\x05\x66iles\x18\x0b \x03(\x0b\x32$.grafeas.v1.DiscoveryOccurrence.File\x12\x42\n\x1elast_vulnerability_update_time\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a*\n\x11\x41nalysisCompleted\x12\x15\n\ranalysis_type\x18\x01 \x03(\t\x1a\xa9\x01\n\nSBOMStatus\x12H\n\nsbom_state\x18\x01 \x01(\x0e\x32\x34.grafeas.v1.DiscoveryOccurrence.SBOMStatus.SBOMState\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"B\n\tSBOMState\x12\x1a\n\x16SBOM_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\x0c\n\x08\x43OMPLETE\x10\x02\x1a\xb3\x02\n\x18VulnerabilityAttestation\x12\x35\n\x11last_attempt_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x65\n\x05state\x18\x02 \x01(\x0e\x32V.grafeas.v1.DiscoveryOccurrence.VulnerabilityAttestation.VulnerabilityAttestationState\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"j\n\x1dVulnerabilityAttestationState\x12/\n+VULNERABILITY_ATTESTATION_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x0b\n\x07\x46\x41ILURE\x10\x02\x1a\x85\x01\n\x04\x46ile\x12\x0c\n\x04name\x18\x01 \x01(\t\x12@\n\x06\x64igest\x18\x02 \x03(\x0b\x32\x30.grafeas.v1.DiscoveryOccurrence.File.DigestEntry\x1a-\n\x0b\x44igestEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"S\n\x12\x43ontinuousAnalysis\x12#\n\x1f\x43ONTINUOUS_ANALYSIS_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x12\x0c\n\x08INACTIVE\x10\x02\"\xa3\x01\n\x0e\x41nalysisStatus\x12\x1f\n\x1b\x41NALYSIS_STATUS_UNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\x0c\n\x08SCANNING\x10\x02\x12\x14\n\x10\x46INISHED_SUCCESS\x10\x03\x12\x0c\n\x08\x43OMPLETE\x10\x03\x12\x13\n\x0f\x46INISHED_FAILED\x10\x04\x12\x18\n\x14\x46INISHED_UNSUPPORTED\x10\x05\x1a\x02\x10\x01\x42Q\n\rio.grafeas.v1P\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRAb\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) @@ -24,6 +24,7 @@ module V1 DiscoveryOccurrence::SBOMStatus::SBOMState = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.DiscoveryOccurrence.SBOMStatus.SBOMState").enummodule DiscoveryOccurrence::VulnerabilityAttestation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.DiscoveryOccurrence.VulnerabilityAttestation").msgclass DiscoveryOccurrence::VulnerabilityAttestation::VulnerabilityAttestationState = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.DiscoveryOccurrence.VulnerabilityAttestation.VulnerabilityAttestationState").enummodule + DiscoveryOccurrence::File = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.DiscoveryOccurrence.File").msgclass DiscoveryOccurrence::ContinuousAnalysis = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.DiscoveryOccurrence.ContinuousAnalysis").enummodule DiscoveryOccurrence::AnalysisStatus = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.DiscoveryOccurrence.AnalysisStatus").enummodule end diff --git a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/grafeas/client.rb b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/grafeas/client.rb index 3b8e2d0ca..651f62ffd 100644 --- a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/grafeas/client.rb +++ b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/grafeas/client.rb @@ -283,7 +283,7 @@ def get_occurrence request, options = nil # @param options [::Gapic::CallOptions, ::Hash] # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. # - # @overload list_occurrences(parent: nil, filter: nil, page_size: nil, page_token: nil) + # @overload list_occurrences(parent: nil, filter: nil, page_size: nil, page_token: nil, return_partial_success: nil) # Pass arguments to `list_occurrences` via keyword arguments. Note that at # least one keyword argument is required. To specify no parameters, or to keep all # the default parameter values, pass an empty Hash as a request object (see above). @@ -298,6 +298,12 @@ def get_occurrence request, options = nil # page size is 1000. If not specified, page size defaults to 20. # @param page_token [::String] # Token to provide to skip to a particular spot in the list. + # @param return_partial_success [::Boolean] + # If set, the request will return all reachable Occurrences + # and report all unreachable regions in the `unreachable` field in + # the response. + # + # Only applicable for requests in the global region. # # @yield [response, operation] Access the result along with the RPC operation # @yieldparam response [::Gapic::PagedEnumerable<::Grafeas::V1::Occurrence>] @@ -909,7 +915,7 @@ def get_note request, options = nil # @param options [::Gapic::CallOptions, ::Hash] # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. # - # @overload list_notes(parent: nil, filter: nil, page_size: nil, page_token: nil) + # @overload list_notes(parent: nil, filter: nil, page_size: nil, page_token: nil, return_partial_success: nil) # Pass arguments to `list_notes` via keyword arguments. Note that at # least one keyword argument is required. To specify no parameters, or to keep all # the default parameter values, pass an empty Hash as a request object (see above). @@ -924,6 +930,12 @@ def get_note request, options = nil # size is 1000. If not specified, page size defaults to 20. # @param page_token [::String] # Token to provide to skip to a particular spot in the list. + # @param return_partial_success [::Boolean] + # If set, the request will return all reachable Notes + # and report all unreachable regions in the `unreachable` field in + # the response. + # + # Only applicable for requests in the global region. # # @yield [response, operation] Access the result along with the RPC operation # @yieldparam response [::Gapic::PagedEnumerable<::Grafeas::V1::Note>] diff --git a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/grafeas_pb.rb b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/grafeas_pb.rb index 46216cf59..f098a03d4 100644 --- a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/grafeas_pb.rb +++ b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/grafeas_pb.rb @@ -27,7 +27,7 @@ require 'grafeas/v1/vulnerability_pb' -descriptor_data = "\n\x18grafeas/v1/grafeas.proto\x12\ngrafeas.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgrafeas/v1/attestation.proto\x1a\x16grafeas/v1/build.proto\x1a\x17grafeas/v1/common.proto\x1a\x1bgrafeas/v1/compliance.proto\x1a\x1bgrafeas/v1/deployment.proto\x1a\x1agrafeas/v1/discovery.proto\x1a!grafeas/v1/dsse_attestation.proto\x1a\x16grafeas/v1/image.proto\x1a\x18grafeas/v1/package.proto\x1a\x15grafeas/v1/sbom.proto\x1a\x17grafeas/v1/secret.proto\x1a\x18grafeas/v1/upgrade.proto\x1a\x14grafeas/v1/vex.proto\x1a\x1egrafeas/v1/vulnerability.proto\"\xea\x07\n\nOccurrence\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cresource_uri\x18\x02 \x01(\t\x12\x11\n\tnote_name\x18\x03 \x01(\t\x12\"\n\x04kind\x18\x04 \x01(\x0e\x32\x14.grafeas.v1.NoteKind\x12\x13\n\x0bremediation\x18\x05 \x01(\t\x12/\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12<\n\rvulnerability\x18\x08 \x01(\x0b\x32#.grafeas.v1.VulnerabilityOccurrenceH\x00\x12,\n\x05\x62uild\x18\t \x01(\x0b\x32\x1b.grafeas.v1.BuildOccurrenceH\x00\x12,\n\x05image\x18\n \x01(\x0b\x32\x1b.grafeas.v1.ImageOccurrenceH\x00\x12\x30\n\x07package\x18\x0b \x01(\x0b\x32\x1d.grafeas.v1.PackageOccurrenceH\x00\x12\x36\n\ndeployment\x18\x0c \x01(\x0b\x32 .grafeas.v1.DeploymentOccurrenceH\x00\x12\x34\n\tdiscovery\x18\r \x01(\x0b\x32\x1f.grafeas.v1.DiscoveryOccurrenceH\x00\x12\x38\n\x0b\x61ttestation\x18\x0e \x01(\x0b\x32!.grafeas.v1.AttestationOccurrenceH\x00\x12\x30\n\x07upgrade\x18\x0f \x01(\x0b\x32\x1d.grafeas.v1.UpgradeOccurrenceH\x00\x12\x36\n\ncompliance\x18\x10 \x01(\x0b\x32 .grafeas.v1.ComplianceOccurrenceH\x00\x12\x41\n\x10\x64sse_attestation\x18\x11 \x01(\x0b\x32%.grafeas.v1.DSSEAttestationOccurrenceH\x00\x12=\n\x0esbom_reference\x18\x13 \x01(\x0b\x32#.grafeas.v1.SBOMReferenceOccurrenceH\x00\x12.\n\x06secret\x18\x14 \x01(\x0b\x32\x1c.grafeas.v1.SecretOccurrenceH\x00\x12&\n\x08\x65nvelope\x18\x12 \x01(\x0b\x32\x14.grafeas.v1.Envelope:G\xea\x41\x44\n\x15grafeas.io/Occurrence\x12+projects/{project}/occurrences/{occurrence}B\t\n\x07\x64\x65tails\"\xa1\x08\n\x04Note\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x19\n\x11short_description\x18\x02 \x01(\t\x12\x18\n\x10long_description\x18\x03 \x01(\t\x12\"\n\x04kind\x18\x04 \x01(\x0e\x32\x14.grafeas.v1.NoteKind\x12+\n\x0brelated_url\x18\x05 \x03(\x0b\x32\x16.grafeas.v1.RelatedUrl\x12\x33\n\x0f\x65xpiration_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0b\x63reate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1a\n\x12related_note_names\x18\t \x03(\t\x12\x36\n\rvulnerability\x18\n \x01(\x0b\x32\x1d.grafeas.v1.VulnerabilityNoteH\x00\x12&\n\x05\x62uild\x18\x0b \x01(\x0b\x32\x15.grafeas.v1.BuildNoteH\x00\x12&\n\x05image\x18\x0c \x01(\x0b\x32\x15.grafeas.v1.ImageNoteH\x00\x12*\n\x07package\x18\r \x01(\x0b\x32\x17.grafeas.v1.PackageNoteH\x00\x12\x30\n\ndeployment\x18\x0e \x01(\x0b\x32\x1a.grafeas.v1.DeploymentNoteH\x00\x12.\n\tdiscovery\x18\x0f \x01(\x0b\x32\x19.grafeas.v1.DiscoveryNoteH\x00\x12\x32\n\x0b\x61ttestation\x18\x10 \x01(\x0b\x32\x1b.grafeas.v1.AttestationNoteH\x00\x12*\n\x07upgrade\x18\x11 \x01(\x0b\x32\x17.grafeas.v1.UpgradeNoteH\x00\x12\x30\n\ncompliance\x18\x12 \x01(\x0b\x32\x1a.grafeas.v1.ComplianceNoteH\x00\x12;\n\x10\x64sse_attestation\x18\x13 \x01(\x0b\x32\x1f.grafeas.v1.DSSEAttestationNoteH\x00\x12K\n\x18vulnerability_assessment\x18\x14 \x01(\x0b\x32\'.grafeas.v1.VulnerabilityAssessmentNoteH\x00\x12\x37\n\x0esbom_reference\x18\x15 \x01(\x0b\x32\x1d.grafeas.v1.SBOMReferenceNoteH\x00\x12(\n\x06secret\x18\x16 \x01(\x0b\x32\x16.grafeas.v1.SecretNoteH\x00:5\xea\x41\x32\n\x0fgrafeas.io/Note\x12\x1fprojects/{project}/notes/{note}B\x06\n\x04type\"C\n\x14GetOccurrenceRequest\x12+\n\x04name\x18\x01 \x01(\tB\x1d\xe0\x41\x02\xfa\x41\x17\n\x15grafeas.io/Occurrence\"{\n\x16ListOccurrencesRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x12\n\npage_token\x18\x04 \x01(\t\"_\n\x17ListOccurrencesResponse\x12+\n\x0boccurrences\x18\x01 \x03(\x0b\x32\x16.grafeas.v1.Occurrence\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"F\n\x17\x44\x65leteOccurrenceRequest\x12+\n\x04name\x18\x01 \x01(\tB\x1d\xe0\x41\x02\xfa\x41\x17\n\x15grafeas.io/Occurrence\"v\n\x17\x43reateOccurrenceRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12/\n\noccurrence\x18\x02 \x01(\x0b\x32\x16.grafeas.v1.OccurrenceB\x03\xe0\x41\x02\"\xa8\x01\n\x17UpdateOccurrenceRequest\x12+\n\x04name\x18\x01 \x01(\tB\x1d\xe0\x41\x02\xfa\x41\x17\n\x15grafeas.io/Occurrence\x12/\n\noccurrence\x18\x02 \x01(\x0b\x32\x16.grafeas.v1.OccurrenceB\x03\xe0\x41\x02\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask\"7\n\x0eGetNoteRequest\x12%\n\x04name\x18\x01 \x01(\tB\x17\xe0\x41\x02\xfa\x41\x11\n\x0fgrafeas.io/Note\"G\n\x18GetOccurrenceNoteRequest\x12+\n\x04name\x18\x01 \x01(\tB\x1d\xe0\x41\x02\xfa\x41\x17\n\x15grafeas.io/Occurrence\"u\n\x10ListNotesRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x12\n\npage_token\x18\x04 \x01(\t\"M\n\x11ListNotesResponse\x12\x1f\n\x05notes\x18\x01 \x03(\x0b\x32\x10.grafeas.v1.Note\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\":\n\x11\x44\x65leteNoteRequest\x12%\n\x04name\x18\x01 \x01(\tB\x17\xe0\x41\x02\xfa\x41\x11\n\x0fgrafeas.io/Note\"z\n\x11\x43reateNoteRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12\x14\n\x07note_id\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12#\n\x04note\x18\x03 \x01(\x0b\x32\x10.grafeas.v1.NoteB\x03\xe0\x41\x02\"\x90\x01\n\x11UpdateNoteRequest\x12%\n\x04name\x18\x01 \x01(\tB\x17\xe0\x41\x02\xfa\x41\x11\n\x0fgrafeas.io/Note\x12#\n\x04note\x18\x02 \x01(\x0b\x32\x10.grafeas.v1.NoteB\x03\xe0\x41\x02\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask\"z\n\x1aListNoteOccurrencesRequest\x12%\n\x04name\x18\x01 \x01(\tB\x17\xe0\x41\x02\xfa\x41\x11\n\x0fgrafeas.io/Note\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x12\n\npage_token\x18\x04 \x01(\t\"c\n\x1bListNoteOccurrencesResponse\x12+\n\x0boccurrences\x18\x01 \x03(\x0b\x32\x16.grafeas.v1.Occurrence\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xc9\x01\n\x17\x42\x61tchCreateNotesRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12\x42\n\x05notes\x18\x02 \x03(\x0b\x32..grafeas.v1.BatchCreateNotesRequest.NotesEntryB\x03\xe0\x41\x02\x1a>\n\nNotesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1f\n\x05value\x18\x02 \x01(\x0b\x32\x10.grafeas.v1.Note:\x02\x38\x01\";\n\x18\x42\x61tchCreateNotesResponse\x12\x1f\n\x05notes\x18\x01 \x03(\x0b\x32\x10.grafeas.v1.Note\"}\n\x1d\x42\x61tchCreateOccurrencesRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12\x30\n\x0boccurrences\x18\x02 \x03(\x0b\x32\x16.grafeas.v1.OccurrenceB\x03\xe0\x41\x02\"M\n\x1e\x42\x61tchCreateOccurrencesResponse\x12+\n\x0boccurrences\x18\x01 \x03(\x0b\x32\x16.grafeas.v1.Occurrence2\x8d\x16\n\x07Grafeas\x12\xb0\x01\n\rGetOccurrence\x12 .grafeas.v1.GetOccurrenceRequest\x1a\x16.grafeas.v1.Occurrence\"e\xda\x41\x04name\x82\xd3\xe4\x93\x02X\x12#/v1/{name=projects/*/occurrences/*}Z1\x12//v1/{name=projects/*/locations/*/occurrences/*}\x12\xca\x01\n\x0fListOccurrences\x12\".grafeas.v1.ListOccurrencesRequest\x1a#.grafeas.v1.ListOccurrencesResponse\"n\xda\x41\rparent,filter\x82\xd3\xe4\x93\x02X\x12#/v1/{parent=projects/*}/occurrencesZ1\x12//v1/{parent=projects/*/locations/*}/occurrences\x12\xb6\x01\n\x10\x44\x65leteOccurrence\x12#.grafeas.v1.DeleteOccurrenceRequest\x1a\x16.google.protobuf.Empty\"e\xda\x41\x04name\x82\xd3\xe4\x93\x02X*#/v1/{name=projects/*/occurrences/*}Z1*//v1/{name=projects/*/locations/*/occurrences/*}\x12\xdc\x01\n\x10\x43reateOccurrence\x12#.grafeas.v1.CreateOccurrenceRequest\x1a\x16.grafeas.v1.Occurrence\"\x8a\x01\xda\x41\x11parent,occurrence\x82\xd3\xe4\x93\x02p\"#/v1/{parent=projects/*}/occurrences:\noccurrenceZ=\"//v1/{parent=projects/*/locations/*}/occurrences:\noccurrence\x12\x83\x02\n\x16\x42\x61tchCreateOccurrences\x12).grafeas.v1.BatchCreateOccurrencesRequest\x1a*.grafeas.v1.BatchCreateOccurrencesResponse\"\x91\x01\xda\x41\x12parent,occurrences\x82\xd3\xe4\x93\x02v\"//v1/{parent=projects/*}/occurrences:batchCreate:\x01*Z@\";/v1/{parent=projects/*/locations/*}/occurrences:batchCreate:\x01*\x12\xe6\x01\n\x10UpdateOccurrence\x12#.grafeas.v1.UpdateOccurrenceRequest\x1a\x16.grafeas.v1.Occurrence\"\x94\x01\xda\x41\x1bname,occurrence,update_mask\x82\xd3\xe4\x93\x02p2#/v1/{name=projects/*/occurrences/*}:\noccurrenceZ=2//v1/{name=projects/*/locations/*/occurrences/*}:\noccurrence\x12\xbe\x01\n\x11GetOccurrenceNote\x12$.grafeas.v1.GetOccurrenceNoteRequest\x1a\x10.grafeas.v1.Note\"q\xda\x41\x04name\x82\xd3\xe4\x93\x02\x64\x12)/v1/{name=projects/*/occurrences/*}/notesZ7\x12\x35/v1/{name=projects/*/locations/*/occurrences/*}/notes\x12\x92\x01\n\x07GetNote\x12\x1a.grafeas.v1.GetNoteRequest\x1a\x10.grafeas.v1.Note\"Y\xda\x41\x04name\x82\xd3\xe4\x93\x02L\x12\x1d/v1/{name=projects/*/notes/*}Z+\x12)/v1/{name=projects/*/locations/*/notes/*}\x12\xac\x01\n\tListNotes\x12\x1c.grafeas.v1.ListNotesRequest\x1a\x1d.grafeas.v1.ListNotesResponse\"b\xda\x41\rparent,filter\x82\xd3\xe4\x93\x02L\x12\x1d/v1/{parent=projects/*}/notesZ+\x12)/v1/{parent=projects/*/locations/*}/notes\x12\x9e\x01\n\nDeleteNote\x12\x1d.grafeas.v1.DeleteNoteRequest\x1a\x16.google.protobuf.Empty\"Y\xda\x41\x04name\x82\xd3\xe4\x93\x02L*\x1d/v1/{name=projects/*/notes/*}Z+*)/v1/{name=projects/*/locations/*/notes/*}\x12\xb3\x01\n\nCreateNote\x12\x1d.grafeas.v1.CreateNoteRequest\x1a\x10.grafeas.v1.Note\"t\xda\x41\x13parent,note_id,note\x82\xd3\xe4\x93\x02X\"\x1d/v1/{parent=projects/*}/notes:\x04noteZ1\")/v1/{parent=projects/*/locations/*}/notes:\x04note\x12\xde\x01\n\x10\x42\x61tchCreateNotes\x12#.grafeas.v1.BatchCreateNotesRequest\x1a$.grafeas.v1.BatchCreateNotesResponse\"\x7f\xda\x41\x0cparent,notes\x82\xd3\xe4\x93\x02j\")/v1/{parent=projects/*}/notes:batchCreate:\x01*Z:\"5/v1/{parent=projects/*/locations/*}/notes:batchCreate:\x01*\x12\xb5\x01\n\nUpdateNote\x12\x1d.grafeas.v1.UpdateNoteRequest\x1a\x10.grafeas.v1.Note\"v\xda\x41\x15name,note,update_mask\x82\xd3\xe4\x93\x02X2\x1d/v1/{name=projects/*/notes/*}:\x04noteZ12)/v1/{name=projects/*/locations/*/notes/*}:\x04note\x12\xe0\x01\n\x13ListNoteOccurrences\x12&.grafeas.v1.ListNoteOccurrencesRequest\x1a\'.grafeas.v1.ListNoteOccurrencesResponse\"x\xda\x41\x0bname,filter\x82\xd3\xe4\x93\x02\x64\x12)/v1/{name=projects/*/notes/*}/occurrencesZ7\x12\x35/v1/{name=projects/*/locations/*/notes/*}/occurrences\x1a#\xca\x41 containeranalysis.googleapis.comB|\n\rio.grafeas.v1P\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRA\xea\x41(\n\x12grafeas.io/Project\x12\x12projects/{project}b\x06proto3" +descriptor_data = "\n\x18grafeas/v1/grafeas.proto\x12\ngrafeas.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgrafeas/v1/attestation.proto\x1a\x16grafeas/v1/build.proto\x1a\x17grafeas/v1/common.proto\x1a\x1bgrafeas/v1/compliance.proto\x1a\x1bgrafeas/v1/deployment.proto\x1a\x1agrafeas/v1/discovery.proto\x1a!grafeas/v1/dsse_attestation.proto\x1a\x16grafeas/v1/image.proto\x1a\x18grafeas/v1/package.proto\x1a\x15grafeas/v1/sbom.proto\x1a\x17grafeas/v1/secret.proto\x1a\x18grafeas/v1/upgrade.proto\x1a\x14grafeas/v1/vex.proto\x1a\x1egrafeas/v1/vulnerability.proto\"\xea\x07\n\nOccurrence\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cresource_uri\x18\x02 \x01(\t\x12\x11\n\tnote_name\x18\x03 \x01(\t\x12\"\n\x04kind\x18\x04 \x01(\x0e\x32\x14.grafeas.v1.NoteKind\x12\x13\n\x0bremediation\x18\x05 \x01(\t\x12/\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12<\n\rvulnerability\x18\x08 \x01(\x0b\x32#.grafeas.v1.VulnerabilityOccurrenceH\x00\x12,\n\x05\x62uild\x18\t \x01(\x0b\x32\x1b.grafeas.v1.BuildOccurrenceH\x00\x12,\n\x05image\x18\n \x01(\x0b\x32\x1b.grafeas.v1.ImageOccurrenceH\x00\x12\x30\n\x07package\x18\x0b \x01(\x0b\x32\x1d.grafeas.v1.PackageOccurrenceH\x00\x12\x36\n\ndeployment\x18\x0c \x01(\x0b\x32 .grafeas.v1.DeploymentOccurrenceH\x00\x12\x34\n\tdiscovery\x18\r \x01(\x0b\x32\x1f.grafeas.v1.DiscoveryOccurrenceH\x00\x12\x38\n\x0b\x61ttestation\x18\x0e \x01(\x0b\x32!.grafeas.v1.AttestationOccurrenceH\x00\x12\x30\n\x07upgrade\x18\x0f \x01(\x0b\x32\x1d.grafeas.v1.UpgradeOccurrenceH\x00\x12\x36\n\ncompliance\x18\x10 \x01(\x0b\x32 .grafeas.v1.ComplianceOccurrenceH\x00\x12\x41\n\x10\x64sse_attestation\x18\x11 \x01(\x0b\x32%.grafeas.v1.DSSEAttestationOccurrenceH\x00\x12=\n\x0esbom_reference\x18\x13 \x01(\x0b\x32#.grafeas.v1.SBOMReferenceOccurrenceH\x00\x12.\n\x06secret\x18\x14 \x01(\x0b\x32\x1c.grafeas.v1.SecretOccurrenceH\x00\x12&\n\x08\x65nvelope\x18\x12 \x01(\x0b\x32\x14.grafeas.v1.Envelope:G\xea\x41\x44\n\x15grafeas.io/Occurrence\x12+projects/{project}/occurrences/{occurrence}B\t\n\x07\x64\x65tails\"\xa1\x08\n\x04Note\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x19\n\x11short_description\x18\x02 \x01(\t\x12\x18\n\x10long_description\x18\x03 \x01(\t\x12\"\n\x04kind\x18\x04 \x01(\x0e\x32\x14.grafeas.v1.NoteKind\x12+\n\x0brelated_url\x18\x05 \x03(\x0b\x32\x16.grafeas.v1.RelatedUrl\x12\x33\n\x0f\x65xpiration_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0b\x63reate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1a\n\x12related_note_names\x18\t \x03(\t\x12\x36\n\rvulnerability\x18\n \x01(\x0b\x32\x1d.grafeas.v1.VulnerabilityNoteH\x00\x12&\n\x05\x62uild\x18\x0b \x01(\x0b\x32\x15.grafeas.v1.BuildNoteH\x00\x12&\n\x05image\x18\x0c \x01(\x0b\x32\x15.grafeas.v1.ImageNoteH\x00\x12*\n\x07package\x18\r \x01(\x0b\x32\x17.grafeas.v1.PackageNoteH\x00\x12\x30\n\ndeployment\x18\x0e \x01(\x0b\x32\x1a.grafeas.v1.DeploymentNoteH\x00\x12.\n\tdiscovery\x18\x0f \x01(\x0b\x32\x19.grafeas.v1.DiscoveryNoteH\x00\x12\x32\n\x0b\x61ttestation\x18\x10 \x01(\x0b\x32\x1b.grafeas.v1.AttestationNoteH\x00\x12*\n\x07upgrade\x18\x11 \x01(\x0b\x32\x17.grafeas.v1.UpgradeNoteH\x00\x12\x30\n\ncompliance\x18\x12 \x01(\x0b\x32\x1a.grafeas.v1.ComplianceNoteH\x00\x12;\n\x10\x64sse_attestation\x18\x13 \x01(\x0b\x32\x1f.grafeas.v1.DSSEAttestationNoteH\x00\x12K\n\x18vulnerability_assessment\x18\x14 \x01(\x0b\x32\'.grafeas.v1.VulnerabilityAssessmentNoteH\x00\x12\x37\n\x0esbom_reference\x18\x15 \x01(\x0b\x32\x1d.grafeas.v1.SBOMReferenceNoteH\x00\x12(\n\x06secret\x18\x16 \x01(\x0b\x32\x16.grafeas.v1.SecretNoteH\x00:5\xea\x41\x32\n\x0fgrafeas.io/Note\x12\x1fprojects/{project}/notes/{note}B\x06\n\x04type\"C\n\x14GetOccurrenceRequest\x12+\n\x04name\x18\x01 \x01(\tB\x1d\xe0\x41\x02\xfa\x41\x17\n\x15grafeas.io/Occurrence\"\x9b\x01\n\x16ListOccurrencesRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x12\n\npage_token\x18\x04 \x01(\t\x12\x1e\n\x16return_partial_success\x18\x05 \x01(\x08\"y\n\x17ListOccurrencesResponse\x12+\n\x0boccurrences\x18\x01 \x03(\x0b\x32\x16.grafeas.v1.Occurrence\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\x12\x18\n\x0bunreachable\x18\x03 \x03(\tB\x03\xe0\x41\x06\"F\n\x17\x44\x65leteOccurrenceRequest\x12+\n\x04name\x18\x01 \x01(\tB\x1d\xe0\x41\x02\xfa\x41\x17\n\x15grafeas.io/Occurrence\"v\n\x17\x43reateOccurrenceRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12/\n\noccurrence\x18\x02 \x01(\x0b\x32\x16.grafeas.v1.OccurrenceB\x03\xe0\x41\x02\"\xa8\x01\n\x17UpdateOccurrenceRequest\x12+\n\x04name\x18\x01 \x01(\tB\x1d\xe0\x41\x02\xfa\x41\x17\n\x15grafeas.io/Occurrence\x12/\n\noccurrence\x18\x02 \x01(\x0b\x32\x16.grafeas.v1.OccurrenceB\x03\xe0\x41\x02\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask\"7\n\x0eGetNoteRequest\x12%\n\x04name\x18\x01 \x01(\tB\x17\xe0\x41\x02\xfa\x41\x11\n\x0fgrafeas.io/Note\"G\n\x18GetOccurrenceNoteRequest\x12+\n\x04name\x18\x01 \x01(\tB\x1d\xe0\x41\x02\xfa\x41\x17\n\x15grafeas.io/Occurrence\"\x95\x01\n\x10ListNotesRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x12\n\npage_token\x18\x04 \x01(\t\x12\x1e\n\x16return_partial_success\x18\x05 \x01(\x08\"g\n\x11ListNotesResponse\x12\x1f\n\x05notes\x18\x01 \x03(\x0b\x32\x10.grafeas.v1.Note\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\x12\x18\n\x0bunreachable\x18\x03 \x03(\tB\x03\xe0\x41\x06\":\n\x11\x44\x65leteNoteRequest\x12%\n\x04name\x18\x01 \x01(\tB\x17\xe0\x41\x02\xfa\x41\x11\n\x0fgrafeas.io/Note\"z\n\x11\x43reateNoteRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12\x14\n\x07note_id\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12#\n\x04note\x18\x03 \x01(\x0b\x32\x10.grafeas.v1.NoteB\x03\xe0\x41\x02\"\x90\x01\n\x11UpdateNoteRequest\x12%\n\x04name\x18\x01 \x01(\tB\x17\xe0\x41\x02\xfa\x41\x11\n\x0fgrafeas.io/Note\x12#\n\x04note\x18\x02 \x01(\x0b\x32\x10.grafeas.v1.NoteB\x03\xe0\x41\x02\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask\"z\n\x1aListNoteOccurrencesRequest\x12%\n\x04name\x18\x01 \x01(\tB\x17\xe0\x41\x02\xfa\x41\x11\n\x0fgrafeas.io/Note\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x12\n\npage_token\x18\x04 \x01(\t\"c\n\x1bListNoteOccurrencesResponse\x12+\n\x0boccurrences\x18\x01 \x03(\x0b\x32\x16.grafeas.v1.Occurrence\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xc9\x01\n\x17\x42\x61tchCreateNotesRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12\x42\n\x05notes\x18\x02 \x03(\x0b\x32..grafeas.v1.BatchCreateNotesRequest.NotesEntryB\x03\xe0\x41\x02\x1a>\n\nNotesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1f\n\x05value\x18\x02 \x01(\x0b\x32\x10.grafeas.v1.Note:\x02\x38\x01\";\n\x18\x42\x61tchCreateNotesResponse\x12\x1f\n\x05notes\x18\x01 \x03(\x0b\x32\x10.grafeas.v1.Note\"}\n\x1d\x42\x61tchCreateOccurrencesRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12grafeas.io/Project\x12\x30\n\x0boccurrences\x18\x02 \x03(\x0b\x32\x16.grafeas.v1.OccurrenceB\x03\xe0\x41\x02\"M\n\x1e\x42\x61tchCreateOccurrencesResponse\x12+\n\x0boccurrences\x18\x01 \x03(\x0b\x32\x16.grafeas.v1.Occurrence2\x8d\x16\n\x07Grafeas\x12\xb0\x01\n\rGetOccurrence\x12 .grafeas.v1.GetOccurrenceRequest\x1a\x16.grafeas.v1.Occurrence\"e\xda\x41\x04name\x82\xd3\xe4\x93\x02X\x12#/v1/{name=projects/*/occurrences/*}Z1\x12//v1/{name=projects/*/locations/*/occurrences/*}\x12\xca\x01\n\x0fListOccurrences\x12\".grafeas.v1.ListOccurrencesRequest\x1a#.grafeas.v1.ListOccurrencesResponse\"n\xda\x41\rparent,filter\x82\xd3\xe4\x93\x02X\x12#/v1/{parent=projects/*}/occurrencesZ1\x12//v1/{parent=projects/*/locations/*}/occurrences\x12\xb6\x01\n\x10\x44\x65leteOccurrence\x12#.grafeas.v1.DeleteOccurrenceRequest\x1a\x16.google.protobuf.Empty\"e\xda\x41\x04name\x82\xd3\xe4\x93\x02X*#/v1/{name=projects/*/occurrences/*}Z1*//v1/{name=projects/*/locations/*/occurrences/*}\x12\xdc\x01\n\x10\x43reateOccurrence\x12#.grafeas.v1.CreateOccurrenceRequest\x1a\x16.grafeas.v1.Occurrence\"\x8a\x01\xda\x41\x11parent,occurrence\x82\xd3\xe4\x93\x02p\"#/v1/{parent=projects/*}/occurrences:\noccurrenceZ=\"//v1/{parent=projects/*/locations/*}/occurrences:\noccurrence\x12\x83\x02\n\x16\x42\x61tchCreateOccurrences\x12).grafeas.v1.BatchCreateOccurrencesRequest\x1a*.grafeas.v1.BatchCreateOccurrencesResponse\"\x91\x01\xda\x41\x12parent,occurrences\x82\xd3\xe4\x93\x02v\"//v1/{parent=projects/*}/occurrences:batchCreate:\x01*Z@\";/v1/{parent=projects/*/locations/*}/occurrences:batchCreate:\x01*\x12\xe6\x01\n\x10UpdateOccurrence\x12#.grafeas.v1.UpdateOccurrenceRequest\x1a\x16.grafeas.v1.Occurrence\"\x94\x01\xda\x41\x1bname,occurrence,update_mask\x82\xd3\xe4\x93\x02p2#/v1/{name=projects/*/occurrences/*}:\noccurrenceZ=2//v1/{name=projects/*/locations/*/occurrences/*}:\noccurrence\x12\xbe\x01\n\x11GetOccurrenceNote\x12$.grafeas.v1.GetOccurrenceNoteRequest\x1a\x10.grafeas.v1.Note\"q\xda\x41\x04name\x82\xd3\xe4\x93\x02\x64\x12)/v1/{name=projects/*/occurrences/*}/notesZ7\x12\x35/v1/{name=projects/*/locations/*/occurrences/*}/notes\x12\x92\x01\n\x07GetNote\x12\x1a.grafeas.v1.GetNoteRequest\x1a\x10.grafeas.v1.Note\"Y\xda\x41\x04name\x82\xd3\xe4\x93\x02L\x12\x1d/v1/{name=projects/*/notes/*}Z+\x12)/v1/{name=projects/*/locations/*/notes/*}\x12\xac\x01\n\tListNotes\x12\x1c.grafeas.v1.ListNotesRequest\x1a\x1d.grafeas.v1.ListNotesResponse\"b\xda\x41\rparent,filter\x82\xd3\xe4\x93\x02L\x12\x1d/v1/{parent=projects/*}/notesZ+\x12)/v1/{parent=projects/*/locations/*}/notes\x12\x9e\x01\n\nDeleteNote\x12\x1d.grafeas.v1.DeleteNoteRequest\x1a\x16.google.protobuf.Empty\"Y\xda\x41\x04name\x82\xd3\xe4\x93\x02L*\x1d/v1/{name=projects/*/notes/*}Z+*)/v1/{name=projects/*/locations/*/notes/*}\x12\xb3\x01\n\nCreateNote\x12\x1d.grafeas.v1.CreateNoteRequest\x1a\x10.grafeas.v1.Note\"t\xda\x41\x13parent,note_id,note\x82\xd3\xe4\x93\x02X\"\x1d/v1/{parent=projects/*}/notes:\x04noteZ1\")/v1/{parent=projects/*/locations/*}/notes:\x04note\x12\xde\x01\n\x10\x42\x61tchCreateNotes\x12#.grafeas.v1.BatchCreateNotesRequest\x1a$.grafeas.v1.BatchCreateNotesResponse\"\x7f\xda\x41\x0cparent,notes\x82\xd3\xe4\x93\x02j\")/v1/{parent=projects/*}/notes:batchCreate:\x01*Z:\"5/v1/{parent=projects/*/locations/*}/notes:batchCreate:\x01*\x12\xb5\x01\n\nUpdateNote\x12\x1d.grafeas.v1.UpdateNoteRequest\x1a\x10.grafeas.v1.Note\"v\xda\x41\x15name,note,update_mask\x82\xd3\xe4\x93\x02X2\x1d/v1/{name=projects/*/notes/*}:\x04noteZ12)/v1/{name=projects/*/locations/*/notes/*}:\x04note\x12\xe0\x01\n\x13ListNoteOccurrences\x12&.grafeas.v1.ListNoteOccurrencesRequest\x1a\'.grafeas.v1.ListNoteOccurrencesResponse\"x\xda\x41\x0bname,filter\x82\xd3\xe4\x93\x02\x64\x12)/v1/{name=projects/*/notes/*}/occurrencesZ7\x12\x35/v1/{name=projects/*/locations/*/notes/*}/occurrences\x1a#\xca\x41 containeranalysis.googleapis.comB|\n\rio.grafeas.v1P\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRA\xea\x41(\n\x12grafeas.io/Project\x12\x12projects/{project}b\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) diff --git a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/risk_pb.rb b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/risk_pb.rb new file mode 100644 index 000000000..970f5ed28 --- /dev/null +++ b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/risk_pb.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: grafeas/v1/risk.proto + +require 'google/protobuf' + + +descriptor_data = "\n\x15grafeas/v1/risk.proto\x12\ngrafeas.v1\"\x81\x01\n\x04Risk\x12?\n\x08\x63isa_kev\x18\x01 \x01(\x0b\x32-.grafeas.v1.CISAKnownExploitedVulnerabilities\x12\x38\n\x04\x65pss\x18\x02 \x01(\x0b\x32*.grafeas.v1.ExploitPredictionScoringSystem\"J\n!CISAKnownExploitedVulnerabilities\x12%\n\x1dknown_ransomware_campaign_use\x18\x01 \x01(\t\"C\n\x1e\x45xploitPredictionScoringSystem\x12\x12\n\npercentile\x18\x01 \x01(\x01\x12\r\n\x05score\x18\x02 \x01(\x01\x42Q\n\rio.grafeas.v1P\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRAb\x06proto3" + +pool = ::Google::Protobuf::DescriptorPool.generated_pool +pool.add_serialized_file(descriptor_data) + +module Grafeas + module V1 + Risk = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.Risk").msgclass + CISAKnownExploitedVulnerabilities = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.CISAKnownExploitedVulnerabilities").msgclass + ExploitPredictionScoringSystem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("grafeas.v1.ExploitPredictionScoringSystem").msgclass + end +end diff --git a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/secret_pb.rb b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/secret_pb.rb index ed20bda39..0ca629f57 100644 --- a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/secret_pb.rb +++ b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/secret_pb.rb @@ -5,11 +5,12 @@ require 'google/protobuf' require 'google/api/field_behavior_pb' +require 'google/protobuf/any_pb' require 'google/protobuf/timestamp_pb' require 'grafeas/v1/common_pb' -descriptor_data = "\n\x17grafeas/v1/secret.proto\x12\ngrafeas.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17grafeas/v1/common.proto\"\x0c\n\nSecretNote\"\xa2\x01\n\x10SecretOccurrence\x12)\n\x04kind\x18\x01 \x01(\x0e\x32\x16.grafeas.v1.SecretKindB\x03\xe0\x41\x02\x12\x32\n\tlocations\x18\x02 \x03(\x0b\x32\x1a.grafeas.v1.SecretLocationB\x03\xe0\x41\x01\x12/\n\x08statuses\x18\x03 \x03(\x0b\x32\x18.grafeas.v1.SecretStatusB\x03\xe0\x41\x01\"O\n\x0eSecretLocation\x12\x31\n\rfile_location\x18\x01 \x01(\x0b\x32\x18.grafeas.v1.FileLocationH\x00\x42\n\n\x08location\"\xd7\x01\n\x0cSecretStatus\x12\x34\n\x06status\x18\x01 \x01(\x0e\x32\x1f.grafeas.v1.SecretStatus.StatusB\x03\xe0\x41\x01\x12\x34\n\x0bupdate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\x12\x14\n\x07message\x18\x03 \x01(\tB\x03\xe0\x41\x01\"E\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x0b\n\x07UNKNOWN\x10\x01\x12\t\n\x05VALID\x10\x02\x12\x0b\n\x07INVALID\x10\x03*k\n\nSecretKind\x12\x1b\n\x17SECRET_KIND_UNSPECIFIED\x10\x00\x12\x17\n\x13SECRET_KIND_UNKNOWN\x10\x01\x12\'\n#SECRET_KIND_GCP_SERVICE_ACCOUNT_KEY\x10\x02\x42Q\n\rio.grafeas.v1P\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRAb\x06proto3" +descriptor_data = "\n\x17grafeas/v1/secret.proto\x12\ngrafeas.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17grafeas/v1/common.proto\"\x0c\n\nSecretNote\"\xea\x01\n\x10SecretOccurrence\x12)\n\x04kind\x18\x01 \x01(\x0e\x32\x16.grafeas.v1.SecretKindB\x03\xe0\x41\x02\x12\x32\n\tlocations\x18\x02 \x03(\x0b\x32\x1a.grafeas.v1.SecretLocationB\x03\xe0\x41\x01\x12/\n\x08statuses\x18\x03 \x03(\x0b\x32\x18.grafeas.v1.SecretStatusB\x03\xe0\x41\x01\x12\"\n\x04\x64\x61ta\x18\x04 \x01(\x0b\x32\x14.google.protobuf.Any\x12\"\n\x06\x64igest\x18\x05 \x01(\x0b\x32\x12.grafeas.v1.Digest\"O\n\x0eSecretLocation\x12\x31\n\rfile_location\x18\x01 \x01(\x0b\x32\x18.grafeas.v1.FileLocationH\x00\x42\n\n\x08location\"\xd7\x01\n\x0cSecretStatus\x12\x34\n\x06status\x18\x01 \x01(\x0e\x32\x1f.grafeas.v1.SecretStatus.StatusB\x03\xe0\x41\x01\x12\x34\n\x0bupdate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\x12\x14\n\x07message\x18\x03 \x01(\tB\x03\xe0\x41\x01\"E\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x0b\n\x07UNKNOWN\x10\x01\x12\t\n\x05VALID\x10\x02\x12\x0b\n\x07INVALID\x10\x03*\xa5\x07\n\nSecretKind\x12\x1b\n\x17SECRET_KIND_UNSPECIFIED\x10\x00\x12\x17\n\x13SECRET_KIND_UNKNOWN\x10\x01\x12\'\n#SECRET_KIND_GCP_SERVICE_ACCOUNT_KEY\x10\x02\x12\x1b\n\x17SECRET_KIND_GCP_API_KEY\x10\x03\x12-\n)SECRET_KIND_GCP_OAUTH2_CLIENT_CREDENTIALS\x10\x04\x12\'\n#SECRET_KIND_GCP_OAUTH2_ACCESS_TOKEN\x10\x05\x12\'\n#SECRET_KIND_ANTHROPIC_ADMIN_API_KEY\x10\x06\x12!\n\x1dSECRET_KIND_ANTHROPIC_API_KEY\x10\x07\x12\"\n\x1eSECRET_KIND_AZURE_ACCESS_TOKEN\x10\x08\x12$\n SECRET_KIND_AZURE_IDENTITY_TOKEN\x10\t\x12\x30\n,SECRET_KIND_DOCKER_HUB_PERSONAL_ACCESS_TOKEN\x10\n\x12(\n$SECRET_KIND_GITHUB_APP_REFRESH_TOKEN\x10\x0b\x12\x31\n-SECRET_KIND_GITHUB_APP_SERVER_TO_SERVER_TOKEN\x10\x0c\x12/\n+SECRET_KIND_GITHUB_APP_USER_TO_SERVER_TOKEN\x10\r\x12\x34\n0SECRET_KIND_GITHUB_CLASSIC_PERSONAL_ACCESS_TOKEN\x10\x0e\x12\x39\n5SECRET_KIND_GITHUB_FINE_GRAINED_PERSONAL_ACCESS_TOKEN\x10\x0f\x12\"\n\x1eSECRET_KIND_GITHUB_OAUTH_TOKEN\x10\x10\x12#\n\x1fSECRET_KIND_HUGGINGFACE_API_KEY\x10\x11\x12\x1e\n\x1aSECRET_KIND_OPENAI_API_KEY\x10\x12\x12\"\n\x1eSECRET_KIND_PERPLEXITY_API_KEY\x10\x13\x12!\n\x1dSECRET_KIND_STRIPE_SECRET_KEY\x10\x14\x12%\n!SECRET_KIND_STRIPE_RESTRICTED_KEY\x10\x15\x12%\n!SECRET_KIND_STRIPE_WEBHOOK_SECRET\x10\x16\x42Q\n\rio.grafeas.v1P\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRAb\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) diff --git a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/vulnerability_pb.rb b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/vulnerability_pb.rb index 8dac3c36a..9da9440f5 100644 --- a/shared/output/cloud/grafeas_v1/lib/grafeas/v1/vulnerability_pb.rb +++ b/shared/output/cloud/grafeas_v1/lib/grafeas/v1/vulnerability_pb.rb @@ -9,11 +9,12 @@ require 'grafeas/v1/common_pb' require 'grafeas/v1/cvss_pb' require 'grafeas/v1/package_pb' +require 'grafeas/v1/risk_pb' require 'grafeas/v1/severity_pb' require 'grafeas/v1/vex_pb' -descriptor_data = "\n\x1egrafeas/v1/vulnerability.proto\x12\ngrafeas.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17grafeas/v1/common.proto\x1a\x15grafeas/v1/cvss.proto\x1a\x18grafeas/v1/package.proto\x1a\x19grafeas/v1/severity.proto\x1a\x14grafeas/v1/vex.proto\"\xec\x07\n\x11VulnerabilityNote\x12\x12\n\ncvss_score\x18\x01 \x01(\x02\x12&\n\x08severity\x18\x02 \x01(\x0e\x32\x14.grafeas.v1.Severity\x12\x35\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32$.grafeas.v1.VulnerabilityNote.Detail\x12#\n\x07\x63vss_v3\x18\x04 \x01(\x0b\x32\x12.grafeas.v1.CVSSv3\x12\x44\n\x0fwindows_details\x18\x05 \x03(\x0b\x32+.grafeas.v1.VulnerabilityNote.WindowsDetail\x12\x36\n\x12source_update_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12-\n\x0c\x63vss_version\x18\x07 \x01(\x0e\x32\x17.grafeas.v1.CVSSVersion\x12!\n\x07\x63vss_v2\x18\x08 \x01(\x0b\x32\x10.grafeas.v1.CVSS\x1a\xad\x03\n\x06\x44\x65tail\x12\x15\n\rseverity_name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x14\n\x0cpackage_type\x18\x03 \x01(\t\x12\x18\n\x10\x61\x66\x66\x65\x63ted_cpe_uri\x18\x04 \x01(\t\x12\x18\n\x10\x61\x66\x66\x65\x63ted_package\x18\x05 \x01(\t\x12\x33\n\x16\x61\x66\x66\x65\x63ted_version_start\x18\x06 \x01(\x0b\x32\x13.grafeas.v1.Version\x12\x31\n\x14\x61\x66\x66\x65\x63ted_version_end\x18\x07 \x01(\x0b\x32\x13.grafeas.v1.Version\x12\x15\n\rfixed_cpe_uri\x18\x08 \x01(\t\x12\x15\n\rfixed_package\x18\t \x01(\t\x12*\n\rfixed_version\x18\n \x01(\x0b\x32\x13.grafeas.v1.Version\x12\x13\n\x0bis_obsolete\x18\x0b \x01(\x08\x12\x36\n\x12source_update_time\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0e\n\x06source\x18\r \x01(\t\x12\x0e\n\x06vendor\x18\x0e \x01(\t\x1a\xbe\x01\n\rWindowsDetail\x12\x0f\n\x07\x63pe_uri\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12M\n\nfixing_kbs\x18\x04 \x03(\x0b\x32\x39.grafeas.v1.VulnerabilityNote.WindowsDetail.KnowledgeBase\x1a*\n\rKnowledgeBase\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\"\x98\n\n\x17VulnerabilityOccurrence\x12\x0c\n\x04type\x18\x01 \x01(\t\x12&\n\x08severity\x18\x02 \x01(\x0e\x32\x14.grafeas.v1.Severity\x12\x12\n\ncvss_score\x18\x03 \x01(\x02\x12 \n\x06\x63vssv3\x18\n \x01(\x0b\x32\x10.grafeas.v1.CVSS\x12G\n\rpackage_issue\x18\x04 \x03(\x0b\x32\x30.grafeas.v1.VulnerabilityOccurrence.PackageIssue\x12\x19\n\x11short_description\x18\x05 \x01(\t\x12\x18\n\x10long_description\x18\x06 \x01(\t\x12,\n\x0crelated_urls\x18\x07 \x03(\x0b\x32\x16.grafeas.v1.RelatedUrl\x12\x30\n\x12\x65\x66\x66\x65\x63tive_severity\x18\x08 \x01(\x0e\x32\x14.grafeas.v1.Severity\x12\x15\n\rfix_available\x18\t \x01(\x08\x12-\n\x0c\x63vss_version\x18\x0b \x01(\x0e\x32\x17.grafeas.v1.CVSSVersion\x12!\n\x07\x63vss_v2\x18\x0c \x01(\x0b\x32\x10.grafeas.v1.CVSS\x12I\n\x0evex_assessment\x18\r \x01(\x0b\x32\x31.grafeas.v1.VulnerabilityOccurrence.VexAssessment\x12\x15\n\rextra_details\x18\x0e \x01(\t\x1a\xe0\x02\n\x0cPackageIssue\x12\x18\n\x10\x61\x66\x66\x65\x63ted_cpe_uri\x18\x01 \x01(\t\x12\x18\n\x10\x61\x66\x66\x65\x63ted_package\x18\x02 \x01(\t\x12-\n\x10\x61\x66\x66\x65\x63ted_version\x18\x03 \x01(\x0b\x32\x13.grafeas.v1.Version\x12\x15\n\rfixed_cpe_uri\x18\x04 \x01(\t\x12\x15\n\rfixed_package\x18\x05 \x01(\t\x12*\n\rfixed_version\x18\x06 \x01(\x0b\x32\x13.grafeas.v1.Version\x12\x15\n\rfix_available\x18\x07 \x01(\x08\x12\x14\n\x0cpackage_type\x18\x08 \x01(\t\x12\x35\n\x12\x65\x66\x66\x65\x63tive_severity\x18\t \x01(\x0e\x32\x14.grafeas.v1.SeverityB\x03\xe0\x41\x03\x12/\n\rfile_location\x18\n \x03(\x0b\x32\x18.grafeas.v1.FileLocation\x1a\x84\x03\n\rVexAssessment\x12\x0f\n\x03\x63ve\x18\x01 \x01(\tB\x02\x18\x01\x12\x18\n\x10vulnerability_id\x18\x08 \x01(\t\x12,\n\x0crelated_uris\x18\x02 \x03(\x0b\x32\x16.grafeas.v1.RelatedUrl\x12\x11\n\tnote_name\x18\x03 \x01(\t\x12G\n\x05state\x18\x04 \x01(\x0e\x32\x38.grafeas.v1.VulnerabilityAssessmentNote.Assessment.State\x12\x0f\n\x07impacts\x18\x05 \x03(\t\x12T\n\x0cremediations\x18\x06 \x03(\x0b\x32>.grafeas.v1.VulnerabilityAssessmentNote.Assessment.Remediation\x12W\n\rjustification\x18\x07 \x01(\x0b\x32@.grafeas.v1.VulnerabilityAssessmentNote.Assessment.JustificationBQ\n\rio.grafeas.v1P\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRAb\x06proto3" +descriptor_data = "\n\x1egrafeas/v1/vulnerability.proto\x12\ngrafeas.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17grafeas/v1/common.proto\x1a\x15grafeas/v1/cvss.proto\x1a\x18grafeas/v1/package.proto\x1a\x15grafeas/v1/risk.proto\x1a\x19grafeas/v1/severity.proto\x1a\x14grafeas/v1/vex.proto\"\xca\x08\n\x11VulnerabilityNote\x12\x12\n\ncvss_score\x18\x01 \x01(\x02\x12&\n\x08severity\x18\x02 \x01(\x0e\x32\x14.grafeas.v1.Severity\x12\x35\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32$.grafeas.v1.VulnerabilityNote.Detail\x12#\n\x07\x63vss_v3\x18\x04 \x01(\x0b\x32\x12.grafeas.v1.CVSSv3\x12\x44\n\x0fwindows_details\x18\x05 \x03(\x0b\x32+.grafeas.v1.VulnerabilityNote.WindowsDetail\x12\x36\n\x12source_update_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12-\n\x0c\x63vss_version\x18\x07 \x01(\x0e\x32\x17.grafeas.v1.CVSSVersion\x12!\n\x07\x63vss_v2\x18\x08 \x01(\x0b\x32\x10.grafeas.v1.CVSS\x12\x39\n\x15\x61\x64visory_publish_time\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12!\n\x07\x63vss_v4\x18\n \x01(\x0b\x32\x10.grafeas.v1.CVSS\x1a\xad\x03\n\x06\x44\x65tail\x12\x15\n\rseverity_name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x14\n\x0cpackage_type\x18\x03 \x01(\t\x12\x18\n\x10\x61\x66\x66\x65\x63ted_cpe_uri\x18\x04 \x01(\t\x12\x18\n\x10\x61\x66\x66\x65\x63ted_package\x18\x05 \x01(\t\x12\x33\n\x16\x61\x66\x66\x65\x63ted_version_start\x18\x06 \x01(\x0b\x32\x13.grafeas.v1.Version\x12\x31\n\x14\x61\x66\x66\x65\x63ted_version_end\x18\x07 \x01(\x0b\x32\x13.grafeas.v1.Version\x12\x15\n\rfixed_cpe_uri\x18\x08 \x01(\t\x12\x15\n\rfixed_package\x18\t \x01(\t\x12*\n\rfixed_version\x18\n \x01(\x0b\x32\x13.grafeas.v1.Version\x12\x13\n\x0bis_obsolete\x18\x0b \x01(\x08\x12\x36\n\x12source_update_time\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0e\n\x06source\x18\r \x01(\t\x12\x0e\n\x06vendor\x18\x0e \x01(\t\x1a\xbe\x01\n\rWindowsDetail\x12\x0f\n\x07\x63pe_uri\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12M\n\nfixing_kbs\x18\x04 \x03(\x0b\x32\x39.grafeas.v1.VulnerabilityNote.WindowsDetail.KnowledgeBase\x1a*\n\rKnowledgeBase\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\"\xdb\n\n\x17VulnerabilityOccurrence\x12\x0c\n\x04type\x18\x01 \x01(\t\x12&\n\x08severity\x18\x02 \x01(\x0e\x32\x14.grafeas.v1.Severity\x12\x12\n\ncvss_score\x18\x03 \x01(\x02\x12 \n\x06\x63vssv3\x18\n \x01(\x0b\x32\x10.grafeas.v1.CVSS\x12G\n\rpackage_issue\x18\x04 \x03(\x0b\x32\x30.grafeas.v1.VulnerabilityOccurrence.PackageIssue\x12\x19\n\x11short_description\x18\x05 \x01(\t\x12\x18\n\x10long_description\x18\x06 \x01(\t\x12,\n\x0crelated_urls\x18\x07 \x03(\x0b\x32\x16.grafeas.v1.RelatedUrl\x12\x30\n\x12\x65\x66\x66\x65\x63tive_severity\x18\x08 \x01(\x0e\x32\x14.grafeas.v1.Severity\x12\x15\n\rfix_available\x18\t \x01(\x08\x12-\n\x0c\x63vss_version\x18\x0b \x01(\x0e\x32\x17.grafeas.v1.CVSSVersion\x12!\n\x07\x63vss_v2\x18\x0c \x01(\x0b\x32\x10.grafeas.v1.CVSS\x12I\n\x0evex_assessment\x18\r \x01(\x0b\x32\x31.grafeas.v1.VulnerabilityOccurrence.VexAssessment\x12\x15\n\rextra_details\x18\x0e \x01(\t\x12\x1e\n\x04risk\x18\x0f \x01(\x0b\x32\x10.grafeas.v1.Risk\x12!\n\x07\x63vss_v4\x18\x10 \x01(\x0b\x32\x10.grafeas.v1.CVSS\x1a\xe0\x02\n\x0cPackageIssue\x12\x18\n\x10\x61\x66\x66\x65\x63ted_cpe_uri\x18\x01 \x01(\t\x12\x18\n\x10\x61\x66\x66\x65\x63ted_package\x18\x02 \x01(\t\x12-\n\x10\x61\x66\x66\x65\x63ted_version\x18\x03 \x01(\x0b\x32\x13.grafeas.v1.Version\x12\x15\n\rfixed_cpe_uri\x18\x04 \x01(\t\x12\x15\n\rfixed_package\x18\x05 \x01(\t\x12*\n\rfixed_version\x18\x06 \x01(\x0b\x32\x13.grafeas.v1.Version\x12\x15\n\rfix_available\x18\x07 \x01(\x08\x12\x14\n\x0cpackage_type\x18\x08 \x01(\t\x12\x35\n\x12\x65\x66\x66\x65\x63tive_severity\x18\t \x01(\x0e\x32\x14.grafeas.v1.SeverityB\x03\xe0\x41\x03\x12/\n\rfile_location\x18\n \x03(\x0b\x32\x18.grafeas.v1.FileLocation\x1a\x84\x03\n\rVexAssessment\x12\x0f\n\x03\x63ve\x18\x01 \x01(\tB\x02\x18\x01\x12\x18\n\x10vulnerability_id\x18\x08 \x01(\t\x12,\n\x0crelated_uris\x18\x02 \x03(\x0b\x32\x16.grafeas.v1.RelatedUrl\x12\x11\n\tnote_name\x18\x03 \x01(\t\x12G\n\x05state\x18\x04 \x01(\x0e\x32\x38.grafeas.v1.VulnerabilityAssessmentNote.Assessment.State\x12\x0f\n\x07impacts\x18\x05 \x03(\t\x12T\n\x0cremediations\x18\x06 \x03(\x0b\x32>.grafeas.v1.VulnerabilityAssessmentNote.Assessment.Remediation\x12W\n\rjustification\x18\x07 \x01(\x0b\x32@.grafeas.v1.VulnerabilityAssessmentNote.Assessment.JustificationBQ\n\rio.grafeas.v1P\x01Z8google.golang.org/genproto/googleapis/grafeas/v1;grafeas\xa2\x02\x03GRAb\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) diff --git a/shared/output/cloud/grafeas_v1/proto_docs/google/api/client.rb b/shared/output/cloud/grafeas_v1/proto_docs/google/api/client.rb index d59ba51a5..3ab0b096d 100644 --- a/shared/output/cloud/grafeas_v1/proto_docs/google/api/client.rb +++ b/shared/output/cloud/grafeas_v1/proto_docs/google/api/client.rb @@ -31,6 +31,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -141,9 +143,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -155,11 +158,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -190,6 +193,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -318,10 +335,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -344,10 +363,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -356,14 +375,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -372,11 +391,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -411,6 +443,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -428,6 +462,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -469,5 +574,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/common.rb b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/common.rb index 948090fe2..eabafd087 100644 --- a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/common.rb +++ b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/common.rb @@ -117,6 +117,10 @@ class EnvelopeSignature # @return [::Grafeas::V1::LayerDetails] # Each package found in a file should have its own layer metadata (that is, # information from the origin layer of the package). + # @!attribute [rw] line_number + # @return [::Integer] + # Line number in the file where the package was found. + # Optional field that only applies to source repository scanning. class FileLocation include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -132,6 +136,9 @@ class FileLocation # @!attribute [rw] layer_count # @return [::Integer] # The number of layers that the base image is composed of. + # @!attribute [rw] registry + # @return [::String] + # The registry in which the base image is from. class BaseImage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods diff --git a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/cvss.rb b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/cvss.rb index 4f3b94494..b78b9235d 100644 --- a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/cvss.rb +++ b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/cvss.rb @@ -121,109 +121,217 @@ module Impact # @return [::Float] # @!attribute [rw] attack_vector # @return [::Grafeas::V1::CVSS::AttackVector] - # Base Metrics - # Represents the intrinsic characteristics of a vulnerability that are - # constant over time and across user environments. + # Attack Vector (AV). Defined in CVSS v2, v3, v4. # @!attribute [rw] attack_complexity # @return [::Grafeas::V1::CVSS::AttackComplexity] + # Attack Complexity (AC). Defined in CVSS v2, v3, v4. # @!attribute [rw] authentication # @return [::Grafeas::V1::CVSS::Authentication] + # Authentication (Au). Defined in CVSS v2. # @!attribute [rw] privileges_required # @return [::Grafeas::V1::CVSS::PrivilegesRequired] + # Privileges Required (PR). Defined in CVSS v3, v4. # @!attribute [rw] user_interaction # @return [::Grafeas::V1::CVSS::UserInteraction] + # User Interaction (UI). Defined in CVSS v3, v4. # @!attribute [rw] scope # @return [::Grafeas::V1::CVSS::Scope] + # Scope (S). Defined in CVSS v3. # @!attribute [rw] confidentiality_impact # @return [::Grafeas::V1::CVSS::Impact] + # Confidentiality Impact (C). Defined in CVSS v2, v3. # @!attribute [rw] integrity_impact # @return [::Grafeas::V1::CVSS::Impact] + # Integrity Impact (I). Defined in CVSS v2, v3. # @!attribute [rw] availability_impact # @return [::Grafeas::V1::CVSS::Impact] + # Availability Impact (A). Defined in CVSS v2, v3. + # @!attribute [rw] attack_requirements + # @return [::Grafeas::V1::CVSS::AttackRequirements] + # Attack Requirements (AT). Defined in CVSS v4. + # @!attribute [rw] vulnerable_system_confidentiality_impact + # @return [::Grafeas::V1::CVSS::Impact] + # Vulnerable System Confidentiality Impact (VC). Defined in CVSS v4. + # @!attribute [rw] vulnerable_system_integrity_impact + # @return [::Grafeas::V1::CVSS::Impact] + # Vulnerable System Integrity Impact (VI). Defined in CVSS v4. + # @!attribute [rw] vulnerable_system_availability_impact + # @return [::Grafeas::V1::CVSS::Impact] + # Vulnerable System Availability Impact (VA). Defined in CVSS v4. + # @!attribute [rw] subsequent_system_confidentiality_impact + # @return [::Grafeas::V1::CVSS::Impact] + # Subsequent System Confidentiality Impact (SC). Defined in CVSS v4. + # @!attribute [rw] subsequent_system_integrity_impact + # @return [::Grafeas::V1::CVSS::Impact] + # Subsequent System Integrity Impact (SI). Defined in CVSS v4. + # @!attribute [rw] subsequent_system_availability_impact + # @return [::Grafeas::V1::CVSS::Impact] + # Subsequent System Availability Impact (SA). Defined in CVSS v4. + # @!attribute [rw] exploit_maturity + # @return [::Grafeas::V1::CVSS::ExploitMaturity] + # Exploit Maturity (E). Defined in CVSS v4. class CVSS include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods + # Attack Vector. module AttackVector + # Unspecified. ATTACK_VECTOR_UNSPECIFIED = 0 + # Attack Vector: Network (AV:N). Defined in CVSS v2, v3, v4. ATTACK_VECTOR_NETWORK = 1 + # Attack Vector: Adjacent (AV:A). Defined in CVSS v2, v3, v4. ATTACK_VECTOR_ADJACENT = 2 + # Attack Vector: Local (AV:L). Defined in CVSS v2, v3, v4. ATTACK_VECTOR_LOCAL = 3 + # Attack Vector: Physical (AV:P). Defined in CVSS v3, v4. ATTACK_VECTOR_PHYSICAL = 4 end + # Attack Complexity. module AttackComplexity + # Unspecified. ATTACK_COMPLEXITY_UNSPECIFIED = 0 + # Low attack complexity (AC:L). Defined in CVSS v2, v3, v4. ATTACK_COMPLEXITY_LOW = 1 + # High attack complexity (AC:H). Defined in CVSS v2, v3, v4. ATTACK_COMPLEXITY_HIGH = 2 + # Medium attack complexity (AC:M). Defined in CVSS v2. ATTACK_COMPLEXITY_MEDIUM = 3 end + # Authentication. module Authentication + # Unspecified. AUTHENTICATION_UNSPECIFIED = 0 + # Multiple authentication required (Au:M). Defined in CVSS v2. AUTHENTICATION_MULTIPLE = 1 + # Single authentication required (Au:S). Defined in CVSS v2. AUTHENTICATION_SINGLE = 2 + # No authentication required (Au:N). Defined in CVSS v2. AUTHENTICATION_NONE = 3 end + # Privileges Required. module PrivilegesRequired + # Unspecified. PRIVILEGES_REQUIRED_UNSPECIFIED = 0 + # No privileges required (PR:N). Defined in CVSS v3, v4. PRIVILEGES_REQUIRED_NONE = 1 + # Low privileges required (PR:L). Defined in CVSS v3, v4. PRIVILEGES_REQUIRED_LOW = 2 + # High privileges required (PR:H). Defined in CVSS v3, v4. PRIVILEGES_REQUIRED_HIGH = 3 end + # User Interaction. module UserInteraction + # Unspecified. USER_INTERACTION_UNSPECIFIED = 0 + # No user interaction required (UI:N). Defined in CVSS v3, v4. USER_INTERACTION_NONE = 1 + # User interaction required (UI:R). Defined in CVSS v3. USER_INTERACTION_REQUIRED = 2 + + # Passive user interaction required (UI:P). Defined in CVSS v4. + USER_INTERACTION_PASSIVE = 3 + + # Active user interaction required (UI:A). Defined in CVSS v4. + USER_INTERACTION_ACTIVE = 4 end + # Scope. module Scope + # Unspecified. SCOPE_UNSPECIFIED = 0 + # Scope: Unchanged (S:U). Defined in CVSS v3. SCOPE_UNCHANGED = 1 + # Scope: Changed (S:C). Defined in CVSS v3. SCOPE_CHANGED = 2 end + # Impact. module Impact + # Unspecified. IMPACT_UNSPECIFIED = 0 + # High impact (H). Defined in CVSS v3, v4. IMPACT_HIGH = 1 + # Low impact (L). Defined in CVSS v3, v4. IMPACT_LOW = 2 + # No impact (N). Defined in CVSS v2, v3, v4. IMPACT_NONE = 3 + # Partial impact (P). Defined in CVSS v2. IMPACT_PARTIAL = 4 + # Complete impact (C). Defined in CVSS v2. IMPACT_COMPLETE = 5 end + + # Attack Requirements. + module AttackRequirements + # Unspecified. + ATTACK_REQUIREMENTS_UNSPECIFIED = 0 + + # No attack requirements (AT:N). Defined in CVSS v4. + ATTACK_REQUIREMENTS_NONE = 1 + + # Attack requirements: Present (AT:P). Defined in CVSS v4. + ATTACK_REQUIREMENTS_PRESENT = 2 + end + + # Exploit Maturity (E). Defined in CVSS v4. + module ExploitMaturity + # Unspecified. + EXPLOIT_MATURITY_UNSPECIFIED = 0 + + # Exploit maturity: Not defined (E:X). Defined in CVSS v4. + EXPLOIT_MATURITY_NOT_DEFINED = 1 + + # Exploit maturity: Attacked (E:A). Defined in CVSS v4. + EXPLOIT_MATURITY_ATTACKED = 2 + + # Exploit maturity: Proof-of-concept (E:P). Defined in CVSS v4. + EXPLOIT_MATURITY_POC = 3 + + # Exploit maturity: Unreported (E:U). Defined in CVSS v4. + EXPLOIT_MATURITY_UNREPORTED = 4 + end end # CVSS Version. module CVSSVersion + # Unspecified. CVSS_VERSION_UNSPECIFIED = 0 + # CVSS v2. CVSS_VERSION_2 = 1 + # CVSS v3. CVSS_VERSION_3 = 2 + + # CVSS v4. + CVSS_VERSION_4 = 3 end end end diff --git a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/discovery.rb b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/discovery.rb index 47d5be3a4..afc178d13 100644 --- a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/discovery.rb +++ b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/discovery.rb @@ -64,6 +64,12 @@ class DiscoveryNote # @!attribute [rw] vulnerability_attestation # @return [::Grafeas::V1::DiscoveryOccurrence::VulnerabilityAttestation] # The status of an vulnerability attestation generation. + # @!attribute [rw] files + # @return [::Array<::Grafeas::V1::DiscoveryOccurrence::File>] + # Files that make up the resource described by the occurrence. + # @!attribute [rw] last_vulnerability_update_time + # @return [::Google::Protobuf::Timestamp] + # The last time vulnerability scan results changed. class DiscoveryOccurrence include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -129,6 +135,24 @@ module VulnerabilityAttestationState end end + # @!attribute [rw] name + # @return [::String] + # @!attribute [rw] digest + # @return [::Google::Protobuf::Map{::String => ::String}] + class File + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # @!attribute [rw] key + # @return [::String] + # @!attribute [rw] value + # @return [::String] + class DigestEntry + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + # Whether the resource is continuously analyzed. module ContinuousAnalysis # Unknown. diff --git a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/grafeas.rb b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/grafeas.rb index 855b05654..e9e28629e 100644 --- a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/grafeas.rb +++ b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/grafeas.rb @@ -243,6 +243,13 @@ class GetOccurrenceRequest # @!attribute [rw] page_token # @return [::String] # Token to provide to skip to a particular spot in the list. + # @!attribute [rw] return_partial_success + # @return [::Boolean] + # If set, the request will return all reachable Occurrences + # and report all unreachable regions in the `unreachable` field in + # the response. + # + # Only applicable for requests in the global region. class ListOccurrencesRequest include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -257,6 +264,12 @@ class ListOccurrencesRequest # The next pagination token in the list response. It should be used as # `page_token` for the following request. An empty value means no more # results. + # @!attribute [rw] unreachable + # @return [::Array<::String>] + # Unreachable regions. Populated for requests from the global region + # when `return_partial_success` is set. + # + # Format: `projects/[PROJECT_ID]/locations/[LOCATION]` class ListOccurrencesResponse include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -336,6 +349,13 @@ class GetOccurrenceNoteRequest # @!attribute [rw] page_token # @return [::String] # Token to provide to skip to a particular spot in the list. + # @!attribute [rw] return_partial_success + # @return [::Boolean] + # If set, the request will return all reachable Notes + # and report all unreachable regions in the `unreachable` field in + # the response. + # + # Only applicable for requests in the global region. class ListNotesRequest include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -350,6 +370,12 @@ class ListNotesRequest # The next pagination token in the list response. It should be used as # `page_token` for the following request. An empty value means no more # results. + # @!attribute [rw] unreachable + # @return [::Array<::String>] + # Unreachable regions. Populated for requests from the global region + # when `return_partial_success` is set. + # + # Format: `projects/[PROJECT_ID]/locations/[LOCATION]` class ListNotesResponse include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods diff --git a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/risk.rb b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/risk.rb new file mode 100644 index 000000000..368497cf7 --- /dev/null +++ b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/risk.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Grafeas + module V1 + # @!attribute [rw] cisa_kev + # @return [::Grafeas::V1::CISAKnownExploitedVulnerabilities] + # CISA maintains the authoritative source of vulnerabilities that have been + # exploited in the wild. + # @!attribute [rw] epss + # @return [::Grafeas::V1::ExploitPredictionScoringSystem] + # The Exploit Prediction Scoring System (EPSS) estimates the likelihood + # (probability) that a software vulnerability will be exploited in the wild. + class Risk + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # @!attribute [rw] known_ransomware_campaign_use + # @return [::String] + # Whether the vulnerability is known to have been leveraged as part of a + # ransomware campaign. + class CISAKnownExploitedVulnerabilities + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # @!attribute [rw] percentile + # @return [::Float] + # The percentile of the current score, the proportion of all scored + # vulnerabilities with the same or a lower EPSS score + # @!attribute [rw] score + # @return [::Float] + # The EPSS score representing the probability [0-1] of exploitation in the + # wild in the next 30 days + class ExploitPredictionScoringSystem + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end +end diff --git a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/secret.rb b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/secret.rb index 16e3567d6..19111283e 100644 --- a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/secret.rb +++ b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/secret.rb @@ -35,6 +35,13 @@ class SecretNote # @!attribute [rw] statuses # @return [::Array<::Grafeas::V1::SecretStatus>] # Status of the secret. + # @!attribute [rw] data + # @return [::Google::Protobuf::Any] + # Scan result of the secret. + # @!attribute [rw] digest + # @return [::Grafeas::V1::Digest] + # Hash value, typically a digest for the secret data, that allows unique + # identification of a specific secret. class SecretOccurrence include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -87,9 +94,72 @@ module SecretKind # The secret kind is unknown. SECRET_KIND_UNKNOWN = 1 - # A GCP service account key per: + # A Google Cloud service account key per: # https://cloud.google.com/iam/docs/creating-managing-service-account-keys SECRET_KIND_GCP_SERVICE_ACCOUNT_KEY = 2 + + # A Google Cloud API key per: + # https://cloud.google.com/docs/authentication/api-keys + SECRET_KIND_GCP_API_KEY = 3 + + # A Google Cloud OAuth2 client credentials per: + # https://developers.google.com/identity/protocols/oauth2 + SECRET_KIND_GCP_OAUTH2_CLIENT_CREDENTIALS = 4 + + # A Google Cloud OAuth2 access token per: + # https://cloud.google.com/docs/authentication/token-types#access + SECRET_KIND_GCP_OAUTH2_ACCESS_TOKEN = 5 + + # An Anthropic Admin API key. + SECRET_KIND_ANTHROPIC_ADMIN_API_KEY = 6 + + # An Anthropic API key. + SECRET_KIND_ANTHROPIC_API_KEY = 7 + + # An Azure access token. + SECRET_KIND_AZURE_ACCESS_TOKEN = 8 + + # An Azure Identity Platform ID token. + SECRET_KIND_AZURE_IDENTITY_TOKEN = 9 + + # A Docker Hub personal access token. + SECRET_KIND_DOCKER_HUB_PERSONAL_ACCESS_TOKEN = 10 + + # A GitHub App refresh token. + SECRET_KIND_GITHUB_APP_REFRESH_TOKEN = 11 + + # A GitHub App server-to-server token. + SECRET_KIND_GITHUB_APP_SERVER_TO_SERVER_TOKEN = 12 + + # A GitHub App user-to-server token. + SECRET_KIND_GITHUB_APP_USER_TO_SERVER_TOKEN = 13 + + # A GitHub personal access token (classic). + SECRET_KIND_GITHUB_CLASSIC_PERSONAL_ACCESS_TOKEN = 14 + + # A GitHub fine-grained personal access token. + SECRET_KIND_GITHUB_FINE_GRAINED_PERSONAL_ACCESS_TOKEN = 15 + + # A GitHub OAuth token. + SECRET_KIND_GITHUB_OAUTH_TOKEN = 16 + + # A Hugging Face API key. + SECRET_KIND_HUGGINGFACE_API_KEY = 17 + + # An OpenAI API key. + SECRET_KIND_OPENAI_API_KEY = 18 + + # A Perplexity API key. + SECRET_KIND_PERPLEXITY_API_KEY = 19 + + # A Stripe secret key. + SECRET_KIND_STRIPE_SECRET_KEY = 20 + + # A Stripe restricted key. + SECRET_KIND_STRIPE_RESTRICTED_KEY = 21 + + # A Stripe webhook secret. + SECRET_KIND_STRIPE_WEBHOOK_SECRET = 22 end end end diff --git a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/vulnerability.rb b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/vulnerability.rb index 86195f638..1c116d3d5 100644 --- a/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/vulnerability.rb +++ b/shared/output/cloud/grafeas_v1/proto_docs/grafeas/v1/vulnerability.rb @@ -50,6 +50,12 @@ module V1 # @!attribute [rw] cvss_v2 # @return [::Grafeas::V1::CVSS] # The full description of the v2 CVSS for this vulnerability. + # @!attribute [rw] advisory_publish_time + # @return [::Google::Protobuf::Timestamp] + # The time this advisory was published by the source. + # @!attribute [rw] cvss_v4 + # @return [::Grafeas::V1::CVSS] + # The full description of the v4 CVSS for this vulnerability. class VulnerabilityNote include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -216,6 +222,12 @@ class KnowledgeBase # @!attribute [rw] extra_details # @return [::String] # Occurrence-specific extra details about the vulnerability. + # @!attribute [rw] risk + # @return [::Grafeas::V1::Risk] + # Risk information about the vulnerability, such as CISA, EPSS, etc. + # @!attribute [rw] cvss_v4 + # @return [::Grafeas::V1::CVSS] + # The cvss v4 score for the vulnerability. class VulnerabilityOccurrence include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods diff --git a/shared/output/cloud/grafeas_v1/test/grafeas/v1/grafeas_test.rb b/shared/output/cloud/grafeas_v1/test/grafeas/v1/grafeas_test.rb index 69b6527cb..507c27f7f 100644 --- a/shared/output/cloud/grafeas_v1/test/grafeas/v1/grafeas_test.rb +++ b/shared/output/cloud/grafeas_v1/test/grafeas/v1/grafeas_test.rb @@ -133,6 +133,7 @@ def test_list_occurrences filter = "hello world" page_size = 42 page_token = "hello world" + return_partial_success = true list_occurrences_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| assert_equal :list_occurrences, name @@ -141,6 +142,7 @@ def test_list_occurrences assert_equal "hello world", request["filter"] assert_equal 42, request["page_size"] assert_equal "hello world", request["page_token"] + assert_equal true, request["return_partial_success"] refute_nil options end @@ -151,35 +153,35 @@ def test_list_occurrences end # Use hash object - c.list_occurrences({ parent: parent, filter: filter, page_size: page_size, page_token: page_token }) do |response, operation| + c.list_occurrences({ parent: parent, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success }) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use named arguments - c.list_occurrences parent: parent, filter: filter, page_size: page_size, page_token: page_token do |response, operation| + c.list_occurrences parent: parent, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use protobuf object - c.list_occurrences ::Grafeas::V1::ListOccurrencesRequest.new(parent: parent, filter: filter, page_size: page_size, page_token: page_token) do |response, operation| + c.list_occurrences ::Grafeas::V1::ListOccurrencesRequest.new(parent: parent, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use hash object with options - c.list_occurrences({ parent: parent, filter: filter, page_size: page_size, page_token: page_token }, grpc_options) do |response, operation| + c.list_occurrences({ parent: parent, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success }, grpc_options) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use protobuf object with options - c.list_occurrences(::Grafeas::V1::ListOccurrencesRequest.new(parent: parent, filter: filter, page_size: page_size, page_token: page_token), grpc_options) do |response, operation| + c.list_occurrences(::Grafeas::V1::ListOccurrencesRequest.new(parent: parent, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success), grpc_options) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation @@ -558,6 +560,7 @@ def test_list_notes filter = "hello world" page_size = 42 page_token = "hello world" + return_partial_success = true list_notes_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| assert_equal :list_notes, name @@ -566,6 +569,7 @@ def test_list_notes assert_equal "hello world", request["filter"] assert_equal 42, request["page_size"] assert_equal "hello world", request["page_token"] + assert_equal true, request["return_partial_success"] refute_nil options end @@ -576,35 +580,35 @@ def test_list_notes end # Use hash object - c.list_notes({ parent: parent, filter: filter, page_size: page_size, page_token: page_token }) do |response, operation| + c.list_notes({ parent: parent, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success }) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use named arguments - c.list_notes parent: parent, filter: filter, page_size: page_size, page_token: page_token do |response, operation| + c.list_notes parent: parent, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use protobuf object - c.list_notes ::Grafeas::V1::ListNotesRequest.new(parent: parent, filter: filter, page_size: page_size, page_token: page_token) do |response, operation| + c.list_notes ::Grafeas::V1::ListNotesRequest.new(parent: parent, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use hash object with options - c.list_notes({ parent: parent, filter: filter, page_size: page_size, page_token: page_token }, grpc_options) do |response, operation| + c.list_notes({ parent: parent, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success }, grpc_options) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use protobuf object with options - c.list_notes(::Grafeas::V1::ListNotesRequest.new(parent: parent, filter: filter, page_size: page_size, page_token: page_token), grpc_options) do |response, operation| + c.list_notes(::Grafeas::V1::ListNotesRequest.new(parent: parent, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success), grpc_options) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation diff --git a/shared/output/cloud/language_v1/proto_docs/google/api/client.rb b/shared/output/cloud/language_v1/proto_docs/google/api/client.rb index d59ba51a5..3ab0b096d 100644 --- a/shared/output/cloud/language_v1/proto_docs/google/api/client.rb +++ b/shared/output/cloud/language_v1/proto_docs/google/api/client.rb @@ -31,6 +31,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -141,9 +143,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -155,11 +158,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -190,6 +193,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -318,10 +335,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -344,10 +363,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -356,14 +375,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -372,11 +391,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -411,6 +443,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -428,6 +462,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -469,5 +574,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/cloud/language_v1beta2/proto_docs/google/api/client.rb b/shared/output/cloud/language_v1beta2/proto_docs/google/api/client.rb index d59ba51a5..3ab0b096d 100644 --- a/shared/output/cloud/language_v1beta2/proto_docs/google/api/client.rb +++ b/shared/output/cloud/language_v1beta2/proto_docs/google/api/client.rb @@ -31,6 +31,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -141,9 +143,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -155,11 +158,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -190,6 +193,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -318,10 +335,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -344,10 +363,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -356,14 +375,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -372,11 +391,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -411,6 +443,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -428,6 +462,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -469,5 +574,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/cloud/location/proto_docs/google/api/client.rb b/shared/output/cloud/location/proto_docs/google/api/client.rb index d59ba51a5..3ab0b096d 100644 --- a/shared/output/cloud/location/proto_docs/google/api/client.rb +++ b/shared/output/cloud/location/proto_docs/google/api/client.rb @@ -31,6 +31,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -141,9 +143,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -155,11 +158,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -190,6 +193,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -318,10 +335,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -344,10 +363,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -356,14 +375,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -372,11 +391,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -411,6 +443,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -428,6 +462,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -469,5 +574,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/cloud/secretmanager_v1beta1/proto_docs/google/api/client.rb b/shared/output/cloud/secretmanager_v1beta1/proto_docs/google/api/client.rb index d59ba51a5..3ab0b096d 100644 --- a/shared/output/cloud/secretmanager_v1beta1/proto_docs/google/api/client.rb +++ b/shared/output/cloud/secretmanager_v1beta1/proto_docs/google/api/client.rb @@ -31,6 +31,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -141,9 +143,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -155,11 +158,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -190,6 +193,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -318,10 +335,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -344,10 +363,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -356,14 +375,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -372,11 +391,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -411,6 +443,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -428,6 +462,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -469,5 +574,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/cloud/speech_v1/proto_docs/google/api/client.rb b/shared/output/cloud/speech_v1/proto_docs/google/api/client.rb index d59ba51a5..3ab0b096d 100644 --- a/shared/output/cloud/speech_v1/proto_docs/google/api/client.rb +++ b/shared/output/cloud/speech_v1/proto_docs/google/api/client.rb @@ -31,6 +31,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -141,9 +143,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -155,11 +158,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -190,6 +193,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -318,10 +335,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -344,10 +363,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -356,14 +375,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -372,11 +391,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -411,6 +443,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -428,6 +462,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -469,5 +574,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/cloud/vision_v1/proto_docs/google/api/client.rb b/shared/output/cloud/vision_v1/proto_docs/google/api/client.rb index d59ba51a5..3ab0b096d 100644 --- a/shared/output/cloud/vision_v1/proto_docs/google/api/client.rb +++ b/shared/output/cloud/vision_v1/proto_docs/google/api/client.rb @@ -31,6 +31,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -141,9 +143,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -155,11 +158,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -190,6 +193,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -318,10 +335,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -344,10 +363,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -356,14 +375,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -372,11 +391,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -411,6 +443,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -428,6 +462,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -469,5 +574,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/cloud/vision_v1/proto_docs/google/type/color.rb b/shared/output/cloud/vision_v1/proto_docs/google/type/color.rb index 246dafcb7..5728bc06b 100644 --- a/shared/output/cloud/vision_v1/proto_docs/google/type/color.rb +++ b/shared/output/cloud/vision_v1/proto_docs/google/type/color.rb @@ -20,22 +20,22 @@ module Google module Type # Represents a color in the RGBA color space. This representation is designed - # for simplicity of conversion to/from color representations in various + # for simplicity of conversion to and from color representations in various # languages over compactness. For example, the fields of this representation # can be trivially provided to the constructor of `java.awt.Color` in Java; it # can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` # method in iOS; and, with just a little work, it can be easily formatted into # a CSS `rgba()` string in JavaScript. # - # This reference page doesn't carry information about the absolute color - # space - # that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, - # DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color + # This reference page doesn't have information about the absolute color + # space that should be used to interpret the RGB value—for example, sRGB, + # Adobe RGB, + # DCI-P3, and BT.2020. By default, applications should assume the sRGB color # space. # - # When color equality needs to be decided, implementations, unless - # documented otherwise, treat two colors as equal if all their red, - # green, blue, and alpha values each differ by at most 1e-5. + # When color equality needs to be decided, implementations, unless documented + # otherwise, treat two colors as equal if all their red, green, blue, and alpha + # values each differ by at most `1e-5`. # # Example (Java): # diff --git a/shared/output/cloud/vision_v1/proto_docs/google/type/latlng.rb b/shared/output/cloud/vision_v1/proto_docs/google/type/latlng.rb index c15e78a39..593314b4c 100644 --- a/shared/output/cloud/vision_v1/proto_docs/google/type/latlng.rb +++ b/shared/output/cloud/vision_v1/proto_docs/google/type/latlng.rb @@ -21,9 +21,9 @@ module Google module Type # An object that represents a latitude/longitude pair. This is expressed as a # pair of doubles to represent degrees latitude and degrees longitude. Unless - # specified otherwise, this must conform to the - # WGS84 - # standard. Values must be within normalized ranges. + # specified otherwise, this object must conform to the + # + # WGS84 standard. Values must be within normalized ranges. # @!attribute [rw] latitude # @return [::Float] # The latitude in degrees. It must be in the range [-90.0, +90.0]. diff --git a/shared/output/gapic/templates/garbage/proto_docs/google/api/client.rb b/shared/output/gapic/templates/garbage/proto_docs/google/api/client.rb index e8adcfbc3..fca6a8658 100644 --- a/shared/output/gapic/templates/garbage/proto_docs/google/api/client.rb +++ b/shared/output/gapic/templates/garbage/proto_docs/google/api/client.rb @@ -39,6 +39,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -149,9 +151,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -163,11 +166,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -198,6 +201,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -326,10 +343,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -352,10 +371,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -364,14 +383,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -380,11 +399,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -419,6 +451,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -436,6 +470,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -477,5 +582,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance_pb.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance_pb.rb index 354988e84..b7e054bed 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance_pb.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance_pb.rb @@ -8,7 +8,7 @@ require 'google/api/client_pb' -descriptor_data = "\n(google/showcase/v1beta1/compliance.proto\x12\x17google.showcase.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\"\xc3\x02\n\rRepeatRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x35\n\x04info\x18\x02 \x01(\x0b\x32\'.google.showcase.v1beta1.ComplianceData\x12\x15\n\rserver_verify\x18\x03 \x01(\x08\x12!\n\x14intended_binding_uri\x18\n \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x07\x66_int32\x18\x04 \x01(\x05\x12\x0f\n\x07\x66_int64\x18\x05 \x01(\x03\x12\x10\n\x08\x66_double\x18\x06 \x01(\x01\x12\x14\n\x07p_int32\x18\x07 \x01(\x05H\x01\x88\x01\x01\x12\x14\n\x07p_int64\x18\x08 \x01(\x03H\x02\x88\x01\x01\x12\x15\n\x08p_double\x18\t \x01(\x01H\x03\x88\x01\x01\x42\x17\n\x15_intended_binding_uriB\n\n\x08_p_int32B\n\n\x08_p_int64B\x0b\n\t_p_double\"^\n\x0eRepeatResponse\x12\x37\n\x07request\x18\x01 \x01(\x0b\x32&.google.showcase.v1beta1.RepeatRequest\x12\x13\n\x0b\x62inding_uri\x18\x02 \x01(\t\"J\n\x0f\x43omplianceSuite\x12\x37\n\x05group\x18\x01 \x03(\x0b\x32(.google.showcase.v1beta1.ComplianceGroup\"g\n\x0f\x43omplianceGroup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04rpcs\x18\x02 \x03(\t\x12\x38\n\x08requests\x18\x03 \x03(\x0b\x32&.google.showcase.v1beta1.RepeatRequest\"\xe0\x06\n\x0e\x43omplianceData\x12\x10\n\x08\x66_string\x18\x01 \x01(\t\x12\x0f\n\x07\x66_int32\x18\x02 \x01(\x05\x12\x10\n\x08\x66_sint32\x18\x03 \x01(\x11\x12\x12\n\nf_sfixed32\x18\x04 \x01(\x0f\x12\x10\n\x08\x66_uint32\x18\x05 \x01(\r\x12\x11\n\tf_fixed32\x18\x06 \x01(\x07\x12\x0f\n\x07\x66_int64\x18\x07 \x01(\x03\x12\x10\n\x08\x66_sint64\x18\x08 \x01(\x12\x12\x12\n\nf_sfixed64\x18\t \x01(\x10\x12\x10\n\x08\x66_uint64\x18\n \x01(\x04\x12\x11\n\tf_fixed64\x18\x0b \x01(\x06\x12\x10\n\x08\x66_double\x18\x0c \x01(\x01\x12\x0f\n\x07\x66_float\x18\r \x01(\x02\x12\x0e\n\x06\x66_bool\x18\x0e \x01(\x08\x12\x0f\n\x07\x66_bytes\x18\x0f \x01(\x0c\x12\x46\n\tf_kingdom\x18\x16 \x01(\x0e\x32\x33.google.showcase.v1beta1.ComplianceData.LifeKingdom\x12=\n\x07\x66_child\x18\x10 \x01(\x0b\x32,.google.showcase.v1beta1.ComplianceDataChild\x12\x15\n\x08p_string\x18\x11 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07p_int32\x18\x12 \x01(\x05H\x01\x88\x01\x01\x12\x15\n\x08p_double\x18\x13 \x01(\x01H\x02\x88\x01\x01\x12\x13\n\x06p_bool\x18\x14 \x01(\x08H\x03\x88\x01\x01\x12K\n\tp_kingdom\x18\x17 \x01(\x0e\x32\x33.google.showcase.v1beta1.ComplianceData.LifeKingdomH\x04\x88\x01\x01\x12\x42\n\x07p_child\x18\x15 \x01(\x0b\x32,.google.showcase.v1beta1.ComplianceDataChildH\x05\x88\x01\x01\"\x83\x01\n\x0bLifeKingdom\x12\x1c\n\x18LIFE_KINGDOM_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x41RCHAEBACTERIA\x10\x01\x12\x0e\n\nEUBACTERIA\x10\x02\x12\x0c\n\x08PROTISTA\x10\x03\x12\t\n\x05\x46UNGI\x10\x04\x12\x0b\n\x07PLANTAE\x10\x05\x12\x0c\n\x08\x41NIMALIA\x10\x06\x42\x0b\n\t_p_stringB\n\n\x08_p_int32B\x0b\n\t_p_doubleB\t\n\x07_p_boolB\x0c\n\n_p_kingdomB\n\n\x08_p_child\"\xef\x03\n\x13\x43omplianceDataChild\x12\x10\n\x08\x66_string\x18\x01 \x01(\t\x12\x0f\n\x07\x66_float\x18\x02 \x01(\x02\x12\x10\n\x08\x66_double\x18\x03 \x01(\x01\x12\x0e\n\x06\x66_bool\x18\x04 \x01(\x08\x12\x37\n\x0b\x66_continent\x18\x0b \x01(\x0e\x32\".google.showcase.v1beta1.Continent\x12\x42\n\x07\x66_child\x18\x05 \x01(\x0b\x32\x31.google.showcase.v1beta1.ComplianceDataGrandchild\x12\x15\n\x08p_string\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07p_float\x18\x07 \x01(\x02H\x01\x88\x01\x01\x12\x15\n\x08p_double\x18\x08 \x01(\x01H\x02\x88\x01\x01\x12\x13\n\x06p_bool\x18\t \x01(\x08H\x03\x88\x01\x01\x12\x37\n\x0bp_continent\x18\x0c \x01(\x0e\x32\".google.showcase.v1beta1.Continent\x12G\n\x07p_child\x18\n \x01(\x0b\x32\x31.google.showcase.v1beta1.ComplianceDataGrandchildH\x04\x88\x01\x01\x42\x0b\n\t_p_stringB\n\n\x08_p_floatB\x0b\n\t_p_doubleB\t\n\x07_p_boolB\n\n\x08_p_child\"N\n\x18\x43omplianceDataGrandchild\x12\x10\n\x08\x66_string\x18\x01 \x01(\t\x12\x10\n\x08\x66_double\x18\x02 \x01(\x01\x12\x0e\n\x06\x66_bool\x18\x03 \x01(\x08\"#\n\x0b\x45numRequest\x12\x14\n\x0cunknown_enum\x18\x01 \x01(\x08\"|\n\x0c\x45numResponse\x12\x35\n\x07request\x18\x01 \x01(\x0b\x32$.google.showcase.v1beta1.EnumRequest\x12\x35\n\tcontinent\x18\x02 \x01(\x0e\x32\".google.showcase.v1beta1.Continent*i\n\tContinent\x12\x19\n\x15\x43ONTINENT_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x46RICA\x10\x01\x12\x0b\n\x07\x41MERICA\x10\x02\x12\r\n\tANTARTICA\x10\x03\x12\r\n\tAUSTRALIA\x10\x04\x12\n\n\x06\x45UROPE\x10\x05\x32\xd8\r\n\nCompliance\x12\x82\x01\n\x0eRepeatDataBody\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"\x1f\x82\xd3\xe4\x93\x02\x19\"\x14/v1beta1/repeat:body:\x01*\x12\x8d\x01\n\x12RepeatDataBodyInfo\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"&\x82\xd3\xe4\x93\x02 \"\x18/v1beta1/repeat:bodyinfo:\x04info\x12\x81\x01\n\x0fRepeatDataQuery\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/v1beta1/repeat:query\x12\xd9\x01\n\x14RepeatDataSimplePath\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"p\x82\xd3\xe4\x93\x02j\x12h/v1beta1/repeat/{info.f_string}/{info.f_int32}/{info.f_double}/{info.f_bool}/{info.f_kingdom}:simplepath\x12\xd3\x02\n\x16RepeatDataPathResource\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"\xe7\x01\x82\xd3\xe4\x93\x02\xe0\x01\x12h/v1beta1/repeat/{info.f_string=first/*}/{info.f_child.f_string=second/*}/bool/{info.f_bool}:pathresourceZt\x12r/v1beta1/repeat/{info.f_child.f_string=first/*}/{info.f_string=second/*}/bool/{info.f_bool}:childfirstpathresource\x12\xd9\x01\n\x1eRepeatDataPathTrailingResource\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"f\x82\xd3\xe4\x93\x02`\x12^/v1beta1/repeat/{info.f_string=first/*}/{info.f_child.f_string=second/**}:pathtrailingresource\x12\x88\x01\n\x11RepeatDataBodyPut\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"\"\x82\xd3\xe4\x93\x02\x1c\x1a\x17/v1beta1/repeat:bodyput:\x01*\x12\x8c\x01\n\x13RepeatDataBodyPatch\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"$\x82\xd3\xe4\x93\x02\x1e\x32\x19/v1beta1/repeat:bodypatch:\x01*\x12x\n\x07GetEnum\x12$.google.showcase.v1beta1.EnumRequest\x1a%.google.showcase.v1beta1.EnumResponse\" \x82\xd3\xe4\x93\x02\x1a\x12\x18/v1beta1/compliance/enum\x12|\n\nVerifyEnum\x12%.google.showcase.v1beta1.EnumResponse\x1a%.google.showcase.v1beta1.EnumResponse\" \x82\xd3\xe4\x93\x02\x1a\"\x18/v1beta1/compliance/enum\x1a\x11\xca\x41\x0elocalhost:7469Bq\n\x1b\x63om.google.showcase.v1beta1P\x01Z4github.com/googleapis/gapic-showcase/server/genproto\xea\x02\x19Google::Showcase::V1beta1b\x06proto3" +descriptor_data = "\n(google/showcase/v1beta1/compliance.proto\x12\x17google.showcase.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\"\xc3\x02\n\rRepeatRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x35\n\x04info\x18\x02 \x01(\x0b\x32\'.google.showcase.v1beta1.ComplianceData\x12\x15\n\rserver_verify\x18\x03 \x01(\x08\x12!\n\x14intended_binding_uri\x18\n \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x07\x66_int32\x18\x04 \x01(\x05\x12\x0f\n\x07\x66_int64\x18\x05 \x01(\x03\x12\x10\n\x08\x66_double\x18\x06 \x01(\x01\x12\x14\n\x07p_int32\x18\x07 \x01(\x05H\x01\x88\x01\x01\x12\x14\n\x07p_int64\x18\x08 \x01(\x03H\x02\x88\x01\x01\x12\x15\n\x08p_double\x18\t \x01(\x01H\x03\x88\x01\x01\x42\x17\n\x15_intended_binding_uriB\n\n\x08_p_int32B\n\n\x08_p_int64B\x0b\n\t_p_double\"^\n\x0eRepeatResponse\x12\x37\n\x07request\x18\x01 \x01(\x0b\x32&.google.showcase.v1beta1.RepeatRequest\x12\x13\n\x0b\x62inding_uri\x18\x02 \x01(\t\"J\n\x0f\x43omplianceSuite\x12\x37\n\x05group\x18\x01 \x03(\x0b\x32(.google.showcase.v1beta1.ComplianceGroup\"g\n\x0f\x43omplianceGroup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04rpcs\x18\x02 \x03(\t\x12\x38\n\x08requests\x18\x03 \x03(\x0b\x32&.google.showcase.v1beta1.RepeatRequest\"\xd0\t\n\x0e\x43omplianceData\x12\x10\n\x08\x66_string\x18\x01 \x01(\t\x12\x0f\n\x07\x66_int32\x18\x02 \x01(\x05\x12\x10\n\x08\x66_sint32\x18\x03 \x01(\x11\x12\x12\n\nf_sfixed32\x18\x04 \x01(\x0f\x12\x10\n\x08\x66_uint32\x18\x05 \x01(\r\x12\x11\n\tf_fixed32\x18\x06 \x01(\x07\x12\x0f\n\x07\x66_int64\x18\x07 \x01(\x03\x12\x10\n\x08\x66_sint64\x18\x08 \x01(\x12\x12\x12\n\nf_sfixed64\x18\t \x01(\x10\x12\x10\n\x08\x66_uint64\x18\n \x01(\x04\x12\x11\n\tf_fixed64\x18\x0b \x01(\x06\x12\x10\n\x08\x66_double\x18\x0c \x01(\x01\x12\x0f\n\x07\x66_float\x18\r \x01(\x02\x12\x0e\n\x06\x66_bool\x18\x0e \x01(\x08\x12\x0f\n\x07\x66_bytes\x18\x0f \x01(\x0c\x12\x46\n\tf_kingdom\x18\x16 \x01(\x0e\x32\x33.google.showcase.v1beta1.ComplianceData.LifeKingdom\x12=\n\x07\x66_child\x18\x10 \x01(\x0b\x32,.google.showcase.v1beta1.ComplianceDataChild\x12\x15\n\x08p_string\x18\x11 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07p_int32\x18\x12 \x01(\x05H\x01\x88\x01\x01\x12\x15\n\x08p_sint32\x18\' \x01(\x11H\x02\x88\x01\x01\x12\x17\n\np_sfixed32\x18( \x01(\x0fH\x03\x88\x01\x01\x12\x15\n\x08p_uint32\x18) \x01(\rH\x04\x88\x01\x01\x12\x16\n\tp_fixed32\x18* \x01(\x07H\x05\x88\x01\x01\x12\x14\n\x07p_int64\x18+ \x01(\x03H\x06\x88\x01\x01\x12\x15\n\x08p_sint64\x18, \x01(\x12H\x07\x88\x01\x01\x12\x17\n\np_sfixed64\x18- \x01(\x10H\x08\x88\x01\x01\x12\x15\n\x08p_uint64\x18. \x01(\x04H\t\x88\x01\x01\x12\x16\n\tp_fixed64\x18/ \x01(\x06H\n\x88\x01\x01\x12\x14\n\x07p_float\x18\x30 \x01(\x02H\x0b\x88\x01\x01\x12\x15\n\x08p_double\x18\x13 \x01(\x01H\x0c\x88\x01\x01\x12\x13\n\x06p_bool\x18\x14 \x01(\x08H\r\x88\x01\x01\x12K\n\tp_kingdom\x18\x17 \x01(\x0e\x32\x33.google.showcase.v1beta1.ComplianceData.LifeKingdomH\x0e\x88\x01\x01\x12\x42\n\x07p_child\x18\x15 \x01(\x0b\x32,.google.showcase.v1beta1.ComplianceDataChildH\x0f\x88\x01\x01\"\x83\x01\n\x0bLifeKingdom\x12\x1c\n\x18LIFE_KINGDOM_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x41RCHAEBACTERIA\x10\x01\x12\x0e\n\nEUBACTERIA\x10\x02\x12\x0c\n\x08PROTISTA\x10\x03\x12\t\n\x05\x46UNGI\x10\x04\x12\x0b\n\x07PLANTAE\x10\x05\x12\x0c\n\x08\x41NIMALIA\x10\x06\x42\x0b\n\t_p_stringB\n\n\x08_p_int32B\x0b\n\t_p_sint32B\r\n\x0b_p_sfixed32B\x0b\n\t_p_uint32B\x0c\n\n_p_fixed32B\n\n\x08_p_int64B\x0b\n\t_p_sint64B\r\n\x0b_p_sfixed64B\x0b\n\t_p_uint64B\x0c\n\n_p_fixed64B\n\n\x08_p_floatB\x0b\n\t_p_doubleB\t\n\x07_p_boolB\x0c\n\n_p_kingdomB\n\n\x08_p_child\"\xef\x03\n\x13\x43omplianceDataChild\x12\x10\n\x08\x66_string\x18\x01 \x01(\t\x12\x0f\n\x07\x66_float\x18\x02 \x01(\x02\x12\x10\n\x08\x66_double\x18\x03 \x01(\x01\x12\x0e\n\x06\x66_bool\x18\x04 \x01(\x08\x12\x37\n\x0b\x66_continent\x18\x0b \x01(\x0e\x32\".google.showcase.v1beta1.Continent\x12\x42\n\x07\x66_child\x18\x05 \x01(\x0b\x32\x31.google.showcase.v1beta1.ComplianceDataGrandchild\x12\x15\n\x08p_string\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07p_float\x18\x07 \x01(\x02H\x01\x88\x01\x01\x12\x15\n\x08p_double\x18\x08 \x01(\x01H\x02\x88\x01\x01\x12\x13\n\x06p_bool\x18\t \x01(\x08H\x03\x88\x01\x01\x12\x37\n\x0bp_continent\x18\x0c \x01(\x0e\x32\".google.showcase.v1beta1.Continent\x12G\n\x07p_child\x18\n \x01(\x0b\x32\x31.google.showcase.v1beta1.ComplianceDataGrandchildH\x04\x88\x01\x01\x42\x0b\n\t_p_stringB\n\n\x08_p_floatB\x0b\n\t_p_doubleB\t\n\x07_p_boolB\n\n\x08_p_child\"N\n\x18\x43omplianceDataGrandchild\x12\x10\n\x08\x66_string\x18\x01 \x01(\t\x12\x10\n\x08\x66_double\x18\x02 \x01(\x01\x12\x0e\n\x06\x66_bool\x18\x03 \x01(\x08\"#\n\x0b\x45numRequest\x12\x14\n\x0cunknown_enum\x18\x01 \x01(\x08\"|\n\x0c\x45numResponse\x12\x35\n\x07request\x18\x01 \x01(\x0b\x32$.google.showcase.v1beta1.EnumRequest\x12\x35\n\tcontinent\x18\x02 \x01(\x0e\x32\".google.showcase.v1beta1.Continent*i\n\tContinent\x12\x19\n\x15\x43ONTINENT_UNSPECIFIED\x10\x00\x12\n\n\x06\x41\x46RICA\x10\x01\x12\x0b\n\x07\x41MERICA\x10\x02\x12\r\n\tANTARTICA\x10\x03\x12\r\n\tAUSTRALIA\x10\x04\x12\n\n\x06\x45UROPE\x10\x05\x32\xd8\r\n\nCompliance\x12\x82\x01\n\x0eRepeatDataBody\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"\x1f\x82\xd3\xe4\x93\x02\x19\"\x14/v1beta1/repeat:body:\x01*\x12\x8d\x01\n\x12RepeatDataBodyInfo\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"&\x82\xd3\xe4\x93\x02 \"\x18/v1beta1/repeat:bodyinfo:\x04info\x12\x81\x01\n\x0fRepeatDataQuery\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/v1beta1/repeat:query\x12\xd9\x01\n\x14RepeatDataSimplePath\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"p\x82\xd3\xe4\x93\x02j\x12h/v1beta1/repeat/{info.f_string}/{info.f_int32}/{info.f_double}/{info.f_bool}/{info.f_kingdom}:simplepath\x12\xd3\x02\n\x16RepeatDataPathResource\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"\xe7\x01\x82\xd3\xe4\x93\x02\xe0\x01\x12h/v1beta1/repeat/{info.f_string=first/*}/{info.f_child.f_string=second/*}/bool/{info.f_bool}:pathresourceZt\x12r/v1beta1/repeat/{info.f_child.f_string=first/*}/{info.f_string=second/*}/bool/{info.f_bool}:childfirstpathresource\x12\xd9\x01\n\x1eRepeatDataPathTrailingResource\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"f\x82\xd3\xe4\x93\x02`\x12^/v1beta1/repeat/{info.f_string=first/*}/{info.f_child.f_string=second/**}:pathtrailingresource\x12\x88\x01\n\x11RepeatDataBodyPut\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"\"\x82\xd3\xe4\x93\x02\x1c\x1a\x17/v1beta1/repeat:bodyput:\x01*\x12\x8c\x01\n\x13RepeatDataBodyPatch\x12&.google.showcase.v1beta1.RepeatRequest\x1a\'.google.showcase.v1beta1.RepeatResponse\"$\x82\xd3\xe4\x93\x02\x1e\x32\x19/v1beta1/repeat:bodypatch:\x01*\x12x\n\x07GetEnum\x12$.google.showcase.v1beta1.EnumRequest\x1a%.google.showcase.v1beta1.EnumResponse\" \x82\xd3\xe4\x93\x02\x1a\x12\x18/v1beta1/compliance/enum\x12|\n\nVerifyEnum\x12%.google.showcase.v1beta1.EnumResponse\x1a%.google.showcase.v1beta1.EnumResponse\" \x82\xd3\xe4\x93\x02\x1a\"\x18/v1beta1/compliance/enum\x1a\x11\xca\x41\x0elocalhost:7469Bq\n\x1b\x63om.google.showcase.v1beta1P\x01Z4github.com/googleapis/gapic-showcase/server/genproto\xea\x02\x19Google::Showcase::V1beta1b\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service.rb index e0580c978..b5010f972 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service.rb @@ -39,6 +39,9 @@ module Google module Showcase module V1beta1 ## + # A service that enables testing of unary and server streaming calls + # by specifying a specific, predictable sequence of responses from the service + # # @example Load this service and instantiate a gRPC client # # require "google/showcase/v1beta1/sequence_service" diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/client.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/client.rb index 777362fde..8d89ec562 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/client.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/client.rb @@ -35,6 +35,9 @@ module SequenceService ## # Client for the SequenceService service. # + # A service that enables testing of unary and server streaming calls + # by specifying a specific, predictable sequence of responses from the service + # class Client # @private API_VERSION = "" @@ -213,7 +216,7 @@ def logger # Service calls ## - # Creates a sequence. + # Create a sequence of responses to be returned as unary calls # # @overload create_sequence(request, options = nil) # Pass arguments to `create_sequence` via a request object, either of type @@ -287,7 +290,7 @@ def create_sequence request, options = nil end ## - # Creates a sequence. + # Creates a sequence of responses to be returned in a server streaming call # # @overload create_streaming_sequence(request, options = nil) # Pass arguments to `create_streaming_sequence` via a request object, either of type @@ -362,7 +365,8 @@ def create_streaming_sequence request, options = nil end ## - # Retrieves a sequence. + # Retrieves a sequence report which can be used to retrieve information about a + # sequence of unary calls. # # @overload get_sequence_report(request, options = nil) # Pass arguments to `get_sequence_report` via a request object, either of type @@ -444,7 +448,8 @@ def get_sequence_report request, options = nil end ## - # Retrieves a sequence. + # Retrieves a sequence report which can be used to retrieve information + # about a sequences of responses in a server streaming call. # # @overload get_streaming_sequence_report(request, options = nil) # Pass arguments to `get_streaming_sequence_report` via a request object, either of type @@ -527,7 +532,7 @@ def get_streaming_sequence_report request, options = nil end ## - # Attempts a sequence. + # Attempts a sequence of unary responses. # # @overload attempt_sequence(request, options = nil) # Pass arguments to `attempt_sequence` via a request object, either of type @@ -609,7 +614,8 @@ def attempt_sequence request, options = nil end ## - # Attempts a streaming sequence. + # Attempts a server streaming call with a sequence of responses + # Can be used to test retries and stream resumption logic # May not function as expected in HTTP mode due to when http statuses are sent # See https://github.com/googleapis/gapic-showcase/issues/1377 for more details # diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest.rb index e524062ba..8975eb76f 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest.rb @@ -39,6 +39,9 @@ module Google module Showcase module V1beta1 ## + # A service that enables testing of unary and server streaming calls + # by specifying a specific, predictable sequence of responses from the service + # # To load this service and instantiate a REST client: # # require "google/showcase/v1beta1/sequence_service/rest" diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/client.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/client.rb index 6600191ec..d747b3f55 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/client.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/client.rb @@ -37,6 +37,9 @@ module Rest ## # REST client for the SequenceService service. # + # A service that enables testing of unary and server streaming calls + # by specifying a specific, predictable sequence of responses from the service + # class Client # @private API_VERSION = "" @@ -208,7 +211,7 @@ def logger # Service calls ## - # Creates a sequence. + # Create a sequence of responses to be returned as unary calls # # @overload create_sequence(request, options = nil) # Pass arguments to `create_sequence` via a request object, either of type @@ -285,7 +288,7 @@ def create_sequence request, options = nil end ## - # Creates a sequence. + # Creates a sequence of responses to be returned in a server streaming call # # @overload create_streaming_sequence(request, options = nil) # Pass arguments to `create_streaming_sequence` via a request object, either of type @@ -362,7 +365,8 @@ def create_streaming_sequence request, options = nil end ## - # Retrieves a sequence. + # Retrieves a sequence report which can be used to retrieve information about a + # sequence of unary calls. # # @overload get_sequence_report(request, options = nil) # Pass arguments to `get_sequence_report` via a request object, either of type @@ -439,7 +443,8 @@ def get_sequence_report request, options = nil end ## - # Retrieves a sequence. + # Retrieves a sequence report which can be used to retrieve information + # about a sequences of responses in a server streaming call. # # @overload get_streaming_sequence_report(request, options = nil) # Pass arguments to `get_streaming_sequence_report` via a request object, either of type @@ -516,7 +521,7 @@ def get_streaming_sequence_report request, options = nil end ## - # Attempts a sequence. + # Attempts a sequence of unary responses. # # @overload attempt_sequence(request, options = nil) # Pass arguments to `attempt_sequence` via a request object, either of type @@ -593,7 +598,8 @@ def attempt_sequence request, options = nil end ## - # Attempts a streaming sequence. + # Attempts a server streaming call with a sequence of responses + # Can be used to test retries and stream resumption logic # May not function as expected in HTTP mode due to when http statuses are sent # See https://github.com/googleapis/gapic-showcase/issues/1377 for more details # diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_services_pb.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_services_pb.rb index 4ed7b4378..0b2d6c04e 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_services_pb.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_services_pb.rb @@ -23,6 +23,8 @@ module Google module Showcase module V1beta1 module SequenceService + # A service that enables testing of unary and server streaming calls + # by specifying a specific, predictable sequence of responses from the service class Service include ::GRPC::GenericService @@ -31,17 +33,20 @@ class Service self.unmarshal_class_method = :decode self.service_name = 'google.showcase.v1beta1.SequenceService' - # Creates a sequence. + # Create a sequence of responses to be returned as unary calls rpc :CreateSequence, ::Google::Showcase::V1beta1::CreateSequenceRequest, ::Google::Showcase::V1beta1::Sequence - # Creates a sequence. + # Creates a sequence of responses to be returned in a server streaming call rpc :CreateStreamingSequence, ::Google::Showcase::V1beta1::CreateStreamingSequenceRequest, ::Google::Showcase::V1beta1::StreamingSequence - # Retrieves a sequence. + # Retrieves a sequence report which can be used to retrieve information about a + # sequence of unary calls. rpc :GetSequenceReport, ::Google::Showcase::V1beta1::GetSequenceReportRequest, ::Google::Showcase::V1beta1::SequenceReport - # Retrieves a sequence. + # Retrieves a sequence report which can be used to retrieve information + # about a sequences of responses in a server streaming call. rpc :GetStreamingSequenceReport, ::Google::Showcase::V1beta1::GetStreamingSequenceReportRequest, ::Google::Showcase::V1beta1::StreamingSequenceReport - # Attempts a sequence. + # Attempts a sequence of unary responses. rpc :AttemptSequence, ::Google::Showcase::V1beta1::AttemptSequenceRequest, ::Google::Protobuf::Empty - # Attempts a streaming sequence. + # Attempts a server streaming call with a sequence of responses + # Can be used to test retries and stream resumption logic # May not function as expected in HTTP mode due to when http statuses are sent # See https://github.com/googleapis/gapic-showcase/issues/1377 for more details rpc :AttemptStreamingSequence, ::Google::Showcase::V1beta1::AttemptStreamingSequenceRequest, stream(::Google::Showcase::V1beta1::AttemptStreamingSequenceResponse) diff --git a/shared/output/gapic/templates/showcase/proto_docs/google/api/client.rb b/shared/output/gapic/templates/showcase/proto_docs/google/api/client.rb index e8adcfbc3..fca6a8658 100644 --- a/shared/output/gapic/templates/showcase/proto_docs/google/api/client.rb +++ b/shared/output/gapic/templates/showcase/proto_docs/google/api/client.rb @@ -39,6 +39,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -149,9 +151,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -163,11 +166,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -198,6 +201,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -326,10 +343,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -352,10 +371,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -364,14 +383,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -380,11 +399,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -419,6 +451,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -436,6 +470,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -477,5 +582,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/gapic/templates/showcase/proto_docs/google/api/routing.rb b/shared/output/gapic/templates/showcase/proto_docs/google/api/routing.rb index 381fe9abb..9fb985574 100644 --- a/shared/output/gapic/templates/showcase/proto_docs/google/api/routing.rb +++ b/shared/output/gapic/templates/showcase/proto_docs/google/api/routing.rb @@ -57,9 +57,13 @@ module Api # app_profile_id: profiles/prof_qux # } # - # The routing header consists of one or multiple key-value pairs. Every key - # and value must be percent-encoded, and joined together in the format of - # `key1=value1&key2=value2`. + # The routing header consists of one or multiple key-value pairs. The order of + # the key-value pairs is undefined, the order of the `routing_parameters` in + # the `RoutingRule` only matters for the evaluation order of the path + # templates when `field` is the same. See the examples below for more details. + # + # Every key and value in the routing header must be percent-encoded, + # and joined together in the following format: `key1=value1&key2=value2`. # The examples below skip the percent-encoding for readability. # # Example 1 diff --git a/shared/output/gapic/templates/showcase/proto_docs/google/rpc/error_details.rb b/shared/output/gapic/templates/showcase/proto_docs/google/rpc/error_details.rb index 60e45fd18..df55a9a35 100644 --- a/shared/output/gapic/templates/showcase/proto_docs/google/rpc/error_details.rb +++ b/shared/output/gapic/templates/showcase/proto_docs/google/rpc/error_details.rb @@ -310,17 +310,17 @@ class BadRequest # In this example, in proto `field` could take one of the following values: # # * `full_name` for a violation in the `full_name` value - # * `email_addresses[1].email` for a violation in the `email` field of the + # * `email_addresses[0].email` for a violation in the `email` field of the # first `email_addresses` message - # * `email_addresses[3].type[2]` for a violation in the second `type` + # * `email_addresses[2].type[1]` for a violation in the second `type` # value in the third `email_addresses` message. # # In JSON, the same values are represented as: # # * `fullName` for a violation in the `fullName` value - # * `emailAddresses[1].email` for a violation in the `email` field of the + # * `emailAddresses[0].email` for a violation in the `email` field of the # first `emailAddresses` message - # * `emailAddresses[3].type[2]` for a violation in the second `type` + # * `emailAddresses[2].type[1]` for a violation in the second `type` # value in the third `emailAddresses` message. # @!attribute [rw] description # @return [::String] diff --git a/shared/output/gapic/templates/showcase/proto_docs/google/showcase/v1beta1/compliance.rb b/shared/output/gapic/templates/showcase/proto_docs/google/showcase/v1beta1/compliance.rb index 14ad396a8..13b928625 100644 --- a/shared/output/gapic/templates/showcase/proto_docs/google/showcase/v1beta1/compliance.rb +++ b/shared/output/gapic/templates/showcase/proto_docs/google/showcase/v1beta1/compliance.rb @@ -132,6 +132,26 @@ class ComplianceGroup # @return [::String] # @!attribute [rw] p_int32 # @return [::Integer] + # @!attribute [rw] p_sint32 + # @return [::Integer] + # @!attribute [rw] p_sfixed32 + # @return [::Integer] + # @!attribute [rw] p_uint32 + # @return [::Integer] + # @!attribute [rw] p_fixed32 + # @return [::Integer] + # @!attribute [rw] p_int64 + # @return [::Integer] + # @!attribute [rw] p_sint64 + # @return [::Integer] + # @!attribute [rw] p_sfixed64 + # @return [::Integer] + # @!attribute [rw] p_uint64 + # @return [::Integer] + # @!attribute [rw] p_fixed64 + # @return [::Integer] + # @!attribute [rw] p_float + # @return [::Float] # @!attribute [rw] p_double # @return [::Float] # @!attribute [rw] p_bool diff --git a/shared/output/gapic/templates/showcase/proto_docs/google/showcase/v1beta1/sequence.rb b/shared/output/gapic/templates/showcase/proto_docs/google/showcase/v1beta1/sequence.rb index db78b2da3..cd5585f1a 100644 --- a/shared/output/gapic/templates/showcase/proto_docs/google/showcase/v1beta1/sequence.rb +++ b/shared/output/gapic/templates/showcase/proto_docs/google/showcase/v1beta1/sequence.rb @@ -28,6 +28,7 @@ module Google module Showcase module V1beta1 + # A sequence of responses to be returned in order for each unary call attempt # @!attribute [r] name # @return [::String] # @!attribute [rw] responses @@ -51,11 +52,15 @@ class Response end end + # A sequence of responses to be returned in order at the delay specified + # as part of the server streaming call # @!attribute [r] name # @return [::String] + # The name of the streaming sequence. # @!attribute [rw] content # @return [::String] - # The Content that the stream will send + # The content that the stream will send + # this was specified when the sequence was created # @!attribute [rw] responses # @return [::Array<::Google::Showcase::V1beta1::StreamingSequence::Response>] # Sequence of responses to return in order for each attempt. If empty, the @@ -73,13 +78,14 @@ class StreamingSequence # The amount of time to delay sending the response. # @!attribute [rw] response_index # @return [::Integer] - # The index that the status should be sent + # The index that the status should be sent at class Response include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end + # A report of the results of a streaming sequence. # @!attribute [r] name # @return [::String] # @!attribute [rw] attempts @@ -113,6 +119,7 @@ class Attempt end end + # A report of the results of a sequence of unary responses # @!attribute [r] name # @return [::String] # @!attribute [rw] attempts @@ -146,6 +153,7 @@ class Attempt end end + # Request message for creating a sequence of unary calls # @!attribute [rw] sequence # @return [::Google::Showcase::V1beta1::Sequence] class CreateSequenceRequest @@ -153,6 +161,7 @@ class CreateSequenceRequest extend ::Google::Protobuf::MessageExts::ClassMethods end + # Request message for the sequences of responses to be sent in a server streaming call # @!attribute [rw] streaming_sequence # @return [::Google::Showcase::V1beta1::StreamingSequence] class CreateStreamingSequenceRequest @@ -160,6 +169,7 @@ class CreateStreamingSequenceRequest extend ::Google::Protobuf::MessageExts::ClassMethods end + # Request message for the unary AttemptSequence method # @!attribute [rw] name # @return [::String] class AttemptSequenceRequest @@ -167,6 +177,7 @@ class AttemptSequenceRequest extend ::Google::Protobuf::MessageExts::ClassMethods end + # Request message for the AttemptStreamingSequence method. # @!attribute [rw] name # @return [::String] # @!attribute [rw] last_fail_index @@ -179,7 +190,7 @@ class AttemptStreamingSequenceRequest extend ::Google::Protobuf::MessageExts::ClassMethods end - # The response message for the Echo methods. + # The response message for the AttemptStreamingSequence method. # @!attribute [rw] content # @return [::String] # The content specified in the request. diff --git a/shared/output/gapic/templates/testing/proto_docs/google/api/client.rb b/shared/output/gapic/templates/testing/proto_docs/google/api/client.rb index e8adcfbc3..fca6a8658 100644 --- a/shared/output/gapic/templates/testing/proto_docs/google/api/client.rb +++ b/shared/output/gapic/templates/testing/proto_docs/google/api/client.rb @@ -39,6 +39,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -149,9 +151,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -163,11 +166,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -198,6 +201,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -326,10 +343,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -352,10 +371,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -364,14 +383,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -380,11 +399,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -419,6 +451,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -436,6 +470,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -477,5 +582,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/shared/output/gapic/templates/testing/proto_docs/google/api/routing.rb b/shared/output/gapic/templates/testing/proto_docs/google/api/routing.rb index 381fe9abb..9fb985574 100644 --- a/shared/output/gapic/templates/testing/proto_docs/google/api/routing.rb +++ b/shared/output/gapic/templates/testing/proto_docs/google/api/routing.rb @@ -57,9 +57,13 @@ module Api # app_profile_id: profiles/prof_qux # } # - # The routing header consists of one or multiple key-value pairs. Every key - # and value must be percent-encoded, and joined together in the format of - # `key1=value1&key2=value2`. + # The routing header consists of one or multiple key-value pairs. The order of + # the key-value pairs is undefined, the order of the `routing_parameters` in + # the `RoutingRule` only matters for the evaluation order of the path + # templates when `field` is the same. See the examples below for more details. + # + # Every key and value in the routing header must be percent-encoded, + # and joined together in the following format: `key1=value1&key2=value2`. # The examples below skip the percent-encoding for readability. # # Example 1