From 79372808f732bc34df5dad13395b8aa067368889 Mon Sep 17 00:00:00 2001 From: Noah Dietz Date: Thu, 7 May 2026 21:24:02 +0000 Subject: [PATCH 1/2] chore: run librarian update and generate --all --- librarian.yaml | 6 +- .../docs/admanager_v1/label_service.rst | 10 + .../admanager_v1/linked_device_service.rst | 10 + .../admanager_v1/mcm_earnings_service.rst | 10 + .../rich_media_ads_company_service.rst | 10 + .../docs/admanager_v1/services_.rst | 4 + .../google/ads/admanager/__init__.py | 140 + .../google/ads/admanager_v1/__init__.py | 128 +- .../ads/admanager_v1/gapic_metadata.json | 151 + .../services/ad_break_service/client.py | 61 +- .../ad_break_service/transports/base.py | 19 +- .../ad_break_service/transports/rest.py | 135 + .../ad_break_service/transports/rest_base.py | 29 +- .../ad_review_center_ad_service/client.py | 60 + .../transports/base.py | 19 +- .../transports/rest.py | 144 + .../transports/rest_base.py | 25 + .../services/ad_unit_service/client.py | 61 +- .../ad_unit_service/transports/base.py | 19 +- .../ad_unit_service/transports/rest.py | 137 + .../ad_unit_service/transports/rest_base.py | 29 +- .../services/application_service/client.py | 882 +- .../application_service/transports/base.py | 121 +- .../application_service/transports/rest.py | 1623 +- .../transports/rest_base.py | 369 + .../audience_segment_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../bandwidth_group_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../browser_language_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../services/browser_service/client.py | 59 + .../browser_service/transports/base.py | 19 +- .../browser_service/transports/rest.py | 135 + .../browser_service/transports/rest_base.py | 25 + .../cms_metadata_key_service/client.py | 313 + .../transports/base.py | 53 +- .../transports/rest.py | 612 + .../transports/rest_base.py | 145 + .../cms_metadata_value_service/client.py | 323 + .../transports/base.py | 57 +- .../transports/rest.py | 620 + .../transports/rest_base.py | 147 + .../services/company_service/client.py | 61 +- .../company_service/transports/base.py | 19 +- .../company_service/transports/rest.py | 137 +- .../company_service/transports/rest_base.py | 25 + .../services/contact_service/client.py | 61 +- .../contact_service/transports/base.py | 19 +- .../contact_service/transports/rest.py | 135 + .../contact_service/transports/rest_base.py | 29 +- .../services/content_bundle_service/client.py | 59 + .../content_bundle_service/transports/base.py | 19 +- .../content_bundle_service/transports/rest.py | 136 + .../transports/rest_base.py | 25 + .../services/content_label_service/client.py | 59 + .../content_label_service/transports/base.py | 19 +- .../content_label_service/transports/rest.py | 136 + .../transports/rest_base.py | 25 + .../services/content_service/client.py | 63 +- .../content_service/transports/base.py | 19 +- .../content_service/transports/rest.py | 139 +- .../content_service/transports/rest_base.py | 25 + .../creative_template_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../services/custom_field_service/client.py | 61 +- .../custom_field_service/transports/base.py | 19 +- .../custom_field_service/transports/rest.py | 136 + .../transports/rest_base.py | 29 +- .../custom_targeting_key_service/client.py | 61 +- .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 29 +- .../custom_targeting_value_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../device_capability_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../device_category_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../device_manufacturer_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../entity_signals_mapping_service/client.py | 61 +- .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 29 +- .../services/geo_target_service/client.py | 59 + .../geo_target_service/transports/base.py | 19 +- .../geo_target_service/transports/rest.py | 136 + .../transports/rest_base.py | 25 + .../services/label_service/__init__.py | 18 + .../services/label_service/client.py | 1822 +++ .../services/label_service/pagers.py | 117 + .../label_service/transports/README.rst | 10 + .../label_service/transports/__init__.py | 30 + .../services/label_service/transports/base.py | 320 + .../services/label_service/transports/rest.py | 2242 +++ .../label_service/transports/rest_base.py | 578 + .../services/line_item_service/client.py | 59 + .../line_item_service/transports/base.py | 19 +- .../line_item_service/transports/rest.py | 135 + .../line_item_service/transports/rest_base.py | 25 + .../linked_device_service/__init__.py | 18 + .../services/linked_device_service/client.py | 1144 ++ .../services/linked_device_service/pagers.py | 117 + .../transports/README.rst | 10 + .../transports/__init__.py | 30 + .../linked_device_service/transports/base.py | 227 + .../linked_device_service/transports/rest.py | 928 ++ .../transports/rest_base.py | 236 + .../services/mcm_earnings_service/__init__.py | 18 + .../services/mcm_earnings_service/client.py | 1013 ++ .../services/mcm_earnings_service/pagers.py | 117 + .../transports/README.rst | 10 + .../transports/__init__.py | 30 + .../mcm_earnings_service/transports/base.py | 210 + .../mcm_earnings_service/transports/rest.py | 704 + .../transports/rest_base.py | 191 + .../services/mobile_carrier_service/client.py | 59 + .../mobile_carrier_service/transports/base.py | 19 +- .../mobile_carrier_service/transports/rest.py | 136 + .../transports/rest_base.py | 25 + .../services/mobile_device_service/client.py | 59 + .../mobile_device_service/transports/base.py | 19 +- .../mobile_device_service/transports/rest.py | 136 + .../transports/rest_base.py | 25 + .../mobile_device_submodel_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../services/network_service/client.py | 59 + .../network_service/transports/base.py | 19 +- .../network_service/transports/rest.py | 135 + .../network_service/transports/rest_base.py | 25 + .../operating_system_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 136 + .../transports/rest_base.py | 25 + .../services/order_service/client.py | 59 + .../services/order_service/transports/base.py | 19 +- .../services/order_service/transports/rest.py | 137 + .../order_service/transports/rest_base.py | 25 + .../services/placement_service/client.py | 61 +- .../placement_service/transports/base.py | 19 +- .../placement_service/transports/rest.py | 136 + .../placement_service/transports/rest_base.py | 29 +- .../private_auction_deal_service/client.py | 61 +- .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 29 +- .../private_auction_service/client.py | 61 +- .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 29 +- .../programmatic_buyer_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../services/report_service/client.py | 69 +- .../report_service/transports/base.py | 19 +- .../report_service/transports/rest.py | 143 + .../report_service/transports/rest_base.py | 29 +- .../__init__.py | 18 + .../rich_media_ads_company_service/client.py | 1144 ++ .../rich_media_ads_company_service/pagers.py | 126 + .../transports/README.rst | 10 + .../transports/__init__.py | 33 + .../transports/base.py | 230 + .../transports/rest.py | 951 ++ .../transports/rest_base.py | 245 + .../services/role_service/client.py | 59 + .../services/role_service/transports/base.py | 19 +- .../services/role_service/transports/rest.py | 137 + .../role_service/transports/rest_base.py | 25 + .../services/site_service/client.py | 61 +- .../services/site_service/transports/base.py | 19 +- .../services/site_service/transports/rest.py | 137 + .../site_service/transports/rest_base.py | 29 +- .../taxonomy_category_service/client.py | 59 + .../transports/base.py | 19 +- .../transports/rest.py | 138 + .../transports/rest_base.py | 25 + .../services/team_service/client.py | 61 +- .../services/team_service/transports/base.py | 19 +- .../services/team_service/transports/rest.py | 137 + .../team_service/transports/rest_base.py | 29 +- .../services/user_service/client.py | 59 + .../services/user_service/transports/base.py | 19 +- .../services/user_service/transports/rest.py | 137 + .../user_service/transports/rest_base.py | 25 + .../google/ads/admanager_v1/types/__init__.py | 134 + .../admanager_v1/types/ad_break_service.py | 2 +- .../types/ad_review_center_ad_enums.py | 37 + .../types/ad_review_center_ad_messages.py | 15 + .../types/ad_review_center_ad_service.py | 52 +- .../admanager_v1/types/ad_unit_messages.py | 2 +- .../ads/admanager_v1/types/ad_unit_service.py | 18 +- .../admanager_v1/types/application_enums.py | 193 + .../types/application_messages.py | 126 +- .../admanager_v1/types/application_service.py | 201 + .../types/audience_segment_service.py | 5 + .../types/bandwidth_group_service.py | 6 + .../types/browser_language_service.py | 6 + .../ads/admanager_v1/types/browser_service.py | 8 + .../types/child_publisher_messages.py | 48 + .../types/cms_metadata_key_service.py | 65 + .../types/cms_metadata_value_service.py | 66 + .../admanager_v1/types/company_messages.py | 57 +- .../ads/admanager_v1/types/company_service.py | 17 + .../ads/admanager_v1/types/contact_service.py | 17 +- .../types/content_bundle_service.py | 6 + .../types/content_label_service.py | 6 + .../admanager_v1/types/content_messages.py | 2 +- .../ads/admanager_v1/types/content_service.py | 6 + .../types/creative_template_service.py | 13 + .../types/custom_field_messages.py | 4 +- .../types/custom_field_service.py | 15 +- .../types/custom_targeting_key_messages.py | 2 +- .../types/custom_targeting_key_service.py | 12 +- .../types/custom_targeting_value_service.py | 10 + .../types/device_capability_service.py | 6 + .../types/device_category_service.py | 6 + .../types/device_manufacturer_service.py | 6 + .../types/entity_signals_mapping_messages.py | 2 +- .../types/entity_signals_mapping_service.py | 2 +- .../admanager_v1/types/geo_target_service.py | 9 + .../ads/admanager_v1/types/goal_enums.py | 10 + .../ads/admanager_v1/types/label_enums.py | 72 + .../ads/admanager_v1/types/label_messages.py | 45 + .../ads/admanager_v1/types/label_service.py | 348 + .../admanager_v1/types/line_item_messages.py | 4 +- .../admanager_v1/types/line_item_service.py | 11 + .../admanager_v1/types/linked_device_enums.py | 55 + .../types/linked_device_messages.py | 82 + .../types/linked_device_service.py | 164 + .../types/mcm_earnings_messages.py | 244 + .../types/mcm_earnings_service.py | 150 + .../ads/admanager_v1/types/mcm_enums.py | 128 + .../types/mobile_carrier_service.py | 7 + .../types/mobile_device_service.py | 7 + .../types/mobile_device_submodel_service.py | 7 + .../types/operating_system_service.py | 6 + .../types/operating_system_version_service.py | 8 + .../ads/admanager_v1/types/order_messages.py | 5 +- .../ads/admanager_v1/types/order_service.py | 23 + .../admanager_v1/types/placement_messages.py | 2 +- .../admanager_v1/types/placement_service.py | 13 +- .../types/private_auction_deal_messages.py | 2 +- .../types/private_auction_deal_service.py | 19 +- .../types/private_auction_messages.py | 2 +- .../types/private_auction_service.py | 2 +- .../types/private_marketplace_enums.py | 3 + .../types/programmatic_buyer_service.py | 12 + .../admanager_v1/types/report_definition.py | 2820 +++- .../ads/admanager_v1/types/report_messages.py | 10 +- .../ads/admanager_v1/types/report_service.py | 2 +- .../types/rich_media_ads_company_enums.py | 70 + .../types/rich_media_ads_company_messages.py | 93 + .../types/rich_media_ads_company_service.py | 167 + .../ads/admanager_v1/types/role_messages.py | 2 +- .../ads/admanager_v1/types/role_service.py | 9 + .../ads/admanager_v1/types/site_service.py | 11 +- .../ads/admanager_v1/types/targeting.py | 6 +- .../types/taxonomy_category_messages.py | 2 +- .../ads/admanager_v1/types/team_service.py | 13 +- .../ads/admanager_v1/types/user_messages.py | 2 +- ...ervice_search_ad_review_center_ads_sync.py | 1 + ...service_batch_archive_applications_sync.py | 54 + ..._service_batch_create_applications_sync.py | 57 + ...rvice_batch_unarchive_applications_sync.py | 54 + ..._service_batch_update_applications_sync.py | 53 + ...ication_service_create_application_sync.py | 53 + ...ication_service_update_application_sync.py | 51 + ...e_batch_activate_cms_metadata_keys_sync.py | 54 + ...batch_deactivate_cms_metadata_keys_sync.py | 54 + ...batch_activate_cms_metadata_values_sync.py | 54 + ...tch_deactivate_cms_metadata_values_sync.py | 54 + ...abel_service_batch_activate_labels_sync.py | 54 + ..._label_service_batch_create_labels_sync.py | 58 + ...el_service_batch_deactivate_labels_sync.py | 54 + ..._label_service_batch_update_labels_sync.py | 57 + ...nerated_label_service_create_label_sync.py | 57 + ..._generated_label_service_get_label_sync.py | 53 + ...enerated_label_service_list_labels_sync.py | 54 + ...nerated_label_service_update_label_sync.py | 56 + ...d_device_service_get_linked_device_sync.py | 53 + ...device_service_list_linked_devices_sync.py | 54 + ...arnings_service_fetch_mcm_earnings_sync.py | 54 + ...rated_report_service_create_report_sync.py | 4 +- ...rated_report_service_update_report_sync.py | 4 +- ...service_get_rich_media_ads_company_sync.py | 53 + ...vice_list_rich_media_ads_companies_sync.py | 54 + ...ppet_metadata_google.ads.admanager.v1.json | 4330 +++-- .../admanager_v1/test_ad_break_service.py | 84 +- .../test_ad_review_center_ad_service.py | 76 +- .../admanager_v1/test_ad_unit_service.py | 84 +- .../admanager_v1/test_application_service.py | 2851 +++- .../test_audience_segment_service.py | 74 +- .../test_bandwidth_group_service.py | 74 +- .../test_browser_language_service.py | 74 +- .../admanager_v1/test_browser_service.py | 74 +- .../test_cms_metadata_key_service.py | 988 +- .../test_cms_metadata_value_service.py | 1008 +- .../admanager_v1/test_company_service.py | 74 +- .../admanager_v1/test_contact_service.py | 84 +- .../test_content_bundle_service.py | 74 +- .../test_content_label_service.py | 74 +- .../admanager_v1/test_content_service.py | 74 +- .../test_creative_template_service.py | 74 +- .../admanager_v1/test_custom_field_service.py | 84 +- .../test_custom_targeting_key_service.py | 84 +- .../test_custom_targeting_value_service.py | 74 +- .../test_device_capability_service.py | 74 +- .../test_device_category_service.py | 74 +- .../test_device_manufacturer_service.py | 74 +- .../test_entity_signals_mapping_service.py | 84 +- .../admanager_v1/test_geo_target_service.py | 74 +- .../gapic/admanager_v1/test_label_service.py | 4743 ++++++ .../admanager_v1/test_line_item_service.py | 74 +- .../test_linked_device_service.py | 2610 +++ .../admanager_v1/test_mcm_earnings_service.py | 2235 +++ .../test_mobile_carrier_service.py | 74 +- .../test_mobile_device_service.py | 74 +- .../test_mobile_device_submodel_service.py | 74 +- .../admanager_v1/test_network_service.py | 74 +- .../test_operating_system_service.py | 74 +- .../test_operating_system_version_service.py | 74 +- .../gapic/admanager_v1/test_order_service.py | 74 +- .../admanager_v1/test_placement_service.py | 84 +- .../test_private_auction_deal_service.py | 84 +- .../test_private_auction_service.py | 84 +- .../test_programmatic_buyer_service.py | 74 +- .../gapic/admanager_v1/test_report_service.py | 90 +- .../test_rich_media_ads_company_service.py | 2667 ++++ .../gapic/admanager_v1/test_role_service.py | 74 +- .../gapic/admanager_v1/test_site_service.py | 84 +- .../test_taxonomy_category_service.py | 74 +- .../gapic/admanager_v1/test_team_service.py | 84 +- .../gapic/admanager_v1/test_user_service.py | 74 +- .../chronicle_v1/big_query_export_service.rst | 6 + .../chronicle_v1/dashboard_chart_service.rst | 6 + .../chronicle_v1/dashboard_query_service.rst | 6 + ...tured_content_native_dashboard_service.rst | 10 + .../chronicle_v1/native_dashboard_service.rst | 10 + .../docs/chronicle_v1/services_.rst | 5 + .../google/cloud/chronicle/__init__.py | 208 + .../google/cloud/chronicle_v1/__init__.py | 196 + .../cloud/chronicle_v1/gapic_metadata.json | 425 + .../big_query_export_service/__init__.py | 22 + .../big_query_export_service/async_client.py | 939 ++ .../big_query_export_service/client.py | 1375 ++ .../transports/README.rst | 10 + .../transports/__init__.py | 39 + .../transports/base.py | 302 + .../transports/grpc.py | 502 + .../transports/grpc_asyncio.py | 583 + .../transports/rest.py | 1482 ++ .../transports/rest_base.py | 360 + .../dashboard_chart_service/__init__.py | 22 + .../dashboard_chart_service/async_client.py | 814 + .../dashboard_chart_service/client.py | 1291 ++ .../transports/README.rst | 10 + .../transports/__init__.py | 39 + .../transports/base.py | 276 + .../transports/grpc.py | 467 + .../transports/grpc_asyncio.py | 534 + .../transports/rest.py | 1236 ++ .../transports/rest_base.py | 294 + .../dashboard_query_service/__init__.py | 22 + .../dashboard_query_service/async_client.py | 813 + .../dashboard_query_service/client.py | 1270 ++ .../transports/README.rst | 10 + .../transports/__init__.py | 39 + .../transports/base.py | 267 + .../transports/grpc.py | 465 + .../transports/grpc_asyncio.py | 523 + .../transports/rest.py | 1239 ++ .../transports/rest_base.py | 302 + .../__init__.py | 22 + .../async_client.py | 993 ++ .../client.py | 1498 ++ .../pagers.py | 223 + .../transports/README.rst | 10 + .../transports/__init__.py | 41 + .../transports/base.py | 300 + .../transports/grpc.py | 508 + .../transports/grpc_asyncio.py | 583 + .../transports/rest.py | 1517 ++ .../transports/rest_base.py | 357 + .../native_dashboard_service/__init__.py | 22 + .../native_dashboard_service/async_client.py | 2070 +++ .../native_dashboard_service/client.py | 2515 +++ .../native_dashboard_service/pagers.py | 199 + .../transports/README.rst | 10 + .../transports/__init__.py | 39 + .../transports/base.py | 455 + .../transports/grpc.py | 753 + .../transports/grpc_asyncio.py | 883 ++ .../transports/rest.py | 3399 ++++ .../transports/rest_base.py | 858 + .../cloud/chronicle_v1/types/__init__.py | 168 + .../chronicle_v1/types/big_query_export.py | 255 + .../chronicle_v1/types/dashboard_chart.py | 1786 +++ .../chronicle_v1/types/dashboard_query.py | 1190 ++ .../types/featured_content_metadata.py | 144 + .../featured_content_native_dashboard.py | 229 + .../chronicle_v1/types/native_dashboard.py | 926 ++ ...port_service_get_big_query_export_async.py | 53 + ...xport_service_get_big_query_export_sync.py | 53 + ...ervice_provision_big_query_export_async.py | 53 + ...service_provision_big_query_export_sync.py | 53 + ...t_service_update_big_query_export_async.py | 51 + ...rt_service_update_big_query_export_sync.py | 51 + ...ervice_batch_get_dashboard_charts_async.py | 54 + ...service_batch_get_dashboard_charts_sync.py | 54 + ...chart_service_get_dashboard_chart_async.py | 53 + ..._chart_service_get_dashboard_chart_sync.py | 53 + ...y_service_execute_dashboard_query_async.py | 57 + ...ry_service_execute_dashboard_query_sync.py | 57 + ...query_service_get_dashboard_query_async.py | 53 + ..._query_service_get_dashboard_query_sync.py | 53 + ...featured_content_native_dashboard_async.py | 53 + ..._featured_content_native_dashboard_sync.py | 53 + ...featured_content_native_dashboard_async.py | 53 + ..._featured_content_native_dashboard_sync.py | 53 + ...eatured_content_native_dashboards_async.py | 54 + ...featured_content_native_dashboards_sync.py | 54 + ...ative_dashboard_service_add_chart_async.py | 57 + ...native_dashboard_service_add_chart_sync.py | 57 + ...d_service_create_native_dashboard_async.py | 57 + ...rd_service_create_native_dashboard_sync.py | 57 + ...d_service_delete_native_dashboard_async.py | 50 + ...rd_service_delete_native_dashboard_sync.py | 50 + ...dashboard_service_duplicate_chart_async.py | 54 + ..._dashboard_service_duplicate_chart_sync.py | 54 + ...ervice_duplicate_native_dashboard_async.py | 57 + ...service_duplicate_native_dashboard_sync.py | 57 + ...tive_dashboard_service_edit_chart_async.py | 53 + ...ative_dashboard_service_edit_chart_sync.py | 53 + ..._service_export_native_dashboards_async.py | 54 + ...d_service_export_native_dashboards_sync.py | 54 + ...oard_service_get_native_dashboard_async.py | 53 + ...board_service_get_native_dashboard_sync.py | 53 + ..._service_import_native_dashboards_async.py | 53 + ...d_service_import_native_dashboards_sync.py | 53 + ...rd_service_list_native_dashboards_async.py | 54 + ...ard_service_list_native_dashboards_sync.py | 54 + ...ve_dashboard_service_remove_chart_async.py | 54 + ...ive_dashboard_service_remove_chart_sync.py | 54 + ...d_service_update_native_dashboard_async.py | 56 + ...rd_service_update_native_dashboard_sync.py | 56 + ...et_metadata_google.cloud.chronicle.v1.json | 6352 ++++++-- .../test_big_query_export_service.py | 5578 +++++++ .../test_dashboard_chart_service.py | 4794 ++++++ .../test_dashboard_query_service.py | 4748 ++++++ ...atured_content_native_dashboard_service.py | 6081 +++++++ .../test_native_dashboard_service.py | 13060 ++++++++++++++++ .../google/cloud/dataproc/__init__.py | 2 + .../google/cloud/dataproc_v1/__init__.py | 2 + .../services/batch_controller/async_client.py | 8 +- .../services/batch_controller/client.py | 30 +- .../batch_controller/transports/base.py | 6 +- .../batch_controller/transports/grpc.py | 6 +- .../transports/grpc_asyncio.py | 6 +- .../session_controller/async_client.py | 6 +- .../services/session_controller/client.py | 28 +- .../session_controller/transports/base.py | 6 +- .../async_client.py | 4 + .../session_template_controller/client.py | 24 + .../transports/base.py | 6 +- .../cloud/dataproc_v1/types/__init__.py | 2 + .../google/cloud/dataproc_v1/types/batches.py | 85 +- .../dataproc_v1/types/session_templates.py | 6 +- .../cloud/dataproc_v1/types/sessions.py | 6 +- .../google/cloud/dataproc_v1/types/shared.py | 42 +- ...session_controller_create_session_async.py | 4 - ..._session_controller_create_session_sync.py | 4 - ...pet_metadata_google.cloud.dataproc.v1.json | 28 +- .../dataproc_v1/test_batch_controller.py | 105 +- .../dataproc_v1/test_session_controller.py | 121 +- .../test_session_template_controller.py | 109 +- .../cloud/spanner_v1/gapic_metadata.json | 15 + .../services/spanner/async_client.py | 126 + .../spanner_v1/services/spanner/client.py | 123 + .../services/spanner/transports/base.py | 15 + .../services/spanner/transports/grpc.py | 35 + .../spanner/transports/grpc_asyncio.py | 40 + .../services/spanner/transports/rest.py | 227 + .../services/spanner/transports/rest_base.py | 58 + .../google/cloud/spanner_v1/types/__init__.py | 2 + .../google/cloud/spanner_v1/types/spanner.py | 33 + .../snippet_metadata_google.spanner.v1.json | 161 + ...erated_spanner_fetch_cache_update_async.py | 54 + ...nerated_spanner_fetch_cache_update_sync.py | 54 + .../unit/gapic/spanner_v1/test_spanner.py | 841 +- .../cloud/vectorsearch_v1beta/__init__.py | 2 + .../vectorsearch_v1beta/types/__init__.py | 2 + .../types/data_object_search_service.py | 89 + 517 files changed, 139072 insertions(+), 4423 deletions(-) create mode 100644 packages/google-ads-admanager/docs/admanager_v1/label_service.rst create mode 100644 packages/google-ads-admanager/docs/admanager_v1/linked_device_service.rst create mode 100644 packages/google-ads-admanager/docs/admanager_v1/mcm_earnings_service.rst create mode 100644 packages/google-ads-admanager/docs/admanager_v1/rich_media_ads_company_service.rst create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/__init__.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/client.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/pagers.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/transports/README.rst create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/transports/__init__.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/transports/base.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/transports/rest.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/transports/rest_base.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/linked_device_service/__init__.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/linked_device_service/client.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/linked_device_service/pagers.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/linked_device_service/transports/README.rst create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/linked_device_service/transports/__init__.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/linked_device_service/transports/base.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/linked_device_service/transports/rest.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/linked_device_service/transports/rest_base.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/mcm_earnings_service/__init__.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/mcm_earnings_service/client.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/mcm_earnings_service/pagers.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/mcm_earnings_service/transports/README.rst create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/mcm_earnings_service/transports/__init__.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/mcm_earnings_service/transports/base.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/mcm_earnings_service/transports/rest.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/mcm_earnings_service/transports/rest_base.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/rich_media_ads_company_service/__init__.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/rich_media_ads_company_service/client.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/rich_media_ads_company_service/pagers.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/rich_media_ads_company_service/transports/README.rst create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/rich_media_ads_company_service/transports/__init__.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/rich_media_ads_company_service/transports/base.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/rich_media_ads_company_service/transports/rest.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/services/rich_media_ads_company_service/transports/rest_base.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/application_enums.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/child_publisher_messages.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/label_enums.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/label_service.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/linked_device_enums.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/linked_device_messages.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/linked_device_service.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/mcm_earnings_messages.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/mcm_earnings_service.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/mcm_enums.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/rich_media_ads_company_enums.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/rich_media_ads_company_messages.py create mode 100644 packages/google-ads-admanager/google/ads/admanager_v1/types/rich_media_ads_company_service.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_application_service_batch_archive_applications_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_application_service_batch_create_applications_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_application_service_batch_unarchive_applications_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_application_service_batch_update_applications_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_application_service_create_application_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_application_service_update_application_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_cms_metadata_key_service_batch_activate_cms_metadata_keys_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_cms_metadata_key_service_batch_deactivate_cms_metadata_keys_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_cms_metadata_value_service_batch_activate_cms_metadata_values_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_cms_metadata_value_service_batch_deactivate_cms_metadata_values_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_label_service_batch_activate_labels_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_label_service_batch_create_labels_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_label_service_batch_deactivate_labels_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_label_service_batch_update_labels_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_label_service_create_label_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_label_service_get_label_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_label_service_list_labels_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_label_service_update_label_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_linked_device_service_get_linked_device_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_linked_device_service_list_linked_devices_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_mcm_earnings_service_fetch_mcm_earnings_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_rich_media_ads_company_service_get_rich_media_ads_company_sync.py create mode 100644 packages/google-ads-admanager/samples/generated_samples/admanager_v1_generated_rich_media_ads_company_service_list_rich_media_ads_companies_sync.py create mode 100644 packages/google-ads-admanager/tests/unit/gapic/admanager_v1/test_label_service.py create mode 100644 packages/google-ads-admanager/tests/unit/gapic/admanager_v1/test_linked_device_service.py create mode 100644 packages/google-ads-admanager/tests/unit/gapic/admanager_v1/test_mcm_earnings_service.py create mode 100644 packages/google-ads-admanager/tests/unit/gapic/admanager_v1/test_rich_media_ads_company_service.py create mode 100644 packages/google-cloud-chronicle/docs/chronicle_v1/big_query_export_service.rst create mode 100644 packages/google-cloud-chronicle/docs/chronicle_v1/dashboard_chart_service.rst create mode 100644 packages/google-cloud-chronicle/docs/chronicle_v1/dashboard_query_service.rst create mode 100644 packages/google-cloud-chronicle/docs/chronicle_v1/featured_content_native_dashboard_service.rst create mode 100644 packages/google-cloud-chronicle/docs/chronicle_v1/native_dashboard_service.rst create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/big_query_export_service/__init__.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/big_query_export_service/async_client.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/big_query_export_service/client.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/big_query_export_service/transports/README.rst create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/big_query_export_service/transports/__init__.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/big_query_export_service/transports/base.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/big_query_export_service/transports/grpc.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/big_query_export_service/transports/grpc_asyncio.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/big_query_export_service/transports/rest.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/big_query_export_service/transports/rest_base.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_chart_service/__init__.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_chart_service/async_client.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_chart_service/client.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_chart_service/transports/README.rst create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_chart_service/transports/__init__.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_chart_service/transports/base.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_chart_service/transports/grpc.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_chart_service/transports/grpc_asyncio.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_chart_service/transports/rest.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_chart_service/transports/rest_base.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_query_service/__init__.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_query_service/async_client.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_query_service/client.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_query_service/transports/README.rst create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_query_service/transports/__init__.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_query_service/transports/base.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_query_service/transports/grpc.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_query_service/transports/grpc_asyncio.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_query_service/transports/rest.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/dashboard_query_service/transports/rest_base.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/featured_content_native_dashboard_service/__init__.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/featured_content_native_dashboard_service/async_client.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/featured_content_native_dashboard_service/client.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/featured_content_native_dashboard_service/pagers.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/featured_content_native_dashboard_service/transports/README.rst create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/featured_content_native_dashboard_service/transports/__init__.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/featured_content_native_dashboard_service/transports/base.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/featured_content_native_dashboard_service/transports/grpc.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/featured_content_native_dashboard_service/transports/grpc_asyncio.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/featured_content_native_dashboard_service/transports/rest.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/featured_content_native_dashboard_service/transports/rest_base.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/native_dashboard_service/__init__.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/native_dashboard_service/async_client.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/native_dashboard_service/client.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/native_dashboard_service/pagers.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/native_dashboard_service/transports/README.rst create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/native_dashboard_service/transports/__init__.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/native_dashboard_service/transports/base.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/native_dashboard_service/transports/grpc.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/native_dashboard_service/transports/grpc_asyncio.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/native_dashboard_service/transports/rest.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/services/native_dashboard_service/transports/rest_base.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/types/big_query_export.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/types/dashboard_chart.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/types/dashboard_query.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/types/featured_content_metadata.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/types/featured_content_native_dashboard.py create mode 100644 packages/google-cloud-chronicle/google/cloud/chronicle_v1/types/native_dashboard.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_big_query_export_service_get_big_query_export_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_big_query_export_service_get_big_query_export_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_big_query_export_service_provision_big_query_export_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_big_query_export_service_provision_big_query_export_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_big_query_export_service_update_big_query_export_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_big_query_export_service_update_big_query_export_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_dashboard_chart_service_batch_get_dashboard_charts_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_dashboard_chart_service_batch_get_dashboard_charts_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_dashboard_chart_service_get_dashboard_chart_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_dashboard_chart_service_get_dashboard_chart_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_dashboard_query_service_execute_dashboard_query_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_dashboard_query_service_execute_dashboard_query_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_dashboard_query_service_get_dashboard_query_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_dashboard_query_service_get_dashboard_query_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_featured_content_native_dashboard_service_get_featured_content_native_dashboard_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_featured_content_native_dashboard_service_get_featured_content_native_dashboard_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_featured_content_native_dashboard_service_install_featured_content_native_dashboard_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_featured_content_native_dashboard_service_install_featured_content_native_dashboard_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_featured_content_native_dashboard_service_list_featured_content_native_dashboards_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_featured_content_native_dashboard_service_list_featured_content_native_dashboards_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_add_chart_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_add_chart_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_create_native_dashboard_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_create_native_dashboard_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_delete_native_dashboard_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_delete_native_dashboard_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_duplicate_chart_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_duplicate_chart_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_duplicate_native_dashboard_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_duplicate_native_dashboard_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_edit_chart_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_edit_chart_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_export_native_dashboards_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_export_native_dashboards_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_get_native_dashboard_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_get_native_dashboard_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_import_native_dashboards_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_import_native_dashboards_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_list_native_dashboards_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_list_native_dashboards_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_remove_chart_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_remove_chart_sync.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_update_native_dashboard_async.py create mode 100644 packages/google-cloud-chronicle/samples/generated_samples/chronicle_v1_generated_native_dashboard_service_update_native_dashboard_sync.py create mode 100644 packages/google-cloud-chronicle/tests/unit/gapic/chronicle_v1/test_big_query_export_service.py create mode 100644 packages/google-cloud-chronicle/tests/unit/gapic/chronicle_v1/test_dashboard_chart_service.py create mode 100644 packages/google-cloud-chronicle/tests/unit/gapic/chronicle_v1/test_dashboard_query_service.py create mode 100644 packages/google-cloud-chronicle/tests/unit/gapic/chronicle_v1/test_featured_content_native_dashboard_service.py create mode 100644 packages/google-cloud-chronicle/tests/unit/gapic/chronicle_v1/test_native_dashboard_service.py create mode 100644 packages/google-cloud-spanner/samples/generated_samples/spanner_v1_generated_spanner_fetch_cache_update_async.py create mode 100644 packages/google-cloud-spanner/samples/generated_samples/spanner_v1_generated_spanner_fetch_cache_update_sync.py diff --git a/librarian.yaml b/librarian.yaml index ba4f15d1b7d2..cffda837d219 100644 --- a/librarian.yaml +++ b/librarian.yaml @@ -16,8 +16,8 @@ version: v0.12.0 repo: googleapis/google-cloud-python sources: googleapis: - commit: 8bd905897f61fb6f2e7d8b7cb3e2ca41d0cbc9c8 - sha256: bad85ba8a113ccb3dbe9bf54b80f25068a76a2b9c7d59b6af98a524f40712e69 + commit: 392c8aa259daf4570073220faa9e842cf1e2e173 + sha256: 2b3be6d9749cdf2a337f2c76aa08857096671ebd4b17007d09ee3752b7b10fe9 release: ignored_changes: - .repo-metadata.json @@ -854,9 +854,9 @@ libraries: default_version: v1 - name: google-cloud-datacatalog-lineage version: 0.6.0 - skip_generate: true apis: - path: google/cloud/datacatalog/lineage/v1 + skip_generate: true python: metadata_name_override: lineage default_version: v1 diff --git a/packages/google-ads-admanager/docs/admanager_v1/label_service.rst b/packages/google-ads-admanager/docs/admanager_v1/label_service.rst new file mode 100644 index 000000000000..f3408d1767f5 --- /dev/null +++ b/packages/google-ads-admanager/docs/admanager_v1/label_service.rst @@ -0,0 +1,10 @@ +LabelService +------------------------------ + +.. automodule:: google.ads.admanager_v1.services.label_service + :members: + :inherited-members: + +.. automodule:: google.ads.admanager_v1.services.label_service.pagers + :members: + :inherited-members: diff --git a/packages/google-ads-admanager/docs/admanager_v1/linked_device_service.rst b/packages/google-ads-admanager/docs/admanager_v1/linked_device_service.rst new file mode 100644 index 000000000000..7589bc0d6e77 --- /dev/null +++ b/packages/google-ads-admanager/docs/admanager_v1/linked_device_service.rst @@ -0,0 +1,10 @@ +LinkedDeviceService +------------------------------------- + +.. automodule:: google.ads.admanager_v1.services.linked_device_service + :members: + :inherited-members: + +.. automodule:: google.ads.admanager_v1.services.linked_device_service.pagers + :members: + :inherited-members: diff --git a/packages/google-ads-admanager/docs/admanager_v1/mcm_earnings_service.rst b/packages/google-ads-admanager/docs/admanager_v1/mcm_earnings_service.rst new file mode 100644 index 000000000000..396c49f169f0 --- /dev/null +++ b/packages/google-ads-admanager/docs/admanager_v1/mcm_earnings_service.rst @@ -0,0 +1,10 @@ +McmEarningsService +------------------------------------ + +.. automodule:: google.ads.admanager_v1.services.mcm_earnings_service + :members: + :inherited-members: + +.. automodule:: google.ads.admanager_v1.services.mcm_earnings_service.pagers + :members: + :inherited-members: diff --git a/packages/google-ads-admanager/docs/admanager_v1/rich_media_ads_company_service.rst b/packages/google-ads-admanager/docs/admanager_v1/rich_media_ads_company_service.rst new file mode 100644 index 000000000000..5af595deac44 --- /dev/null +++ b/packages/google-ads-admanager/docs/admanager_v1/rich_media_ads_company_service.rst @@ -0,0 +1,10 @@ +RichMediaAdsCompanyService +-------------------------------------------- + +.. automodule:: google.ads.admanager_v1.services.rich_media_ads_company_service + :members: + :inherited-members: + +.. automodule:: google.ads.admanager_v1.services.rich_media_ads_company_service.pagers + :members: + :inherited-members: diff --git a/packages/google-ads-admanager/docs/admanager_v1/services_.rst b/packages/google-ads-admanager/docs/admanager_v1/services_.rst index fb15b47dd499..2f5e87aff11a 100644 --- a/packages/google-ads-admanager/docs/admanager_v1/services_.rst +++ b/packages/google-ads-admanager/docs/admanager_v1/services_.rst @@ -27,7 +27,10 @@ Services for Google Ads Admanager v1 API device_manufacturer_service entity_signals_mapping_service geo_target_service + label_service line_item_service + linked_device_service + mcm_earnings_service mobile_carrier_service mobile_device_service mobile_device_submodel_service @@ -40,6 +43,7 @@ Services for Google Ads Admanager v1 API private_auction_service programmatic_buyer_service report_service + rich_media_ads_company_service role_service site_service taxonomy_category_service diff --git a/packages/google-ads-admanager/google/ads/admanager/__init__.py b/packages/google-ads-admanager/google/ads/admanager/__init__.py index 20af2a5a608c..84c027cb2ad2 100644 --- a/packages/google-ads-admanager/google/ads/admanager/__init__.py +++ b/packages/google-ads-admanager/google/ads/admanager/__init__.py @@ -80,9 +80,16 @@ from google.ads.admanager_v1.services.geo_target_service.client import ( GeoTargetServiceClient, ) +from google.ads.admanager_v1.services.label_service.client import LabelServiceClient from google.ads.admanager_v1.services.line_item_service.client import ( LineItemServiceClient, ) +from google.ads.admanager_v1.services.linked_device_service.client import ( + LinkedDeviceServiceClient, +) +from google.ads.admanager_v1.services.mcm_earnings_service.client import ( + McmEarningsServiceClient, +) from google.ads.admanager_v1.services.mobile_carrier_service.client import ( MobileCarrierServiceClient, ) @@ -113,6 +120,9 @@ ProgrammaticBuyerServiceClient, ) from google.ads.admanager_v1.services.report_service.client import ReportServiceClient +from google.ads.admanager_v1.services.rich_media_ads_company_service.client import ( + RichMediaAdsCompanyServiceClient, +) from google.ads.admanager_v1.services.role_service.client import RoleServiceClient from google.ads.admanager_v1.services.site_service.client import SiteServiceClient from google.ads.admanager_v1.services.taxonomy_category_service.client import ( @@ -131,6 +141,7 @@ ) from google.ads.admanager_v1.types.ad_review_center_ad_enums import ( AdReviewCenterAdStatusEnum, + ManualAdReviewCenterAdStatusEnum, ) from google.ads.admanager_v1.types.ad_review_center_ad_messages import AdReviewCenterAd from google.ads.admanager_v1.types.ad_review_center_ad_service import ( @@ -173,11 +184,27 @@ UpdateAdUnitRequest, ) from google.ads.admanager_v1.types.admanager_error import AdManagerError +from google.ads.admanager_v1.types.application_enums import ( + ApplicationApprovalStatusEnum, + ApplicationPlatformEnum, + ApplicationStoreEnum, + WebviewClaimingStatusEnum, +) from google.ads.admanager_v1.types.application_messages import Application from google.ads.admanager_v1.types.application_service import ( + BatchArchiveApplicationsRequest, + BatchArchiveApplicationsResponse, + BatchCreateApplicationsRequest, + BatchCreateApplicationsResponse, + BatchUnarchiveApplicationsRequest, + BatchUnarchiveApplicationsResponse, + BatchUpdateApplicationsRequest, + BatchUpdateApplicationsResponse, + CreateApplicationRequest, GetApplicationRequest, ListApplicationsRequest, ListApplicationsResponse, + UpdateApplicationRequest, ) from google.ads.admanager_v1.types.applied_label import AppliedLabel from google.ads.admanager_v1.types.audience_segment_messages import AudienceSegment @@ -204,11 +231,16 @@ ListBrowsersRequest, ListBrowsersResponse, ) +from google.ads.admanager_v1.types.child_publisher_messages import ChildPublisher from google.ads.admanager_v1.types.cms_metadata_key_enums import ( CmsMetadataKeyStatusEnum, ) from google.ads.admanager_v1.types.cms_metadata_key_messages import CmsMetadataKey from google.ads.admanager_v1.types.cms_metadata_key_service import ( + BatchActivateCmsMetadataKeysRequest, + BatchActivateCmsMetadataKeysResponse, + BatchDeactivateCmsMetadataKeysRequest, + BatchDeactivateCmsMetadataKeysResponse, GetCmsMetadataKeyRequest, ListCmsMetadataKeysRequest, ListCmsMetadataKeysResponse, @@ -218,6 +250,10 @@ ) from google.ads.admanager_v1.types.cms_metadata_value_messages import CmsMetadataValue from google.ads.admanager_v1.types.cms_metadata_value_service import ( + BatchActivateCmsMetadataValuesRequest, + BatchActivateCmsMetadataValuesResponse, + BatchDeactivateCmsMetadataValuesRequest, + BatchDeactivateCmsMetadataValuesResponse, GetCmsMetadataValueRequest, ListCmsMetadataValuesRequest, ListCmsMetadataValuesResponse, @@ -393,7 +429,23 @@ ) from google.ads.admanager_v1.types.goal import Goal from google.ads.admanager_v1.types.goal_enums import GoalTypeEnum, UnitTypeEnum +from google.ads.admanager_v1.types.label_enums import LabelTypeEnum from google.ads.admanager_v1.types.label_messages import Label +from google.ads.admanager_v1.types.label_service import ( + BatchActivateLabelsRequest, + BatchActivateLabelsResponse, + BatchCreateLabelsRequest, + BatchCreateLabelsResponse, + BatchDeactivateLabelsRequest, + BatchDeactivateLabelsResponse, + BatchUpdateLabelsRequest, + BatchUpdateLabelsResponse, + CreateLabelRequest, + GetLabelRequest, + ListLabelsRequest, + ListLabelsResponse, + UpdateLabelRequest, +) from google.ads.admanager_v1.types.line_item_enums import LineItemTypeEnum from google.ads.admanager_v1.types.line_item_messages import LineItem from google.ads.admanager_v1.types.line_item_service import ( @@ -401,7 +453,26 @@ ListLineItemsRequest, ListLineItemsResponse, ) +from google.ads.admanager_v1.types.linked_device_enums import LinkedDeviceVisibilityEnum +from google.ads.admanager_v1.types.linked_device_messages import LinkedDevice +from google.ads.admanager_v1.types.linked_device_service import ( + GetLinkedDeviceRequest, + ListLinkedDevicesRequest, + ListLinkedDevicesResponse, +) from google.ads.admanager_v1.types.live_stream_event_messages import LiveStreamEvent +from google.ads.admanager_v1.types.mcm_earnings_messages import ( + EarningsProductBreakdown, + McmEarnings, +) +from google.ads.admanager_v1.types.mcm_earnings_service import ( + FetchMcmEarningsRequest, + FetchMcmEarningsResponse, +) +from google.ads.admanager_v1.types.mcm_enums import ( + DelegationTypeEnum, + McmEarningsProductTypeEnum, +) from google.ads.admanager_v1.types.mobile_carrier_messages import MobileCarrier from google.ads.admanager_v1.types.mobile_carrier_service import ( GetMobileCarrierRequest, @@ -515,6 +586,17 @@ ) from google.ads.admanager_v1.types.report_value import ReportValue from google.ads.admanager_v1.types.request_platform_enum import RequestPlatformEnum +from google.ads.admanager_v1.types.rich_media_ads_company_enums import ( + RichMediaAdsCompanyGdprStatusEnum, +) +from google.ads.admanager_v1.types.rich_media_ads_company_messages import ( + RichMediaAdsCompany, +) +from google.ads.admanager_v1.types.rich_media_ads_company_service import ( + GetRichMediaAdsCompanyRequest, + ListRichMediaAdsCompaniesRequest, + ListRichMediaAdsCompaniesResponse, +) from google.ads.admanager_v1.types.role_enums import RoleStatusEnum from google.ads.admanager_v1.types.role_messages import Role from google.ads.admanager_v1.types.role_service import ( @@ -630,7 +712,10 @@ "DeviceManufacturerServiceClient", "EntitySignalsMappingServiceClient", "GeoTargetServiceClient", + "LabelServiceClient", "LineItemServiceClient", + "LinkedDeviceServiceClient", + "McmEarningsServiceClient", "MobileCarrierServiceClient", "MobileDeviceServiceClient", "MobileDeviceSubmodelServiceClient", @@ -643,6 +728,7 @@ "PrivateAuctionServiceClient", "ProgrammaticBuyerServiceClient", "ReportServiceClient", + "RichMediaAdsCompanyServiceClient", "RoleServiceClient", "SiteServiceClient", "TaxonomyCategoryServiceClient", @@ -656,6 +742,7 @@ "ListAdBreaksResponse", "UpdateAdBreakRequest", "AdReviewCenterAdStatusEnum", + "ManualAdReviewCenterAdStatusEnum", "AdReviewCenterAd", "BatchAdReviewCenterAdsOperationMetadata", "BatchAllowAdReviewCenterAdsRequest", @@ -689,10 +776,24 @@ "ListAdUnitsResponse", "UpdateAdUnitRequest", "AdManagerError", + "ApplicationApprovalStatusEnum", + "ApplicationPlatformEnum", + "ApplicationStoreEnum", + "WebviewClaimingStatusEnum", "Application", + "BatchArchiveApplicationsRequest", + "BatchArchiveApplicationsResponse", + "BatchCreateApplicationsRequest", + "BatchCreateApplicationsResponse", + "BatchUnarchiveApplicationsRequest", + "BatchUnarchiveApplicationsResponse", + "BatchUpdateApplicationsRequest", + "BatchUpdateApplicationsResponse", + "CreateApplicationRequest", "GetApplicationRequest", "ListApplicationsRequest", "ListApplicationsResponse", + "UpdateApplicationRequest", "AppliedLabel", "AudienceSegment", "GetAudienceSegmentRequest", @@ -710,13 +811,22 @@ "GetBrowserRequest", "ListBrowsersRequest", "ListBrowsersResponse", + "ChildPublisher", "CmsMetadataKeyStatusEnum", "CmsMetadataKey", + "BatchActivateCmsMetadataKeysRequest", + "BatchActivateCmsMetadataKeysResponse", + "BatchDeactivateCmsMetadataKeysRequest", + "BatchDeactivateCmsMetadataKeysResponse", "GetCmsMetadataKeyRequest", "ListCmsMetadataKeysRequest", "ListCmsMetadataKeysResponse", "CmsMetadataValueStatusEnum", "CmsMetadataValue", + "BatchActivateCmsMetadataValuesRequest", + "BatchActivateCmsMetadataValuesResponse", + "BatchDeactivateCmsMetadataValuesRequest", + "BatchDeactivateCmsMetadataValuesResponse", "GetCmsMetadataValueRequest", "ListCmsMetadataValuesRequest", "ListCmsMetadataValuesResponse", @@ -834,13 +944,38 @@ "Goal", "GoalTypeEnum", "UnitTypeEnum", + "LabelTypeEnum", "Label", + "BatchActivateLabelsRequest", + "BatchActivateLabelsResponse", + "BatchCreateLabelsRequest", + "BatchCreateLabelsResponse", + "BatchDeactivateLabelsRequest", + "BatchDeactivateLabelsResponse", + "BatchUpdateLabelsRequest", + "BatchUpdateLabelsResponse", + "CreateLabelRequest", + "GetLabelRequest", + "ListLabelsRequest", + "ListLabelsResponse", + "UpdateLabelRequest", "LineItemTypeEnum", "LineItem", "GetLineItemRequest", "ListLineItemsRequest", "ListLineItemsResponse", + "LinkedDeviceVisibilityEnum", + "LinkedDevice", + "GetLinkedDeviceRequest", + "ListLinkedDevicesRequest", + "ListLinkedDevicesResponse", "LiveStreamEvent", + "EarningsProductBreakdown", + "McmEarnings", + "FetchMcmEarningsRequest", + "FetchMcmEarningsResponse", + "DelegationTypeEnum", + "McmEarningsProductTypeEnum", "MobileCarrier", "GetMobileCarrierRequest", "ListMobileCarriersRequest", @@ -920,6 +1055,11 @@ "UpdateReportRequest", "ReportValue", "RequestPlatformEnum", + "RichMediaAdsCompanyGdprStatusEnum", + "RichMediaAdsCompany", + "GetRichMediaAdsCompanyRequest", + "ListRichMediaAdsCompaniesRequest", + "ListRichMediaAdsCompaniesResponse", "RoleStatusEnum", "Role", "GetRoleRequest", diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/__init__.py b/packages/google-ads-admanager/google/ads/admanager_v1/__init__.py index f55750c3f29c..966c3de6f876 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/__init__.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/__init__.py @@ -53,7 +53,10 @@ from .services.device_manufacturer_service import DeviceManufacturerServiceClient from .services.entity_signals_mapping_service import EntitySignalsMappingServiceClient from .services.geo_target_service import GeoTargetServiceClient +from .services.label_service import LabelServiceClient from .services.line_item_service import LineItemServiceClient +from .services.linked_device_service import LinkedDeviceServiceClient +from .services.mcm_earnings_service import McmEarningsServiceClient from .services.mobile_carrier_service import MobileCarrierServiceClient from .services.mobile_device_service import MobileDeviceServiceClient from .services.mobile_device_submodel_service import MobileDeviceSubmodelServiceClient @@ -68,6 +71,7 @@ from .services.private_auction_service import PrivateAuctionServiceClient from .services.programmatic_buyer_service import ProgrammaticBuyerServiceClient from .services.report_service import ReportServiceClient +from .services.rich_media_ads_company_service import RichMediaAdsCompanyServiceClient from .services.role_service import RoleServiceClient from .services.site_service import SiteServiceClient from .services.taxonomy_category_service import TaxonomyCategoryServiceClient @@ -82,7 +86,10 @@ ListAdBreaksResponse, UpdateAdBreakRequest, ) -from .types.ad_review_center_ad_enums import AdReviewCenterAdStatusEnum +from .types.ad_review_center_ad_enums import ( + AdReviewCenterAdStatusEnum, + ManualAdReviewCenterAdStatusEnum, +) from .types.ad_review_center_ad_messages import AdReviewCenterAd from .types.ad_review_center_ad_service import ( BatchAdReviewCenterAdsOperationMetadata, @@ -115,11 +122,27 @@ UpdateAdUnitRequest, ) from .types.admanager_error import AdManagerError +from .types.application_enums import ( + ApplicationApprovalStatusEnum, + ApplicationPlatformEnum, + ApplicationStoreEnum, + WebviewClaimingStatusEnum, +) from .types.application_messages import Application from .types.application_service import ( + BatchArchiveApplicationsRequest, + BatchArchiveApplicationsResponse, + BatchCreateApplicationsRequest, + BatchCreateApplicationsResponse, + BatchUnarchiveApplicationsRequest, + BatchUnarchiveApplicationsResponse, + BatchUpdateApplicationsRequest, + BatchUpdateApplicationsResponse, + CreateApplicationRequest, GetApplicationRequest, ListApplicationsRequest, ListApplicationsResponse, + UpdateApplicationRequest, ) from .types.applied_label import AppliedLabel from .types.audience_segment_messages import AudienceSegment @@ -146,9 +169,14 @@ ListBrowsersRequest, ListBrowsersResponse, ) +from .types.child_publisher_messages import ChildPublisher from .types.cms_metadata_key_enums import CmsMetadataKeyStatusEnum from .types.cms_metadata_key_messages import CmsMetadataKey from .types.cms_metadata_key_service import ( + BatchActivateCmsMetadataKeysRequest, + BatchActivateCmsMetadataKeysResponse, + BatchDeactivateCmsMetadataKeysRequest, + BatchDeactivateCmsMetadataKeysResponse, GetCmsMetadataKeyRequest, ListCmsMetadataKeysRequest, ListCmsMetadataKeysResponse, @@ -156,6 +184,10 @@ from .types.cms_metadata_value_enums import CmsMetadataValueStatusEnum from .types.cms_metadata_value_messages import CmsMetadataValue from .types.cms_metadata_value_service import ( + BatchActivateCmsMetadataValuesRequest, + BatchActivateCmsMetadataValuesResponse, + BatchDeactivateCmsMetadataValuesRequest, + BatchDeactivateCmsMetadataValuesResponse, GetCmsMetadataValueRequest, ListCmsMetadataValuesRequest, ListCmsMetadataValuesResponse, @@ -308,7 +340,23 @@ ) from .types.goal import Goal from .types.goal_enums import GoalTypeEnum, UnitTypeEnum +from .types.label_enums import LabelTypeEnum from .types.label_messages import Label +from .types.label_service import ( + BatchActivateLabelsRequest, + BatchActivateLabelsResponse, + BatchCreateLabelsRequest, + BatchCreateLabelsResponse, + BatchDeactivateLabelsRequest, + BatchDeactivateLabelsResponse, + BatchUpdateLabelsRequest, + BatchUpdateLabelsResponse, + CreateLabelRequest, + GetLabelRequest, + ListLabelsRequest, + ListLabelsResponse, + UpdateLabelRequest, +) from .types.line_item_enums import LineItemTypeEnum from .types.line_item_messages import LineItem from .types.line_item_service import ( @@ -316,7 +364,20 @@ ListLineItemsRequest, ListLineItemsResponse, ) +from .types.linked_device_enums import LinkedDeviceVisibilityEnum +from .types.linked_device_messages import LinkedDevice +from .types.linked_device_service import ( + GetLinkedDeviceRequest, + ListLinkedDevicesRequest, + ListLinkedDevicesResponse, +) from .types.live_stream_event_messages import LiveStreamEvent +from .types.mcm_earnings_messages import EarningsProductBreakdown, McmEarnings +from .types.mcm_earnings_service import ( + FetchMcmEarningsRequest, + FetchMcmEarningsResponse, +) +from .types.mcm_enums import DelegationTypeEnum, McmEarningsProductTypeEnum from .types.mobile_carrier_messages import MobileCarrier from .types.mobile_carrier_service import ( GetMobileCarrierRequest, @@ -414,6 +475,13 @@ ) from .types.report_value import ReportValue from .types.request_platform_enum import RequestPlatformEnum +from .types.rich_media_ads_company_enums import RichMediaAdsCompanyGdprStatusEnum +from .types.rich_media_ads_company_messages import RichMediaAdsCompany +from .types.rich_media_ads_company_service import ( + GetRichMediaAdsCompanyRequest, + ListRichMediaAdsCompaniesRequest, + ListRichMediaAdsCompaniesResponse, +) from .types.role_enums import RoleStatusEnum from .types.role_messages import Role from .types.role_service import GetRoleRequest, ListRolesRequest, ListRolesResponse @@ -604,7 +672,10 @@ def _get_version(dependency_name): "AdUnitStatusEnum", "AdUnitTargeting", "Application", + "ApplicationApprovalStatusEnum", + "ApplicationPlatformEnum", "ApplicationServiceClient", + "ApplicationStoreEnum", "AppliedLabel", "AudienceSegment", "AudienceSegmentServiceClient", @@ -614,10 +685,16 @@ def _get_version(dependency_name): "BandwidthTargeting", "BatchActivateAdUnitsRequest", "BatchActivateAdUnitsResponse", + "BatchActivateCmsMetadataKeysRequest", + "BatchActivateCmsMetadataKeysResponse", + "BatchActivateCmsMetadataValuesRequest", + "BatchActivateCmsMetadataValuesResponse", "BatchActivateCustomFieldsRequest", "BatchActivateCustomFieldsResponse", "BatchActivateCustomTargetingKeysRequest", "BatchActivateCustomTargetingKeysResponse", + "BatchActivateLabelsRequest", + "BatchActivateLabelsResponse", "BatchActivatePlacementsRequest", "BatchActivatePlacementsResponse", "BatchActivateTeamsRequest", @@ -627,12 +704,16 @@ def _get_version(dependency_name): "BatchAllowAdReviewCenterAdsResponse", "BatchArchiveAdUnitsRequest", "BatchArchiveAdUnitsResponse", + "BatchArchiveApplicationsRequest", + "BatchArchiveApplicationsResponse", "BatchArchivePlacementsRequest", "BatchArchivePlacementsResponse", "BatchBlockAdReviewCenterAdsRequest", "BatchBlockAdReviewCenterAdsResponse", "BatchCreateAdUnitsRequest", "BatchCreateAdUnitsResponse", + "BatchCreateApplicationsRequest", + "BatchCreateApplicationsResponse", "BatchCreateContactsRequest", "BatchCreateContactsResponse", "BatchCreateCustomFieldsRequest", @@ -641,6 +722,8 @@ def _get_version(dependency_name): "BatchCreateCustomTargetingKeysResponse", "BatchCreateEntitySignalsMappingsRequest", "BatchCreateEntitySignalsMappingsResponse", + "BatchCreateLabelsRequest", + "BatchCreateLabelsResponse", "BatchCreatePlacementsRequest", "BatchCreatePlacementsResponse", "BatchCreateSitesRequest", @@ -649,10 +732,16 @@ def _get_version(dependency_name): "BatchCreateTeamsResponse", "BatchDeactivateAdUnitsRequest", "BatchDeactivateAdUnitsResponse", + "BatchDeactivateCmsMetadataKeysRequest", + "BatchDeactivateCmsMetadataKeysResponse", + "BatchDeactivateCmsMetadataValuesRequest", + "BatchDeactivateCmsMetadataValuesResponse", "BatchDeactivateCustomFieldsRequest", "BatchDeactivateCustomFieldsResponse", "BatchDeactivateCustomTargetingKeysRequest", "BatchDeactivateCustomTargetingKeysResponse", + "BatchDeactivateLabelsRequest", + "BatchDeactivateLabelsResponse", "BatchDeactivatePlacementsRequest", "BatchDeactivatePlacementsResponse", "BatchDeactivateSitesRequest", @@ -661,8 +750,12 @@ def _get_version(dependency_name): "BatchDeactivateTeamsResponse", "BatchSubmitSitesForApprovalRequest", "BatchSubmitSitesForApprovalResponse", + "BatchUnarchiveApplicationsRequest", + "BatchUnarchiveApplicationsResponse", "BatchUpdateAdUnitsRequest", "BatchUpdateAdUnitsResponse", + "BatchUpdateApplicationsRequest", + "BatchUpdateApplicationsResponse", "BatchUpdateContactsRequest", "BatchUpdateContactsResponse", "BatchUpdateCustomFieldsRequest", @@ -671,6 +764,8 @@ def _get_version(dependency_name): "BatchUpdateCustomTargetingKeysResponse", "BatchUpdateEntitySignalsMappingsRequest", "BatchUpdateEntitySignalsMappingsResponse", + "BatchUpdateLabelsRequest", + "BatchUpdateLabelsResponse", "BatchUpdatePlacementsRequest", "BatchUpdatePlacementsResponse", "BatchUpdateSitesRequest", @@ -683,6 +778,7 @@ def _get_version(dependency_name): "BrowserLanguageTargeting", "BrowserServiceClient", "BrowserTargeting", + "ChildPublisher", "CmsMetadataKey", "CmsMetadataKeyServiceClient", "CmsMetadataKeyStatusEnum", @@ -706,10 +802,12 @@ def _get_version(dependency_name): "ContentTargeting", "CreateAdBreakRequest", "CreateAdUnitRequest", + "CreateApplicationRequest", "CreateContactRequest", "CreateCustomFieldRequest", "CreateCustomTargetingKeyRequest", "CreateEntitySignalsMappingRequest", + "CreateLabelRequest", "CreatePlacementRequest", "CreatePrivateAuctionDealRequest", "CreatePrivateAuctionRequest", @@ -744,6 +842,7 @@ def _get_version(dependency_name): "CustomTargetingValueStatusEnum", "DataSegmentTargeting", "DealBuyerPermissionTypeEnum", + "DelegationTypeEnum", "DeleteAdBreakRequest", "DeviceCapability", "DeviceCapabilityServiceClient", @@ -755,10 +854,13 @@ def _get_version(dependency_name): "DeviceManufacturerServiceClient", "DeviceManufacturerTargeting", "DisapprovalReason", + "EarningsProductBreakdown", "EntitySignalsMapping", "EntitySignalsMappingServiceClient", "EnvironmentTypeEnum", "ExchangeSyndicationProductEnum", + "FetchMcmEarningsRequest", + "FetchMcmEarningsResponse", "FetchReportResultRowsRequest", "FetchReportResultRowsResponse", "FirstPartyMobileApplicationTargeting", @@ -789,7 +891,9 @@ def _get_version(dependency_name): "GetDeviceManufacturerRequest", "GetEntitySignalsMappingRequest", "GetGeoTargetRequest", + "GetLabelRequest", "GetLineItemRequest", + "GetLinkedDeviceRequest", "GetMobileCarrierRequest", "GetMobileDeviceRequest", "GetMobileDeviceSubmodelRequest", @@ -802,6 +906,7 @@ def _get_version(dependency_name): "GetPrivateAuctionRequest", "GetProgrammaticBuyerRequest", "GetReportRequest", + "GetRichMediaAdsCompanyRequest", "GetRoleRequest", "GetSiteRequest", "GetTaxonomyCategoryRequest", @@ -812,9 +917,14 @@ def _get_version(dependency_name): "InventoryTargeting", "Label", "LabelFrequencyCap", + "LabelServiceClient", + "LabelTypeEnum", "LineItem", "LineItemServiceClient", "LineItemTypeEnum", + "LinkedDevice", + "LinkedDeviceServiceClient", + "LinkedDeviceVisibilityEnum", "ListAdBreaksRequest", "ListAdBreaksResponse", "ListAdUnitSizesRequest", @@ -863,8 +973,12 @@ def _get_version(dependency_name): "ListEntitySignalsMappingsResponse", "ListGeoTargetsRequest", "ListGeoTargetsResponse", + "ListLabelsRequest", + "ListLabelsResponse", "ListLineItemsRequest", "ListLineItemsResponse", + "ListLinkedDevicesRequest", + "ListLinkedDevicesResponse", "ListMobileCarriersRequest", "ListMobileCarriersResponse", "ListMobileDeviceSubmodelsRequest", @@ -889,6 +1003,8 @@ def _get_version(dependency_name): "ListProgrammaticBuyersResponse", "ListReportsRequest", "ListReportsResponse", + "ListRichMediaAdsCompaniesRequest", + "ListRichMediaAdsCompaniesResponse", "ListRolesRequest", "ListRolesResponse", "ListSitesRequest", @@ -898,6 +1014,10 @@ def _get_version(dependency_name): "ListTeamsRequest", "ListTeamsResponse", "LiveStreamEvent", + "ManualAdReviewCenterAdStatusEnum", + "McmEarnings", + "McmEarningsProductTypeEnum", + "McmEarningsServiceClient", "MobileApplicationTargeting", "MobileCarrier", "MobileCarrierServiceClient", @@ -933,6 +1053,9 @@ def _get_version(dependency_name): "ReportValue", "RequestPlatformEnum", "RequestPlatformTargeting", + "RichMediaAdsCompany", + "RichMediaAdsCompanyGdprStatusEnum", + "RichMediaAdsCompanyServiceClient", "Role", "RoleServiceClient", "RoleStatusEnum", @@ -964,10 +1087,12 @@ def _get_version(dependency_name): "UnitTypeEnum", "UpdateAdBreakRequest", "UpdateAdUnitRequest", + "UpdateApplicationRequest", "UpdateContactRequest", "UpdateCustomFieldRequest", "UpdateCustomTargetingKeyRequest", "UpdateEntitySignalsMappingRequest", + "UpdateLabelRequest", "UpdatePlacementRequest", "UpdatePrivateAuctionDealRequest", "UpdatePrivateAuctionRequest", @@ -981,4 +1106,5 @@ def _get_version(dependency_name): "VideoPositionEnum", "VideoPositionTargeting", "WebProperty", + "WebviewClaimingStatusEnum", ) diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/gapic_metadata.json b/packages/google-ads-admanager/google/ads/admanager_v1/gapic_metadata.json index 7487bdfb5398..a2ef49d1ad1b 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/gapic_metadata.json +++ b/packages/google-ads-admanager/google/ads/admanager_v1/gapic_metadata.json @@ -127,6 +127,31 @@ "rest": { "libraryClient": "ApplicationServiceClient", "rpcs": { + "BatchArchiveApplications": { + "methods": [ + "batch_archive_applications" + ] + }, + "BatchCreateApplications": { + "methods": [ + "batch_create_applications" + ] + }, + "BatchUnarchiveApplications": { + "methods": [ + "batch_unarchive_applications" + ] + }, + "BatchUpdateApplications": { + "methods": [ + "batch_update_applications" + ] + }, + "CreateApplication": { + "methods": [ + "create_application" + ] + }, "GetApplication": { "methods": [ "get_application" @@ -136,6 +161,11 @@ "methods": [ "list_applications" ] + }, + "UpdateApplication": { + "methods": [ + "update_application" + ] } } } @@ -222,6 +252,16 @@ "rest": { "libraryClient": "CmsMetadataKeyServiceClient", "rpcs": { + "BatchActivateCmsMetadataKeys": { + "methods": [ + "batch_activate_cms_metadata_keys" + ] + }, + "BatchDeactivateCmsMetadataKeys": { + "methods": [ + "batch_deactivate_cms_metadata_keys" + ] + }, "GetCmsMetadataKey": { "methods": [ "get_cms_metadata_key" @@ -241,6 +281,16 @@ "rest": { "libraryClient": "CmsMetadataValueServiceClient", "rpcs": { + "BatchActivateCmsMetadataValues": { + "methods": [ + "batch_activate_cms_metadata_values" + ] + }, + "BatchDeactivateCmsMetadataValues": { + "methods": [ + "batch_deactivate_cms_metadata_values" + ] + }, "GetCmsMetadataValue": { "methods": [ "get_cms_metadata_value" @@ -621,6 +671,55 @@ } } }, + "LabelService": { + "clients": { + "rest": { + "libraryClient": "LabelServiceClient", + "rpcs": { + "BatchActivateLabels": { + "methods": [ + "batch_activate_labels" + ] + }, + "BatchCreateLabels": { + "methods": [ + "batch_create_labels" + ] + }, + "BatchDeactivateLabels": { + "methods": [ + "batch_deactivate_labels" + ] + }, + "BatchUpdateLabels": { + "methods": [ + "batch_update_labels" + ] + }, + "CreateLabel": { + "methods": [ + "create_label" + ] + }, + "GetLabel": { + "methods": [ + "get_label" + ] + }, + "ListLabels": { + "methods": [ + "list_labels" + ] + }, + "UpdateLabel": { + "methods": [ + "update_label" + ] + } + } + } + } + }, "LineItemService": { "clients": { "rest": { @@ -640,6 +739,39 @@ } } }, + "LinkedDeviceService": { + "clients": { + "rest": { + "libraryClient": "LinkedDeviceServiceClient", + "rpcs": { + "GetLinkedDevice": { + "methods": [ + "get_linked_device" + ] + }, + "ListLinkedDevices": { + "methods": [ + "list_linked_devices" + ] + } + } + } + } + }, + "McmEarningsService": { + "clients": { + "rest": { + "libraryClient": "McmEarningsServiceClient", + "rpcs": { + "FetchMcmEarnings": { + "methods": [ + "fetch_mcm_earnings" + ] + } + } + } + } + }, "MobileCarrierService": { "clients": { "rest": { @@ -943,6 +1075,25 @@ } } }, + "RichMediaAdsCompanyService": { + "clients": { + "rest": { + "libraryClient": "RichMediaAdsCompanyServiceClient", + "rpcs": { + "GetRichMediaAdsCompany": { + "methods": [ + "get_rich_media_ads_company" + ] + }, + "ListRichMediaAdsCompanies": { + "methods": [ + "list_rich_media_ads_companies" + ] + } + } + } + } + }, "RoleService": { "clients": { "rest": { diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/client.py index 4980381126c8..acb32808b1b0 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/client.py @@ -1192,7 +1192,7 @@ def sample_update_ad_break(): on the ``request`` instance; if ``request`` is provided, this should not be set. update_mask (google.protobuf.field_mask_pb2.FieldMask): - Required. The list of fields to + Optional. The list of fields to update. This corresponds to the ``update_mask`` field @@ -1441,6 +1441,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/base.py index a6ebf5da884f..3932b6e98ca9 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/base.py @@ -41,7 +41,10 @@ class AdBreakServiceTransport(abc.ABC): """Abstract transport class for AdBreakService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -169,6 +172,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -242,6 +250,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/rest.py index 8bc970bf56a8..847da8aa7637 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/rest.py @@ -324,6 +324,29 @@ def post_update_ad_break_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the AdBreakService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the AdBreakService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -1185,6 +1208,118 @@ def update_ad_break( # In C++ this would require a dynamic_cast return self._UpdateAdBreak(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseAdBreakServiceRestTransport._BaseCancelOperation, AdBreakServiceRestStub + ): + def __hash__(self): + return hash("AdBreakServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseAdBreakServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseAdBreakServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseAdBreakServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.AdBreakServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.AdBreakService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = AdBreakServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/rest_base.py index 1668e30ba69e..863133c48b58 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_break_service/transports/rest_base.py @@ -317,9 +317,7 @@ class _BaseUpdateAdBreak: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") - __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = { - "updateMask": {}, - } + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} @classmethod def _get_unset_required_fields(cls, message_dict): @@ -372,6 +370,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/client.py index f596d396a8e4..481898b65fc5 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/client.py @@ -789,6 +789,7 @@ def sample_search_ad_review_center_ads(): # Initialize request argument(s) request = admanager_v1.SearchAdReviewCenterAdsRequest( + status="UNREVIEWED", parent="parent_value", ) @@ -1278,6 +1279,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/base.py index a75220c0dabb..4ee54e9e8729 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/base.py @@ -40,7 +40,10 @@ class AdReviewCenterAdServiceTransport(abc.ABC): """Abstract transport class for AdReviewCenterAdService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -158,6 +161,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -218,6 +226,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/rest.py index 9ed0470cb875..21fb2830cf6c 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/rest.py @@ -253,6 +253,29 @@ def post_search_ad_review_center_ads_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the AdReviewCenterAdService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the AdReviewCenterAdService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -383,6 +406,12 @@ def operations_client(self) -> operations_v1.AbstractOperationsClient: # Only create a new client if we do not already have one. if self._operations_client is None: http_options: Dict[str, List[Dict[str, str]]] = { + "google.longrunning.Operations.CancelOperation": [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ], "google.longrunning.Operations.GetOperation": [ { "method": "get", @@ -912,6 +941,121 @@ def search_ad_review_center_ads( self._session, self._host, self._interceptor ) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseAdReviewCenterAdServiceRestTransport._BaseCancelOperation, + AdReviewCenterAdServiceRestStub, + ): + def __hash__(self): + return hash("AdReviewCenterAdServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseAdReviewCenterAdServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseAdReviewCenterAdServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseAdReviewCenterAdServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.AdReviewCenterAdServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.AdReviewCenterAdService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + AdReviewCenterAdServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/rest_base.py index f1b620ef6c79..d40ee9d25837 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_review_center_ad_service/transports/rest_base.py @@ -259,6 +259,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/client.py index f47664da0a4b..3acdb3fc8262 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/client.py @@ -1292,7 +1292,7 @@ def sample_update_ad_unit(): on the ``request`` instance; if ``request`` is provided, this should not be set. update_mask (google.protobuf.field_mask_pb2.FieldMask): - Required. The list of fields to + Optional. The list of fields to update. This corresponds to the ``update_mask`` field @@ -2029,6 +2029,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/base.py index 39240c0b8892..f11088811ae1 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/base.py @@ -40,7 +40,10 @@ class AdUnitServiceTransport(abc.ABC): """Abstract transport class for AdUnitService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -193,6 +196,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -329,6 +337,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/rest.py index e54019b441ae..70798bc725a8 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/rest.py @@ -663,6 +663,29 @@ def post_update_ad_unit_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the AdUnitService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the AdUnitService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -2397,6 +2420,120 @@ def update_ad_unit( # In C++ this would require a dynamic_cast return self._UpdateAdUnit(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseAdUnitServiceRestTransport._BaseCancelOperation, AdUnitServiceRestStub + ): + def __hash__(self): + return hash("AdUnitServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = ( + _BaseAdUnitServiceRestTransport._BaseCancelOperation._get_http_options() + ) + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseAdUnitServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseAdUnitServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.AdUnitServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.AdUnitService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = AdUnitServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/rest_base.py index a0d53bf037ee..e2d169837010 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/ad_unit_service/transports/rest_base.py @@ -575,9 +575,7 @@ class _BaseUpdateAdUnit: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") - __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = { - "updateMask": {}, - } + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} @classmethod def _get_unset_required_fields(cls, message_dict): @@ -630,6 +628,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/client.py index 331a67bbac32..0bfd6488a3f4 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/client.py @@ -61,10 +61,15 @@ _LOGGER = std_logging.getLogger(__name__) +import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore from google.longrunning import operations_pb2 # type: ignore from google.ads.admanager_v1.services.application_service import pagers -from google.ads.admanager_v1.types import application_messages, application_service +from google.ads.admanager_v1.types import ( + application_enums, + application_messages, + application_service, +) from .transports.base import DEFAULT_CLIENT_INFO, ApplicationServiceTransport from .transports.rest import ApplicationServiceRestTransport @@ -977,81 +982,870 @@ def sample_list_applications(): # Done; return the response. return response - def __enter__(self) -> "ApplicationServiceClient": - return self + def create_application( + self, + request: Optional[ + Union[application_service.CreateApplicationRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + application: Optional[application_messages.Application] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> application_messages.Application: + r"""API to create a ``Application`` object. - def __exit__(self, type, value, traceback): - """Releases underlying transport's resources. + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.ads import admanager_v1 + + def sample_create_application(): + # Create a client + client = admanager_v1.ApplicationServiceClient() + + # Initialize request argument(s) + request = admanager_v1.CreateApplicationRequest( + parent="parent_value", + ) + + # Make the request + response = client.create_application(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.CreateApplicationRequest, dict]): + The request object. Request object for ``CreateApplication`` method. + parent (str): + Required. The parent resource where this ``Application`` + will be created. Format: ``networks/{network_code}`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + application (google.ads.admanager_v1.types.Application): + Required. The ``Application`` to create. + This corresponds to the ``application`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.ads.admanager_v1.types.Application: + An application that has been added to + or "claimed" by the network to be used + for targeting purposes. These mobile + apps can come from various app stores. - .. warning:: - ONLY use as a context manager if the transport is NOT shared - with other clients! Exiting the with block will CLOSE the transport - and may cause errors in other clients! """ - self.transport.close() + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [parent, application] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) - def get_operation( + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, application_service.CreateApplicationRequest): + request = application_service.CreateApplicationRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if application is not None: + request.application = application + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.create_application] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def batch_create_applications( self, - request: Optional[Union[operations_pb2.GetOperationRequest, dict]] = None, + request: Optional[ + Union[application_service.BatchCreateApplicationsRequest, dict] + ] = None, *, + parent: Optional[str] = None, + requests: Optional[ + MutableSequence[application_service.CreateApplicationRequest] + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> operations_pb2.Operation: - r"""Gets the latest state of a long-running operation. + ) -> application_service.BatchCreateApplicationsResponse: + r"""API to batch create ``Application`` objects. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.ads import admanager_v1 + + def sample_batch_create_applications(): + # Create a client + client = admanager_v1.ApplicationServiceClient() + + # Initialize request argument(s) + requests = admanager_v1.CreateApplicationRequest() + requests.parent = "parent_value" + + request = admanager_v1.BatchCreateApplicationsRequest( + parent="parent_value", + requests=requests, + ) + + # Make the request + response = client.batch_create_applications(request=request) + + # Handle the response + print(response) Args: - request (:class:`~.operations_pb2.GetOperationRequest`): - The request object. Request message for - `GetOperation` method. - retry (google.api_core.retry.Retry): Designation of what errors, - if any, should be retried. + request (Union[google.ads.admanager_v1.types.BatchCreateApplicationsRequest, dict]): + The request object. Request object for ``BatchCreateApplications`` method. + parent (str): + Required. The parent resource where ``Applications`` + will be created. Format: ``networks/{network_code}`` The + parent field in the CreateApplicationRequest must match + this field. + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + requests (MutableSequence[google.ads.admanager_v1.types.CreateApplicationRequest]): + Required. The ``Application`` objects to create. + This corresponds to the ``requests`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. timeout (float): The timeout for this request. metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be sent along with the request as metadata. Normally, each value must be of type `str`, but for metadata keys ending with the suffix `-bin`, the corresponding values must be of type `bytes`. + Returns: - ~.operations_pb2.Operation: - An ``Operation`` object. + google.ads.admanager_v1.types.BatchCreateApplicationsResponse: + Response object for BatchCreateApplications method. """ # Create or coerce a protobuf request object. - # The request isn't a proto-plus wrapped type, - # so it must be constructed via keyword expansion. - if request is None: - request_pb = operations_pb2.GetOperationRequest() - elif isinstance(request, dict): - request_pb = operations_pb2.GetOperationRequest(**request) - else: - request_pb = request + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [parent, requests] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, application_service.BatchCreateApplicationsRequest): + request = application_service.BatchCreateApplicationsRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if requests is not None: + request.requests = requests # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. - rpc = self._transport._wrapped_methods[self._transport.get_operation] + rpc = self._transport._wrapped_methods[ + self._transport.batch_create_applications + ] # Certain fields should be provided within the metadata header; # add these here. metadata = tuple(metadata) + ( - gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), ) # Validate the universe domain. self._validate_universe_domain() - try: - # Send the request. - response = rpc( - request_pb, - retry=retry, - timeout=timeout, - metadata=metadata, - ) + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) - # Done; return the response. - return response - except core_exceptions.GoogleAPICallError as e: - self._add_cred_info_for_auth_errors(e) - raise e + # Done; return the response. + return response + + def update_application( + self, + request: Optional[ + Union[application_service.UpdateApplicationRequest, dict] + ] = None, + *, + application: Optional[application_messages.Application] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> application_messages.Application: + r"""API to update a ``Application`` object. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.ads import admanager_v1 + + def sample_update_application(): + # Create a client + client = admanager_v1.ApplicationServiceClient() + + # Initialize request argument(s) + request = admanager_v1.UpdateApplicationRequest( + ) + + # Make the request + response = client.update_application(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.UpdateApplicationRequest, dict]): + The request object. Request object for ``UpdateApplication`` method. + application (google.ads.admanager_v1.types.Application): + Required. The ``Application`` to update. + + The ``Application``'s ``name`` is used to identify the + ``Application`` to update. + + This corresponds to the ``application`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + update_mask (google.protobuf.field_mask_pb2.FieldMask): + Optional. The list of fields to + update. + + This corresponds to the ``update_mask`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.ads.admanager_v1.types.Application: + An application that has been added to + or "claimed" by the network to be used + for targeting purposes. These mobile + apps can come from various app stores. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [application, update_mask] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, application_service.UpdateApplicationRequest): + request = application_service.UpdateApplicationRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if application is not None: + request.application = application + if update_mask is not None: + request.update_mask = update_mask + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.update_application] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("application.name", request.application.name),) + ), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def batch_update_applications( + self, + request: Optional[ + Union[application_service.BatchUpdateApplicationsRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + requests: Optional[ + MutableSequence[application_service.UpdateApplicationRequest] + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> application_service.BatchUpdateApplicationsResponse: + r"""API to batch update ``Application`` objects. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.ads import admanager_v1 + + def sample_batch_update_applications(): + # Create a client + client = admanager_v1.ApplicationServiceClient() + + # Initialize request argument(s) + request = admanager_v1.BatchUpdateApplicationsRequest( + parent="parent_value", + ) + + # Make the request + response = client.batch_update_applications(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.BatchUpdateApplicationsRequest, dict]): + The request object. Request object for ``BatchUpdateApplications`` method. + parent (str): + Required. The parent resource where ``Applications`` + will be updated. Format: ``networks/{network_code}`` The + parent field in the UpdateApplicationRequest must match + this field. + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + requests (MutableSequence[google.ads.admanager_v1.types.UpdateApplicationRequest]): + Required. The ``Application`` objects to update. + This corresponds to the ``requests`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.ads.admanager_v1.types.BatchUpdateApplicationsResponse: + Response object for BatchUpdateApplications method. + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [parent, requests] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, application_service.BatchUpdateApplicationsRequest): + request = application_service.BatchUpdateApplicationsRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if requests is not None: + request.requests = requests + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.batch_update_applications + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def batch_archive_applications( + self, + request: Optional[ + Union[application_service.BatchArchiveApplicationsRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + names: Optional[MutableSequence[str]] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> application_service.BatchArchiveApplicationsResponse: + r"""/ API to batch archive ``Application`` objects. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.ads import admanager_v1 + + def sample_batch_archive_applications(): + # Create a client + client = admanager_v1.ApplicationServiceClient() + + # Initialize request argument(s) + request = admanager_v1.BatchArchiveApplicationsRequest( + parent="parent_value", + names=['names_value1', 'names_value2'], + ) + + # Make the request + response = client.batch_archive_applications(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.BatchArchiveApplicationsRequest, dict]): + The request object. Request object for ``BatchArchiveApplications`` method. + parent (str): + Required. The parent resource shared by all + ``Applications`` to archive. Format: + ``networks/{network_code}`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + names (MutableSequence[str]): + Required. The ``Application`` objects to archive. + This corresponds to the ``names`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.ads.admanager_v1.types.BatchArchiveApplicationsResponse: + Response object for BatchArchiveApplications method. + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [parent, names] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance(request, application_service.BatchArchiveApplicationsRequest): + request = application_service.BatchArchiveApplicationsRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if names is not None: + request.names = names + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.batch_archive_applications + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def batch_unarchive_applications( + self, + request: Optional[ + Union[application_service.BatchUnarchiveApplicationsRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + names: Optional[MutableSequence[str]] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> application_service.BatchUnarchiveApplicationsResponse: + r"""/ API to batch unarchive ``Application`` objects. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.ads import admanager_v1 + + def sample_batch_unarchive_applications(): + # Create a client + client = admanager_v1.ApplicationServiceClient() + + # Initialize request argument(s) + request = admanager_v1.BatchUnarchiveApplicationsRequest( + parent="parent_value", + names=['names_value1', 'names_value2'], + ) + + # Make the request + response = client.batch_unarchive_applications(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.BatchUnarchiveApplicationsRequest, dict]): + The request object. Request object for ``BatchUnarchiveApplications`` + method. + parent (str): + Required. The parent resource shared by all + ``Applications`` to Unarchive. Format: + ``networks/{network_code}`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + names (MutableSequence[str]): + Required. The ``Application`` objects to unarchive. + This corresponds to the ``names`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.ads.admanager_v1.types.BatchUnarchiveApplicationsResponse: + Response object for BatchUnarchiveApplications method. + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [parent, names] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance( + request, application_service.BatchUnarchiveApplicationsRequest + ): + request = application_service.BatchUnarchiveApplicationsRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if names is not None: + request.names = names + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.batch_unarchive_applications + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def __enter__(self) -> "ApplicationServiceClient": + return self + + def __exit__(self, type, value, traceback): + """Releases underlying transport's resources. + + .. warning:: + ONLY use as a context manager if the transport is NOT shared + with other clients! Exiting the with block will CLOSE the transport + and may cause errors in other clients! + """ + self.transport.close() + + def get_operation( + self, + request: Optional[Union[operations_pb2.GetOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operations_pb2.Operation: + r"""Gets the latest state of a long-running operation. + + Args: + request (:class:`~.operations_pb2.GetOperationRequest`): + The request object. Request message for + `GetOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + ~.operations_pb2.Operation: + An ``Operation`` object. + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.GetOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.GetOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + try: + # Send the request. + response = rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + except core_exceptions.GoogleAPICallError as e: + self._add_cred_info_for_auth_errors(e) + raise e + + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/base.py index 2d7fa6100fc9..2c04ba0ecca3 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/base.py @@ -40,7 +40,10 @@ class ApplicationServiceTransport(abc.ABC): """Abstract transport class for ApplicationService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -153,6 +156,41 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.create_application: gapic_v1.method.wrap_method( + self.create_application, + default_timeout=None, + client_info=client_info, + ), + self.batch_create_applications: gapic_v1.method.wrap_method( + self.batch_create_applications, + default_timeout=None, + client_info=client_info, + ), + self.update_application: gapic_v1.method.wrap_method( + self.update_application, + default_timeout=None, + client_info=client_info, + ), + self.batch_update_applications: gapic_v1.method.wrap_method( + self.batch_update_applications, + default_timeout=None, + client_info=client_info, + ), + self.batch_archive_applications: gapic_v1.method.wrap_method( + self.batch_archive_applications, + default_timeout=None, + client_info=client_info, + ), + self.batch_unarchive_applications: gapic_v1.method.wrap_method( + self.batch_unarchive_applications, + default_timeout=None, + client_info=client_info, + ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -193,6 +231,78 @@ def list_applications( ]: raise NotImplementedError() + @property + def create_application( + self, + ) -> Callable[ + [application_service.CreateApplicationRequest], + Union[ + application_messages.Application, + Awaitable[application_messages.Application], + ], + ]: + raise NotImplementedError() + + @property + def batch_create_applications( + self, + ) -> Callable[ + [application_service.BatchCreateApplicationsRequest], + Union[ + application_service.BatchCreateApplicationsResponse, + Awaitable[application_service.BatchCreateApplicationsResponse], + ], + ]: + raise NotImplementedError() + + @property + def update_application( + self, + ) -> Callable[ + [application_service.UpdateApplicationRequest], + Union[ + application_messages.Application, + Awaitable[application_messages.Application], + ], + ]: + raise NotImplementedError() + + @property + def batch_update_applications( + self, + ) -> Callable[ + [application_service.BatchUpdateApplicationsRequest], + Union[ + application_service.BatchUpdateApplicationsResponse, + Awaitable[application_service.BatchUpdateApplicationsResponse], + ], + ]: + raise NotImplementedError() + + @property + def batch_archive_applications( + self, + ) -> Callable[ + [application_service.BatchArchiveApplicationsRequest], + Union[ + application_service.BatchArchiveApplicationsResponse, + Awaitable[application_service.BatchArchiveApplicationsResponse], + ], + ]: + raise NotImplementedError() + + @property + def batch_unarchive_applications( + self, + ) -> Callable[ + [application_service.BatchUnarchiveApplicationsRequest], + Union[ + application_service.BatchUnarchiveApplicationsResponse, + Awaitable[application_service.BatchUnarchiveApplicationsResponse], + ], + ]: + raise NotImplementedError() + @property def get_operation( self, @@ -202,6 +312,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/rest.py index 1b7bce417c3d..a1a53c17cc2b 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/rest.py @@ -73,6 +73,46 @@ class ApplicationServiceRestInterceptor: .. code-block:: python class MyCustomApplicationServiceInterceptor(ApplicationServiceRestInterceptor): + def pre_batch_archive_applications(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_archive_applications(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_batch_create_applications(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_create_applications(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_batch_unarchive_applications(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_unarchive_applications(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_batch_update_applications(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_update_applications(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_create_application(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_create_application(self, response): + logging.log(f"Received response: {response}") + return response + def pre_get_application(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -89,12 +129,279 @@ def post_list_applications(self, response): logging.log(f"Received response: {response}") return response + def pre_update_application(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_update_application(self, response): + logging.log(f"Received response: {response}") + return response + transport = ApplicationServiceRestTransport(interceptor=MyCustomApplicationServiceInterceptor()) client = ApplicationServiceClient(transport=transport) """ + def pre_batch_archive_applications( + self, + request: application_service.BatchArchiveApplicationsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_service.BatchArchiveApplicationsRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_archive_applications + + Override in a subclass to manipulate the request or metadata + before they are sent to the ApplicationService server. + """ + return request, metadata + + def post_batch_archive_applications( + self, response: application_service.BatchArchiveApplicationsResponse + ) -> application_service.BatchArchiveApplicationsResponse: + """Post-rpc interceptor for batch_archive_applications + + DEPRECATED. Please use the `post_batch_archive_applications_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ApplicationService server but before + it is returned to user code. This `post_batch_archive_applications` interceptor runs + before the `post_batch_archive_applications_with_metadata` interceptor. + """ + return response + + def post_batch_archive_applications_with_metadata( + self, + response: application_service.BatchArchiveApplicationsResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_service.BatchArchiveApplicationsResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_archive_applications + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ApplicationService server but before it is returned to user code. + + We recommend only using this `post_batch_archive_applications_with_metadata` + interceptor in new development instead of the `post_batch_archive_applications` interceptor. + When both interceptors are used, this `post_batch_archive_applications_with_metadata` interceptor runs after the + `post_batch_archive_applications` interceptor. The (possibly modified) response returned by + `post_batch_archive_applications` will be passed to + `post_batch_archive_applications_with_metadata`. + """ + return response, metadata + + def pre_batch_create_applications( + self, + request: application_service.BatchCreateApplicationsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_service.BatchCreateApplicationsRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_create_applications + + Override in a subclass to manipulate the request or metadata + before they are sent to the ApplicationService server. + """ + return request, metadata + + def post_batch_create_applications( + self, response: application_service.BatchCreateApplicationsResponse + ) -> application_service.BatchCreateApplicationsResponse: + """Post-rpc interceptor for batch_create_applications + + DEPRECATED. Please use the `post_batch_create_applications_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ApplicationService server but before + it is returned to user code. This `post_batch_create_applications` interceptor runs + before the `post_batch_create_applications_with_metadata` interceptor. + """ + return response + + def post_batch_create_applications_with_metadata( + self, + response: application_service.BatchCreateApplicationsResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_service.BatchCreateApplicationsResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_create_applications + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ApplicationService server but before it is returned to user code. + + We recommend only using this `post_batch_create_applications_with_metadata` + interceptor in new development instead of the `post_batch_create_applications` interceptor. + When both interceptors are used, this `post_batch_create_applications_with_metadata` interceptor runs after the + `post_batch_create_applications` interceptor. The (possibly modified) response returned by + `post_batch_create_applications` will be passed to + `post_batch_create_applications_with_metadata`. + """ + return response, metadata + + def pre_batch_unarchive_applications( + self, + request: application_service.BatchUnarchiveApplicationsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_service.BatchUnarchiveApplicationsRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_unarchive_applications + + Override in a subclass to manipulate the request or metadata + before they are sent to the ApplicationService server. + """ + return request, metadata + + def post_batch_unarchive_applications( + self, response: application_service.BatchUnarchiveApplicationsResponse + ) -> application_service.BatchUnarchiveApplicationsResponse: + """Post-rpc interceptor for batch_unarchive_applications + + DEPRECATED. Please use the `post_batch_unarchive_applications_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ApplicationService server but before + it is returned to user code. This `post_batch_unarchive_applications` interceptor runs + before the `post_batch_unarchive_applications_with_metadata` interceptor. + """ + return response + + def post_batch_unarchive_applications_with_metadata( + self, + response: application_service.BatchUnarchiveApplicationsResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_service.BatchUnarchiveApplicationsResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_unarchive_applications + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ApplicationService server but before it is returned to user code. + + We recommend only using this `post_batch_unarchive_applications_with_metadata` + interceptor in new development instead of the `post_batch_unarchive_applications` interceptor. + When both interceptors are used, this `post_batch_unarchive_applications_with_metadata` interceptor runs after the + `post_batch_unarchive_applications` interceptor. The (possibly modified) response returned by + `post_batch_unarchive_applications` will be passed to + `post_batch_unarchive_applications_with_metadata`. + """ + return response, metadata + + def pre_batch_update_applications( + self, + request: application_service.BatchUpdateApplicationsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_service.BatchUpdateApplicationsRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_update_applications + + Override in a subclass to manipulate the request or metadata + before they are sent to the ApplicationService server. + """ + return request, metadata + + def post_batch_update_applications( + self, response: application_service.BatchUpdateApplicationsResponse + ) -> application_service.BatchUpdateApplicationsResponse: + """Post-rpc interceptor for batch_update_applications + + DEPRECATED. Please use the `post_batch_update_applications_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ApplicationService server but before + it is returned to user code. This `post_batch_update_applications` interceptor runs + before the `post_batch_update_applications_with_metadata` interceptor. + """ + return response + + def post_batch_update_applications_with_metadata( + self, + response: application_service.BatchUpdateApplicationsResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_service.BatchUpdateApplicationsResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_update_applications + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ApplicationService server but before it is returned to user code. + + We recommend only using this `post_batch_update_applications_with_metadata` + interceptor in new development instead of the `post_batch_update_applications` interceptor. + When both interceptors are used, this `post_batch_update_applications_with_metadata` interceptor runs after the + `post_batch_update_applications` interceptor. The (possibly modified) response returned by + `post_batch_update_applications` will be passed to + `post_batch_update_applications_with_metadata`. + """ + return response, metadata + + def pre_create_application( + self, + request: application_service.CreateApplicationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_service.CreateApplicationRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for create_application + + Override in a subclass to manipulate the request or metadata + before they are sent to the ApplicationService server. + """ + return request, metadata + + def post_create_application( + self, response: application_messages.Application + ) -> application_messages.Application: + """Post-rpc interceptor for create_application + + DEPRECATED. Please use the `post_create_application_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ApplicationService server but before + it is returned to user code. This `post_create_application` interceptor runs + before the `post_create_application_with_metadata` interceptor. + """ + return response + + def post_create_application_with_metadata( + self, + response: application_messages.Application, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_messages.Application, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for create_application + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ApplicationService server but before it is returned to user code. + + We recommend only using this `post_create_application_with_metadata` + interceptor in new development instead of the `post_create_application` interceptor. + When both interceptors are used, this `post_create_application_with_metadata` interceptor runs after the + `post_create_application` interceptor. The (possibly modified) response returned by + `post_create_application` will be passed to + `post_create_application_with_metadata`. + """ + return response, metadata + def pre_get_application( self, request: application_service.GetApplicationRequest, @@ -198,6 +505,80 @@ def post_list_applications_with_metadata( """ return response, metadata + def pre_update_application( + self, + request: application_service.UpdateApplicationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_service.UpdateApplicationRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for update_application + + Override in a subclass to manipulate the request or metadata + before they are sent to the ApplicationService server. + """ + return request, metadata + + def post_update_application( + self, response: application_messages.Application + ) -> application_messages.Application: + """Post-rpc interceptor for update_application + + DEPRECATED. Please use the `post_update_application_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ApplicationService server but before + it is returned to user code. This `post_update_application` interceptor runs + before the `post_update_application_with_metadata` interceptor. + """ + return response + + def post_update_application_with_metadata( + self, + response: application_messages.Application, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + application_messages.Application, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for update_application + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ApplicationService server but before it is returned to user code. + + We recommend only using this `post_update_application_with_metadata` + interceptor in new development instead of the `post_update_application` interceptor. + When both interceptors are used, this `post_update_application_with_metadata` interceptor runs after the + `post_update_application` interceptor. The (possibly modified) response returned by + `post_update_application` will be passed to + `post_update_application_with_metadata`. + """ + return response, metadata + + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the ApplicationService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the ApplicationService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -317,12 +698,12 @@ def __init__( self._interceptor = interceptor or ApplicationServiceRestInterceptor() self._prep_wrapped_messages(client_info) - class _GetApplication( - _BaseApplicationServiceRestTransport._BaseGetApplication, + class _BatchArchiveApplications( + _BaseApplicationServiceRestTransport._BaseBatchArchiveApplications, ApplicationServiceRestStub, ): def __hash__(self): - return hash("ApplicationServiceRestTransport.GetApplication") + return hash("ApplicationServiceRestTransport.BatchArchiveApplications") @staticmethod def _get_response( @@ -343,23 +724,960 @@ def _get_response( timeout=timeout, headers=headers, params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, ) return response def __call__( self, - request: application_service.GetApplicationRequest, + request: application_service.BatchArchiveApplicationsRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> application_messages.Application: - r"""Call the get application method over HTTP. + ) -> application_service.BatchArchiveApplicationsResponse: + r"""Call the batch archive + applications method over HTTP. + + Args: + request (~.application_service.BatchArchiveApplicationsRequest): + The request object. Request object for ``BatchArchiveApplications`` method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.application_service.BatchArchiveApplicationsResponse: + Response object for ``BatchArchiveApplications`` method. + """ - Args: - request (~.application_service.GetApplicationRequest): - The request object. Request object for ``GetApplication`` method. - retry (google.api_core.retry.Retry): Designation of what errors, if any, + http_options = _BaseApplicationServiceRestTransport._BaseBatchArchiveApplications._get_http_options() + + request, metadata = self._interceptor.pre_batch_archive_applications( + request, metadata + ) + transcoded_request = _BaseApplicationServiceRestTransport._BaseBatchArchiveApplications._get_transcoded_request( + http_options, request + ) + + body = _BaseApplicationServiceRestTransport._BaseBatchArchiveApplications._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseApplicationServiceRestTransport._BaseBatchArchiveApplications._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.ApplicationServiceClient.BatchArchiveApplications", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "BatchArchiveApplications", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + ApplicationServiceRestTransport._BatchArchiveApplications._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = application_service.BatchArchiveApplicationsResponse() + pb_resp = application_service.BatchArchiveApplicationsResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_batch_archive_applications(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_batch_archive_applications_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = ( + application_service.BatchArchiveApplicationsResponse.to_json( + response + ) + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.ads.admanager_v1.ApplicationServiceClient.batch_archive_applications", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "BatchArchiveApplications", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _BatchCreateApplications( + _BaseApplicationServiceRestTransport._BaseBatchCreateApplications, + ApplicationServiceRestStub, + ): + def __hash__(self): + return hash("ApplicationServiceRestTransport.BatchCreateApplications") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: application_service.BatchCreateApplicationsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> application_service.BatchCreateApplicationsResponse: + r"""Call the batch create applications method over HTTP. + + Args: + request (~.application_service.BatchCreateApplicationsRequest): + The request object. Request object for ``BatchCreateApplications`` method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.application_service.BatchCreateApplicationsResponse: + Response object for ``BatchCreateApplications`` method. + """ + + http_options = _BaseApplicationServiceRestTransport._BaseBatchCreateApplications._get_http_options() + + request, metadata = self._interceptor.pre_batch_create_applications( + request, metadata + ) + transcoded_request = _BaseApplicationServiceRestTransport._BaseBatchCreateApplications._get_transcoded_request( + http_options, request + ) + + body = _BaseApplicationServiceRestTransport._BaseBatchCreateApplications._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseApplicationServiceRestTransport._BaseBatchCreateApplications._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.ApplicationServiceClient.BatchCreateApplications", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "BatchCreateApplications", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + ApplicationServiceRestTransport._BatchCreateApplications._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = application_service.BatchCreateApplicationsResponse() + pb_resp = application_service.BatchCreateApplicationsResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_batch_create_applications(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_batch_create_applications_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = ( + application_service.BatchCreateApplicationsResponse.to_json( + response + ) + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.ads.admanager_v1.ApplicationServiceClient.batch_create_applications", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "BatchCreateApplications", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _BatchUnarchiveApplications( + _BaseApplicationServiceRestTransport._BaseBatchUnarchiveApplications, + ApplicationServiceRestStub, + ): + def __hash__(self): + return hash("ApplicationServiceRestTransport.BatchUnarchiveApplications") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: application_service.BatchUnarchiveApplicationsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> application_service.BatchUnarchiveApplicationsResponse: + r"""Call the batch unarchive + applications method over HTTP. + + Args: + request (~.application_service.BatchUnarchiveApplicationsRequest): + The request object. Request object for ``BatchUnarchiveApplications`` + method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.application_service.BatchUnarchiveApplicationsResponse: + Response object for ``BatchUnarchiveApplications`` + method. + + """ + + http_options = _BaseApplicationServiceRestTransport._BaseBatchUnarchiveApplications._get_http_options() + + request, metadata = self._interceptor.pre_batch_unarchive_applications( + request, metadata + ) + transcoded_request = _BaseApplicationServiceRestTransport._BaseBatchUnarchiveApplications._get_transcoded_request( + http_options, request + ) + + body = _BaseApplicationServiceRestTransport._BaseBatchUnarchiveApplications._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseApplicationServiceRestTransport._BaseBatchUnarchiveApplications._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.ApplicationServiceClient.BatchUnarchiveApplications", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "BatchUnarchiveApplications", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ApplicationServiceRestTransport._BatchUnarchiveApplications._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = application_service.BatchUnarchiveApplicationsResponse() + pb_resp = application_service.BatchUnarchiveApplicationsResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_batch_unarchive_applications(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_batch_unarchive_applications_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = ( + application_service.BatchUnarchiveApplicationsResponse.to_json( + response + ) + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.ads.admanager_v1.ApplicationServiceClient.batch_unarchive_applications", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "BatchUnarchiveApplications", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _BatchUpdateApplications( + _BaseApplicationServiceRestTransport._BaseBatchUpdateApplications, + ApplicationServiceRestStub, + ): + def __hash__(self): + return hash("ApplicationServiceRestTransport.BatchUpdateApplications") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: application_service.BatchUpdateApplicationsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> application_service.BatchUpdateApplicationsResponse: + r"""Call the batch update applications method over HTTP. + + Args: + request (~.application_service.BatchUpdateApplicationsRequest): + The request object. Request object for ``BatchUpdateApplications`` method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.application_service.BatchUpdateApplicationsResponse: + Response object for ``BatchUpdateApplications`` method. + """ + + http_options = _BaseApplicationServiceRestTransport._BaseBatchUpdateApplications._get_http_options() + + request, metadata = self._interceptor.pre_batch_update_applications( + request, metadata + ) + transcoded_request = _BaseApplicationServiceRestTransport._BaseBatchUpdateApplications._get_transcoded_request( + http_options, request + ) + + body = _BaseApplicationServiceRestTransport._BaseBatchUpdateApplications._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseApplicationServiceRestTransport._BaseBatchUpdateApplications._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.ApplicationServiceClient.BatchUpdateApplications", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "BatchUpdateApplications", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + ApplicationServiceRestTransport._BatchUpdateApplications._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = application_service.BatchUpdateApplicationsResponse() + pb_resp = application_service.BatchUpdateApplicationsResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_batch_update_applications(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_batch_update_applications_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = ( + application_service.BatchUpdateApplicationsResponse.to_json( + response + ) + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.ads.admanager_v1.ApplicationServiceClient.batch_update_applications", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "BatchUpdateApplications", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _CreateApplication( + _BaseApplicationServiceRestTransport._BaseCreateApplication, + ApplicationServiceRestStub, + ): + def __hash__(self): + return hash("ApplicationServiceRestTransport.CreateApplication") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: application_service.CreateApplicationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> application_messages.Application: + r"""Call the create application method over HTTP. + + Args: + request (~.application_service.CreateApplicationRequest): + The request object. Request object for ``CreateApplication`` method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.application_messages.Application: + An application that has been added to + or "claimed" by the network to be used + for targeting purposes. These mobile + apps can come from various app stores. + + """ + + http_options = _BaseApplicationServiceRestTransport._BaseCreateApplication._get_http_options() + + request, metadata = self._interceptor.pre_create_application( + request, metadata + ) + transcoded_request = _BaseApplicationServiceRestTransport._BaseCreateApplication._get_transcoded_request( + http_options, request + ) + + body = _BaseApplicationServiceRestTransport._BaseCreateApplication._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseApplicationServiceRestTransport._BaseCreateApplication._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.ApplicationServiceClient.CreateApplication", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "CreateApplication", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ApplicationServiceRestTransport._CreateApplication._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = application_messages.Application() + pb_resp = application_messages.Application.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_create_application(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_create_application_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = application_messages.Application.to_json( + response + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.ads.admanager_v1.ApplicationServiceClient.create_application", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "CreateApplication", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetApplication( + _BaseApplicationServiceRestTransport._BaseGetApplication, + ApplicationServiceRestStub, + ): + def __hash__(self): + return hash("ApplicationServiceRestTransport.GetApplication") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: application_service.GetApplicationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> application_messages.Application: + r"""Call the get application method over HTTP. + + Args: + request (~.application_service.GetApplicationRequest): + The request object. Request object for ``GetApplication`` method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.application_messages.Application: + An application that has been added to + or "claimed" by the network to be used + for targeting purposes. These mobile + apps can come from various app stores. + + """ + + http_options = _BaseApplicationServiceRestTransport._BaseGetApplication._get_http_options() + + request, metadata = self._interceptor.pre_get_application(request, metadata) + transcoded_request = _BaseApplicationServiceRestTransport._BaseGetApplication._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseApplicationServiceRestTransport._BaseGetApplication._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.ApplicationServiceClient.GetApplication", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "GetApplication", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ApplicationServiceRestTransport._GetApplication._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = application_messages.Application() + pb_resp = application_messages.Application.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_application(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_application_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = application_messages.Application.to_json( + response + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.ads.admanager_v1.ApplicationServiceClient.get_application", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "GetApplication", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _ListApplications( + _BaseApplicationServiceRestTransport._BaseListApplications, + ApplicationServiceRestStub, + ): + def __hash__(self): + return hash("ApplicationServiceRestTransport.ListApplications") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: application_service.ListApplicationsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> application_service.ListApplicationsResponse: + r"""Call the list applications method over HTTP. + + Args: + request (~.application_service.ListApplicationsRequest): + The request object. Request object for ``ListApplications`` method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be @@ -368,23 +1686,23 @@ def __call__( be of type `bytes`. Returns: - ~.application_messages.Application: - An application that has been added to - or "claimed" by the network to be used - for targeting purposes. These mobile - apps can come from various app stores. + ~.application_service.ListApplicationsResponse: + Response object for ``ListApplicationsRequest`` + containing matching ``Application`` objects. """ - http_options = _BaseApplicationServiceRestTransport._BaseGetApplication._get_http_options() + http_options = _BaseApplicationServiceRestTransport._BaseListApplications._get_http_options() - request, metadata = self._interceptor.pre_get_application(request, metadata) - transcoded_request = _BaseApplicationServiceRestTransport._BaseGetApplication._get_transcoded_request( + request, metadata = self._interceptor.pre_list_applications( + request, metadata + ) + transcoded_request = _BaseApplicationServiceRestTransport._BaseListApplications._get_transcoded_request( http_options, request ) # Jsonify the query params - query_params = _BaseApplicationServiceRestTransport._BaseGetApplication._get_query_params_json( + query_params = _BaseApplicationServiceRestTransport._BaseListApplications._get_query_params_json( transcoded_request ) @@ -406,17 +1724,17 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.ads.admanager_v1.ApplicationServiceClient.GetApplication", + f"Sending request for google.ads.admanager_v1.ApplicationServiceClient.ListApplications", extra={ "serviceName": "google.ads.admanager.v1.ApplicationService", - "rpcName": "GetApplication", + "rpcName": "ListApplications", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = ApplicationServiceRestTransport._GetApplication._get_response( + response = ApplicationServiceRestTransport._ListApplications._get_response( self._host, metadata, query_params, @@ -431,22 +1749,22 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = application_messages.Application() - pb_resp = application_messages.Application.pb(resp) + resp = application_service.ListApplicationsResponse() + pb_resp = application_service.ListApplicationsResponse.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_application(resp) + resp = self._interceptor.post_list_applications(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_application_with_metadata( + resp, _ = self._interceptor.post_list_applications_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = application_messages.Application.to_json( - response + response_payload = ( + application_service.ListApplicationsResponse.to_json(response) ) except: response_payload = None @@ -456,22 +1774,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.ads.admanager_v1.ApplicationServiceClient.get_application", + "Received response for google.ads.admanager_v1.ApplicationServiceClient.list_applications", extra={ "serviceName": "google.ads.admanager.v1.ApplicationService", - "rpcName": "GetApplication", + "rpcName": "ListApplications", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _ListApplications( - _BaseApplicationServiceRestTransport._BaseListApplications, + class _UpdateApplication( + _BaseApplicationServiceRestTransport._BaseUpdateApplication, ApplicationServiceRestStub, ): def __hash__(self): - return hash("ApplicationServiceRestTransport.ListApplications") + return hash("ApplicationServiceRestTransport.UpdateApplication") @staticmethod def _get_response( @@ -492,22 +1810,23 @@ def _get_response( timeout=timeout, headers=headers, params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, ) return response def __call__( self, - request: application_service.ListApplicationsRequest, + request: application_service.UpdateApplicationRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> application_service.ListApplicationsResponse: - r"""Call the list applications method over HTTP. + ) -> application_messages.Application: + r"""Call the update application method over HTTP. Args: - request (~.application_service.ListApplicationsRequest): - The request object. Request object for ``ListApplications`` method. + request (~.application_service.UpdateApplicationRequest): + The request object. Request object for ``UpdateApplication`` method. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -517,23 +1836,29 @@ def __call__( be of type `bytes`. Returns: - ~.application_service.ListApplicationsResponse: - Response object for ``ListApplicationsRequest`` - containing matching ``Application`` objects. + ~.application_messages.Application: + An application that has been added to + or "claimed" by the network to be used + for targeting purposes. These mobile + apps can come from various app stores. """ - http_options = _BaseApplicationServiceRestTransport._BaseListApplications._get_http_options() + http_options = _BaseApplicationServiceRestTransport._BaseUpdateApplication._get_http_options() - request, metadata = self._interceptor.pre_list_applications( + request, metadata = self._interceptor.pre_update_application( request, metadata ) - transcoded_request = _BaseApplicationServiceRestTransport._BaseListApplications._get_transcoded_request( + transcoded_request = _BaseApplicationServiceRestTransport._BaseUpdateApplication._get_transcoded_request( http_options, request ) + body = _BaseApplicationServiceRestTransport._BaseUpdateApplication._get_request_body_json( + transcoded_request + ) + # Jsonify the query params - query_params = _BaseApplicationServiceRestTransport._BaseListApplications._get_query_params_json( + query_params = _BaseApplicationServiceRestTransport._BaseUpdateApplication._get_query_params_json( transcoded_request ) @@ -555,23 +1880,24 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.ads.admanager_v1.ApplicationServiceClient.ListApplications", + f"Sending request for google.ads.admanager_v1.ApplicationServiceClient.UpdateApplication", extra={ "serviceName": "google.ads.admanager.v1.ApplicationService", - "rpcName": "ListApplications", + "rpcName": "UpdateApplication", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = ApplicationServiceRestTransport._ListApplications._get_response( + response = ApplicationServiceRestTransport._UpdateApplication._get_response( self._host, metadata, query_params, self._session, timeout, transcoded_request, + body, ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -580,22 +1906,22 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = application_service.ListApplicationsResponse() - pb_resp = application_service.ListApplicationsResponse.pb(resp) + resp = application_messages.Application() + pb_resp = application_messages.Application.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_list_applications(resp) + resp = self._interceptor.post_update_application(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_list_applications_with_metadata( + resp, _ = self._interceptor.post_update_application_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = ( - application_service.ListApplicationsResponse.to_json(response) + response_payload = application_messages.Application.to_json( + response ) except: response_payload = None @@ -605,16 +1931,78 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.ads.admanager_v1.ApplicationServiceClient.list_applications", + "Received response for google.ads.admanager_v1.ApplicationServiceClient.update_application", extra={ "serviceName": "google.ads.admanager.v1.ApplicationService", - "rpcName": "ListApplications", + "rpcName": "UpdateApplication", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp + @property + def batch_archive_applications( + self, + ) -> Callable[ + [application_service.BatchArchiveApplicationsRequest], + application_service.BatchArchiveApplicationsResponse, + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._BatchArchiveApplications( + self._session, self._host, self._interceptor + ) # type: ignore + + @property + def batch_create_applications( + self, + ) -> Callable[ + [application_service.BatchCreateApplicationsRequest], + application_service.BatchCreateApplicationsResponse, + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._BatchCreateApplications( + self._session, self._host, self._interceptor + ) # type: ignore + + @property + def batch_unarchive_applications( + self, + ) -> Callable[ + [application_service.BatchUnarchiveApplicationsRequest], + application_service.BatchUnarchiveApplicationsResponse, + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._BatchUnarchiveApplications( + self._session, self._host, self._interceptor + ) # type: ignore + + @property + def batch_update_applications( + self, + ) -> Callable[ + [application_service.BatchUpdateApplicationsRequest], + application_service.BatchUpdateApplicationsResponse, + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._BatchUpdateApplications( + self._session, self._host, self._interceptor + ) # type: ignore + + @property + def create_application( + self, + ) -> Callable[ + [application_service.CreateApplicationRequest], application_messages.Application + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._CreateApplication(self._session, self._host, self._interceptor) # type: ignore + @property def get_application( self, @@ -636,6 +2024,129 @@ def list_applications( # In C++ this would require a dynamic_cast return self._ListApplications(self._session, self._host, self._interceptor) # type: ignore + @property + def update_application( + self, + ) -> Callable[ + [application_service.UpdateApplicationRequest], application_messages.Application + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._UpdateApplication(self._session, self._host, self._interceptor) # type: ignore + + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseApplicationServiceRestTransport._BaseCancelOperation, + ApplicationServiceRestStub, + ): + def __hash__(self): + return hash("ApplicationServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseApplicationServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseApplicationServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseApplicationServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.ApplicationServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.ApplicationService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ApplicationServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/rest_base.py index 373dbb4ac79a..a8bbfd274d31 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/application_service/transports/rest_base.py @@ -88,6 +88,293 @@ def __init__( api_audience=api_audience, ) + class _BaseBatchArchiveApplications: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{parent=networks/*}/applications:batchArchive", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = application_service.BatchArchiveApplicationsRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=True + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=True, + ) + ) + query_params.update( + _BaseApplicationServiceRestTransport._BaseBatchArchiveApplications._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseBatchCreateApplications: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{parent=networks/*}/applications:batchCreate", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = application_service.BatchCreateApplicationsRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=True + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=True, + ) + ) + query_params.update( + _BaseApplicationServiceRestTransport._BaseBatchCreateApplications._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseBatchUnarchiveApplications: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{parent=networks/*}/applications:batchUnarchive", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = application_service.BatchUnarchiveApplicationsRequest.pb( + request + ) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=True + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=True, + ) + ) + query_params.update( + _BaseApplicationServiceRestTransport._BaseBatchUnarchiveApplications._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseBatchUpdateApplications: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{parent=networks/*}/applications:batchUpdate", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = application_service.BatchUpdateApplicationsRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=True + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=True, + ) + ) + query_params.update( + _BaseApplicationServiceRestTransport._BaseBatchUpdateApplications._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseCreateApplication: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{parent=networks/*}/applications", + "body": "application", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = application_service.CreateApplicationRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=True + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=True, + ) + ) + query_params.update( + _BaseApplicationServiceRestTransport._BaseCreateApplication._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + class _BaseGetApplication: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -182,6 +469,88 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseUpdateApplication: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "patch", + "uri": "/v1/{application.name=networks/*/applications/*}", + "body": "application", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = application_service.UpdateApplicationRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=True + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=True, + ) + ) + query_params.update( + _BaseApplicationServiceRestTransport._BaseUpdateApplication._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/client.py index de347302733c..e9cc00c6fc9b 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/client.py @@ -1059,6 +1059,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/base.py index ffe53dfaf0e8..821476dbe285 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/base.py @@ -43,7 +43,10 @@ class AudienceSegmentServiceTransport(abc.ABC): """Abstract transport class for AudienceSegmentService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -156,6 +159,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -205,6 +213,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/rest.py index 007006d67f43..62d8a36c3841 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/rest.py @@ -202,6 +202,29 @@ def post_list_audience_segments_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the AudienceSegmentService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the AudienceSegmentService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -645,6 +668,121 @@ def list_audience_segments( # In C++ this would require a dynamic_cast return self._ListAudienceSegments(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseAudienceSegmentServiceRestTransport._BaseCancelOperation, + AudienceSegmentServiceRestStub, + ): + def __hash__(self): + return hash("AudienceSegmentServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseAudienceSegmentServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseAudienceSegmentServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseAudienceSegmentServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.AudienceSegmentServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.AudienceSegmentService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + AudienceSegmentServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/rest_base.py index d1f6be10a31d..f41f76ee66ac 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/audience_segment_service/transports/rest_base.py @@ -187,6 +187,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/client.py index 7fbdb799fe85..ace40ab7783c 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/client.py @@ -1060,6 +1060,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/base.py index b6e697480b48..81a831ada9cc 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/base.py @@ -43,7 +43,10 @@ class BandwidthGroupServiceTransport(abc.ABC): """Abstract transport class for BandwidthGroupService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -156,6 +159,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -205,6 +213,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/rest.py index 348a83cded1b..a482b7ae9203 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/rest.py @@ -201,6 +201,29 @@ def post_list_bandwidth_groups_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the BandwidthGroupService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the BandwidthGroupService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -648,6 +671,121 @@ def list_bandwidth_groups( # In C++ this would require a dynamic_cast return self._ListBandwidthGroups(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseBandwidthGroupServiceRestTransport._BaseCancelOperation, + BandwidthGroupServiceRestStub, + ): + def __hash__(self): + return hash("BandwidthGroupServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseBandwidthGroupServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseBandwidthGroupServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseBandwidthGroupServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.BandwidthGroupServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.BandwidthGroupService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + BandwidthGroupServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/rest_base.py index 698490e8b399..d5db7e61600a 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/bandwidth_group_service/transports/rest_base.py @@ -185,6 +185,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/client.py index 60fe171fc507..f93895d820e7 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/client.py @@ -1058,6 +1058,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/base.py index 43f518ed7ba2..cfdea393160c 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/base.py @@ -43,7 +43,10 @@ class BrowserLanguageServiceTransport(abc.ABC): """Abstract transport class for BrowserLanguageService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -156,6 +159,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -205,6 +213,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/rest.py index 41b501c92680..d5ce378c2b8a 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/rest.py @@ -202,6 +202,29 @@ def post_list_browser_languages_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the BrowserLanguageService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the BrowserLanguageService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -645,6 +668,121 @@ def list_browser_languages( # In C++ this would require a dynamic_cast return self._ListBrowserLanguages(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseBrowserLanguageServiceRestTransport._BaseCancelOperation, + BrowserLanguageServiceRestStub, + ): + def __hash__(self): + return hash("BrowserLanguageServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseBrowserLanguageServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseBrowserLanguageServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseBrowserLanguageServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.BrowserLanguageServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.BrowserLanguageService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + BrowserLanguageServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/rest_base.py index ef44086d0a4a..dd3a9634c58c 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_language_service/transports/rest_base.py @@ -187,6 +187,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/client.py index 84310f0f2f5e..fc80c39de1ab 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/client.py @@ -1042,6 +1042,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/base.py index 73a5843907d2..6923ba70eacc 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/base.py @@ -40,7 +40,10 @@ class BrowserServiceTransport(abc.ABC): """Abstract transport class for BrowserService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -153,6 +156,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -199,6 +207,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/rest.py index 3cc65e4db600..11e57b6b55db 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/rest.py @@ -193,6 +193,29 @@ def post_list_browsers_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the BrowserService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the BrowserService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -626,6 +649,118 @@ def list_browsers( # In C++ this would require a dynamic_cast return self._ListBrowsers(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseBrowserServiceRestTransport._BaseCancelOperation, BrowserServiceRestStub + ): + def __hash__(self): + return hash("BrowserServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseBrowserServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseBrowserServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseBrowserServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.BrowserServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.BrowserService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = BrowserServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/rest_base.py index 4e4b7ca9c627..a9820b177f9c 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/browser_service/transports/rest_base.py @@ -182,6 +182,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/client.py index 340280f74bc3..66afefb40d3a 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/client.py @@ -983,6 +983,260 @@ def sample_list_cms_metadata_keys(): # Done; return the response. return response + def batch_activate_cms_metadata_keys( + self, + request: Optional[ + Union[cms_metadata_key_service.BatchActivateCmsMetadataKeysRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + names: Optional[MutableSequence[str]] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse: + r"""API to activate a list of ``CmsMetadataKey`` objects. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.ads import admanager_v1 + + def sample_batch_activate_cms_metadata_keys(): + # Create a client + client = admanager_v1.CmsMetadataKeyServiceClient() + + # Initialize request argument(s) + request = admanager_v1.BatchActivateCmsMetadataKeysRequest( + parent="parent_value", + names=['names_value1', 'names_value2'], + ) + + # Make the request + response = client.batch_activate_cms_metadata_keys(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.BatchActivateCmsMetadataKeysRequest, dict]): + The request object. Request object for ``BatchActivateCmsMetadataKeys`` + method. + parent (str): + Required. The parent resource where ``CmsMetadataKeys`` + will be activated. Format: ``networks/{network_code}`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + names (MutableSequence[str]): + Required. The resource names of the + ``CmsMetadataKey``\ s to activate. Format: + ``networks/{network_code}/cmsMetadataKeys/{cms_metadata_key_id}`` + + This corresponds to the ``names`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.ads.admanager_v1.types.BatchActivateCmsMetadataKeysResponse: + Response object for BatchActivateCmsMetadataKeys method. + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [parent, names] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance( + request, cms_metadata_key_service.BatchActivateCmsMetadataKeysRequest + ): + request = cms_metadata_key_service.BatchActivateCmsMetadataKeysRequest( + request + ) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if names is not None: + request.names = names + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.batch_activate_cms_metadata_keys + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def batch_deactivate_cms_metadata_keys( + self, + request: Optional[ + Union[cms_metadata_key_service.BatchDeactivateCmsMetadataKeysRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + names: Optional[MutableSequence[str]] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse: + r"""API to deactivate a list of ``CmsMetadataKey`` objects. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.ads import admanager_v1 + + def sample_batch_deactivate_cms_metadata_keys(): + # Create a client + client = admanager_v1.CmsMetadataKeyServiceClient() + + # Initialize request argument(s) + request = admanager_v1.BatchDeactivateCmsMetadataKeysRequest( + parent="parent_value", + names=['names_value1', 'names_value2'], + ) + + # Make the request + response = client.batch_deactivate_cms_metadata_keys(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.BatchDeactivateCmsMetadataKeysRequest, dict]): + The request object. Request message for ``BatchDeactivateCmsMetadataKeys`` + method. + parent (str): + Required. The parent resource where ``CmsMetadataKeys`` + will be deactivated. Format: ``networks/{network_code}`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + names (MutableSequence[str]): + Required. The resource names of the + ``CmsMetadataKey``\ s to deactivate. Format: + ``networks/{network_code}/cmsMetadataKeys/{cms_metadata_key_id}`` + + This corresponds to the ``names`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.ads.admanager_v1.types.BatchDeactivateCmsMetadataKeysResponse: + Response object for BatchDeactivateCmsMetadataKeys + method. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [parent, names] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance( + request, cms_metadata_key_service.BatchDeactivateCmsMetadataKeysRequest + ): + request = cms_metadata_key_service.BatchDeactivateCmsMetadataKeysRequest( + request + ) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if names is not None: + request.names = names + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.batch_deactivate_cms_metadata_keys + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + def __enter__(self) -> "CmsMetadataKeyServiceClient": return self @@ -1059,6 +1313,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/base.py index fd538ab35bf0..b05c4774c6d4 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/base.py @@ -43,7 +43,10 @@ class CmsMetadataKeyServiceTransport(abc.ABC): """Abstract transport class for CmsMetadataKeyService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -156,6 +159,21 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.batch_activate_cms_metadata_keys: gapic_v1.method.wrap_method( + self.batch_activate_cms_metadata_keys, + default_timeout=None, + client_info=client_info, + ), + self.batch_deactivate_cms_metadata_keys: gapic_v1.method.wrap_method( + self.batch_deactivate_cms_metadata_keys, + default_timeout=None, + client_info=client_info, + ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -196,6 +214,30 @@ def list_cms_metadata_keys( ]: raise NotImplementedError() + @property + def batch_activate_cms_metadata_keys( + self, + ) -> Callable[ + [cms_metadata_key_service.BatchActivateCmsMetadataKeysRequest], + Union[ + cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse, + Awaitable[cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse], + ], + ]: + raise NotImplementedError() + + @property + def batch_deactivate_cms_metadata_keys( + self, + ) -> Callable[ + [cms_metadata_key_service.BatchDeactivateCmsMetadataKeysRequest], + Union[ + cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse, + Awaitable[cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse], + ], + ]: + raise NotImplementedError() + @property def get_operation( self, @@ -205,6 +247,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/rest.py index e5e4d06a8925..45a435b1a5f2 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/rest.py @@ -76,6 +76,22 @@ class CmsMetadataKeyServiceRestInterceptor: .. code-block:: python class MyCustomCmsMetadataKeyServiceInterceptor(CmsMetadataKeyServiceRestInterceptor): + def pre_batch_activate_cms_metadata_keys(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_activate_cms_metadata_keys(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_batch_deactivate_cms_metadata_keys(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_deactivate_cms_metadata_keys(self, response): + logging.log(f"Received response: {response}") + return response + def pre_get_cms_metadata_key(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -98,6 +114,110 @@ def post_list_cms_metadata_keys(self, response): """ + def pre_batch_activate_cms_metadata_keys( + self, + request: cms_metadata_key_service.BatchActivateCmsMetadataKeysRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cms_metadata_key_service.BatchActivateCmsMetadataKeysRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_activate_cms_metadata_keys + + Override in a subclass to manipulate the request or metadata + before they are sent to the CmsMetadataKeyService server. + """ + return request, metadata + + def post_batch_activate_cms_metadata_keys( + self, response: cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse + ) -> cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse: + """Post-rpc interceptor for batch_activate_cms_metadata_keys + + DEPRECATED. Please use the `post_batch_activate_cms_metadata_keys_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CmsMetadataKeyService server but before + it is returned to user code. This `post_batch_activate_cms_metadata_keys` interceptor runs + before the `post_batch_activate_cms_metadata_keys_with_metadata` interceptor. + """ + return response + + def post_batch_activate_cms_metadata_keys_with_metadata( + self, + response: cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_activate_cms_metadata_keys + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CmsMetadataKeyService server but before it is returned to user code. + + We recommend only using this `post_batch_activate_cms_metadata_keys_with_metadata` + interceptor in new development instead of the `post_batch_activate_cms_metadata_keys` interceptor. + When both interceptors are used, this `post_batch_activate_cms_metadata_keys_with_metadata` interceptor runs after the + `post_batch_activate_cms_metadata_keys` interceptor. The (possibly modified) response returned by + `post_batch_activate_cms_metadata_keys` will be passed to + `post_batch_activate_cms_metadata_keys_with_metadata`. + """ + return response, metadata + + def pre_batch_deactivate_cms_metadata_keys( + self, + request: cms_metadata_key_service.BatchDeactivateCmsMetadataKeysRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cms_metadata_key_service.BatchDeactivateCmsMetadataKeysRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_deactivate_cms_metadata_keys + + Override in a subclass to manipulate the request or metadata + before they are sent to the CmsMetadataKeyService server. + """ + return request, metadata + + def post_batch_deactivate_cms_metadata_keys( + self, response: cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse + ) -> cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse: + """Post-rpc interceptor for batch_deactivate_cms_metadata_keys + + DEPRECATED. Please use the `post_batch_deactivate_cms_metadata_keys_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CmsMetadataKeyService server but before + it is returned to user code. This `post_batch_deactivate_cms_metadata_keys` interceptor runs + before the `post_batch_deactivate_cms_metadata_keys_with_metadata` interceptor. + """ + return response + + def post_batch_deactivate_cms_metadata_keys_with_metadata( + self, + response: cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_deactivate_cms_metadata_keys + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CmsMetadataKeyService server but before it is returned to user code. + + We recommend only using this `post_batch_deactivate_cms_metadata_keys_with_metadata` + interceptor in new development instead of the `post_batch_deactivate_cms_metadata_keys` interceptor. + When both interceptors are used, this `post_batch_deactivate_cms_metadata_keys_with_metadata` interceptor runs after the + `post_batch_deactivate_cms_metadata_keys` interceptor. The (possibly modified) response returned by + `post_batch_deactivate_cms_metadata_keys` will be passed to + `post_batch_deactivate_cms_metadata_keys_with_metadata`. + """ + return response, metadata + def pre_get_cms_metadata_key( self, request: cms_metadata_key_service.GetCmsMetadataKeyRequest, @@ -202,6 +322,29 @@ def post_list_cms_metadata_keys_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the CmsMetadataKeyService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the CmsMetadataKeyService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -321,6 +464,334 @@ def __init__( self._interceptor = interceptor or CmsMetadataKeyServiceRestInterceptor() self._prep_wrapped_messages(client_info) + class _BatchActivateCmsMetadataKeys( + _BaseCmsMetadataKeyServiceRestTransport._BaseBatchActivateCmsMetadataKeys, + CmsMetadataKeyServiceRestStub, + ): + def __hash__(self): + return hash( + "CmsMetadataKeyServiceRestTransport.BatchActivateCmsMetadataKeys" + ) + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: cms_metadata_key_service.BatchActivateCmsMetadataKeysRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse: + r"""Call the batch activate cms + metadata keys method over HTTP. + + Args: + request (~.cms_metadata_key_service.BatchActivateCmsMetadataKeysRequest): + The request object. Request object for ``BatchActivateCmsMetadataKeys`` + method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse: + Response object for ``BatchActivateCmsMetadataKeys`` + method. + + """ + + http_options = _BaseCmsMetadataKeyServiceRestTransport._BaseBatchActivateCmsMetadataKeys._get_http_options() + + request, metadata = self._interceptor.pre_batch_activate_cms_metadata_keys( + request, metadata + ) + transcoded_request = _BaseCmsMetadataKeyServiceRestTransport._BaseBatchActivateCmsMetadataKeys._get_transcoded_request( + http_options, request + ) + + body = _BaseCmsMetadataKeyServiceRestTransport._BaseBatchActivateCmsMetadataKeys._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseCmsMetadataKeyServiceRestTransport._BaseBatchActivateCmsMetadataKeys._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.CmsMetadataKeyServiceClient.BatchActivateCmsMetadataKeys", + extra={ + "serviceName": "google.ads.admanager.v1.CmsMetadataKeyService", + "rpcName": "BatchActivateCmsMetadataKeys", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CmsMetadataKeyServiceRestTransport._BatchActivateCmsMetadataKeys._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse() + pb_resp = cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse.pb( + resp + ) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_batch_activate_cms_metadata_keys(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = ( + self._interceptor.post_batch_activate_cms_metadata_keys_with_metadata( + resp, response_metadata + ) + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse.to_json( + response + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.ads.admanager_v1.CmsMetadataKeyServiceClient.batch_activate_cms_metadata_keys", + extra={ + "serviceName": "google.ads.admanager.v1.CmsMetadataKeyService", + "rpcName": "BatchActivateCmsMetadataKeys", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _BatchDeactivateCmsMetadataKeys( + _BaseCmsMetadataKeyServiceRestTransport._BaseBatchDeactivateCmsMetadataKeys, + CmsMetadataKeyServiceRestStub, + ): + def __hash__(self): + return hash( + "CmsMetadataKeyServiceRestTransport.BatchDeactivateCmsMetadataKeys" + ) + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: cms_metadata_key_service.BatchDeactivateCmsMetadataKeysRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse: + r"""Call the batch deactivate cms + metadata keys method over HTTP. + + Args: + request (~.cms_metadata_key_service.BatchDeactivateCmsMetadataKeysRequest): + The request object. Request message for ``BatchDeactivateCmsMetadataKeys`` + method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse: + Response object for ``BatchDeactivateCmsMetadataKeys`` + method. + + """ + + http_options = _BaseCmsMetadataKeyServiceRestTransport._BaseBatchDeactivateCmsMetadataKeys._get_http_options() + + request, metadata = ( + self._interceptor.pre_batch_deactivate_cms_metadata_keys( + request, metadata + ) + ) + transcoded_request = _BaseCmsMetadataKeyServiceRestTransport._BaseBatchDeactivateCmsMetadataKeys._get_transcoded_request( + http_options, request + ) + + body = _BaseCmsMetadataKeyServiceRestTransport._BaseBatchDeactivateCmsMetadataKeys._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseCmsMetadataKeyServiceRestTransport._BaseBatchDeactivateCmsMetadataKeys._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.CmsMetadataKeyServiceClient.BatchDeactivateCmsMetadataKeys", + extra={ + "serviceName": "google.ads.admanager.v1.CmsMetadataKeyService", + "rpcName": "BatchDeactivateCmsMetadataKeys", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CmsMetadataKeyServiceRestTransport._BatchDeactivateCmsMetadataKeys._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse() + pb_resp = ( + cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse.pb(resp) + ) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_batch_deactivate_cms_metadata_keys(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = ( + self._interceptor.post_batch_deactivate_cms_metadata_keys_with_metadata( + resp, response_metadata + ) + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse.to_json( + response + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.ads.admanager_v1.CmsMetadataKeyServiceClient.batch_deactivate_cms_metadata_keys", + extra={ + "serviceName": "google.ads.admanager.v1.CmsMetadataKeyService", + "rpcName": "BatchDeactivateCmsMetadataKeys", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + class _GetCmsMetadataKey( _BaseCmsMetadataKeyServiceRestTransport._BaseGetCmsMetadataKey, CmsMetadataKeyServiceRestStub, @@ -625,6 +1096,32 @@ def __call__( ) return resp + @property + def batch_activate_cms_metadata_keys( + self, + ) -> Callable[ + [cms_metadata_key_service.BatchActivateCmsMetadataKeysRequest], + cms_metadata_key_service.BatchActivateCmsMetadataKeysResponse, + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._BatchActivateCmsMetadataKeys( + self._session, self._host, self._interceptor + ) # type: ignore + + @property + def batch_deactivate_cms_metadata_keys( + self, + ) -> Callable[ + [cms_metadata_key_service.BatchDeactivateCmsMetadataKeysRequest], + cms_metadata_key_service.BatchDeactivateCmsMetadataKeysResponse, + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._BatchDeactivateCmsMetadataKeys( + self._session, self._host, self._interceptor + ) # type: ignore + @property def get_cms_metadata_key( self, @@ -647,6 +1144,121 @@ def list_cms_metadata_keys( # In C++ this would require a dynamic_cast return self._ListCmsMetadataKeys(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseCmsMetadataKeyServiceRestTransport._BaseCancelOperation, + CmsMetadataKeyServiceRestStub, + ): + def __hash__(self): + return hash("CmsMetadataKeyServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseCmsMetadataKeyServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseCmsMetadataKeyServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseCmsMetadataKeyServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.CmsMetadataKeyServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.CmsMetadataKeyService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + CmsMetadataKeyServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/rest_base.py index 13f732f8397c..544af9a596e5 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_key_service/transports/rest_base.py @@ -91,6 +91,126 @@ def __init__( api_audience=api_audience, ) + class _BaseBatchActivateCmsMetadataKeys: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{parent=networks/*}/cmsMetadataKeys:batchActivate", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = ( + cms_metadata_key_service.BatchActivateCmsMetadataKeysRequest.pb(request) + ) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=True + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=True, + ) + ) + query_params.update( + _BaseCmsMetadataKeyServiceRestTransport._BaseBatchActivateCmsMetadataKeys._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseBatchDeactivateCmsMetadataKeys: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{parent=networks/*}/cmsMetadataKeys:batchDeactivate", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = ( + cms_metadata_key_service.BatchDeactivateCmsMetadataKeysRequest.pb( + request + ) + ) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=True + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=True, + ) + ) + query_params.update( + _BaseCmsMetadataKeyServiceRestTransport._BaseBatchDeactivateCmsMetadataKeys._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + class _BaseGetCmsMetadataKey: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -185,6 +305,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/client.py index 5443834c6ff3..86621a87af92 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/client.py @@ -1009,6 +1009,270 @@ def sample_list_cms_metadata_values(): # Done; return the response. return response + def batch_activate_cms_metadata_values( + self, + request: Optional[ + Union[ + cms_metadata_value_service.BatchActivateCmsMetadataValuesRequest, dict + ] + ] = None, + *, + parent: Optional[str] = None, + names: Optional[MutableSequence[str]] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse: + r"""API to activate a list of ``CmsMetadataValue`` objects. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.ads import admanager_v1 + + def sample_batch_activate_cms_metadata_values(): + # Create a client + client = admanager_v1.CmsMetadataValueServiceClient() + + # Initialize request argument(s) + request = admanager_v1.BatchActivateCmsMetadataValuesRequest( + parent="parent_value", + names=['names_value1', 'names_value2'], + ) + + # Make the request + response = client.batch_activate_cms_metadata_values(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.BatchActivateCmsMetadataValuesRequest, dict]): + The request object. Request object for ``BatchActivateCmsMetadataValues`` + method. + parent (str): + Required. The parent resource where + ``CmsMetadataValues`` will be activated. Format: + ``networks/{network_code}`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + names (MutableSequence[str]): + Required. The resource names of the + ``CmsMetadataValue``\ s to activate. Format: + ``networks/{network_code}/cmsMetadataValues/{cms_metadata_value_id}`` + + This corresponds to the ``names`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.ads.admanager_v1.types.BatchActivateCmsMetadataValuesResponse: + Response object for BatchActivateCmsMetadataValues + method. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [parent, names] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance( + request, cms_metadata_value_service.BatchActivateCmsMetadataValuesRequest + ): + request = cms_metadata_value_service.BatchActivateCmsMetadataValuesRequest( + request + ) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if names is not None: + request.names = names + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.batch_activate_cms_metadata_values + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def batch_deactivate_cms_metadata_values( + self, + request: Optional[ + Union[ + cms_metadata_value_service.BatchDeactivateCmsMetadataValuesRequest, dict + ] + ] = None, + *, + parent: Optional[str] = None, + names: Optional[MutableSequence[str]] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse: + r"""API to deactivate a list of ``CmsMetadataValue`` objects. + + .. code-block:: python + + # This snippet has been automatically generated and should be regarded as a + # code template only. + # It will require modifications to work: + # - It may require correct/in-range values for request initialization. + # - It may require specifying regional endpoints when creating the service + # client as shown in: + # https://googleapis.dev/python/google-api-core/latest/client_options.html + from google.ads import admanager_v1 + + def sample_batch_deactivate_cms_metadata_values(): + # Create a client + client = admanager_v1.CmsMetadataValueServiceClient() + + # Initialize request argument(s) + request = admanager_v1.BatchDeactivateCmsMetadataValuesRequest( + parent="parent_value", + names=['names_value1', 'names_value2'], + ) + + # Make the request + response = client.batch_deactivate_cms_metadata_values(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.BatchDeactivateCmsMetadataValuesRequest, dict]): + The request object. Request object for ``BatchDeactivateCmsMetadataValues`` + method. + parent (str): + Required. The parent resource where + ``CmsMetadataValues`` will be deactivated. Format: + ``networks/{network_code}`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + names (MutableSequence[str]): + Required. The resource names of the + ``CmsMetadataValue``\ s to deactivate. Format: + ``networks/{network_code}/cmsMetadataValues/{cms_metadata_value_id}`` + + This corresponds to the ``names`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + google.ads.admanager_v1.types.BatchDeactivateCmsMetadataValuesResponse: + Response object for BatchDeactivateCmsMetadataValues + method. + + """ + # Create or coerce a protobuf request object. + # - Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + flattened_params = [parent, names] + has_flattened_params = ( + len([param for param in flattened_params if param is not None]) > 0 + ) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # - Use the request object if provided (there's no risk of modifying the input as + # there are no flattened fields), or create one. + if not isinstance( + request, cms_metadata_value_service.BatchDeactivateCmsMetadataValuesRequest + ): + request = ( + cms_metadata_value_service.BatchDeactivateCmsMetadataValuesRequest( + request + ) + ) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if names is not None: + request.names = names + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.batch_deactivate_cms_metadata_values + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + def __enter__(self) -> "CmsMetadataValueServiceClient": return self @@ -1085,6 +1349,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/base.py index 0d2c9eb686f8..263dc502423a 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/base.py @@ -43,7 +43,10 @@ class CmsMetadataValueServiceTransport(abc.ABC): """Abstract transport class for CmsMetadataValueService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -156,6 +159,21 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.batch_activate_cms_metadata_values: gapic_v1.method.wrap_method( + self.batch_activate_cms_metadata_values, + default_timeout=None, + client_info=client_info, + ), + self.batch_deactivate_cms_metadata_values: gapic_v1.method.wrap_method( + self.batch_deactivate_cms_metadata_values, + default_timeout=None, + client_info=client_info, + ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -196,6 +214,34 @@ def list_cms_metadata_values( ]: raise NotImplementedError() + @property + def batch_activate_cms_metadata_values( + self, + ) -> Callable[ + [cms_metadata_value_service.BatchActivateCmsMetadataValuesRequest], + Union[ + cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse, + Awaitable[ + cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse + ], + ], + ]: + raise NotImplementedError() + + @property + def batch_deactivate_cms_metadata_values( + self, + ) -> Callable[ + [cms_metadata_value_service.BatchDeactivateCmsMetadataValuesRequest], + Union[ + cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse, + Awaitable[ + cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse + ], + ], + ]: + raise NotImplementedError() + @property def get_operation( self, @@ -205,6 +251,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/rest.py index d22eb3f9c2bc..d802bc2747a0 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/rest.py @@ -76,6 +76,22 @@ class CmsMetadataValueServiceRestInterceptor: .. code-block:: python class MyCustomCmsMetadataValueServiceInterceptor(CmsMetadataValueServiceRestInterceptor): + def pre_batch_activate_cms_metadata_values(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_activate_cms_metadata_values(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_batch_deactivate_cms_metadata_values(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_deactivate_cms_metadata_values(self, response): + logging.log(f"Received response: {response}") + return response + def pre_get_cms_metadata_value(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -98,6 +114,112 @@ def post_list_cms_metadata_values(self, response): """ + def pre_batch_activate_cms_metadata_values( + self, + request: cms_metadata_value_service.BatchActivateCmsMetadataValuesRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cms_metadata_value_service.BatchActivateCmsMetadataValuesRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_activate_cms_metadata_values + + Override in a subclass to manipulate the request or metadata + before they are sent to the CmsMetadataValueService server. + """ + return request, metadata + + def post_batch_activate_cms_metadata_values( + self, + response: cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse, + ) -> cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse: + """Post-rpc interceptor for batch_activate_cms_metadata_values + + DEPRECATED. Please use the `post_batch_activate_cms_metadata_values_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CmsMetadataValueService server but before + it is returned to user code. This `post_batch_activate_cms_metadata_values` interceptor runs + before the `post_batch_activate_cms_metadata_values_with_metadata` interceptor. + """ + return response + + def post_batch_activate_cms_metadata_values_with_metadata( + self, + response: cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_activate_cms_metadata_values + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CmsMetadataValueService server but before it is returned to user code. + + We recommend only using this `post_batch_activate_cms_metadata_values_with_metadata` + interceptor in new development instead of the `post_batch_activate_cms_metadata_values` interceptor. + When both interceptors are used, this `post_batch_activate_cms_metadata_values_with_metadata` interceptor runs after the + `post_batch_activate_cms_metadata_values` interceptor. The (possibly modified) response returned by + `post_batch_activate_cms_metadata_values` will be passed to + `post_batch_activate_cms_metadata_values_with_metadata`. + """ + return response, metadata + + def pre_batch_deactivate_cms_metadata_values( + self, + request: cms_metadata_value_service.BatchDeactivateCmsMetadataValuesRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cms_metadata_value_service.BatchDeactivateCmsMetadataValuesRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_deactivate_cms_metadata_values + + Override in a subclass to manipulate the request or metadata + before they are sent to the CmsMetadataValueService server. + """ + return request, metadata + + def post_batch_deactivate_cms_metadata_values( + self, + response: cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse, + ) -> cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse: + """Post-rpc interceptor for batch_deactivate_cms_metadata_values + + DEPRECATED. Please use the `post_batch_deactivate_cms_metadata_values_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CmsMetadataValueService server but before + it is returned to user code. This `post_batch_deactivate_cms_metadata_values` interceptor runs + before the `post_batch_deactivate_cms_metadata_values_with_metadata` interceptor. + """ + return response + + def post_batch_deactivate_cms_metadata_values_with_metadata( + self, + response: cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_deactivate_cms_metadata_values + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CmsMetadataValueService server but before it is returned to user code. + + We recommend only using this `post_batch_deactivate_cms_metadata_values_with_metadata` + interceptor in new development instead of the `post_batch_deactivate_cms_metadata_values` interceptor. + When both interceptors are used, this `post_batch_deactivate_cms_metadata_values_with_metadata` interceptor runs after the + `post_batch_deactivate_cms_metadata_values` interceptor. The (possibly modified) response returned by + `post_batch_deactivate_cms_metadata_values` will be passed to + `post_batch_deactivate_cms_metadata_values_with_metadata`. + """ + return response, metadata + def pre_get_cms_metadata_value( self, request: cms_metadata_value_service.GetCmsMetadataValueRequest, @@ -202,6 +324,29 @@ def post_list_cms_metadata_values_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the CmsMetadataValueService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the CmsMetadataValueService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -321,6 +466,340 @@ def __init__( self._interceptor = interceptor or CmsMetadataValueServiceRestInterceptor() self._prep_wrapped_messages(client_info) + class _BatchActivateCmsMetadataValues( + _BaseCmsMetadataValueServiceRestTransport._BaseBatchActivateCmsMetadataValues, + CmsMetadataValueServiceRestStub, + ): + def __hash__(self): + return hash( + "CmsMetadataValueServiceRestTransport.BatchActivateCmsMetadataValues" + ) + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: cms_metadata_value_service.BatchActivateCmsMetadataValuesRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse: + r"""Call the batch activate cms + metadata values method over HTTP. + + Args: + request (~.cms_metadata_value_service.BatchActivateCmsMetadataValuesRequest): + The request object. Request object for ``BatchActivateCmsMetadataValues`` + method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse: + Response object for ``BatchActivateCmsMetadataValues`` + method. + + """ + + http_options = _BaseCmsMetadataValueServiceRestTransport._BaseBatchActivateCmsMetadataValues._get_http_options() + + request, metadata = ( + self._interceptor.pre_batch_activate_cms_metadata_values( + request, metadata + ) + ) + transcoded_request = _BaseCmsMetadataValueServiceRestTransport._BaseBatchActivateCmsMetadataValues._get_transcoded_request( + http_options, request + ) + + body = _BaseCmsMetadataValueServiceRestTransport._BaseBatchActivateCmsMetadataValues._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseCmsMetadataValueServiceRestTransport._BaseBatchActivateCmsMetadataValues._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.CmsMetadataValueServiceClient.BatchActivateCmsMetadataValues", + extra={ + "serviceName": "google.ads.admanager.v1.CmsMetadataValueService", + "rpcName": "BatchActivateCmsMetadataValues", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CmsMetadataValueServiceRestTransport._BatchActivateCmsMetadataValues._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse() + pb_resp = ( + cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse.pb( + resp + ) + ) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_batch_activate_cms_metadata_values(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = ( + self._interceptor.post_batch_activate_cms_metadata_values_with_metadata( + resp, response_metadata + ) + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse.to_json( + response + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.ads.admanager_v1.CmsMetadataValueServiceClient.batch_activate_cms_metadata_values", + extra={ + "serviceName": "google.ads.admanager.v1.CmsMetadataValueService", + "rpcName": "BatchActivateCmsMetadataValues", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _BatchDeactivateCmsMetadataValues( + _BaseCmsMetadataValueServiceRestTransport._BaseBatchDeactivateCmsMetadataValues, + CmsMetadataValueServiceRestStub, + ): + def __hash__(self): + return hash( + "CmsMetadataValueServiceRestTransport.BatchDeactivateCmsMetadataValues" + ) + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + data=body, + ) + return response + + def __call__( + self, + request: cms_metadata_value_service.BatchDeactivateCmsMetadataValuesRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse: + r"""Call the batch deactivate cms + metadata values method over HTTP. + + Args: + request (~.cms_metadata_value_service.BatchDeactivateCmsMetadataValuesRequest): + The request object. Request object for ``BatchDeactivateCmsMetadataValues`` + method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + + Returns: + ~.cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse: + Response object for ``BatchDeactivateCmsMetadataValues`` + method. + + """ + + http_options = _BaseCmsMetadataValueServiceRestTransport._BaseBatchDeactivateCmsMetadataValues._get_http_options() + + request, metadata = ( + self._interceptor.pre_batch_deactivate_cms_metadata_values( + request, metadata + ) + ) + transcoded_request = _BaseCmsMetadataValueServiceRestTransport._BaseBatchDeactivateCmsMetadataValues._get_transcoded_request( + http_options, request + ) + + body = _BaseCmsMetadataValueServiceRestTransport._BaseBatchDeactivateCmsMetadataValues._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseCmsMetadataValueServiceRestTransport._BaseBatchDeactivateCmsMetadataValues._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = type(request).to_json(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.CmsMetadataValueServiceClient.BatchDeactivateCmsMetadataValues", + extra={ + "serviceName": "google.ads.admanager.v1.CmsMetadataValueService", + "rpcName": "BatchDeactivateCmsMetadataValues", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CmsMetadataValueServiceRestTransport._BatchDeactivateCmsMetadataValues._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + body, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse() + pb_resp = ( + cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse.pb( + resp + ) + ) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_batch_deactivate_cms_metadata_values(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = ( + self._interceptor.post_batch_deactivate_cms_metadata_values_with_metadata( + resp, response_metadata + ) + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse.to_json( + response + ) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.ads.admanager_v1.CmsMetadataValueServiceClient.batch_deactivate_cms_metadata_values", + extra={ + "serviceName": "google.ads.admanager.v1.CmsMetadataValueService", + "rpcName": "BatchDeactivateCmsMetadataValues", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + class _GetCmsMetadataValue( _BaseCmsMetadataValueServiceRestTransport._BaseGetCmsMetadataValue, CmsMetadataValueServiceRestStub, @@ -621,6 +1100,32 @@ def __call__( ) return resp + @property + def batch_activate_cms_metadata_values( + self, + ) -> Callable[ + [cms_metadata_value_service.BatchActivateCmsMetadataValuesRequest], + cms_metadata_value_service.BatchActivateCmsMetadataValuesResponse, + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._BatchActivateCmsMetadataValues( + self._session, self._host, self._interceptor + ) # type: ignore + + @property + def batch_deactivate_cms_metadata_values( + self, + ) -> Callable[ + [cms_metadata_value_service.BatchDeactivateCmsMetadataValuesRequest], + cms_metadata_value_service.BatchDeactivateCmsMetadataValuesResponse, + ]: + # The return type is fine, but mypy isn't sophisticated enough to determine what's going on here. + # In C++ this would require a dynamic_cast + return self._BatchDeactivateCmsMetadataValues( + self._session, self._host, self._interceptor + ) # type: ignore + @property def get_cms_metadata_value( self, @@ -643,6 +1148,121 @@ def list_cms_metadata_values( # In C++ this would require a dynamic_cast return self._ListCmsMetadataValues(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseCmsMetadataValueServiceRestTransport._BaseCancelOperation, + CmsMetadataValueServiceRestStub, + ): + def __hash__(self): + return hash("CmsMetadataValueServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseCmsMetadataValueServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseCmsMetadataValueServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseCmsMetadataValueServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.CmsMetadataValueServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.CmsMetadataValueService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + CmsMetadataValueServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/rest_base.py index c0f6b83b520d..eaf0aeb8ca09 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/cms_metadata_value_service/transports/rest_base.py @@ -91,6 +91,128 @@ def __init__( api_audience=api_audience, ) + class _BaseBatchActivateCmsMetadataValues: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{parent=networks/*}/cmsMetadataValues:batchActivate", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = ( + cms_metadata_value_service.BatchActivateCmsMetadataValuesRequest.pb( + request + ) + ) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=True + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=True, + ) + ) + query_params.update( + _BaseCmsMetadataValueServiceRestTransport._BaseBatchActivateCmsMetadataValues._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseBatchDeactivateCmsMetadataValues: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @classmethod + def _get_unset_required_fields(cls, message_dict): + return { + k: v + for k, v in cls.__REQUIRED_FIELDS_DEFAULT_VALUES.items() + if k not in message_dict + } + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{parent=networks/*}/cmsMetadataValues:batchDeactivate", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = ( + cms_metadata_value_service.BatchDeactivateCmsMetadataValuesRequest.pb( + request + ) + ) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @staticmethod + def _get_request_body_json(transcoded_request): + # Jsonify the request body + + body = json_format.MessageToJson( + transcoded_request["body"], use_integers_for_enums=True + ) + return body + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads( + json_format.MessageToJson( + transcoded_request["query_params"], + use_integers_for_enums=True, + ) + ) + query_params.update( + _BaseCmsMetadataValueServiceRestTransport._BaseBatchDeactivateCmsMetadataValues._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + class _BaseGetCmsMetadataValue: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -189,6 +311,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/client.py index 8d9a27e26e2f..563b20dcba6d 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/client.py @@ -853,7 +853,7 @@ def sample_get_company(): Returns: google.ads.admanager_v1.types.Company: - The Company resource. + The [Company][google.ads.admanager.v1.Company] resource. """ # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have @@ -1099,6 +1099,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/base.py index 9676a1f70dd3..379614be64fa 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/base.py @@ -40,7 +40,10 @@ class CompanyServiceTransport(abc.ABC): """Abstract transport class for CompanyService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -153,6 +156,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -199,6 +207,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/rest.py index a1953557ac95..8091fa4cc1ac 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/rest.py @@ -193,6 +193,29 @@ def post_list_companies_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanyService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the CompanyService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -363,7 +386,7 @@ def __call__( Returns: ~.company_messages.Company: - The ``Company`` resource. + The [Company][google.ads.admanager.v1.Company] resource. """ http_options = ( @@ -624,6 +647,118 @@ def list_companies( # In C++ this would require a dynamic_cast return self._ListCompanies(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseCompanyServiceRestTransport._BaseCancelOperation, CompanyServiceRestStub + ): + def __hash__(self): + return hash("CompanyServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseCompanyServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseCompanyServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseCompanyServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.CompanyServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.CompanyService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanyServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/rest_base.py index 65465977a9fb..e974231fc0a6 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/company_service/transports/rest_base.py @@ -182,6 +182,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/client.py index f5098ec9be58..d62989e4d039 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/client.py @@ -1287,7 +1287,7 @@ def sample_update_contact(): on the ``request`` instance; if ``request`` is provided, this should not be set. update_mask (google.protobuf.field_mask_pb2.FieldMask): - Required. The list of fields to + Optional. The list of fields to update. This corresponds to the ``update_mask`` field @@ -1557,6 +1557,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/base.py index 22cdee1ddad9..c65d25c45d31 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/base.py @@ -40,7 +40,10 @@ class ContactServiceTransport(abc.ABC): """Abstract transport class for ContactService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -173,6 +176,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -261,6 +269,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/rest.py index 9d20fc40049b..b7f040edcfc9 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/rest.py @@ -425,6 +425,29 @@ def post_update_contact_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the ContactService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the ContactService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -1518,6 +1541,118 @@ def update_contact( # In C++ this would require a dynamic_cast return self._UpdateContact(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseContactServiceRestTransport._BaseCancelOperation, ContactServiceRestStub + ): + def __hash__(self): + return hash("ContactServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseContactServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseContactServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseContactServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.ContactServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.ContactService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ContactServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/rest_base.py index 9f705472d629..5d02bd66173f 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/contact_service/transports/rest_base.py @@ -357,9 +357,7 @@ class _BaseUpdateContact: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") - __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = { - "updateMask": {}, - } + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} @classmethod def _get_unset_required_fields(cls, message_dict): @@ -412,6 +410,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/client.py index aa4e7298c557..43e62ba2f0d9 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/client.py @@ -1062,6 +1062,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/base.py index 81b605be73d8..fb393230a1fb 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/base.py @@ -43,7 +43,10 @@ class ContentBundleServiceTransport(abc.ABC): """Abstract transport class for ContentBundleService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -156,6 +159,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -205,6 +213,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/rest.py index a7c5ae169f05..320bd12bdba5 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/rest.py @@ -201,6 +201,29 @@ def post_list_content_bundles_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the ContentBundleService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the ContentBundleService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -652,6 +675,119 @@ def list_content_bundles( # In C++ this would require a dynamic_cast return self._ListContentBundles(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseContentBundleServiceRestTransport._BaseCancelOperation, + ContentBundleServiceRestStub, + ): + def __hash__(self): + return hash("ContentBundleServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseContentBundleServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseContentBundleServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseContentBundleServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.ContentBundleServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.ContentBundleService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ContentBundleServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/rest_base.py index 8845c8e21077..756070068989 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_bundle_service/transports/rest_base.py @@ -185,6 +185,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/client.py index 506edfa50657..d2daf6a2ef6d 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/client.py @@ -1050,6 +1050,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/base.py index 0176cbf0dd2c..57b96cfaadcd 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/base.py @@ -40,7 +40,10 @@ class ContentLabelServiceTransport(abc.ABC): """Abstract transport class for ContentLabelService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -153,6 +156,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -202,6 +210,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/rest.py index eb55a0298192..6a4b4f94657d 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/rest.py @@ -198,6 +198,29 @@ def post_list_content_labels_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the ContentLabelService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the ContentLabelService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -639,6 +662,119 @@ def list_content_labels( # In C++ this would require a dynamic_cast return self._ListContentLabels(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseContentLabelServiceRestTransport._BaseCancelOperation, + ContentLabelServiceRestStub, + ): + def __hash__(self): + return hash("ContentLabelServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseContentLabelServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseContentLabelServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseContentLabelServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.ContentLabelServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.ContentLabelService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ContentLabelServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/rest_base.py index 1569ca8e6c15..77da4417770c 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_label_service/transports/rest_base.py @@ -182,6 +182,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/client.py index 021c7cb63bb2..830ccb77e01d 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/client.py @@ -792,9 +792,7 @@ def sample_get_content(): Returns: google.ads.admanager_v1.types.Content: - A piece of content from a Publisher's - CMS. - + A piece of Content from a Publisher's CMS. """ # Create or coerce a protobuf request object. # - Quick check: If we got a request object, we should *not* have @@ -1040,6 +1038,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/base.py index 6de29b6f9879..e1f629d514f6 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/base.py @@ -40,7 +40,10 @@ class ContentServiceTransport(abc.ABC): """Abstract transport class for ContentService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -153,6 +156,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -199,6 +207,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/rest.py index 57acef1fcff4..8531165da3d3 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/rest.py @@ -193,6 +193,29 @@ def post_list_content_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the ContentService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the ContentService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -363,9 +386,7 @@ def __call__( Returns: ~.content_messages.Content: - A piece of content from a Publisher's - CMS. - + A piece of ``Content`` from a Publisher's CMS. """ http_options = ( @@ -626,6 +647,118 @@ def list_content( # In C++ this would require a dynamic_cast return self._ListContent(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseContentServiceRestTransport._BaseCancelOperation, ContentServiceRestStub + ): + def __hash__(self): + return hash("ContentServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseContentServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseContentServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseContentServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.ContentServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.ContentService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ContentServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/rest_base.py index 718d6b28d58c..414291d93e3a 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/content_service/transports/rest_base.py @@ -182,6 +182,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/client.py index 501786cfc3b3..b093eebb5910 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/client.py @@ -1065,6 +1065,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/base.py index 05f902d33956..da239abda30b 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/base.py @@ -43,7 +43,10 @@ class CreativeTemplateServiceTransport(abc.ABC): """Abstract transport class for CreativeTemplateService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -156,6 +159,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -205,6 +213,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/rest.py index 0cb8564dd5ae..dbd9c7c7e67c 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/rest.py @@ -202,6 +202,29 @@ def post_list_creative_templates_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the CreativeTemplateService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the CreativeTemplateService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -645,6 +668,121 @@ def list_creative_templates( # In C++ this would require a dynamic_cast return self._ListCreativeTemplates(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseCreativeTemplateServiceRestTransport._BaseCancelOperation, + CreativeTemplateServiceRestStub, + ): + def __hash__(self): + return hash("CreativeTemplateServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseCreativeTemplateServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseCreativeTemplateServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseCreativeTemplateServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.CreativeTemplateServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.CreativeTemplateService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + CreativeTemplateServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/rest_base.py index ff36f4a1c89f..92b6c1cd13f0 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_template_service/transports/rest_base.py @@ -189,6 +189,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/client.py index cf9a98dc34a1..2c866fb55e2c 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/client.py @@ -1276,7 +1276,7 @@ def sample_update_custom_field(): on the ``request`` instance; if ``request`` is provided, this should not be set. update_mask (google.protobuf.field_mask_pb2.FieldMask): - Required. The list of fields to + Optional. The list of fields to update. This corresponds to the ``update_mask`` field @@ -1789,6 +1789,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/base.py index 806d95c5b050..87838e2fed6b 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/base.py @@ -40,7 +40,10 @@ class CustomFieldServiceTransport(abc.ABC): """Abstract transport class for CustomFieldService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -183,6 +186,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -304,6 +312,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/rest.py index 78a3a34359b5..74e6cb4c670c 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/rest.py @@ -556,6 +556,29 @@ def post_update_custom_field_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the CustomFieldService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the CustomFieldService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -2012,6 +2035,119 @@ def update_custom_field( # In C++ this would require a dynamic_cast return self._UpdateCustomField(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseCustomFieldServiceRestTransport._BaseCancelOperation, + CustomFieldServiceRestStub, + ): + def __hash__(self): + return hash("CustomFieldServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseCustomFieldServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseCustomFieldServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseCustomFieldServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.CustomFieldServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.CustomFieldService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CustomFieldServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/rest_base.py index 75ca4728b6a5..d98257318780 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_field_service/transports/rest_base.py @@ -475,9 +475,7 @@ class _BaseUpdateCustomField: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") - __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = { - "updateMask": {}, - } + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} @classmethod def _get_unset_required_fields(cls, message_dict): @@ -530,6 +528,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/client.py index 04561d2cdbac..017f61d03e9b 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/client.py @@ -1312,7 +1312,7 @@ def sample_update_custom_targeting_key(): on the ``request`` instance; if ``request`` is provided, this should not be set. update_mask (google.protobuf.field_mask_pb2.FieldMask): - Required. The list of fields to + Optional. The list of fields to update. This corresponds to the ``update_mask`` field @@ -1862,6 +1862,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/base.py index 2f3bf31b97aa..f2307e0442f5 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/base.py @@ -43,7 +43,10 @@ class CustomTargetingKeyServiceTransport(abc.ABC): """Abstract transport class for CustomTargetingKeyService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -186,6 +189,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -315,6 +323,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/rest.py index 082b65218469..5c9d705c2d76 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/rest.py @@ -566,6 +566,29 @@ def post_update_custom_targeting_key_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the CustomTargetingKeyService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the CustomTargetingKeyService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -2074,6 +2097,121 @@ def update_custom_targeting_key( self._session, self._host, self._interceptor ) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseCustomTargetingKeyServiceRestTransport._BaseCancelOperation, + CustomTargetingKeyServiceRestStub, + ): + def __hash__(self): + return hash("CustomTargetingKeyServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseCustomTargetingKeyServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseCustomTargetingKeyServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseCustomTargetingKeyServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.CustomTargetingKeyServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.CustomTargetingKeyService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + CustomTargetingKeyServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/rest_base.py index 4ee80a084caa..2c1891979915 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_key_service/transports/rest_base.py @@ -494,9 +494,7 @@ class _BaseUpdateCustomTargetingKey: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") - __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = { - "updateMask": {}, - } + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} @classmethod def _get_unset_required_fields(cls, message_dict): @@ -551,6 +549,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/client.py index 680ef2c0a8da..351721a45702 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/client.py @@ -1098,6 +1098,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/base.py index ba2dee8ece07..704a5b1102d3 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/base.py @@ -43,7 +43,10 @@ class CustomTargetingValueServiceTransport(abc.ABC): """Abstract transport class for CustomTargetingValueService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -156,6 +159,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -205,6 +213,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/rest.py index e73ba5149850..8e128909d01c 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/rest.py @@ -202,6 +202,29 @@ def post_list_custom_targeting_values_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the CustomTargetingValueService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the CustomTargetingValueService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -657,6 +680,121 @@ def list_custom_targeting_values( self._session, self._host, self._interceptor ) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseCustomTargetingValueServiceRestTransport._BaseCancelOperation, + CustomTargetingValueServiceRestStub, + ): + def __hash__(self): + return hash("CustomTargetingValueServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseCustomTargetingValueServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseCustomTargetingValueServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseCustomTargetingValueServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.CustomTargetingValueServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.CustomTargetingValueService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + CustomTargetingValueServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/rest_base.py index 345d2336151a..b8068a5c5128 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/custom_targeting_value_service/transports/rest_base.py @@ -203,6 +203,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/client.py index e910c3e9a828..547854f8b34f 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/client.py @@ -1062,6 +1062,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/base.py index e8d8ba9292f1..7170b6e396ab 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/base.py @@ -43,7 +43,10 @@ class DeviceCapabilityServiceTransport(abc.ABC): """Abstract transport class for DeviceCapabilityService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -156,6 +159,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -205,6 +213,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/rest.py index f940f6a8dbab..87b2cdd81ac5 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/rest.py @@ -202,6 +202,29 @@ def post_list_device_capabilities_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the DeviceCapabilityService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the DeviceCapabilityService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -643,6 +666,121 @@ def list_device_capabilities( self._session, self._host, self._interceptor ) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseDeviceCapabilityServiceRestTransport._BaseCancelOperation, + DeviceCapabilityServiceRestStub, + ): + def __hash__(self): + return hash("DeviceCapabilityServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseDeviceCapabilityServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseDeviceCapabilityServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseDeviceCapabilityServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.DeviceCapabilityServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.DeviceCapabilityService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + DeviceCapabilityServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/rest_base.py index 3c7ad8fe9583..2c59cd29158f 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_capability_service/transports/rest_base.py @@ -189,6 +189,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/client.py index 55f468d900f4..85c08f012caf 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/client.py @@ -1058,6 +1058,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/base.py index 3ee09eb4a6f8..6fb54aadebee 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/base.py @@ -43,7 +43,10 @@ class DeviceCategoryServiceTransport(abc.ABC): """Abstract transport class for DeviceCategoryService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -156,6 +159,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -205,6 +213,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/rest.py index c147f4705b0f..d088c4a5c9a6 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/rest.py @@ -201,6 +201,29 @@ def post_list_device_categories_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the DeviceCategoryService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the DeviceCategoryService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -646,6 +669,121 @@ def list_device_categories( # In C++ this would require a dynamic_cast return self._ListDeviceCategories(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseDeviceCategoryServiceRestTransport._BaseCancelOperation, + DeviceCategoryServiceRestStub, + ): + def __hash__(self): + return hash("DeviceCategoryServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseDeviceCategoryServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseDeviceCategoryServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseDeviceCategoryServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.DeviceCategoryServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.DeviceCategoryService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + DeviceCategoryServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/rest_base.py index e1f0032f8b06..fbf694444bb0 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_category_service/transports/rest_base.py @@ -185,6 +185,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/client.py index a04288687545..592a88c2f71d 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/client.py @@ -1068,6 +1068,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/base.py index de8ad3350a17..50fcdda1b524 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/base.py @@ -43,7 +43,10 @@ class DeviceManufacturerServiceTransport(abc.ABC): """Abstract transport class for DeviceManufacturerService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -156,6 +159,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -205,6 +213,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/rest.py index 665425560166..65a89ae4a212 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/rest.py @@ -202,6 +202,29 @@ def post_list_device_manufacturers_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the DeviceManufacturerService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the DeviceManufacturerService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -649,6 +672,121 @@ def list_device_manufacturers( self._session, self._host, self._interceptor ) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseDeviceManufacturerServiceRestTransport._BaseCancelOperation, + DeviceManufacturerServiceRestStub, + ): + def __hash__(self): + return hash("DeviceManufacturerServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseDeviceManufacturerServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseDeviceManufacturerServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseDeviceManufacturerServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.DeviceManufacturerServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.DeviceManufacturerService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + DeviceManufacturerServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/rest_base.py index 1c431e56d37a..c9b755aec4aa 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/device_manufacturer_service/transports/rest_base.py @@ -189,6 +189,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/client.py index 8fff463a494c..fe8380866d36 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/client.py @@ -1195,7 +1195,7 @@ def sample_update_entity_signals_mapping(): on the ``request`` instance; if ``request`` is provided, this should not be set. update_mask (google.protobuf.field_mask_pb2.FieldMask): - Required. The list of fields to + Optional. The list of fields to update. This corresponds to the ``update_mask`` field @@ -1632,6 +1632,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/base.py index 41d700d02a17..9cdb96a6b30f 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/base.py @@ -43,7 +43,10 @@ class EntitySignalsMappingServiceTransport(abc.ABC): """Abstract transport class for EntitySignalsMappingService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -176,6 +179,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -277,6 +285,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/rest.py index 28598fb8f036..828f7dcdb43d 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/rest.py @@ -444,6 +444,29 @@ def post_update_entity_signals_mapping_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the EntitySignalsMappingService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the EntitySignalsMappingService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -1603,6 +1626,121 @@ def update_entity_signals_mapping( self._session, self._host, self._interceptor ) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseEntitySignalsMappingServiceRestTransport._BaseCancelOperation, + EntitySignalsMappingServiceRestStub, + ): + def __hash__(self): + return hash("EntitySignalsMappingServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseEntitySignalsMappingServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseEntitySignalsMappingServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseEntitySignalsMappingServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.EntitySignalsMappingServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.EntitySignalsMappingService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + EntitySignalsMappingServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/rest_base.py index 0e5bf95e1500..6d06e70b37d7 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/entity_signals_mapping_service/transports/rest_base.py @@ -378,9 +378,7 @@ class _BaseUpdateEntitySignalsMapping: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") - __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = { - "updateMask": {}, - } + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} @classmethod def _get_unset_required_fields(cls, message_dict): @@ -437,6 +435,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/client.py index 2cf2295c0484..01caaadc35ca 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/client.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/client.py @@ -1045,6 +1045,65 @@ def get_operation( self._add_cred_info_for_auth_errors(e) raise e + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry.Retry): Designation of what errors, + if any, should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + Returns: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( gapic_version=package_version.__version__ diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/base.py index 89873f4b89ab..ca65a0b9f2e8 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/base.py @@ -40,7 +40,10 @@ class GeoTargetServiceTransport(abc.ABC): """Abstract transport class for GeoTargetService.""" - AUTH_SCOPES = ("https://www.googleapis.com/auth/admanager",) + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) DEFAULT_HOST: str = "admanager.googleapis.com" @@ -153,6 +156,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), self.get_operation: gapic_v1.method.wrap_method( self.get_operation, default_timeout=None, @@ -199,6 +207,15 @@ def get_operation( ]: raise NotImplementedError() + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/rest.py index ab7a7fdea2e5..a6e58b8ff152 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/rest.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/rest.py @@ -195,6 +195,29 @@ def post_list_geo_targets_with_metadata( """ return response, metadata + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the GeoTargetService server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the GeoTargetService server but before + it is returned to user code. + """ + return response + def pre_get_operation( self, request: operations_pb2.GetOperationRequest, @@ -629,6 +652,119 @@ def list_geo_targets( # In C++ this would require a dynamic_cast return self._ListGeoTargets(self._session, self._host, self._interceptor) # type: ignore + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseGeoTargetServiceRestTransport._BaseCancelOperation, + GeoTargetServiceRestStub, + ): + def __hash__(self): + return hash("GeoTargetServiceRestTransport.CancelOperation") + + @staticmethod + def _get_response( + host, + metadata, + query_params, + session, + timeout, + transcoded_request, + body=None, + ): + uri = transcoded_request["uri"] + method = transcoded_request["method"] + headers = dict(metadata) + headers["Content-Type"] = "application/json" + response = getattr(session, method)( + "{host}{uri}".format(host=host, uri=uri), + timeout=timeout, + headers=headers, + params=rest_helpers.flatten_query_params(query_params, strict=True), + ) + return response + + def __call__( + self, + request: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, Union[str, bytes]]]): Key/value pairs which should be + sent along with the request as metadata. Normally, each value must be of type `str`, + but for metadata keys ending with the suffix `-bin`, the corresponding values must + be of type `bytes`. + """ + + http_options = _BaseGeoTargetServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseGeoTargetServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseGeoTargetServiceRestTransport._BaseCancelOperation._get_query_params_json( + transcoded_request + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + request_url = "{host}{uri}".format( + host=self._host, uri=transcoded_request["uri"] + ) + method = transcoded_request["method"] + try: + request_payload = json_format.MessageToJson(request) + except: + request_payload = None + http_request = { + "payload": request_payload, + "requestMethod": method, + "requestUrl": request_url, + "headers": dict(metadata), + } + _LOGGER.debug( + f"Sending request for google.ads.admanager_v1.GeoTargetServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.GeoTargetService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = GeoTargetServiceRestTransport._CancelOperation._get_response( + self._host, + metadata, + query_params, + self._session, + timeout, + transcoded_request, + ) + + # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + return self._interceptor.post_cancel_operation(None) + @property def get_operation(self): return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/rest_base.py index 8f69f7adcfa3..e1c9f2d90dbf 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/rest_base.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/geo_target_service/transports/rest_base.py @@ -182,6 +182,31 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}:cancel", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + request_kwargs = json_format.MessageToDict(request) + transcoded_request = path_template.transcode(http_options, **request_kwargs) + return transcoded_request + + @staticmethod + def _get_query_params_json(transcoded_request): + query_params = json.loads(json.dumps(transcoded_request["query_params"])) + return query_params + class _BaseGetOperation: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/__init__.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/__init__.py new file mode 100644 index 000000000000..d60805c15dbf --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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 +# +# http://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. +# +from .client import LabelServiceClient + +__all__ = ("LabelServiceClient",) diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/client.py new file mode 100644 index 000000000000..c3a035957e31 --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/label_service/client.py @@ -0,0 +1,1822 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 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 +# +# http://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. +# +import json +import logging as std_logging +import os +import re +import warnings +from collections import OrderedDict +from http import HTTPStatus +from typing import ( + Callable, + Dict, + Mapping, + MutableMapping, + MutableSequence, + Optional, + Sequence, + Tuple, + Type, + Union, + cast, +) + +import google.protobuf +from google.api_core import client_options as client_options_lib +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.exceptions import MutualTLSChannelError # type: ignore +from google.auth.transport import mtls # type: ignore +from google.auth.transport.grpc import SslCredentials # type: ignore +from google.oauth2 import service_account # type: ignore + +from google.ads.admanager_v1 import gapic_version as package_version + +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object, None] # type: ignore + +try: + from google.api_core import client_logging # type: ignore + + CLIENT_LOGGING_SUPPORTED = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + CLIENT_LOGGING_SUPPORTED = False + +_LOGGER = std_logging.getLogger(__name__) + +import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore + +from google.ads.admanager_v1.services.label_service import pagers +from google.ads.admanager_v1.types import label_enums, label_messages, label_service + +from .transports.base import DEFAULT_CLIENT_INFO, LabelServiceTransport +from .transports.rest import LabelServiceRestTransport + + +class LabelServiceClientMeta(type): + """Metaclass for the LabelService client. + + This provides class-level methods for building and retrieving + support objects (e.g. transport) without polluting the client instance + objects. + """ + + _transport_registry = OrderedDict() # type: Dict[str, Type[LabelServiceTransport]] + _transport_registry["rest"] = LabelServiceRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[LabelServiceTransport]: + """Returns an appropriate transport class. + + Args: + label: The name of the desired transport. If none is + provided, then the first transport in the registry is used. + + Returns: + The transport class to use. + """ + # If a specific transport is requested, return that one. + if label: + return cls._transport_registry[label] + + # No transport is requested; return the default (that is, the first one + # in the dictionary). + return next(iter(cls._transport_registry.values())) + + +class LabelServiceClient(metaclass=LabelServiceClientMeta): + """Provides methods for handling ``Label`` objects.""" + + @staticmethod + def _get_default_mtls_endpoint(api_endpoint) -> Optional[str]: + """Converts api endpoint to mTLS endpoint. + + Convert "*.sandbox.googleapis.com" and "*.googleapis.com" to + "*.mtls.sandbox.googleapis.com" and "*.mtls.googleapis.com" respectively. + Args: + api_endpoint (Optional[str]): the api endpoint to convert. + Returns: + Optional[str]: converted mTLS api endpoint. + """ + if not api_endpoint: + return api_endpoint + + mtls_endpoint_re = re.compile( + r"(?P[^.]+)(?P\.mtls)?(?P\.sandbox)?(?P\.googleapis\.com)?" + ) + + m = mtls_endpoint_re.match(api_endpoint) + if m is None: + # Could not parse api_endpoint; return as-is. + return api_endpoint + + name, mtls, sandbox, googledomain = m.groups() + if mtls or not googledomain: + return api_endpoint + + if sandbox: + return api_endpoint.replace( + "sandbox.googleapis.com", "mtls.sandbox.googleapis.com" + ) + + return api_endpoint.replace(".googleapis.com", ".mtls.googleapis.com") + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "admanager.googleapis.com" + DEFAULT_MTLS_ENDPOINT = _get_default_mtls_endpoint.__func__( # type: ignore + DEFAULT_ENDPOINT + ) + + _DEFAULT_ENDPOINT_TEMPLATE = "admanager.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @staticmethod + def _use_client_cert_effective(): + """Returns whether client certificate should be used for mTLS if the + google-auth version supports should_use_client_cert automatic mTLS enablement. + + Alternatively, read from the GOOGLE_API_USE_CLIENT_CERTIFICATE env var. + + Returns: + bool: whether client certificate should be used for mTLS + Raises: + ValueError: (If using a version of google-auth without should_use_client_cert and + GOOGLE_API_USE_CLIENT_CERTIFICATE is set to an unexpected value.) + """ + # check if google-auth version supports should_use_client_cert for automatic mTLS enablement + if hasattr(mtls, "should_use_client_cert"): # pragma: NO COVER + return mtls.should_use_client_cert() + else: # pragma: NO COVER + # if unsupported, fallback to reading from env var + use_client_cert_str = os.getenv( + "GOOGLE_API_USE_CLIENT_CERTIFICATE", "false" + ).lower() + if use_client_cert_str not in ("true", "false"): + raise ValueError( + "Environment variable `GOOGLE_API_USE_CLIENT_CERTIFICATE` must be" + " either `true` or `false`" + ) + return use_client_cert_str == "true" + + @classmethod + def from_service_account_info(cls, info: dict, *args, **kwargs): + """Creates an instance of this client using the provided credentials + info. + + Args: + info (dict): The service account private key info. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + LabelServiceClient: The constructed client. + """ + credentials = service_account.Credentials.from_service_account_info(info) + kwargs["credentials"] = credentials + return cls(*args, **kwargs) + + @classmethod + def from_service_account_file(cls, filename: str, *args, **kwargs): + """Creates an instance of this client using the provided credentials + file. + + Args: + filename (str): The path to the service account private key json + file. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + LabelServiceClient: The constructed client. + """ + credentials = service_account.Credentials.from_service_account_file(filename) + kwargs["credentials"] = credentials + return cls(*args, **kwargs) + + from_service_account_json = from_service_account_file + + @property + def transport(self) -> LabelServiceTransport: + """Returns the transport used by the client instance. + + Returns: + LabelServiceTransport: The transport used by the client + instance. + """ + return self._transport + + @staticmethod + def label_path( + network_code: str, + label: str, + ) -> str: + """Returns a fully-qualified label string.""" + return "networks/{network_code}/labels/{label}".format( + network_code=network_code, + label=label, + ) + + @staticmethod + def parse_label_path(path: str) -> Dict[str, str]: + """Parses a label path into its component segments.""" + m = re.match(r"^networks/(?P.+?)/labels/(?P