diff --git a/librarian.yaml b/librarian.yaml index 59840cedc6e7..999fb433f272 100644 --- a/librarian.yaml +++ b/librarian.yaml @@ -16,8 +16,8 @@ version: v0.36.0 repo: googleapis/google-cloud-python sources: googleapis: - commit: b8486a2f44f15dc578a9dc1e17b144253079d5c1 - sha256: 12411ca5cb6c70d7c873d7058c5182a8d23fa88af8d984b0e73b1c3ad1d83766 + commit: 240b58fe7058f6fff77cba02f51d600170b6c421 + sha256: ca03f2c93b8f1e92fd75c87b2568992c96a2ecc37fde750c5bf83129fa17b407 tools: pip: - name: black diff --git a/packages/google-ads-admanager/docs/admanager_v1/child_publisher_service.rst b/packages/google-ads-admanager/docs/admanager_v1/child_publisher_service.rst new file mode 100644 index 000000000000..35d453c5959e --- /dev/null +++ b/packages/google-ads-admanager/docs/admanager_v1/child_publisher_service.rst @@ -0,0 +1,10 @@ +ChildPublisherService +--------------------------------------- + +.. automodule:: google.ads.admanager_v1.services.child_publisher_service + :members: + :inherited-members: + +.. automodule:: google.ads.admanager_v1.services.child_publisher_service.pagers + :members: + :inherited-members: diff --git a/packages/google-ads-admanager/docs/admanager_v1/creative_wrapper_service.rst b/packages/google-ads-admanager/docs/admanager_v1/creative_wrapper_service.rst new file mode 100644 index 000000000000..5109fd23cdfd --- /dev/null +++ b/packages/google-ads-admanager/docs/admanager_v1/creative_wrapper_service.rst @@ -0,0 +1,10 @@ +CreativeWrapperService +---------------------------------------- + +.. automodule:: google.ads.admanager_v1.services.creative_wrapper_service + :members: + :inherited-members: + +.. automodule:: google.ads.admanager_v1.services.creative_wrapper_service.pagers + :members: + :inherited-members: diff --git a/packages/google-ads-admanager/docs/admanager_v1/dai_authentication_key_service.rst b/packages/google-ads-admanager/docs/admanager_v1/dai_authentication_key_service.rst new file mode 100644 index 000000000000..a94e0a8e5a45 --- /dev/null +++ b/packages/google-ads-admanager/docs/admanager_v1/dai_authentication_key_service.rst @@ -0,0 +1,10 @@ +DaiAuthenticationKeyService +--------------------------------------------- + +.. automodule:: google.ads.admanager_v1.services.dai_authentication_key_service + :members: + :inherited-members: + +.. automodule:: google.ads.admanager_v1.services.dai_authentication_key_service.pagers + :members: + :inherited-members: diff --git a/packages/google-ads-admanager/docs/admanager_v1/dai_encoding_profile_service.rst b/packages/google-ads-admanager/docs/admanager_v1/dai_encoding_profile_service.rst new file mode 100644 index 000000000000..6e51410b06bc --- /dev/null +++ b/packages/google-ads-admanager/docs/admanager_v1/dai_encoding_profile_service.rst @@ -0,0 +1,10 @@ +DaiEncodingProfileService +------------------------------------------- + +.. automodule:: google.ads.admanager_v1.services.dai_encoding_profile_service + :members: + :inherited-members: + +.. automodule:: google.ads.admanager_v1.services.dai_encoding_profile_service.pagers + :members: + :inherited-members: diff --git a/packages/google-ads-admanager/docs/admanager_v1/partner_service.rst b/packages/google-ads-admanager/docs/admanager_v1/partner_service.rst new file mode 100644 index 000000000000..b65b96d1c755 --- /dev/null +++ b/packages/google-ads-admanager/docs/admanager_v1/partner_service.rst @@ -0,0 +1,10 @@ +PartnerService +-------------------------------- + +.. automodule:: google.ads.admanager_v1.services.partner_service + :members: + :inherited-members: + +.. automodule:: google.ads.admanager_v1.services.partner_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 6ee9d4b7896e..36a1b800cad8 100644 --- a/packages/google-ads-admanager/docs/admanager_v1/services_.rst +++ b/packages/google-ads-admanager/docs/admanager_v1/services_.rst @@ -14,6 +14,7 @@ Services for Google Ads Admanager v1 API browser_language_service browser_service cdn_config_service + child_publisher_service cms_metadata_key_service cms_metadata_value_service company_service @@ -23,9 +24,12 @@ Services for Google Ads Admanager v1 API content_service creative_set_service creative_template_service + creative_wrapper_service custom_field_service custom_targeting_key_service custom_targeting_value_service + dai_authentication_key_service + dai_encoding_profile_service device_capability_service device_category_service device_manufacturer_service @@ -43,6 +47,7 @@ Services for Google Ads Admanager v1 API operating_system_service operating_system_version_service order_service + partner_service placement_service private_auction_deal_service private_auction_service @@ -58,3 +63,4 @@ Services for Google Ads Admanager v1 API team_service third_party_company_service user_service + viewability_provider_service diff --git a/packages/google-ads-admanager/docs/admanager_v1/viewability_provider_service.rst b/packages/google-ads-admanager/docs/admanager_v1/viewability_provider_service.rst new file mode 100644 index 000000000000..f2646d1cb348 --- /dev/null +++ b/packages/google-ads-admanager/docs/admanager_v1/viewability_provider_service.rst @@ -0,0 +1,10 @@ +ViewabilityProviderService +-------------------------------------------- + +.. automodule:: google.ads.admanager_v1.services.viewability_provider_service + :members: + :inherited-members: + +.. automodule:: google.ads.admanager_v1.services.viewability_provider_service.pagers + :members: + :inherited-members: diff --git a/packages/google-ads-admanager/google/ads/admanager/__init__.py b/packages/google-ads-admanager/google/ads/admanager/__init__.py index c99204e7be11..3eec214d3b08 100644 --- a/packages/google-ads-admanager/google/ads/admanager/__init__.py +++ b/packages/google-ads-admanager/google/ads/admanager/__init__.py @@ -43,6 +43,9 @@ from google.ads.admanager_v1.services.cdn_config_service.client import ( CdnConfigServiceClient, ) +from google.ads.admanager_v1.services.child_publisher_service.client import ( + ChildPublisherServiceClient, +) from google.ads.admanager_v1.services.cms_metadata_key_service.client import ( CmsMetadataKeyServiceClient, ) @@ -64,6 +67,9 @@ from google.ads.admanager_v1.services.creative_template_service.client import ( CreativeTemplateServiceClient, ) +from google.ads.admanager_v1.services.creative_wrapper_service.client import ( + CreativeWrapperServiceClient, +) from google.ads.admanager_v1.services.custom_field_service.client import ( CustomFieldServiceClient, ) @@ -73,6 +79,12 @@ from google.ads.admanager_v1.services.custom_targeting_value_service.client import ( CustomTargetingValueServiceClient, ) +from google.ads.admanager_v1.services.dai_authentication_key_service.client import ( + DaiAuthenticationKeyServiceClient, +) +from google.ads.admanager_v1.services.dai_encoding_profile_service.client import ( + DaiEncodingProfileServiceClient, +) from google.ads.admanager_v1.services.device_capability_service.client import ( DeviceCapabilityServiceClient, ) @@ -118,6 +130,7 @@ OperatingSystemVersionServiceClient, ) from google.ads.admanager_v1.services.order_service.client import OrderServiceClient +from google.ads.admanager_v1.services.partner_service.client import PartnerServiceClient from google.ads.admanager_v1.services.placement_service.client import ( PlacementServiceClient, ) @@ -151,6 +164,9 @@ ThirdPartyCompanyServiceClient, ) from google.ads.admanager_v1.services.user_service.client import UserServiceClient +from google.ads.admanager_v1.services.viewability_provider_service.client import ( + ViewabilityProviderServiceClient, +) from google.ads.admanager_v1.types.ad_break_messages import AdBreak from google.ads.admanager_v1.types.ad_break_service import ( CreateAdBreakRequest, @@ -219,6 +235,7 @@ ) from google.ads.admanager_v1.types.ad_unit_enums import ( AdUnitStatusEnum, + RefreshRateTypeEnum, SmartSizeModeEnum, TargetWindowEnum, ) @@ -330,6 +347,17 @@ ChildContentEligibilityEnum, ) from google.ads.admanager_v1.types.child_publisher_messages import ChildPublisher +from google.ads.admanager_v1.types.child_publisher_service import ( + BatchCreateChildPublishersRequest, + BatchCreateChildPublishersResponse, + BatchUpdateChildPublishersRequest, + BatchUpdateChildPublishersResponse, + CreateChildPublisherRequest, + GetChildPublisherRequest, + ListChildPublishersRequest, + ListChildPublishersResponse, + UpdateChildPublisherRequest, +) from google.ads.admanager_v1.types.cms_metadata_key_enums import ( CmsMetadataKeyStatusEnum, ) @@ -362,9 +390,15 @@ ) from google.ads.admanager_v1.types.company_messages import Company from google.ads.admanager_v1.types.company_service import ( + BatchCreateCompaniesRequest, + BatchCreateCompaniesResponse, + BatchUpdateCompaniesRequest, + BatchUpdateCompaniesResponse, + CreateCompanyRequest, GetCompanyRequest, ListCompaniesRequest, ListCompaniesResponse, + UpdateCompanyRequest, ) from google.ads.admanager_v1.types.contact_enums import ContactStatusEnum from google.ads.admanager_v1.types.contact_messages import Contact @@ -412,6 +446,7 @@ ListContentRequest, ListContentResponse, ) +from google.ads.admanager_v1.types.conversion_event_enum import ConversionEventEnum from google.ads.admanager_v1.types.creative_messages import Creative from google.ads.admanager_v1.types.creative_placeholder import ( CreativePlaceholder, @@ -442,6 +477,27 @@ from google.ads.admanager_v1.types.creative_template_variable_url_type_enum import ( CreativeTemplateVariableUrlTypeEnum, ) +from google.ads.admanager_v1.types.creative_wrapper_enums import ( + CreativeWrapperOrderingEnum, + CreativeWrapperStatusEnum, + CreativeWrapperTypeEnum, +) +from google.ads.admanager_v1.types.creative_wrapper_messages import CreativeWrapper +from google.ads.admanager_v1.types.creative_wrapper_service import ( + BatchActivateCreativeWrappersRequest, + BatchActivateCreativeWrappersResponse, + BatchCreateCreativeWrappersRequest, + BatchCreateCreativeWrappersResponse, + BatchDeactivateCreativeWrappersRequest, + BatchDeactivateCreativeWrappersResponse, + BatchUpdateCreativeWrappersRequest, + BatchUpdateCreativeWrappersResponse, + CreateCreativeWrapperRequest, + GetCreativeWrapperRequest, + ListCreativeWrappersRequest, + ListCreativeWrappersResponse, + UpdateCreativeWrapperRequest, +) from google.ads.admanager_v1.types.custom_field_enums import ( CustomFieldDataTypeEnum, CustomFieldEntityTypeEnum, @@ -522,6 +578,55 @@ ListCustomTargetingValuesResponse, UpdateCustomTargetingValueRequest, ) +from google.ads.admanager_v1.types.dai_authentication_key_enums import ( + DaiAuthenticationKeyStatusEnum, + DaiAuthenticationKeyTypeEnum, +) +from google.ads.admanager_v1.types.dai_authentication_key_messages import ( + DaiAuthenticationKey, +) +from google.ads.admanager_v1.types.dai_authentication_key_service import ( + BatchActivateDaiAuthenticationKeysRequest, + BatchActivateDaiAuthenticationKeysResponse, + BatchCreateDaiAuthenticationKeysRequest, + BatchCreateDaiAuthenticationKeysResponse, + BatchDeactivateDaiAuthenticationKeysRequest, + BatchDeactivateDaiAuthenticationKeysResponse, + BatchUpdateDaiAuthenticationKeysRequest, + BatchUpdateDaiAuthenticationKeysResponse, + CreateDaiAuthenticationKeyRequest, + GetDaiAuthenticationKeyRequest, + ListDaiAuthenticationKeysRequest, + ListDaiAuthenticationKeysResponse, + UpdateDaiAuthenticationKeyRequest, +) +from google.ads.admanager_v1.types.dai_encoding_profile_enums import ( + ContainerTypeEnum, + DaiEncodingProfileStatusEnum, + DaiEncodingProfileVariantTypeEnum, +) +from google.ads.admanager_v1.types.dai_encoding_profile_messages import ( + AudioSettings, + DaiEncodingProfile, + VideoSettings, +) +from google.ads.admanager_v1.types.dai_encoding_profile_service import ( + ActivateDaiEncodingProfileRequest, + ArchiveDaiEncodingProfileRequest, + BatchActivateDaiEncodingProfilesRequest, + BatchActivateDaiEncodingProfilesResponse, + BatchArchiveDaiEncodingProfilesRequest, + BatchArchiveDaiEncodingProfilesResponse, + BatchCreateDaiEncodingProfilesRequest, + BatchCreateDaiEncodingProfilesResponse, + BatchUpdateDaiEncodingProfilesRequest, + BatchUpdateDaiEncodingProfilesResponse, + CreateDaiEncodingProfileRequest, + GetDaiEncodingProfileRequest, + ListDaiEncodingProfilesRequest, + ListDaiEncodingProfilesResponse, + UpdateDaiEncodingProfileRequest, +) from google.ads.admanager_v1.types.deal_buyer_permission_type_enum import ( DealBuyerPermissionTypeEnum, ) @@ -684,8 +789,15 @@ FetchMcmEarningsResponse, ) from google.ads.admanager_v1.types.mcm_enums import ( + ChildPublisherAddressVerificationStatusEnum, + ChildPublisherIdentityVerificationStatusEnum, + ChildPublisherOnboardingTaskEnum, + DelegationAccountStatusEnum, + DelegationApprovalStatusEnum, + DelegationInvitationStatusEnum, DelegationTypeEnum, McmEarningsProductTypeEnum, + McmReadinessStatusEnum, ) from google.ads.admanager_v1.types.mobile_carrier_messages import MobileCarrier from google.ads.admanager_v1.types.mobile_carrier_service import ( @@ -779,6 +891,15 @@ from google.ads.admanager_v1.types.pacing_device_categorization_enum import ( PacingDeviceCategorizationEnum, ) +from google.ads.admanager_v1.types.partner_messages import Partner +from google.ads.admanager_v1.types.partner_service import ( + BatchUpdatePartnersRequest, + BatchUpdatePartnersResponse, + GetPartnerRequest, + ListPartnersRequest, + ListPartnersResponse, + UpdatePartnerRequest, +) from google.ads.admanager_v1.types.placement_enums import PlacementStatusEnum from google.ads.admanager_v1.types.placement_messages import Placement from google.ads.admanager_v1.types.placement_service import ( @@ -842,6 +963,7 @@ UpdateReportRequest, ) from google.ads.admanager_v1.types.report_value import ReportValue +from google.ads.admanager_v1.types.report_visibility_enum import ReportVisibilityEnum from google.ads.admanager_v1.types.request_platform_enum import RequestPlatformEnum from google.ads.admanager_v1.types.rich_media_ads_company_enums import ( RichMediaAdsCompanyGdprStatusEnum, @@ -993,6 +1115,12 @@ ListThirdPartyCompaniesRequest, ListThirdPartyCompaniesResponse, ) +from google.ads.admanager_v1.types.third_party_data_declaration import ( + ThirdPartyDataDeclaration, +) +from google.ads.admanager_v1.types.third_party_data_declaration_type_enum import ( + ThirdPartyDataDeclarationTypeEnum, +) from google.ads.admanager_v1.types.third_party_measurement_settings import ( ThirdPartyMeasurementSettings, ) @@ -1000,12 +1128,27 @@ from google.ads.admanager_v1.types.user_messages import User from google.ads.admanager_v1.types.user_service import GetUserRequest from google.ads.admanager_v1.types.video_position_enum import VideoPositionEnum +from google.ads.admanager_v1.types.video_tracking_url import VideoTrackingUrl from google.ads.admanager_v1.types.video_transcode_status_enum import ( VideoTranscodeStatusEnum, ) from google.ads.admanager_v1.types.viewability_partner_enum import ( ViewabilityPartnerEnum, ) +from google.ads.admanager_v1.types.viewability_provider_messages import ( + ViewabilityProvider, +) +from google.ads.admanager_v1.types.viewability_provider_service import ( + BatchCreateViewabilityProvidersRequest, + BatchCreateViewabilityProvidersResponse, + BatchUpdateViewabilityProvidersRequest, + BatchUpdateViewabilityProvidersResponse, + CreateViewabilityProviderRequest, + GetViewabilityProviderRequest, + ListViewabilityProvidersRequest, + ListViewabilityProvidersResponse, + UpdateViewabilityProviderRequest, +) from google.ads.admanager_v1.types.web_property import WebProperty __all__ = ( @@ -1020,6 +1163,7 @@ "BrowserLanguageServiceClient", "BrowserServiceClient", "CdnConfigServiceClient", + "ChildPublisherServiceClient", "CmsMetadataKeyServiceClient", "CmsMetadataValueServiceClient", "CompanyServiceClient", @@ -1029,9 +1173,12 @@ "ContentServiceClient", "CreativeSetServiceClient", "CreativeTemplateServiceClient", + "CreativeWrapperServiceClient", "CustomFieldServiceClient", "CustomTargetingKeyServiceClient", "CustomTargetingValueServiceClient", + "DaiAuthenticationKeyServiceClient", + "DaiEncodingProfileServiceClient", "DeviceCapabilityServiceClient", "DeviceCategoryServiceClient", "DeviceManufacturerServiceClient", @@ -1049,6 +1196,7 @@ "OperatingSystemServiceClient", "OperatingSystemVersionServiceClient", "OrderServiceClient", + "PartnerServiceClient", "PlacementServiceClient", "PrivateAuctionDealServiceClient", "PrivateAuctionServiceClient", @@ -1064,6 +1212,7 @@ "TeamServiceClient", "ThirdPartyCompanyServiceClient", "UserServiceClient", + "ViewabilityProviderServiceClient", "AdBreak", "CreateAdBreakRequest", "DeleteAdBreakRequest", @@ -1114,6 +1263,7 @@ "UpdateAdSpotRequest", "AdSpotTargetingTypeEnum", "AdUnitStatusEnum", + "RefreshRateTypeEnum", "SmartSizeModeEnum", "TargetWindowEnum", "AdUnit", @@ -1198,6 +1348,15 @@ "CdnSecurityPolicyOriginForwardingEnum", "ChildContentEligibilityEnum", "ChildPublisher", + "BatchCreateChildPublishersRequest", + "BatchCreateChildPublishersResponse", + "BatchUpdateChildPublishersRequest", + "BatchUpdateChildPublishersResponse", + "CreateChildPublisherRequest", + "GetChildPublisherRequest", + "ListChildPublishersRequest", + "ListChildPublishersResponse", + "UpdateChildPublisherRequest", "CmsMetadataKeyStatusEnum", "CmsMetadataKey", "BatchActivateCmsMetadataKeysRequest", @@ -1219,9 +1378,15 @@ "CompanyCreditStatusEnum", "CompanyTypeEnum", "Company", + "BatchCreateCompaniesRequest", + "BatchCreateCompaniesResponse", + "BatchUpdateCompaniesRequest", + "BatchUpdateCompaniesResponse", + "CreateCompanyRequest", "GetCompanyRequest", "ListCompaniesRequest", "ListCompaniesResponse", + "UpdateCompanyRequest", "ContactStatusEnum", "Contact", "BatchCreateContactsRequest", @@ -1256,6 +1421,7 @@ "GetContentRequest", "ListContentRequest", "ListContentResponse", + "ConversionEventEnum", "Creative", "CreativePlaceholder", "CreativePlaceholderCompanion", @@ -1274,6 +1440,23 @@ "ListCreativeTemplatesRequest", "ListCreativeTemplatesResponse", "CreativeTemplateVariableUrlTypeEnum", + "CreativeWrapperOrderingEnum", + "CreativeWrapperStatusEnum", + "CreativeWrapperTypeEnum", + "CreativeWrapper", + "BatchActivateCreativeWrappersRequest", + "BatchActivateCreativeWrappersResponse", + "BatchCreateCreativeWrappersRequest", + "BatchCreateCreativeWrappersResponse", + "BatchDeactivateCreativeWrappersRequest", + "BatchDeactivateCreativeWrappersResponse", + "BatchUpdateCreativeWrappersRequest", + "BatchUpdateCreativeWrappersResponse", + "CreateCreativeWrapperRequest", + "GetCreativeWrapperRequest", + "ListCreativeWrappersRequest", + "ListCreativeWrappersResponse", + "UpdateCreativeWrapperRequest", "CustomFieldDataTypeEnum", "CustomFieldEntityTypeEnum", "CustomFieldStatusEnum", @@ -1332,6 +1515,43 @@ "ListCustomTargetingValuesRequest", "ListCustomTargetingValuesResponse", "UpdateCustomTargetingValueRequest", + "DaiAuthenticationKeyStatusEnum", + "DaiAuthenticationKeyTypeEnum", + "DaiAuthenticationKey", + "BatchActivateDaiAuthenticationKeysRequest", + "BatchActivateDaiAuthenticationKeysResponse", + "BatchCreateDaiAuthenticationKeysRequest", + "BatchCreateDaiAuthenticationKeysResponse", + "BatchDeactivateDaiAuthenticationKeysRequest", + "BatchDeactivateDaiAuthenticationKeysResponse", + "BatchUpdateDaiAuthenticationKeysRequest", + "BatchUpdateDaiAuthenticationKeysResponse", + "CreateDaiAuthenticationKeyRequest", + "GetDaiAuthenticationKeyRequest", + "ListDaiAuthenticationKeysRequest", + "ListDaiAuthenticationKeysResponse", + "UpdateDaiAuthenticationKeyRequest", + "ContainerTypeEnum", + "DaiEncodingProfileStatusEnum", + "DaiEncodingProfileVariantTypeEnum", + "AudioSettings", + "DaiEncodingProfile", + "VideoSettings", + "ActivateDaiEncodingProfileRequest", + "ArchiveDaiEncodingProfileRequest", + "BatchActivateDaiEncodingProfilesRequest", + "BatchActivateDaiEncodingProfilesResponse", + "BatchArchiveDaiEncodingProfilesRequest", + "BatchArchiveDaiEncodingProfilesResponse", + "BatchCreateDaiEncodingProfilesRequest", + "BatchCreateDaiEncodingProfilesResponse", + "BatchUpdateDaiEncodingProfilesRequest", + "BatchUpdateDaiEncodingProfilesResponse", + "CreateDaiEncodingProfileRequest", + "GetDaiEncodingProfileRequest", + "ListDaiEncodingProfilesRequest", + "ListDaiEncodingProfilesResponse", + "UpdateDaiEncodingProfileRequest", "DealBuyerPermissionTypeEnum", "DealPriorityTierEnum", "CompanionDeliveryOptionEnum", @@ -1450,8 +1670,15 @@ "McmEarnings", "FetchMcmEarningsRequest", "FetchMcmEarningsResponse", + "ChildPublisherAddressVerificationStatusEnum", + "ChildPublisherIdentityVerificationStatusEnum", + "ChildPublisherOnboardingTaskEnum", + "DelegationAccountStatusEnum", + "DelegationApprovalStatusEnum", + "DelegationInvitationStatusEnum", "DelegationTypeEnum", "McmEarningsProductTypeEnum", + "McmReadinessStatusEnum", "MobileCarrier", "GetMobileCarrierRequest", "ListMobileCarriersRequest", @@ -1522,6 +1749,13 @@ "ListOrdersResponse", "UpdateOrderRequest", "PacingDeviceCategorizationEnum", + "Partner", + "BatchUpdatePartnersRequest", + "BatchUpdatePartnersResponse", + "GetPartnerRequest", + "ListPartnersRequest", + "ListPartnersResponse", + "UpdatePartnerRequest", "PlacementStatusEnum", "Placement", "BatchActivatePlacementsRequest", @@ -1572,6 +1806,7 @@ "RunReportResponse", "UpdateReportRequest", "ReportValue", + "ReportVisibilityEnum", "RequestPlatformEnum", "RichMediaAdsCompanyGdprStatusEnum", "RichMediaAdsCompany", @@ -1693,12 +1928,25 @@ "GetThirdPartyCompanyRequest", "ListThirdPartyCompaniesRequest", "ListThirdPartyCompaniesResponse", + "ThirdPartyDataDeclaration", + "ThirdPartyDataDeclarationTypeEnum", "ThirdPartyMeasurementSettings", "TimeUnitEnum", "User", "GetUserRequest", "VideoPositionEnum", + "VideoTrackingUrl", "VideoTranscodeStatusEnum", "ViewabilityPartnerEnum", + "ViewabilityProvider", + "BatchCreateViewabilityProvidersRequest", + "BatchCreateViewabilityProvidersResponse", + "BatchUpdateViewabilityProvidersRequest", + "BatchUpdateViewabilityProvidersResponse", + "CreateViewabilityProviderRequest", + "GetViewabilityProviderRequest", + "ListViewabilityProvidersRequest", + "ListViewabilityProvidersResponse", + "UpdateViewabilityProviderRequest", "WebProperty", ) 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 006d9cc2d9a0..bb31e4d9ac80 100644 --- a/packages/google-ads-admanager/google/ads/admanager_v1/__init__.py +++ b/packages/google-ads-admanager/google/ads/admanager_v1/__init__.py @@ -41,6 +41,7 @@ "google.ads.admanager_v1.services.browser_language_service", "google.ads.admanager_v1.services.browser_service", "google.ads.admanager_v1.services.cdn_config_service", + "google.ads.admanager_v1.services.child_publisher_service", "google.ads.admanager_v1.services.cms_metadata_key_service", "google.ads.admanager_v1.services.cms_metadata_value_service", "google.ads.admanager_v1.services.company_service", @@ -50,9 +51,12 @@ "google.ads.admanager_v1.services.content_service", "google.ads.admanager_v1.services.creative_set_service", "google.ads.admanager_v1.services.creative_template_service", + "google.ads.admanager_v1.services.creative_wrapper_service", "google.ads.admanager_v1.services.custom_field_service", "google.ads.admanager_v1.services.custom_targeting_key_service", "google.ads.admanager_v1.services.custom_targeting_value_service", + "google.ads.admanager_v1.services.dai_authentication_key_service", + "google.ads.admanager_v1.services.dai_encoding_profile_service", "google.ads.admanager_v1.services.device_capability_service", "google.ads.admanager_v1.services.device_category_service", "google.ads.admanager_v1.services.device_manufacturer_service", @@ -70,6 +74,7 @@ "google.ads.admanager_v1.services.operating_system_service", "google.ads.admanager_v1.services.operating_system_version_service", "google.ads.admanager_v1.services.order_service", + "google.ads.admanager_v1.services.partner_service", "google.ads.admanager_v1.services.placement_service", "google.ads.admanager_v1.services.private_auction_deal_service", "google.ads.admanager_v1.services.private_auction_service", @@ -85,6 +90,7 @@ "google.ads.admanager_v1.services.team_service", "google.ads.admanager_v1.services.third_party_company_service", "google.ads.admanager_v1.services.user_service", + "google.ads.admanager_v1.services.viewability_provider_service", "google.ads.admanager_v1.types.ad_break_messages", "google.ads.admanager_v1.types.ad_break_service", "google.ads.admanager_v1.types.ad_review_center_ad_enums", @@ -124,6 +130,7 @@ "google.ads.admanager_v1.types.cdn_security_policy_origin_forwarding_enum", "google.ads.admanager_v1.types.child_content_eligibility_enum", "google.ads.admanager_v1.types.child_publisher_messages", + "google.ads.admanager_v1.types.child_publisher_service", "google.ads.admanager_v1.types.cms_metadata_key_enums", "google.ads.admanager_v1.types.cms_metadata_key_messages", "google.ads.admanager_v1.types.cms_metadata_key_service", @@ -144,6 +151,7 @@ "google.ads.admanager_v1.types.content_label_service", "google.ads.admanager_v1.types.content_messages", "google.ads.admanager_v1.types.content_service", + "google.ads.admanager_v1.types.conversion_event_enum", "google.ads.admanager_v1.types.creative_messages", "google.ads.admanager_v1.types.creative_placeholder", "google.ads.admanager_v1.types.creative_set_messages", @@ -153,6 +161,9 @@ "google.ads.admanager_v1.types.creative_template_messages", "google.ads.admanager_v1.types.creative_template_service", "google.ads.admanager_v1.types.creative_template_variable_url_type_enum", + "google.ads.admanager_v1.types.creative_wrapper_enums", + "google.ads.admanager_v1.types.creative_wrapper_messages", + "google.ads.admanager_v1.types.creative_wrapper_service", "google.ads.admanager_v1.types.custom_field_enums", "google.ads.admanager_v1.types.custom_field_messages", "google.ads.admanager_v1.types.custom_field_service", @@ -165,6 +176,12 @@ "google.ads.admanager_v1.types.custom_targeting_value_enums", "google.ads.admanager_v1.types.custom_targeting_value_messages", "google.ads.admanager_v1.types.custom_targeting_value_service", + "google.ads.admanager_v1.types.dai_authentication_key_enums", + "google.ads.admanager_v1.types.dai_authentication_key_messages", + "google.ads.admanager_v1.types.dai_authentication_key_service", + "google.ads.admanager_v1.types.dai_encoding_profile_enums", + "google.ads.admanager_v1.types.dai_encoding_profile_messages", + "google.ads.admanager_v1.types.dai_encoding_profile_service", "google.ads.admanager_v1.types.deal_buyer_permission_type_enum", "google.ads.admanager_v1.types.deal_priority_tier_enum", "google.ads.admanager_v1.types.delivery_enums", @@ -229,6 +246,8 @@ "google.ads.admanager_v1.types.order_messages", "google.ads.admanager_v1.types.order_service", "google.ads.admanager_v1.types.pacing_device_categorization_enum", + "google.ads.admanager_v1.types.partner_messages", + "google.ads.admanager_v1.types.partner_service", "google.ads.admanager_v1.types.placement_enums", "google.ads.admanager_v1.types.placement_messages", "google.ads.admanager_v1.types.placement_service", @@ -245,6 +264,7 @@ "google.ads.admanager_v1.types.report_messages", "google.ads.admanager_v1.types.report_service", "google.ads.admanager_v1.types.report_value", + "google.ads.admanager_v1.types.report_visibility_enum", "google.ads.admanager_v1.types.request_platform_enum", "google.ads.admanager_v1.types.rich_media_ads_company_enums", "google.ads.admanager_v1.types.rich_media_ads_company_messages", @@ -277,13 +297,18 @@ "google.ads.admanager_v1.types.third_party_company_enums", "google.ads.admanager_v1.types.third_party_company_messages", "google.ads.admanager_v1.types.third_party_company_service", + "google.ads.admanager_v1.types.third_party_data_declaration", + "google.ads.admanager_v1.types.third_party_data_declaration_type_enum", "google.ads.admanager_v1.types.third_party_measurement_settings", "google.ads.admanager_v1.types.time_unit_enum", "google.ads.admanager_v1.types.user_messages", "google.ads.admanager_v1.types.user_service", "google.ads.admanager_v1.types.video_position_enum", + "google.ads.admanager_v1.types.video_tracking_url", "google.ads.admanager_v1.types.video_transcode_status_enum", "google.ads.admanager_v1.types.viewability_partner_enum", + "google.ads.admanager_v1.types.viewability_provider_messages", + "google.ads.admanager_v1.types.viewability_provider_service", "google.ads.admanager_v1.types.web_property", } @@ -299,6 +324,7 @@ from .services.browser_language_service import BrowserLanguageServiceClient from .services.browser_service import BrowserServiceClient from .services.cdn_config_service import CdnConfigServiceClient +from .services.child_publisher_service import ChildPublisherServiceClient from .services.cms_metadata_key_service import CmsMetadataKeyServiceClient from .services.cms_metadata_value_service import CmsMetadataValueServiceClient from .services.company_service import CompanyServiceClient @@ -308,9 +334,12 @@ from .services.content_service import ContentServiceClient from .services.creative_set_service import CreativeSetServiceClient from .services.creative_template_service import CreativeTemplateServiceClient +from .services.creative_wrapper_service import CreativeWrapperServiceClient from .services.custom_field_service import CustomFieldServiceClient from .services.custom_targeting_key_service import CustomTargetingKeyServiceClient from .services.custom_targeting_value_service import CustomTargetingValueServiceClient +from .services.dai_authentication_key_service import DaiAuthenticationKeyServiceClient +from .services.dai_encoding_profile_service import DaiEncodingProfileServiceClient from .services.device_capability_service import DeviceCapabilityServiceClient from .services.device_category_service import DeviceCategoryServiceClient from .services.device_manufacturer_service import DeviceManufacturerServiceClient @@ -330,6 +359,7 @@ OperatingSystemVersionServiceClient, ) from .services.order_service import OrderServiceClient +from .services.partner_service import PartnerServiceClient from .services.placement_service import PlacementServiceClient from .services.private_auction_deal_service import PrivateAuctionDealServiceClient from .services.private_auction_service import PrivateAuctionServiceClient @@ -345,6 +375,7 @@ from .services.team_service import TeamServiceClient from .services.third_party_company_service import ThirdPartyCompanyServiceClient from .services.user_service import UserServiceClient +from .services.viewability_provider_service import ViewabilityProviderServiceClient from .types.ad_break_messages import AdBreak from .types.ad_break_service import ( CreateAdBreakRequest, @@ -404,7 +435,12 @@ UpdateAdSpotRequest, ) from .types.ad_spot_targeting_type_enum import AdSpotTargetingTypeEnum -from .types.ad_unit_enums import AdUnitStatusEnum, SmartSizeModeEnum, TargetWindowEnum +from .types.ad_unit_enums import ( + AdUnitStatusEnum, + RefreshRateTypeEnum, + SmartSizeModeEnum, + TargetWindowEnum, +) from .types.ad_unit_messages import AdUnit, AdUnitParent, AdUnitSize, LabelFrequencyCap from .types.ad_unit_service import ( BatchActivateAdUnitsRequest, @@ -504,6 +540,17 @@ ) from .types.child_content_eligibility_enum import ChildContentEligibilityEnum from .types.child_publisher_messages import ChildPublisher +from .types.child_publisher_service import ( + BatchCreateChildPublishersRequest, + BatchCreateChildPublishersResponse, + BatchUpdateChildPublishersRequest, + BatchUpdateChildPublishersResponse, + CreateChildPublisherRequest, + GetChildPublisherRequest, + ListChildPublishersRequest, + ListChildPublishersResponse, + UpdateChildPublisherRequest, +) from .types.cms_metadata_key_enums import CmsMetadataKeyStatusEnum from .types.cms_metadata_key_messages import CmsMetadataKey from .types.cms_metadata_key_service import ( @@ -529,9 +576,15 @@ from .types.company_enums import CompanyCreditStatusEnum, CompanyTypeEnum from .types.company_messages import Company from .types.company_service import ( + BatchCreateCompaniesRequest, + BatchCreateCompaniesResponse, + BatchUpdateCompaniesRequest, + BatchUpdateCompaniesResponse, + CreateCompanyRequest, GetCompanyRequest, ListCompaniesRequest, ListCompaniesResponse, + UpdateCompanyRequest, ) from .types.contact_enums import ContactStatusEnum from .types.contact_messages import Contact @@ -575,6 +628,7 @@ ListContentRequest, ListContentResponse, ) +from .types.conversion_event_enum import ConversionEventEnum from .types.creative_messages import Creative from .types.creative_placeholder import ( CreativePlaceholder, @@ -602,6 +656,27 @@ from .types.creative_template_variable_url_type_enum import ( CreativeTemplateVariableUrlTypeEnum, ) +from .types.creative_wrapper_enums import ( + CreativeWrapperOrderingEnum, + CreativeWrapperStatusEnum, + CreativeWrapperTypeEnum, +) +from .types.creative_wrapper_messages import CreativeWrapper +from .types.creative_wrapper_service import ( + BatchActivateCreativeWrappersRequest, + BatchActivateCreativeWrappersResponse, + BatchCreateCreativeWrappersRequest, + BatchCreateCreativeWrappersResponse, + BatchDeactivateCreativeWrappersRequest, + BatchDeactivateCreativeWrappersResponse, + BatchUpdateCreativeWrappersRequest, + BatchUpdateCreativeWrappersResponse, + CreateCreativeWrapperRequest, + GetCreativeWrapperRequest, + ListCreativeWrappersRequest, + ListCreativeWrappersResponse, + UpdateCreativeWrapperRequest, +) from .types.custom_field_enums import ( CustomFieldDataTypeEnum, CustomFieldEntityTypeEnum, @@ -670,6 +745,53 @@ ListCustomTargetingValuesResponse, UpdateCustomTargetingValueRequest, ) +from .types.dai_authentication_key_enums import ( + DaiAuthenticationKeyStatusEnum, + DaiAuthenticationKeyTypeEnum, +) +from .types.dai_authentication_key_messages import DaiAuthenticationKey +from .types.dai_authentication_key_service import ( + BatchActivateDaiAuthenticationKeysRequest, + BatchActivateDaiAuthenticationKeysResponse, + BatchCreateDaiAuthenticationKeysRequest, + BatchCreateDaiAuthenticationKeysResponse, + BatchDeactivateDaiAuthenticationKeysRequest, + BatchDeactivateDaiAuthenticationKeysResponse, + BatchUpdateDaiAuthenticationKeysRequest, + BatchUpdateDaiAuthenticationKeysResponse, + CreateDaiAuthenticationKeyRequest, + GetDaiAuthenticationKeyRequest, + ListDaiAuthenticationKeysRequest, + ListDaiAuthenticationKeysResponse, + UpdateDaiAuthenticationKeyRequest, +) +from .types.dai_encoding_profile_enums import ( + ContainerTypeEnum, + DaiEncodingProfileStatusEnum, + DaiEncodingProfileVariantTypeEnum, +) +from .types.dai_encoding_profile_messages import ( + AudioSettings, + DaiEncodingProfile, + VideoSettings, +) +from .types.dai_encoding_profile_service import ( + ActivateDaiEncodingProfileRequest, + ArchiveDaiEncodingProfileRequest, + BatchActivateDaiEncodingProfilesRequest, + BatchActivateDaiEncodingProfilesResponse, + BatchArchiveDaiEncodingProfilesRequest, + BatchArchiveDaiEncodingProfilesResponse, + BatchCreateDaiEncodingProfilesRequest, + BatchCreateDaiEncodingProfilesResponse, + BatchUpdateDaiEncodingProfilesRequest, + BatchUpdateDaiEncodingProfilesResponse, + CreateDaiEncodingProfileRequest, + GetDaiEncodingProfileRequest, + ListDaiEncodingProfilesRequest, + ListDaiEncodingProfilesResponse, + UpdateDaiEncodingProfileRequest, +) from .types.deal_buyer_permission_type_enum import DealBuyerPermissionTypeEnum from .types.deal_priority_tier_enum import DealPriorityTierEnum from .types.delivery_enums import ( @@ -816,7 +938,17 @@ FetchMcmEarningsRequest, FetchMcmEarningsResponse, ) -from .types.mcm_enums import DelegationTypeEnum, McmEarningsProductTypeEnum +from .types.mcm_enums import ( + ChildPublisherAddressVerificationStatusEnum, + ChildPublisherIdentityVerificationStatusEnum, + ChildPublisherOnboardingTaskEnum, + DelegationAccountStatusEnum, + DelegationApprovalStatusEnum, + DelegationInvitationStatusEnum, + DelegationTypeEnum, + McmEarningsProductTypeEnum, + McmReadinessStatusEnum, +) from .types.mobile_carrier_messages import MobileCarrier from .types.mobile_carrier_service import ( GetMobileCarrierRequest, @@ -901,6 +1033,15 @@ UpdateOrderRequest, ) from .types.pacing_device_categorization_enum import PacingDeviceCategorizationEnum +from .types.partner_messages import Partner +from .types.partner_service import ( + BatchUpdatePartnersRequest, + BatchUpdatePartnersResponse, + GetPartnerRequest, + ListPartnersRequest, + ListPartnersResponse, + UpdatePartnerRequest, +) from .types.placement_enums import PlacementStatusEnum from .types.placement_messages import Placement from .types.placement_service import ( @@ -960,6 +1101,7 @@ UpdateReportRequest, ) from .types.report_value import ReportValue +from .types.report_visibility_enum import ReportVisibilityEnum 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 @@ -1096,13 +1238,30 @@ ListThirdPartyCompaniesRequest, ListThirdPartyCompaniesResponse, ) +from .types.third_party_data_declaration import ThirdPartyDataDeclaration +from .types.third_party_data_declaration_type_enum import ( + ThirdPartyDataDeclarationTypeEnum, +) from .types.third_party_measurement_settings import ThirdPartyMeasurementSettings from .types.time_unit_enum import TimeUnitEnum from .types.user_messages import User from .types.user_service import GetUserRequest from .types.video_position_enum import VideoPositionEnum +from .types.video_tracking_url import VideoTrackingUrl from .types.video_transcode_status_enum import VideoTranscodeStatusEnum from .types.viewability_partner_enum import ViewabilityPartnerEnum +from .types.viewability_provider_messages import ViewabilityProvider +from .types.viewability_provider_service import ( + BatchCreateViewabilityProvidersRequest, + BatchCreateViewabilityProvidersResponse, + BatchUpdateViewabilityProvidersRequest, + BatchUpdateViewabilityProvidersResponse, + CreateViewabilityProviderRequest, + GetViewabilityProviderRequest, + ListViewabilityProvidersRequest, + ListViewabilityProvidersResponse, + UpdateViewabilityProviderRequest, +) from .types.web_property import WebProperty if hasattr(api_core, "check_python_version") and hasattr( @@ -1190,6 +1349,7 @@ def _get_version(dependency_name): __all__ = ( "ActivateCustomTargetingValueRequest", + "ActivateDaiEncodingProfileRequest", "AdBreak", "AdBreakFillTypeEnum", "AdBreakMarkupTypeEnum", @@ -1223,9 +1383,11 @@ def _get_version(dependency_name): "ApplicationServiceClient", "ApplicationStoreEnum", "AppliedLabel", + "ArchiveDaiEncodingProfileRequest", "AudienceSegment", "AudienceSegmentServiceClient", "AudienceSegmentTargeting", + "AudioSettings", "AuxiliaryAdSettings", "BandwidthGroup", "BandwidthGroupServiceClient", @@ -1242,12 +1404,18 @@ def _get_version(dependency_name): "BatchActivateCmsMetadataValuesResponse", "BatchActivateContentBundlesRequest", "BatchActivateContentBundlesResponse", + "BatchActivateCreativeWrappersRequest", + "BatchActivateCreativeWrappersResponse", "BatchActivateCustomFieldsRequest", "BatchActivateCustomFieldsResponse", "BatchActivateCustomTargetingKeysRequest", "BatchActivateCustomTargetingKeysResponse", "BatchActivateCustomTargetingValuesRequest", "BatchActivateCustomTargetingValuesResponse", + "BatchActivateDaiAuthenticationKeysRequest", + "BatchActivateDaiAuthenticationKeysResponse", + "BatchActivateDaiEncodingProfilesRequest", + "BatchActivateDaiEncodingProfilesResponse", "BatchActivateLabelsRequest", "BatchActivateLabelsResponse", "BatchActivateLiveStreamsRequest", @@ -1273,6 +1441,8 @@ def _get_version(dependency_name): "BatchArchiveApplicationsResponse", "BatchArchiveCdnConfigsRequest", "BatchArchiveCdnConfigsResponse", + "BatchArchiveDaiEncodingProfilesRequest", + "BatchArchiveDaiEncodingProfilesResponse", "BatchArchiveLiveStreamsRequest", "BatchArchiveLiveStreamsResponse", "BatchArchiveOrdersRequest", @@ -1293,14 +1463,24 @@ def _get_version(dependency_name): "BatchCreateApplicationsResponse", "BatchCreateCdnConfigsRequest", "BatchCreateCdnConfigsResponse", + "BatchCreateChildPublishersRequest", + "BatchCreateChildPublishersResponse", + "BatchCreateCompaniesRequest", + "BatchCreateCompaniesResponse", "BatchCreateContactsRequest", "BatchCreateContactsResponse", + "BatchCreateCreativeWrappersRequest", + "BatchCreateCreativeWrappersResponse", "BatchCreateCustomFieldsRequest", "BatchCreateCustomFieldsResponse", "BatchCreateCustomTargetingKeysRequest", "BatchCreateCustomTargetingKeysResponse", "BatchCreateCustomTargetingValuesRequest", "BatchCreateCustomTargetingValuesResponse", + "BatchCreateDaiAuthenticationKeysRequest", + "BatchCreateDaiAuthenticationKeysResponse", + "BatchCreateDaiEncodingProfilesRequest", + "BatchCreateDaiEncodingProfilesResponse", "BatchCreateEntitySignalsMappingsRequest", "BatchCreateEntitySignalsMappingsResponse", "BatchCreateLabelsRequest", @@ -1319,6 +1499,8 @@ def _get_version(dependency_name): "BatchCreateTargetingPresetsResponse", "BatchCreateTeamsRequest", "BatchCreateTeamsResponse", + "BatchCreateViewabilityProvidersRequest", + "BatchCreateViewabilityProvidersResponse", "BatchDeactivateAdRulesRequest", "BatchDeactivateAdRulesResponse", "BatchDeactivateAdUnitsRequest", @@ -1329,12 +1511,16 @@ def _get_version(dependency_name): "BatchDeactivateCmsMetadataValuesResponse", "BatchDeactivateContentBundlesRequest", "BatchDeactivateContentBundlesResponse", + "BatchDeactivateCreativeWrappersRequest", + "BatchDeactivateCreativeWrappersResponse", "BatchDeactivateCustomFieldsRequest", "BatchDeactivateCustomFieldsResponse", "BatchDeactivateCustomTargetingKeysRequest", "BatchDeactivateCustomTargetingKeysResponse", "BatchDeactivateCustomTargetingValuesRequest", "BatchDeactivateCustomTargetingValuesResponse", + "BatchDeactivateDaiAuthenticationKeysRequest", + "BatchDeactivateDaiAuthenticationKeysResponse", "BatchDeactivateLabelsRequest", "BatchDeactivateLabelsResponse", "BatchDeactivatePlacementsRequest", @@ -1392,14 +1578,24 @@ def _get_version(dependency_name): "BatchUpdateApplicationsResponse", "BatchUpdateCdnConfigsRequest", "BatchUpdateCdnConfigsResponse", + "BatchUpdateChildPublishersRequest", + "BatchUpdateChildPublishersResponse", + "BatchUpdateCompaniesRequest", + "BatchUpdateCompaniesResponse", "BatchUpdateContactsRequest", "BatchUpdateContactsResponse", + "BatchUpdateCreativeWrappersRequest", + "BatchUpdateCreativeWrappersResponse", "BatchUpdateCustomFieldsRequest", "BatchUpdateCustomFieldsResponse", "BatchUpdateCustomTargetingKeysRequest", "BatchUpdateCustomTargetingKeysResponse", "BatchUpdateCustomTargetingValuesRequest", "BatchUpdateCustomTargetingValuesResponse", + "BatchUpdateDaiAuthenticationKeysRequest", + "BatchUpdateDaiAuthenticationKeysResponse", + "BatchUpdateDaiEncodingProfilesRequest", + "BatchUpdateDaiEncodingProfilesResponse", "BatchUpdateEntitySignalsMappingsRequest", "BatchUpdateEntitySignalsMappingsResponse", "BatchUpdateLabelsRequest", @@ -1408,6 +1604,8 @@ def _get_version(dependency_name): "BatchUpdateLiveStreamsResponse", "BatchUpdateOrdersRequest", "BatchUpdateOrdersResponse", + "BatchUpdatePartnersRequest", + "BatchUpdatePartnersResponse", "BatchUpdatePlacementsRequest", "BatchUpdatePlacementsResponse", "BatchUpdateSitesRequest", @@ -1418,6 +1616,8 @@ def _get_version(dependency_name): "BatchUpdateTargetingPresetsResponse", "BatchUpdateTeamsRequest", "BatchUpdateTeamsResponse", + "BatchUpdateViewabilityProvidersRequest", + "BatchUpdateViewabilityProvidersResponse", "BrandLiftPartnerEnum", "Browser", "BrowserLanguage", @@ -1434,6 +1634,10 @@ def _get_version(dependency_name): "CdnSecurityPolicyTypeEnum", "ChildContentEligibilityEnum", "ChildPublisher", + "ChildPublisherAddressVerificationStatusEnum", + "ChildPublisherIdentityVerificationStatusEnum", + "ChildPublisherOnboardingTaskEnum", + "ChildPublisherServiceClient", "CmsContent", "CmsMetadataKey", "CmsMetadataKeyServiceClient", @@ -1450,6 +1654,7 @@ def _get_version(dependency_name): "Contact", "ContactServiceClient", "ContactStatusEnum", + "ContainerTypeEnum", "Content", "ContentBundle", "ContentBundleServiceClient", @@ -1460,17 +1665,23 @@ def _get_version(dependency_name): "ContentStatusEnum", "ContentStatusSourceEnum", "ContentTargeting", + "ConversionEventEnum", "CreateAdBreakRequest", "CreateAdRuleRequest", "CreateAdSpotRequest", "CreateAdUnitRequest", "CreateApplicationRequest", "CreateCdnConfigRequest", + "CreateChildPublisherRequest", + "CreateCompanyRequest", "CreateContactRequest", "CreateCreativeSetRequest", + "CreateCreativeWrapperRequest", "CreateCustomFieldRequest", "CreateCustomTargetingKeyRequest", "CreateCustomTargetingValueRequest", + "CreateDaiAuthenticationKeyRequest", + "CreateDaiEncodingProfileRequest", "CreateEntitySignalsMappingRequest", "CreateLabelRequest", "CreateLiveStreamRequest", @@ -1483,6 +1694,7 @@ def _get_version(dependency_name): "CreateSlateRequest", "CreateTargetingPresetRequest", "CreateTeamRequest", + "CreateViewabilityProviderRequest", "Creative", "CreativePlaceholder", "CreativePlaceholderCompanion", @@ -1496,6 +1708,11 @@ def _get_version(dependency_name): "CreativeTemplateTypeEnum", "CreativeTemplateVariable", "CreativeTemplateVariableUrlTypeEnum", + "CreativeWrapper", + "CreativeWrapperOrderingEnum", + "CreativeWrapperServiceClient", + "CreativeWrapperStatusEnum", + "CreativeWrapperTypeEnum", "CustomField", "CustomFieldDataTypeEnum", "CustomFieldEntityTypeEnum", @@ -1519,6 +1736,14 @@ def _get_version(dependency_name): "CustomTargetingValueMatchTypeEnum", "CustomTargetingValueServiceClient", "CustomTargetingValueStatusEnum", + "DaiAuthenticationKey", + "DaiAuthenticationKeyServiceClient", + "DaiAuthenticationKeyStatusEnum", + "DaiAuthenticationKeyTypeEnum", + "DaiEncodingProfile", + "DaiEncodingProfileServiceClient", + "DaiEncodingProfileStatusEnum", + "DaiEncodingProfileVariantTypeEnum", "DaiIngestError", "DaiIngestErrorReasonEnum", "DaiIngestStatusEnum", @@ -1528,6 +1753,9 @@ def _get_version(dependency_name): "DeactivateTargetingPresetRequest", "DealBuyerPermissionTypeEnum", "DealPriorityTierEnum", + "DelegationAccountStatusEnum", + "DelegationApprovalStatusEnum", + "DelegationInvitationStatusEnum", "DelegationTypeEnum", "DeleteAdBreakRequest", "DeliveryIndicator", @@ -1568,6 +1796,7 @@ def _get_version(dependency_name): "GetBrowserLanguageRequest", "GetBrowserRequest", "GetCdnConfigRequest", + "GetChildPublisherRequest", "GetCmsMetadataKeyRequest", "GetCmsMetadataValueRequest", "GetCompanyRequest", @@ -1577,9 +1806,12 @@ def _get_version(dependency_name): "GetContentRequest", "GetCreativeSetRequest", "GetCreativeTemplateRequest", + "GetCreativeWrapperRequest", "GetCustomFieldRequest", "GetCustomTargetingKeyRequest", "GetCustomTargetingValueRequest", + "GetDaiAuthenticationKeyRequest", + "GetDaiEncodingProfileRequest", "GetDeviceCapabilityRequest", "GetDeviceCategoryRequest", "GetDeviceManufacturerRequest", @@ -1596,6 +1828,7 @@ def _get_version(dependency_name): "GetOperatingSystemRequest", "GetOperatingSystemVersionRequest", "GetOrderRequest", + "GetPartnerRequest", "GetPlacementRequest", "GetPrivateAuctionDealRequest", "GetPrivateAuctionRequest", @@ -1611,6 +1844,7 @@ def _get_version(dependency_name): "GetTeamRequest", "GetThirdPartyCompanyRequest", "GetUserRequest", + "GetViewabilityProviderRequest", "Goal", "GoalTypeEnum", "GrpProviderEnum", @@ -1661,6 +1895,8 @@ def _get_version(dependency_name): "ListBrowsersResponse", "ListCdnConfigsRequest", "ListCdnConfigsResponse", + "ListChildPublishersRequest", + "ListChildPublishersResponse", "ListCmsMetadataKeysRequest", "ListCmsMetadataKeysResponse", "ListCmsMetadataValuesRequest", @@ -1679,12 +1915,18 @@ def _get_version(dependency_name): "ListCreativeSetsResponse", "ListCreativeTemplatesRequest", "ListCreativeTemplatesResponse", + "ListCreativeWrappersRequest", + "ListCreativeWrappersResponse", "ListCustomFieldsRequest", "ListCustomFieldsResponse", "ListCustomTargetingKeysRequest", "ListCustomTargetingKeysResponse", "ListCustomTargetingValuesRequest", "ListCustomTargetingValuesResponse", + "ListDaiAuthenticationKeysRequest", + "ListDaiAuthenticationKeysResponse", + "ListDaiEncodingProfilesRequest", + "ListDaiEncodingProfilesResponse", "ListDeviceCapabilitiesRequest", "ListDeviceCapabilitiesResponse", "ListDeviceCategoriesRequest", @@ -1717,6 +1959,8 @@ def _get_version(dependency_name): "ListOperatingSystemsResponse", "ListOrdersRequest", "ListOrdersResponse", + "ListPartnersRequest", + "ListPartnersResponse", "ListPlacementsRequest", "ListPlacementsResponse", "ListPrivateAuctionDealsRequest", @@ -1745,6 +1989,8 @@ def _get_version(dependency_name): "ListTeamsResponse", "ListThirdPartyCompaniesRequest", "ListThirdPartyCompaniesResponse", + "ListViewabilityProvidersRequest", + "ListViewabilityProvidersResponse", "LiveStream", "LiveStreamConditioning", "LiveStreamEvent", @@ -1756,6 +2002,7 @@ def _get_version(dependency_name): "McmEarnings", "McmEarningsProductTypeEnum", "McmEarningsServiceClient", + "McmReadinessStatusEnum", "MediaLocation", "MobileApplicationTargeting", "MobileCarrier", @@ -1778,6 +2025,8 @@ def _get_version(dependency_name): "OrderServiceClient", "OrderStatusEnum", "PacingDeviceCategorizationEnum", + "Partner", + "PartnerServiceClient", "Placement", "PlacementServiceClient", "PlacementStatusEnum", @@ -1791,11 +2040,13 @@ def _get_version(dependency_name): "ProgrammaticBuyer", "ProgrammaticBuyerServiceClient", "ReachPartnerEnum", + "RefreshRateTypeEnum", "Report", "ReportDataTable", "ReportDefinition", "ReportServiceClient", "ReportValue", + "ReportVisibilityEnum", "RequestFormatTargeting", "RequestPlatformEnum", "RequestPlatformTargeting", @@ -1845,6 +2096,8 @@ def _get_version(dependency_name): "ThirdPartyCompanyServiceClient", "ThirdPartyCompanyStatusEnum", "ThirdPartyCompanyTypeEnum", + "ThirdPartyDataDeclaration", + "ThirdPartyDataDeclarationTypeEnum", "ThirdPartyMeasurementSettings", "TimeUnitEnum", "UnitTypeEnum", @@ -1854,15 +2107,21 @@ def _get_version(dependency_name): "UpdateAdUnitRequest", "UpdateApplicationRequest", "UpdateCdnConfigRequest", + "UpdateChildPublisherRequest", + "UpdateCompanyRequest", "UpdateContactRequest", "UpdateCreativeSetRequest", + "UpdateCreativeWrapperRequest", "UpdateCustomFieldRequest", "UpdateCustomTargetingKeyRequest", "UpdateCustomTargetingValueRequest", + "UpdateDaiAuthenticationKeyRequest", + "UpdateDaiEncodingProfileRequest", "UpdateEntitySignalsMappingRequest", "UpdateLabelRequest", "UpdateLiveStreamRequest", "UpdateOrderRequest", + "UpdatePartnerRequest", "UpdatePlacementRequest", "UpdatePrivateAuctionDealRequest", "UpdatePrivateAuctionRequest", @@ -1871,14 +2130,19 @@ def _get_version(dependency_name): "UpdateSlateRequest", "UpdateTargetingPresetRequest", "UpdateTeamRequest", + "UpdateViewabilityProviderRequest", "User", "UserDomainTargeting", "UserServiceClient", "VideoPosition", "VideoPositionEnum", "VideoPositionTargeting", + "VideoSettings", + "VideoTrackingUrl", "VideoTranscodeStatusEnum", "ViewabilityPartnerEnum", + "ViewabilityProvider", + "ViewabilityProviderServiceClient", "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 2c5cae6716e8..b3bbb614b56b 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 @@ -389,6 +389,45 @@ } } }, + "ChildPublisherService": { + "clients": { + "rest": { + "libraryClient": "ChildPublisherServiceClient", + "rpcs": { + "BatchCreateChildPublishers": { + "methods": [ + "batch_create_child_publishers" + ] + }, + "BatchUpdateChildPublishers": { + "methods": [ + "batch_update_child_publishers" + ] + }, + "CreateChildPublisher": { + "methods": [ + "create_child_publisher" + ] + }, + "GetChildPublisher": { + "methods": [ + "get_child_publisher" + ] + }, + "ListChildPublishers": { + "methods": [ + "list_child_publishers" + ] + }, + "UpdateChildPublisher": { + "methods": [ + "update_child_publisher" + ] + } + } + } + } + }, "CmsMetadataKeyService": { "clients": { "rest": { @@ -452,6 +491,21 @@ "rest": { "libraryClient": "CompanyServiceClient", "rpcs": { + "BatchCreateCompanies": { + "methods": [ + "batch_create_companies" + ] + }, + "BatchUpdateCompanies": { + "methods": [ + "batch_update_companies" + ] + }, + "CreateCompany": { + "methods": [ + "create_company" + ] + }, "GetCompany": { "methods": [ "get_company" @@ -461,6 +515,11 @@ "methods": [ "list_companies" ] + }, + "UpdateCompany": { + "methods": [ + "update_company" + ] } } } @@ -620,6 +679,55 @@ } } }, + "CreativeWrapperService": { + "clients": { + "rest": { + "libraryClient": "CreativeWrapperServiceClient", + "rpcs": { + "BatchActivateCreativeWrappers": { + "methods": [ + "batch_activate_creative_wrappers" + ] + }, + "BatchCreateCreativeWrappers": { + "methods": [ + "batch_create_creative_wrappers" + ] + }, + "BatchDeactivateCreativeWrappers": { + "methods": [ + "batch_deactivate_creative_wrappers" + ] + }, + "BatchUpdateCreativeWrappers": { + "methods": [ + "batch_update_creative_wrappers" + ] + }, + "CreateCreativeWrapper": { + "methods": [ + "create_creative_wrapper" + ] + }, + "GetCreativeWrapper": { + "methods": [ + "get_creative_wrapper" + ] + }, + "ListCreativeWrappers": { + "methods": [ + "list_creative_wrappers" + ] + }, + "UpdateCreativeWrapper": { + "methods": [ + "update_creative_wrapper" + ] + } + } + } + } + }, "CustomFieldService": { "clients": { "rest": { @@ -767,6 +875,104 @@ } } }, + "DaiAuthenticationKeyService": { + "clients": { + "rest": { + "libraryClient": "DaiAuthenticationKeyServiceClient", + "rpcs": { + "BatchActivateDaiAuthenticationKeys": { + "methods": [ + "batch_activate_dai_authentication_keys" + ] + }, + "BatchCreateDaiAuthenticationKeys": { + "methods": [ + "batch_create_dai_authentication_keys" + ] + }, + "BatchDeactivateDaiAuthenticationKeys": { + "methods": [ + "batch_deactivate_dai_authentication_keys" + ] + }, + "BatchUpdateDaiAuthenticationKeys": { + "methods": [ + "batch_update_dai_authentication_keys" + ] + }, + "CreateDaiAuthenticationKey": { + "methods": [ + "create_dai_authentication_key" + ] + }, + "GetDaiAuthenticationKey": { + "methods": [ + "get_dai_authentication_key" + ] + }, + "ListDaiAuthenticationKeys": { + "methods": [ + "list_dai_authentication_keys" + ] + }, + "UpdateDaiAuthenticationKey": { + "methods": [ + "update_dai_authentication_key" + ] + } + } + } + } + }, + "DaiEncodingProfileService": { + "clients": { + "rest": { + "libraryClient": "DaiEncodingProfileServiceClient", + "rpcs": { + "BatchActivateDaiEncodingProfiles": { + "methods": [ + "batch_activate_dai_encoding_profiles" + ] + }, + "BatchArchiveDaiEncodingProfiles": { + "methods": [ + "batch_archive_dai_encoding_profiles" + ] + }, + "BatchCreateDaiEncodingProfiles": { + "methods": [ + "batch_create_dai_encoding_profiles" + ] + }, + "BatchUpdateDaiEncodingProfiles": { + "methods": [ + "batch_update_dai_encoding_profiles" + ] + }, + "CreateDaiEncodingProfile": { + "methods": [ + "create_dai_encoding_profile" + ] + }, + "GetDaiEncodingProfile": { + "methods": [ + "get_dai_encoding_profile" + ] + }, + "ListDaiEncodingProfiles": { + "methods": [ + "list_dai_encoding_profiles" + ] + }, + "UpdateDaiEncodingProfile": { + "methods": [ + "update_dai_encoding_profile" + ] + } + } + } + } + }, "DeviceCapabilityService": { "clients": { "rest": { @@ -1270,6 +1476,35 @@ } } }, + "PartnerService": { + "clients": { + "rest": { + "libraryClient": "PartnerServiceClient", + "rpcs": { + "BatchUpdatePartners": { + "methods": [ + "batch_update_partners" + ] + }, + "GetPartner": { + "methods": [ + "get_partner" + ] + }, + "ListPartners": { + "methods": [ + "list_partners" + ] + }, + "UpdatePartner": { + "methods": [ + "update_partner" + ] + } + } + } + } + }, "PlacementService": { "clients": { "rest": { @@ -1744,6 +1979,45 @@ } } } + }, + "ViewabilityProviderService": { + "clients": { + "rest": { + "libraryClient": "ViewabilityProviderServiceClient", + "rpcs": { + "BatchCreateViewabilityProviders": { + "methods": [ + "batch_create_viewability_providers" + ] + }, + "BatchUpdateViewabilityProviders": { + "methods": [ + "batch_update_viewability_providers" + ] + }, + "CreateViewabilityProvider": { + "methods": [ + "create_viewability_provider" + ] + }, + "GetViewabilityProvider": { + "methods": [ + "get_viewability_provider" + ] + }, + "ListViewabilityProviders": { + "methods": [ + "list_viewability_providers" + ] + }, + "UpdateViewabilityProvider": { + "methods": [ + "update_viewability_provider" + ] + } + } + } + } } } } 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 b379426a1a78..696f260bdc24 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 @@ -759,7 +759,7 @@ def get_audience_segment( timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> audience_segment_messages.AudienceSegment: - r"""API to retrieve an ``AudienceSegment`` object. + r"""Retrieves an ``AudienceSegment`` object. .. code-block:: python @@ -867,7 +867,7 @@ def list_audience_segments( timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> pagers.ListAudienceSegmentsPager: - r"""API to retrieve a list of ``AudienceSegment`` objects. + r"""Lists ``AudienceSegment`` objects. .. code-block:: python diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/__init__.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/__init__.py new file mode 100644 index 000000000000..573f8307cb82 --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# 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 ChildPublisherServiceClient + +__all__ = ("ChildPublisherServiceClient",) diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/client.py new file mode 100644 index 000000000000..0f2b77e5ceb5 --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/client.py @@ -0,0 +1,1657 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# 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.child_publisher_service import pagers +from google.ads.admanager_v1.types import ( + child_publisher_messages, + child_publisher_service, + mcm_enums, +) + +from .transports.base import DEFAULT_CLIENT_INFO, ChildPublisherServiceTransport +from .transports.rest import ChildPublisherServiceRestTransport + + +class ChildPublisherServiceClientMeta(type): + """Metaclass for the ChildPublisherService 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[ChildPublisherServiceTransport]] + _transport_registry["rest"] = ChildPublisherServiceRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[ChildPublisherServiceTransport]: + """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 ChildPublisherServiceClient(metaclass=ChildPublisherServiceClientMeta): + """Provides methods for handling + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] 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: + ChildPublisherServiceClient: 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: + ChildPublisherServiceClient: 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) -> ChildPublisherServiceTransport: + """Returns the transport used by the client instance. + + Returns: + ChildPublisherServiceTransport: The transport used by the client + instance. + """ + return self._transport + + @staticmethod + def child_publisher_path( + network_code: str, + child_publisher: str, + ) -> str: + """Returns a fully-qualified child_publisher string.""" + return "networks/{network_code}/childPublishers/{child_publisher}".format( + network_code=network_code, + child_publisher=child_publisher, + ) + + @staticmethod + def parse_child_publisher_path(path: str) -> Dict[str, str]: + """Parses a child_publisher path into its component segments.""" + m = re.match( + r"^networks/(?P.+?)/childPublishers/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + + @staticmethod + def network_path( + network_code: str, + ) -> str: + """Returns a fully-qualified network string.""" + return "networks/{network_code}".format( + network_code=network_code, + ) + + @staticmethod + def parse_network_path(path: str) -> Dict[str, str]: + """Parses a network path into its component segments.""" + m = re.match(r"^networks/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_billing_account_path( + billing_account: str, + ) -> str: + """Returns a fully-qualified billing_account string.""" + return "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + + @staticmethod + def parse_common_billing_account_path(path: str) -> Dict[str, str]: + """Parse a billing_account path into its component segments.""" + m = re.match(r"^billingAccounts/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_folder_path( + folder: str, + ) -> str: + """Returns a fully-qualified folder string.""" + return "folders/{folder}".format( + folder=folder, + ) + + @staticmethod + def parse_common_folder_path(path: str) -> Dict[str, str]: + """Parse a folder path into its component segments.""" + m = re.match(r"^folders/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_organization_path( + organization: str, + ) -> str: + """Returns a fully-qualified organization string.""" + return "organizations/{organization}".format( + organization=organization, + ) + + @staticmethod + def parse_common_organization_path(path: str) -> Dict[str, str]: + """Parse a organization path into its component segments.""" + m = re.match(r"^organizations/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_project_path( + project: str, + ) -> str: + """Returns a fully-qualified project string.""" + return "projects/{project}".format( + project=project, + ) + + @staticmethod + def parse_common_project_path(path: str) -> Dict[str, str]: + """Parse a project path into its component segments.""" + m = re.match(r"^projects/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_location_path( + project: str, + location: str, + ) -> str: + """Returns a fully-qualified location string.""" + return "projects/{project}/locations/{location}".format( + project=project, + location=location, + ) + + @staticmethod + def parse_common_location_path(path: str) -> Dict[str, str]: + """Parse a location path into its component segments.""" + m = re.match(r"^projects/(?P.+?)/locations/(?P.+?)$", path) + return m.groupdict() if m else {} + + @classmethod + def get_mtls_endpoint_and_cert_source( + cls, client_options: Optional[client_options_lib.ClientOptions] = None + ): + """Deprecated. Return the API endpoint and client cert source for mutual TLS. + + The client cert source is determined in the following order: + (1) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is not "true", the + client cert source is None. + (2) if `client_options.client_cert_source` is provided, use the provided one; if the + default client cert source exists, use the default one; otherwise the client cert + source is None. + + The API endpoint is determined in the following order: + (1) if `client_options.api_endpoint` if provided, use the provided one. + (2) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is "always", use the + default mTLS endpoint; if the environment variable is "never", use the default API + endpoint; otherwise if client cert source exists, use the default mTLS endpoint, otherwise + use the default API endpoint. + + More details can be found at https://google.aip.dev/auth/4114. + + Args: + client_options (google.api_core.client_options.ClientOptions): Custom options for the + client. Only the `api_endpoint` and `client_cert_source` properties may be used + in this method. + + Returns: + Tuple[str, Callable[[], Tuple[bytes, bytes]]]: returns the API endpoint and the + client cert source to use. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If any errors happen. + """ + + warnings.warn( + "get_mtls_endpoint_and_cert_source is deprecated. Use the api_endpoint property instead.", + DeprecationWarning, + ) + if client_options is None: + client_options = client_options_lib.ClientOptions() + use_client_cert = ChildPublisherServiceClient._use_client_cert_effective() + use_mtls_endpoint = os.getenv("GOOGLE_API_USE_MTLS_ENDPOINT", "auto") + if use_mtls_endpoint not in ("auto", "never", "always"): + raise MutualTLSChannelError( + "Environment variable `GOOGLE_API_USE_MTLS_ENDPOINT` must be `never`, `auto` or `always`" + ) + + # Figure out the client cert source to use. + client_cert_source = None + if use_client_cert: + if client_options.client_cert_source: + client_cert_source = client_options.client_cert_source + elif mtls.has_default_client_cert_source(): + client_cert_source = mtls.default_client_cert_source() + + # Figure out which api endpoint to use. + if client_options.api_endpoint is not None: + api_endpoint = client_options.api_endpoint + elif use_mtls_endpoint == "always" or ( + use_mtls_endpoint == "auto" and client_cert_source + ): + api_endpoint = cls.DEFAULT_MTLS_ENDPOINT + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @staticmethod + def _read_environment_variables(): + """Returns the environment variables used by the client. + + Returns: + Tuple[bool, str, str]: returns the GOOGLE_API_USE_CLIENT_CERTIFICATE, + GOOGLE_API_USE_MTLS_ENDPOINT, and GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variables. + + Raises: + ValueError: If GOOGLE_API_USE_CLIENT_CERTIFICATE is not + any of ["true", "false"]. + google.auth.exceptions.MutualTLSChannelError: If GOOGLE_API_USE_MTLS_ENDPOINT + is not any of ["auto", "never", "always"]. + """ + use_client_cert = ChildPublisherServiceClient._use_client_cert_effective() + use_mtls_endpoint = os.getenv("GOOGLE_API_USE_MTLS_ENDPOINT", "auto").lower() + universe_domain_env = os.getenv("GOOGLE_CLOUD_UNIVERSE_DOMAIN") + if use_mtls_endpoint not in ("auto", "never", "always"): + raise MutualTLSChannelError( + "Environment variable `GOOGLE_API_USE_MTLS_ENDPOINT` must be `never`, `auto` or `always`" + ) + return use_client_cert, use_mtls_endpoint, universe_domain_env + + @staticmethod + def _get_client_cert_source(provided_cert_source, use_cert_flag): + """Return the client cert source to be used by the client. + + Args: + provided_cert_source (bytes): The client certificate source provided. + use_cert_flag (bool): A flag indicating whether to use the client certificate. + + Returns: + bytes or None: The client cert source to be used by the client. + """ + client_cert_source = None + if use_cert_flag: + if provided_cert_source: + client_cert_source = provided_cert_source + elif mtls.has_default_client_cert_source(): + client_cert_source = mtls.default_client_cert_source() + return client_cert_source + + @staticmethod + def _get_api_endpoint( + api_override, client_cert_source, universe_domain, use_mtls_endpoint + ) -> str: + """Return the API endpoint used by the client. + + Args: + api_override (str): The API endpoint override. If specified, this is always + the return value of this function and the other arguments are not used. + client_cert_source (bytes): The client certificate source used by the client. + universe_domain (str): The universe domain used by the client. + use_mtls_endpoint (str): How to use the mTLS endpoint, which depends also on the other parameters. + Possible values are "always", "auto", or "never". + + Returns: + str: The API endpoint to be used by the client. + """ + if api_override is not None: + api_endpoint = api_override + elif use_mtls_endpoint == "always" or ( + use_mtls_endpoint == "auto" and client_cert_source + ): + _default_universe = ChildPublisherServiceClient._DEFAULT_UNIVERSE + if universe_domain != _default_universe: + raise MutualTLSChannelError( + f"mTLS is not supported in any universe other than {_default_universe}." + ) + api_endpoint = ChildPublisherServiceClient.DEFAULT_MTLS_ENDPOINT + else: + api_endpoint = ( + ChildPublisherServiceClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=universe_domain + ) + ) + return api_endpoint + + @staticmethod + def _get_universe_domain( + client_universe_domain: Optional[str], universe_domain_env: Optional[str] + ) -> str: + """Return the universe domain used by the client. + + Args: + client_universe_domain (Optional[str]): The universe domain configured via the client options. + universe_domain_env (Optional[str]): The universe domain configured via the "GOOGLE_CLOUD_UNIVERSE_DOMAIN" environment variable. + + Returns: + str: The universe domain to be used by the client. + + Raises: + ValueError: If the universe domain is an empty string. + """ + universe_domain = ChildPublisherServiceClient._DEFAULT_UNIVERSE + if client_universe_domain is not None: + universe_domain = client_universe_domain + elif universe_domain_env is not None: + universe_domain = universe_domain_env + if len(universe_domain.strip()) == 0: + raise ValueError("Universe Domain cannot be an empty string.") + return universe_domain + + def _validate_universe_domain(self): + """Validates client's and credentials' universe domains are consistent. + + Returns: + bool: True iff the configured universe domain is valid. + + Raises: + ValueError: If the configured universe domain is not valid. + """ + + # NOTE (b/349488459): universe validation is disabled until further notice. + return True + + def _add_cred_info_for_auth_errors( + self, error: core_exceptions.GoogleAPICallError + ) -> None: + """Adds credential info string to error details for 401/403/404 errors. + + Args: + error (google.api_core.exceptions.GoogleAPICallError): The error to add the cred info. + """ + if error.code not in [ + HTTPStatus.UNAUTHORIZED, + HTTPStatus.FORBIDDEN, + HTTPStatus.NOT_FOUND, + ]: + return + + cred = self._transport._credentials + + # get_cred_info is only available in google-auth>=2.35.0 + if not hasattr(cred, "get_cred_info"): + return + + # ignore the type check since pypy test fails when get_cred_info + # is not available + cred_info = cred.get_cred_info() # type: ignore + if cred_info and hasattr(error._details, "append"): + error._details.append(json.dumps(cred_info)) + + @property + def api_endpoint(self) -> str: + """Return the API endpoint used by the client instance. + + Returns: + str: The API endpoint used by the client instance. + """ + return self._api_endpoint + + @property + def universe_domain(self) -> str: + """Return the universe domain used by the client instance. + + Returns: + str: The universe domain used by the client instance. + """ + return self._universe_domain + + def __init__( + self, + *, + credentials: Optional[ga_credentials.Credentials] = None, + transport: Optional[ + Union[ + str, + ChildPublisherServiceTransport, + Callable[..., ChildPublisherServiceTransport], + ] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the child publisher service client. + + Args: + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + transport (Optional[Union[str,ChildPublisherServiceTransport,Callable[..., ChildPublisherServiceTransport]]]): + The transport to use, or a Callable that constructs and returns a new transport. + If a Callable is given, it will be called with the same set of initialization + arguments as used in the ChildPublisherServiceTransport constructor. + If set to None, a transport is chosen automatically. + client_options (Optional[Union[google.api_core.client_options.ClientOptions, dict]]): + Custom options for the client. + + 1. The ``api_endpoint`` property can be used to override the + default endpoint provided by the client when ``transport`` is + not explicitly provided. Only if this property is not set and + ``transport`` was not explicitly provided, the endpoint is + determined by the GOOGLE_API_USE_MTLS_ENDPOINT environment + variable, which have one of the following values: + "always" (always use the default mTLS endpoint), "never" (always + use the default regular endpoint) and "auto" (auto-switch to the + default mTLS endpoint if client certificate is present; this is + the default value). + + 2. If the GOOGLE_API_USE_CLIENT_CERTIFICATE environment variable + is "true", then the ``client_cert_source`` property can be used + to provide a client certificate for mTLS transport. If + not provided, the default SSL client certificate will be used if + present. If GOOGLE_API_USE_CLIENT_CERTIFICATE is "false" or not + set, no client certificate will be used. + + 3. The ``universe_domain`` property can be used to override the + default "googleapis.com" universe. Note that the ``api_endpoint`` + property still takes precedence; and ``universe_domain`` is + currently not supported for mTLS. + + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS transport + creation failed for any reason. + """ + self._client_options = client_options + if isinstance(self._client_options, dict): + self._client_options = client_options_lib.from_dict(self._client_options) + if self._client_options is None: + self._client_options = client_options_lib.ClientOptions() + self._client_options = cast( + client_options_lib.ClientOptions, self._client_options + ) + + universe_domain_opt = getattr(self._client_options, "universe_domain", None) + + self._use_client_cert, self._use_mtls_endpoint, self._universe_domain_env = ( + ChildPublisherServiceClient._read_environment_variables() + ) + self._client_cert_source = ChildPublisherServiceClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + self._universe_domain = ChildPublisherServiceClient._get_universe_domain( + universe_domain_opt, self._universe_domain_env + ) + self._api_endpoint: str = "" # updated below, depending on `transport` + + # Initialize the universe domain validation. + self._is_universe_domain_valid = False + + if CLIENT_LOGGING_SUPPORTED: # pragma: NO COVER + # Setup logging. + client_logging.initialize_logging() + + api_key_value = getattr(self._client_options, "api_key", None) + if api_key_value and credentials: + raise ValueError( + "client_options.api_key and credentials are mutually exclusive" + ) + + # Save or instantiate the transport. + # Ordinarily, we provide the transport, but allowing a custom transport + # instance provides an extensibility point for unusual situations. + transport_provided = isinstance(transport, ChildPublisherServiceTransport) + if transport_provided: + # transport is a ChildPublisherServiceTransport instance. + if credentials or self._client_options.credentials_file or api_key_value: + raise ValueError( + "When providing a transport instance, " + "provide its credentials directly." + ) + if self._client_options.scopes: + raise ValueError( + "When providing a transport instance, provide its scopes directly." + ) + self._transport = cast(ChildPublisherServiceTransport, transport) + self._api_endpoint = self._transport.host + + self._api_endpoint = ( + self._api_endpoint + or ChildPublisherServiceClient._get_api_endpoint( + self._client_options.api_endpoint, + self._client_cert_source, + self._universe_domain, + self._use_mtls_endpoint, + ) + ) + + if not transport_provided: + import google.auth._default # type: ignore + + if api_key_value and hasattr( + google.auth._default, "get_api_key_credentials" + ): + credentials = google.auth._default.get_api_key_credentials( + api_key_value + ) + + transport_init: Union[ + Type[ChildPublisherServiceTransport], + Callable[..., ChildPublisherServiceTransport], + ] = ( + ChildPublisherServiceClient.get_transport_class(transport) + if isinstance(transport, str) or transport is None + else cast(Callable[..., ChildPublisherServiceTransport], transport) + ) + # initialize with the provided callable or the passed in class + self._transport = transport_init( + credentials=credentials, + credentials_file=self._client_options.credentials_file, + host=self._api_endpoint, + scopes=self._client_options.scopes, + client_cert_source_for_mtls=self._client_cert_source, + quota_project_id=self._client_options.quota_project_id, + client_info=client_info, + always_use_jwt_access=True, + api_audience=self._client_options.api_audience, + ) + + if "async" not in str(self._transport): + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + std_logging.DEBUG + ): # pragma: NO COVER + _LOGGER.debug( + "Created client `google.ads.admanager_v1.ChildPublisherServiceClient`.", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "universeDomain": getattr( + self._transport._credentials, "universe_domain", "" + ), + "credentialsType": f"{type(self._transport._credentials).__module__}.{type(self._transport._credentials).__qualname__}", + "credentialsInfo": getattr( + self.transport._credentials, "get_cred_info", lambda: None + )(), + } + if hasattr(self._transport, "_credentials") + else { + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "credentialsType": None, + }, + ) + + def get_child_publisher( + self, + request: Optional[ + Union[child_publisher_service.GetChildPublisherRequest, dict] + ] = None, + *, + name: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> child_publisher_messages.ChildPublisher: + r"""Retrieves a + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] 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_get_child_publisher(): + # Create a client + client = admanager_v1.ChildPublisherServiceClient() + + # Initialize request argument(s) + request = admanager_v1.GetChildPublisherRequest( + name="name_value", + ) + + # Make the request + response = client.get_child_publisher(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.GetChildPublisherRequest, dict]): + The request object. Request object for [GetChildPublisher][] method. + name (str): + Required. The resource name of the + [ChildPublisher][google.ads.admanager.v1.ChildPublisher]. + Format: + ``networks/{network_code}/childPublishers/{child_publisher_id}`` + + This corresponds to the ``name`` 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.ChildPublisher: + The + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + resource. + + """ + # 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 = [name] + 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, child_publisher_service.GetChildPublisherRequest): + request = child_publisher_service.GetChildPublisherRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get_child_publisher] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.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 list_child_publishers( + self, + request: Optional[ + Union[child_publisher_service.ListChildPublishersRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> pagers.ListChildPublishersPager: + r"""Lists [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + 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_list_child_publishers(): + # Create a client + client = admanager_v1.ChildPublisherServiceClient() + + # Initialize request argument(s) + request = admanager_v1.ListChildPublishersRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_child_publishers(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.ListChildPublishersRequest, dict]): + The request object. Request object for [ListChildPublishers][] method. + parent (str): + Required. The parent, which owns this collection of + [ChildPublisher][google.ads.admanager.v1.ChildPublisher]s. + Format: ``networks/{network_code}`` + + This corresponds to the ``parent`` 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.services.child_publisher_service.pagers.ListChildPublishersPager: + Response object for [ListChildPublishers][] containing matching + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + objects. + + Iterating over this object will yield results and + resolve additional pages automatically. + + """ + # 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] + 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, child_publisher_service.ListChildPublishersRequest): + request = child_publisher_service.ListChildPublishersRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.list_child_publishers] + + # 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, + ) + + # This method is paged; wrap the response in a pager, which provides + # an `__iter__` convenience method. + response = pagers.ListChildPublishersPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def create_child_publisher( + self, + request: Optional[ + Union[child_publisher_service.CreateChildPublisherRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + child_publisher: Optional[child_publisher_messages.ChildPublisher] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> child_publisher_messages.ChildPublisher: + r"""Creates a + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] 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_create_child_publisher(): + # Create a client + client = admanager_v1.ChildPublisherServiceClient() + + # Initialize request argument(s) + request = admanager_v1.CreateChildPublisherRequest( + parent="parent_value", + ) + + # Make the request + response = client.create_child_publisher(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.CreateChildPublisherRequest, dict]): + The request object. Request object for [CreateChildPublisher][] method. + parent (str): + Required. The parent resource where this + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + 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. + child_publisher (google.ads.admanager_v1.types.ChildPublisher): + Required. The + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + to create. + + This corresponds to the ``child_publisher`` 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.ChildPublisher: + The + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + resource. + + """ + # 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, child_publisher] + 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, child_publisher_service.CreateChildPublisherRequest): + request = child_publisher_service.CreateChildPublisherRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if child_publisher is not None: + request.child_publisher = child_publisher + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.create_child_publisher] + + # 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_child_publishers( + self, + request: Optional[ + Union[child_publisher_service.BatchCreateChildPublishersRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + requests: Optional[ + MutableSequence[child_publisher_service.CreateChildPublisherRequest] + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> child_publisher_service.BatchCreateChildPublishersResponse: + r"""Creates [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + 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_child_publishers(): + # Create a client + client = admanager_v1.ChildPublisherServiceClient() + + # Initialize request argument(s) + requests = admanager_v1.CreateChildPublisherRequest() + requests.parent = "parent_value" + + request = admanager_v1.BatchCreateChildPublishersRequest( + parent="parent_value", + requests=requests, + ) + + # Make the request + response = client.batch_create_child_publishers(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.BatchCreateChildPublishersRequest, dict]): + The request object. Request object for [BatchCreateChildPublishers][] + method. + parent (str): + Required. The parent resource where + [ChildPublisher][google.ads.admanager.v1.ChildPublisher]s + will be created. Format: ``networks/{network_code}`` The + parent field in the CreateChildPublisherRequest 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.CreateChildPublisherRequest]): + Required. The + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + objects to create. A maximum of 100 objects can be + created in a batch. + + 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.BatchCreateChildPublishersResponse: + Response object for [BatchCreateChildPublishers][] + 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, child_publisher_service.BatchCreateChildPublishersRequest + ): + request = child_publisher_service.BatchCreateChildPublishersRequest(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_create_child_publishers + ] + + # 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 update_child_publisher( + self, + request: Optional[ + Union[child_publisher_service.UpdateChildPublisherRequest, dict] + ] = None, + *, + child_publisher: Optional[child_publisher_messages.ChildPublisher] = 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]]] = (), + ) -> child_publisher_messages.ChildPublisher: + r"""Updates a + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] 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_child_publisher(): + # Create a client + client = admanager_v1.ChildPublisherServiceClient() + + # Initialize request argument(s) + request = admanager_v1.UpdateChildPublisherRequest( + ) + + # Make the request + response = client.update_child_publisher(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.UpdateChildPublisherRequest, dict]): + The request object. Request object for [UpdateChildPublisher][] method. + child_publisher (google.ads.admanager_v1.types.ChildPublisher): + Required. The + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + to update. + + The + [ChildPublisher][google.ads.admanager.v1.ChildPublisher]'s + ``name`` is used to identify the + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + to update. + + This corresponds to the ``child_publisher`` 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.ChildPublisher: + The + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + resource. + + """ + # 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 = [child_publisher, 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, child_publisher_service.UpdateChildPublisherRequest): + request = child_publisher_service.UpdateChildPublisherRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if child_publisher is not None: + request.child_publisher = child_publisher + 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_child_publisher] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("child_publisher.name", request.child_publisher.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_child_publishers( + self, + request: Optional[ + Union[child_publisher_service.BatchUpdateChildPublishersRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + requests: Optional[ + MutableSequence[child_publisher_service.UpdateChildPublisherRequest] + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> child_publisher_service.BatchUpdateChildPublishersResponse: + r"""Batch updates + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + 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_child_publishers(): + # Create a client + client = admanager_v1.ChildPublisherServiceClient() + + # Initialize request argument(s) + request = admanager_v1.BatchUpdateChildPublishersRequest( + parent="parent_value", + ) + + # Make the request + response = client.batch_update_child_publishers(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.BatchUpdateChildPublishersRequest, dict]): + The request object. Request object for [BatchUpdateChildPublishers][] + method. + parent (str): + Required. The parent resource where + [ChildPublisher][google.ads.admanager.v1.ChildPublisher]s + will be updated. Format: ``networks/{network_code}`` The + parent field in the UpdateChildPublisherRequest 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.UpdateChildPublisherRequest]): + Required. The + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + objects to update. A maximum of 100 objects can be + updated in a batch. + + 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.BatchUpdateChildPublishersResponse: + Response object for [BatchUpdateChildPublishers][] + 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, child_publisher_service.BatchUpdateChildPublishersRequest + ): + request = child_publisher_service.BatchUpdateChildPublishersRequest(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_child_publishers + ] + + # 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) -> "ChildPublisherServiceClient": + 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( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("ChildPublisherServiceClient",) diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/pagers.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/pagers.py new file mode 100644 index 000000000000..b8f8f81d4e37 --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/pagers.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# 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 typing import ( + Any, + AsyncIterator, + Awaitable, + Callable, + Iterator, + Optional, + Sequence, + Tuple, + Union, +) + +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.api_core import retry_async as retries_async + +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] + OptionalAsyncRetry = Union[ + retries_async.AsyncRetry, gapic_v1.method._MethodDefault, None + ] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object, None] # type: ignore + OptionalAsyncRetry = Union[retries_async.AsyncRetry, object, None] # type: ignore + +from google.ads.admanager_v1.types import ( + child_publisher_messages, + child_publisher_service, +) + + +class ListChildPublishersPager: + """A pager for iterating through ``list_child_publishers`` requests. + + This class thinly wraps an initial + :class:`google.ads.admanager_v1.types.ListChildPublishersResponse` object, and + provides an ``__iter__`` method to iterate through its + ``child_publishers`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``ListChildPublishers`` requests and continue to iterate + through the ``child_publishers`` field on the + corresponding responses. + + All the usual :class:`google.ads.admanager_v1.types.ListChildPublishersResponse` + attributes are available on the pager. If multiple requests are made, only + the most recent response is retained, and thus used for attribute lookup. + """ + + def __init__( + self, + method: Callable[..., child_publisher_service.ListChildPublishersResponse], + request: child_publisher_service.ListChildPublishersRequest, + response: child_publisher_service.ListChildPublishersResponse, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ): + """Instantiate the pager. + + Args: + method (Callable): The method that was originally called, and + which instantiated this pager. + request (google.ads.admanager_v1.types.ListChildPublishersRequest): + The initial request object. + response (google.ads.admanager_v1.types.ListChildPublishersResponse): + The initial response object. + 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`. + """ + self._method = method + self._request = child_publisher_service.ListChildPublishersRequest(request) + self._response = response + self._retry = retry + self._timeout = timeout + self._metadata = metadata + + def __getattr__(self, name: str) -> Any: + return getattr(self._response, name) + + @property + def pages(self) -> Iterator[child_publisher_service.ListChildPublishersResponse]: + yield self._response + while self._response.next_page_token: + self._request.page_token = self._response.next_page_token + self._response = self._method( + self._request, + retry=self._retry, + timeout=self._timeout, + metadata=self._metadata, + ) + yield self._response + + def __iter__(self) -> Iterator[child_publisher_messages.ChildPublisher]: + for page in self.pages: + yield from page.child_publishers + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/README.rst b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/README.rst new file mode 100644 index 000000000000..0d109975988e --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/README.rst @@ -0,0 +1,10 @@ + +transport inheritance structure +_______________________________ + +``ChildPublisherServiceTransport`` is the ABC for all transports. + +- public child ``ChildPublisherServiceGrpcTransport`` for sync gRPC transport (defined in ``grpc.py``). +- public child ``ChildPublisherServiceGrpcAsyncIOTransport`` for async gRPC transport (defined in ``grpc_asyncio.py``). +- private child ``_BaseChildPublisherServiceRestTransport`` for base REST transport with inner classes ``_BaseMETHOD`` (defined in ``rest_base.py``). +- public child ``ChildPublisherServiceRestTransport`` for sync REST transport with inner classes ``METHOD`` derived from the parent's corresponding ``_BaseMETHOD`` classes (defined in ``rest.py``). diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/__init__.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/__init__.py new file mode 100644 index 000000000000..08163b2e186e --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/__init__.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# 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 collections import OrderedDict +from typing import Dict, Type + +from .base import ChildPublisherServiceTransport +from .rest import ( + ChildPublisherServiceRestInterceptor, + ChildPublisherServiceRestTransport, +) + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[ChildPublisherServiceTransport]] +_transport_registry["rest"] = ChildPublisherServiceRestTransport + +__all__ = ( + "ChildPublisherServiceTransport", + "ChildPublisherServiceRestTransport", + "ChildPublisherServiceRestInterceptor", +) diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/base.py new file mode 100644 index 000000000000..1fdcebe123ba --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/base.py @@ -0,0 +1,296 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# 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 abc +from typing import Awaitable, Callable, Dict, Optional, Sequence, Union + +import google.api_core +import google.auth # type: ignore +import google.protobuf +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.longrunning import operations_pb2 # type: ignore +from google.oauth2 import service_account # type: ignore + +from google.ads.admanager_v1 import gapic_version as package_version +from google.ads.admanager_v1.types import ( + child_publisher_messages, + child_publisher_service, +) + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class ChildPublisherServiceTransport(abc.ABC): + """Abstract transport class for ChildPublisherService.""" + + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/admanager", + "https://www.googleapis.com/auth/admanager.readonly", + ) + + DEFAULT_HOST: str = "admanager.googleapis.com" + + def __init__( + self, + *, + host: str = DEFAULT_HOST, + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + quota_project_id: Optional[str] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + api_audience: Optional[str] = None, + **kwargs, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to (default: 'admanager.googleapis.com'). + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + credentials_file (Optional[str]): Deprecated. A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is mutually exclusive with credentials. This argument will be + removed in the next major version of this library. + scopes (Optional[Sequence[str]]): A list of scopes. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + + # Save the scopes. + self._scopes = scopes + if not hasattr(self, "_ignore_credentials"): + self._ignore_credentials: bool = False + + # If no credentials are provided, then determine the appropriate + # defaults. + if credentials and credentials_file: + raise core_exceptions.DuplicateCredentialArgs( + "'credentials_file' and 'credentials' are mutually exclusive" + ) + + if credentials_file is not None: + credentials, _ = google.auth.load_credentials_from_file( + credentials_file, + scopes=scopes, + quota_project_id=quota_project_id, + default_scopes=self.AUTH_SCOPES, + ) + elif credentials is None and not self._ignore_credentials: + credentials, _ = google.auth.default( + scopes=scopes, + quota_project_id=quota_project_id, + default_scopes=self.AUTH_SCOPES, + ) + # Don't apply audience if the credentials file passed from user. + if hasattr(credentials, "with_gdch_audience"): + credentials = credentials.with_gdch_audience( + api_audience if api_audience else host + ) + + # If the credentials are service account credentials, then always try to use self signed JWT. + if ( + always_use_jwt_access + and isinstance(credentials, service_account.Credentials) + and hasattr(service_account.Credentials, "with_always_use_jwt_access") + ): + credentials = credentials.with_always_use_jwt_access(True) + + # Save the credentials. + self._credentials = credentials + + # Save the hostname. Default to port 443 (HTTPS) if none is specified. + if ":" not in host: + host += ":443" + self._host = host + + self._wrapped_methods: Dict[Callable, Callable] = {} + + @property + def host(self): + return self._host + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.get_child_publisher: gapic_v1.method.wrap_method( + self.get_child_publisher, + default_timeout=None, + client_info=client_info, + ), + self.list_child_publishers: gapic_v1.method.wrap_method( + self.list_child_publishers, + default_timeout=None, + client_info=client_info, + ), + self.create_child_publisher: gapic_v1.method.wrap_method( + self.create_child_publisher, + default_timeout=None, + client_info=client_info, + ), + self.batch_create_child_publishers: gapic_v1.method.wrap_method( + self.batch_create_child_publishers, + default_timeout=None, + client_info=client_info, + ), + self.update_child_publisher: gapic_v1.method.wrap_method( + self.update_child_publisher, + default_timeout=None, + client_info=client_info, + ), + self.batch_update_child_publishers: gapic_v1.method.wrap_method( + self.batch_update_child_publishers, + 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, + client_info=client_info, + ), + } + + def close(self): + """Closes resources associated with the transport. + + .. warning:: + Only call this method if the transport is NOT shared + with other clients - this may cause errors in other clients! + """ + raise NotImplementedError() + + @property + def get_child_publisher( + self, + ) -> Callable[ + [child_publisher_service.GetChildPublisherRequest], + Union[ + child_publisher_messages.ChildPublisher, + Awaitable[child_publisher_messages.ChildPublisher], + ], + ]: + raise NotImplementedError() + + @property + def list_child_publishers( + self, + ) -> Callable[ + [child_publisher_service.ListChildPublishersRequest], + Union[ + child_publisher_service.ListChildPublishersResponse, + Awaitable[child_publisher_service.ListChildPublishersResponse], + ], + ]: + raise NotImplementedError() + + @property + def create_child_publisher( + self, + ) -> Callable[ + [child_publisher_service.CreateChildPublisherRequest], + Union[ + child_publisher_messages.ChildPublisher, + Awaitable[child_publisher_messages.ChildPublisher], + ], + ]: + raise NotImplementedError() + + @property + def batch_create_child_publishers( + self, + ) -> Callable[ + [child_publisher_service.BatchCreateChildPublishersRequest], + Union[ + child_publisher_service.BatchCreateChildPublishersResponse, + Awaitable[child_publisher_service.BatchCreateChildPublishersResponse], + ], + ]: + raise NotImplementedError() + + @property + def update_child_publisher( + self, + ) -> Callable[ + [child_publisher_service.UpdateChildPublisherRequest], + Union[ + child_publisher_messages.ChildPublisher, + Awaitable[child_publisher_messages.ChildPublisher], + ], + ]: + raise NotImplementedError() + + @property + def batch_update_child_publishers( + self, + ) -> Callable[ + [child_publisher_service.BatchUpdateChildPublishersRequest], + Union[ + child_publisher_service.BatchUpdateChildPublishersResponse, + Awaitable[child_publisher_service.BatchUpdateChildPublishersResponse], + ], + ]: + raise NotImplementedError() + + @property + def get_operation( + self, + ) -> Callable[ + [operations_pb2.GetOperationRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + +__all__ = ("ChildPublisherServiceTransport",) diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/rest.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/rest.py new file mode 100644 index 000000000000..8bd1734017f3 --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/rest.py @@ -0,0 +1,1861 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# 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 dataclasses +import json # type: ignore +import logging +import warnings +from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union + +import google.protobuf +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1, rest_helpers, rest_streaming +from google.api_core import retry as retries +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.transport.requests import AuthorizedSession # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf import json_format +from requests import __version__ as requests_version + +from google.ads.admanager_v1.types import ( + child_publisher_messages, + child_publisher_service, +) + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseChildPublisherServiceRestTransport + +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 = logging.getLogger(__name__) + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=BASE_DEFAULT_CLIENT_INFO.gapic_version, + grpc_version=None, + rest_version=f"requests@{requests_version}", +) + +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class ChildPublisherServiceRestInterceptor: + """Interceptor for ChildPublisherService. + + Interceptors are used to manipulate requests, request metadata, and responses + in arbitrary ways. + Example use cases include: + * Logging + * Verifying requests according to service or custom semantics + * Stripping extraneous information from responses + + These use cases and more can be enabled by injecting an + instance of a custom subclass when constructing the ChildPublisherServiceRestTransport. + + .. code-block:: python + class MyCustomChildPublisherServiceInterceptor(ChildPublisherServiceRestInterceptor): + def pre_batch_create_child_publishers(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_create_child_publishers(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_batch_update_child_publishers(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_update_child_publishers(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_create_child_publisher(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_create_child_publisher(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_get_child_publisher(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_get_child_publisher(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_list_child_publishers(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_list_child_publishers(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_update_child_publisher(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_update_child_publisher(self, response): + logging.log(f"Received response: {response}") + return response + + transport = ChildPublisherServiceRestTransport(interceptor=MyCustomChildPublisherServiceInterceptor()) + client = ChildPublisherServiceClient(transport=transport) + + + """ + + def pre_batch_create_child_publishers( + self, + request: child_publisher_service.BatchCreateChildPublishersRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_service.BatchCreateChildPublishersRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_create_child_publishers + + Override in a subclass to manipulate the request or metadata + before they are sent to the ChildPublisherService server. + """ + return request, metadata + + def post_batch_create_child_publishers( + self, response: child_publisher_service.BatchCreateChildPublishersResponse + ) -> child_publisher_service.BatchCreateChildPublishersResponse: + """Post-rpc interceptor for batch_create_child_publishers + + DEPRECATED. Please use the `post_batch_create_child_publishers_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ChildPublisherService server but before + it is returned to user code. This `post_batch_create_child_publishers` interceptor runs + before the `post_batch_create_child_publishers_with_metadata` interceptor. + """ + return response + + def post_batch_create_child_publishers_with_metadata( + self, + response: child_publisher_service.BatchCreateChildPublishersResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_service.BatchCreateChildPublishersResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_create_child_publishers + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ChildPublisherService server but before it is returned to user code. + + We recommend only using this `post_batch_create_child_publishers_with_metadata` + interceptor in new development instead of the `post_batch_create_child_publishers` interceptor. + When both interceptors are used, this `post_batch_create_child_publishers_with_metadata` interceptor runs after the + `post_batch_create_child_publishers` interceptor. The (possibly modified) response returned by + `post_batch_create_child_publishers` will be passed to + `post_batch_create_child_publishers_with_metadata`. + """ + return response, metadata + + def pre_batch_update_child_publishers( + self, + request: child_publisher_service.BatchUpdateChildPublishersRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_service.BatchUpdateChildPublishersRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_update_child_publishers + + Override in a subclass to manipulate the request or metadata + before they are sent to the ChildPublisherService server. + """ + return request, metadata + + def post_batch_update_child_publishers( + self, response: child_publisher_service.BatchUpdateChildPublishersResponse + ) -> child_publisher_service.BatchUpdateChildPublishersResponse: + """Post-rpc interceptor for batch_update_child_publishers + + DEPRECATED. Please use the `post_batch_update_child_publishers_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ChildPublisherService server but before + it is returned to user code. This `post_batch_update_child_publishers` interceptor runs + before the `post_batch_update_child_publishers_with_metadata` interceptor. + """ + return response + + def post_batch_update_child_publishers_with_metadata( + self, + response: child_publisher_service.BatchUpdateChildPublishersResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_service.BatchUpdateChildPublishersResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_update_child_publishers + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ChildPublisherService server but before it is returned to user code. + + We recommend only using this `post_batch_update_child_publishers_with_metadata` + interceptor in new development instead of the `post_batch_update_child_publishers` interceptor. + When both interceptors are used, this `post_batch_update_child_publishers_with_metadata` interceptor runs after the + `post_batch_update_child_publishers` interceptor. The (possibly modified) response returned by + `post_batch_update_child_publishers` will be passed to + `post_batch_update_child_publishers_with_metadata`. + """ + return response, metadata + + def pre_create_child_publisher( + self, + request: child_publisher_service.CreateChildPublisherRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_service.CreateChildPublisherRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for create_child_publisher + + Override in a subclass to manipulate the request or metadata + before they are sent to the ChildPublisherService server. + """ + return request, metadata + + def post_create_child_publisher( + self, response: child_publisher_messages.ChildPublisher + ) -> child_publisher_messages.ChildPublisher: + """Post-rpc interceptor for create_child_publisher + + DEPRECATED. Please use the `post_create_child_publisher_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ChildPublisherService server but before + it is returned to user code. This `post_create_child_publisher` interceptor runs + before the `post_create_child_publisher_with_metadata` interceptor. + """ + return response + + def post_create_child_publisher_with_metadata( + self, + response: child_publisher_messages.ChildPublisher, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_messages.ChildPublisher, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for create_child_publisher + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ChildPublisherService server but before it is returned to user code. + + We recommend only using this `post_create_child_publisher_with_metadata` + interceptor in new development instead of the `post_create_child_publisher` interceptor. + When both interceptors are used, this `post_create_child_publisher_with_metadata` interceptor runs after the + `post_create_child_publisher` interceptor. The (possibly modified) response returned by + `post_create_child_publisher` will be passed to + `post_create_child_publisher_with_metadata`. + """ + return response, metadata + + def pre_get_child_publisher( + self, + request: child_publisher_service.GetChildPublisherRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_service.GetChildPublisherRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for get_child_publisher + + Override in a subclass to manipulate the request or metadata + before they are sent to the ChildPublisherService server. + """ + return request, metadata + + def post_get_child_publisher( + self, response: child_publisher_messages.ChildPublisher + ) -> child_publisher_messages.ChildPublisher: + """Post-rpc interceptor for get_child_publisher + + DEPRECATED. Please use the `post_get_child_publisher_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ChildPublisherService server but before + it is returned to user code. This `post_get_child_publisher` interceptor runs + before the `post_get_child_publisher_with_metadata` interceptor. + """ + return response + + def post_get_child_publisher_with_metadata( + self, + response: child_publisher_messages.ChildPublisher, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_messages.ChildPublisher, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for get_child_publisher + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ChildPublisherService server but before it is returned to user code. + + We recommend only using this `post_get_child_publisher_with_metadata` + interceptor in new development instead of the `post_get_child_publisher` interceptor. + When both interceptors are used, this `post_get_child_publisher_with_metadata` interceptor runs after the + `post_get_child_publisher` interceptor. The (possibly modified) response returned by + `post_get_child_publisher` will be passed to + `post_get_child_publisher_with_metadata`. + """ + return response, metadata + + def pre_list_child_publishers( + self, + request: child_publisher_service.ListChildPublishersRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_service.ListChildPublishersRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for list_child_publishers + + Override in a subclass to manipulate the request or metadata + before they are sent to the ChildPublisherService server. + """ + return request, metadata + + def post_list_child_publishers( + self, response: child_publisher_service.ListChildPublishersResponse + ) -> child_publisher_service.ListChildPublishersResponse: + """Post-rpc interceptor for list_child_publishers + + DEPRECATED. Please use the `post_list_child_publishers_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ChildPublisherService server but before + it is returned to user code. This `post_list_child_publishers` interceptor runs + before the `post_list_child_publishers_with_metadata` interceptor. + """ + return response + + def post_list_child_publishers_with_metadata( + self, + response: child_publisher_service.ListChildPublishersResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_service.ListChildPublishersResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for list_child_publishers + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ChildPublisherService server but before it is returned to user code. + + We recommend only using this `post_list_child_publishers_with_metadata` + interceptor in new development instead of the `post_list_child_publishers` interceptor. + When both interceptors are used, this `post_list_child_publishers_with_metadata` interceptor runs after the + `post_list_child_publishers` interceptor. The (possibly modified) response returned by + `post_list_child_publishers` will be passed to + `post_list_child_publishers_with_metadata`. + """ + return response, metadata + + def pre_update_child_publisher( + self, + request: child_publisher_service.UpdateChildPublisherRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_service.UpdateChildPublisherRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for update_child_publisher + + Override in a subclass to manipulate the request or metadata + before they are sent to the ChildPublisherService server. + """ + return request, metadata + + def post_update_child_publisher( + self, response: child_publisher_messages.ChildPublisher + ) -> child_publisher_messages.ChildPublisher: + """Post-rpc interceptor for update_child_publisher + + DEPRECATED. Please use the `post_update_child_publisher_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the ChildPublisherService server but before + it is returned to user code. This `post_update_child_publisher` interceptor runs + before the `post_update_child_publisher_with_metadata` interceptor. + """ + return response + + def post_update_child_publisher_with_metadata( + self, + response: child_publisher_messages.ChildPublisher, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + child_publisher_messages.ChildPublisher, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for update_child_publisher + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the ChildPublisherService server but before it is returned to user code. + + We recommend only using this `post_update_child_publisher_with_metadata` + interceptor in new development instead of the `post_update_child_publisher` interceptor. + When both interceptors are used, this `post_update_child_publisher_with_metadata` interceptor runs after the + `post_update_child_publisher` interceptor. The (possibly modified) response returned by + `post_update_child_publisher` will be passed to + `post_update_child_publisher_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 ChildPublisherService 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 ChildPublisherService server but before + it is returned to user code. + """ + return response + + def pre_get_operation( + self, + request: operations_pb2.GetOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.GetOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for get_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the ChildPublisherService server. + """ + return request, metadata + + def post_get_operation( + self, response: operations_pb2.Operation + ) -> operations_pb2.Operation: + """Post-rpc interceptor for get_operation + + Override in a subclass to manipulate the response + after it is returned by the ChildPublisherService server but before + it is returned to user code. + """ + return response + + +@dataclasses.dataclass +class ChildPublisherServiceRestStub: + _session: AuthorizedSession + _host: str + _interceptor: ChildPublisherServiceRestInterceptor + + +class ChildPublisherServiceRestTransport(_BaseChildPublisherServiceRestTransport): + """REST backend synchronous transport for ChildPublisherService. + + Provides methods for handling + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] objects. + + This class defines the same methods as the primary client, so the + primary client can load the underlying transport implementation + and call it. + + It sends JSON representations of protocol buffers over HTTP/1.1 + """ + + def __init__( + self, + *, + host: str = "admanager.googleapis.com", + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + client_cert_source_for_mtls: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + quota_project_id: Optional[str] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + url_scheme: str = "https", + interceptor: Optional[ChildPublisherServiceRestInterceptor] = None, + api_audience: Optional[str] = None, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to (default: 'admanager.googleapis.com'). + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + + credentials_file (Optional[str]): Deprecated. A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is ignored if ``channel`` is provided. This argument will be + removed in the next major version of this library. + scopes (Optional(Sequence[str])): A list of scopes. This argument is + ignored if ``channel`` is provided. + client_cert_source_for_mtls (Callable[[], Tuple[bytes, bytes]]): Client + certificate to configure mutual TLS HTTP channel. It is ignored + if ``channel`` is provided. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you are developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + url_scheme: the protocol scheme for the API endpoint. Normally + "https", but for testing or local servers, + "http" can be specified. + interceptor (Optional[ChildPublisherServiceRestInterceptor]): Interceptor used + to manipulate requests, request metadata, and responses. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + # Run the base constructor + # TODO(yon-mg): resolve other ctor params i.e. scopes, quota, etc. + # TODO: When custom host (api_endpoint) is set, `scopes` must *also* be set on the + # credentials object + super().__init__( + host=host, + credentials=credentials, + client_info=client_info, + always_use_jwt_access=always_use_jwt_access, + url_scheme=url_scheme, + api_audience=api_audience, + ) + self._session = AuthorizedSession( + self._credentials, default_host=self.DEFAULT_HOST + ) + if client_cert_source_for_mtls: + self._session.configure_mtls_channel(client_cert_source_for_mtls) + self._interceptor = interceptor or ChildPublisherServiceRestInterceptor() + self._prep_wrapped_messages(client_info) + + class _BatchCreateChildPublishers( + _BaseChildPublisherServiceRestTransport._BaseBatchCreateChildPublishers, + ChildPublisherServiceRestStub, + ): + def __hash__(self): + return hash("ChildPublisherServiceRestTransport.BatchCreateChildPublishers") + + @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: child_publisher_service.BatchCreateChildPublishersRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> child_publisher_service.BatchCreateChildPublishersResponse: + r"""Call the batch create child + publishers method over HTTP. + + Args: + request (~.child_publisher_service.BatchCreateChildPublishersRequest): + The request object. Request object for [BatchCreateChildPublishers][] + 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: + ~.child_publisher_service.BatchCreateChildPublishersResponse: + Response object for [BatchCreateChildPublishers][] + method. + + """ + + http_options = _BaseChildPublisherServiceRestTransport._BaseBatchCreateChildPublishers._get_http_options() + + request, metadata = self._interceptor.pre_batch_create_child_publishers( + request, metadata + ) + transcoded_request = _BaseChildPublisherServiceRestTransport._BaseBatchCreateChildPublishers._get_transcoded_request( + http_options, request + ) + + body = _BaseChildPublisherServiceRestTransport._BaseBatchCreateChildPublishers._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseChildPublisherServiceRestTransport._BaseBatchCreateChildPublishers._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.ChildPublisherServiceClient.BatchCreateChildPublishers", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "BatchCreateChildPublishers", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ChildPublisherServiceRestTransport._BatchCreateChildPublishers._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 = child_publisher_service.BatchCreateChildPublishersResponse() + pb_resp = child_publisher_service.BatchCreateChildPublishersResponse.pb( + resp + ) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_batch_create_child_publishers(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = ( + self._interceptor.post_batch_create_child_publishers_with_metadata( + resp, response_metadata + ) + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = child_publisher_service.BatchCreateChildPublishersResponse.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.ChildPublisherServiceClient.batch_create_child_publishers", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "BatchCreateChildPublishers", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _BatchUpdateChildPublishers( + _BaseChildPublisherServiceRestTransport._BaseBatchUpdateChildPublishers, + ChildPublisherServiceRestStub, + ): + def __hash__(self): + return hash("ChildPublisherServiceRestTransport.BatchUpdateChildPublishers") + + @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: child_publisher_service.BatchUpdateChildPublishersRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> child_publisher_service.BatchUpdateChildPublishersResponse: + r"""Call the batch update child + publishers method over HTTP. + + Args: + request (~.child_publisher_service.BatchUpdateChildPublishersRequest): + The request object. Request object for [BatchUpdateChildPublishers][] + 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: + ~.child_publisher_service.BatchUpdateChildPublishersResponse: + Response object for [BatchUpdateChildPublishers][] + method. + + """ + + http_options = _BaseChildPublisherServiceRestTransport._BaseBatchUpdateChildPublishers._get_http_options() + + request, metadata = self._interceptor.pre_batch_update_child_publishers( + request, metadata + ) + transcoded_request = _BaseChildPublisherServiceRestTransport._BaseBatchUpdateChildPublishers._get_transcoded_request( + http_options, request + ) + + body = _BaseChildPublisherServiceRestTransport._BaseBatchUpdateChildPublishers._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseChildPublisherServiceRestTransport._BaseBatchUpdateChildPublishers._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.ChildPublisherServiceClient.BatchUpdateChildPublishers", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "BatchUpdateChildPublishers", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ChildPublisherServiceRestTransport._BatchUpdateChildPublishers._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 = child_publisher_service.BatchUpdateChildPublishersResponse() + pb_resp = child_publisher_service.BatchUpdateChildPublishersResponse.pb( + resp + ) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_batch_update_child_publishers(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = ( + self._interceptor.post_batch_update_child_publishers_with_metadata( + resp, response_metadata + ) + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = child_publisher_service.BatchUpdateChildPublishersResponse.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.ChildPublisherServiceClient.batch_update_child_publishers", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "BatchUpdateChildPublishers", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _CreateChildPublisher( + _BaseChildPublisherServiceRestTransport._BaseCreateChildPublisher, + ChildPublisherServiceRestStub, + ): + def __hash__(self): + return hash("ChildPublisherServiceRestTransport.CreateChildPublisher") + + @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: child_publisher_service.CreateChildPublisherRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> child_publisher_messages.ChildPublisher: + r"""Call the create child publisher method over HTTP. + + Args: + request (~.child_publisher_service.CreateChildPublisherRequest): + The request object. Request object for [CreateChildPublisher][] 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: + ~.child_publisher_messages.ChildPublisher: + The + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + resource. + + """ + + http_options = _BaseChildPublisherServiceRestTransport._BaseCreateChildPublisher._get_http_options() + + request, metadata = self._interceptor.pre_create_child_publisher( + request, metadata + ) + transcoded_request = _BaseChildPublisherServiceRestTransport._BaseCreateChildPublisher._get_transcoded_request( + http_options, request + ) + + body = _BaseChildPublisherServiceRestTransport._BaseCreateChildPublisher._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseChildPublisherServiceRestTransport._BaseCreateChildPublisher._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.ChildPublisherServiceClient.CreateChildPublisher", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "CreateChildPublisher", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + ChildPublisherServiceRestTransport._CreateChildPublisher._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 = child_publisher_messages.ChildPublisher() + pb_resp = child_publisher_messages.ChildPublisher.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_create_child_publisher(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_create_child_publisher_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = child_publisher_messages.ChildPublisher.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.ChildPublisherServiceClient.create_child_publisher", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "CreateChildPublisher", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetChildPublisher( + _BaseChildPublisherServiceRestTransport._BaseGetChildPublisher, + ChildPublisherServiceRestStub, + ): + def __hash__(self): + return hash("ChildPublisherServiceRestTransport.GetChildPublisher") + + @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: child_publisher_service.GetChildPublisherRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> child_publisher_messages.ChildPublisher: + r"""Call the get child publisher method over HTTP. + + Args: + request (~.child_publisher_service.GetChildPublisherRequest): + The request object. Request object for [GetChildPublisher][] 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: + ~.child_publisher_messages.ChildPublisher: + The + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + resource. + + """ + + http_options = _BaseChildPublisherServiceRestTransport._BaseGetChildPublisher._get_http_options() + + request, metadata = self._interceptor.pre_get_child_publisher( + request, metadata + ) + transcoded_request = _BaseChildPublisherServiceRestTransport._BaseGetChildPublisher._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseChildPublisherServiceRestTransport._BaseGetChildPublisher._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.ChildPublisherServiceClient.GetChildPublisher", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "GetChildPublisher", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + ChildPublisherServiceRestTransport._GetChildPublisher._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 = child_publisher_messages.ChildPublisher() + pb_resp = child_publisher_messages.ChildPublisher.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_child_publisher(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_child_publisher_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = child_publisher_messages.ChildPublisher.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.ChildPublisherServiceClient.get_child_publisher", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "GetChildPublisher", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _ListChildPublishers( + _BaseChildPublisherServiceRestTransport._BaseListChildPublishers, + ChildPublisherServiceRestStub, + ): + def __hash__(self): + return hash("ChildPublisherServiceRestTransport.ListChildPublishers") + + @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: child_publisher_service.ListChildPublishersRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> child_publisher_service.ListChildPublishersResponse: + r"""Call the list child publishers method over HTTP. + + Args: + request (~.child_publisher_service.ListChildPublishersRequest): + The request object. Request object for [ListChildPublishers][] 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: + ~.child_publisher_service.ListChildPublishersResponse: + Response object for [ListChildPublishers][] containing + matching + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + objects. + + """ + + http_options = _BaseChildPublisherServiceRestTransport._BaseListChildPublishers._get_http_options() + + request, metadata = self._interceptor.pre_list_child_publishers( + request, metadata + ) + transcoded_request = _BaseChildPublisherServiceRestTransport._BaseListChildPublishers._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseChildPublisherServiceRestTransport._BaseListChildPublishers._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.ChildPublisherServiceClient.ListChildPublishers", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "ListChildPublishers", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + ChildPublisherServiceRestTransport._ListChildPublishers._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 = child_publisher_service.ListChildPublishersResponse() + pb_resp = child_publisher_service.ListChildPublishersResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_list_child_publishers(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_list_child_publishers_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = ( + child_publisher_service.ListChildPublishersResponse.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.ChildPublisherServiceClient.list_child_publishers", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "ListChildPublishers", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _UpdateChildPublisher( + _BaseChildPublisherServiceRestTransport._BaseUpdateChildPublisher, + ChildPublisherServiceRestStub, + ): + def __hash__(self): + return hash("ChildPublisherServiceRestTransport.UpdateChildPublisher") + + @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: child_publisher_service.UpdateChildPublisherRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> child_publisher_messages.ChildPublisher: + r"""Call the update child publisher method over HTTP. + + Args: + request (~.child_publisher_service.UpdateChildPublisherRequest): + The request object. Request object for [UpdateChildPublisher][] 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: + ~.child_publisher_messages.ChildPublisher: + The + [ChildPublisher][google.ads.admanager.v1.ChildPublisher] + resource. + + """ + + http_options = _BaseChildPublisherServiceRestTransport._BaseUpdateChildPublisher._get_http_options() + + request, metadata = self._interceptor.pre_update_child_publisher( + request, metadata + ) + transcoded_request = _BaseChildPublisherServiceRestTransport._BaseUpdateChildPublisher._get_transcoded_request( + http_options, request + ) + + body = _BaseChildPublisherServiceRestTransport._BaseUpdateChildPublisher._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseChildPublisherServiceRestTransport._BaseUpdateChildPublisher._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.ChildPublisherServiceClient.UpdateChildPublisher", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "UpdateChildPublisher", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + ChildPublisherServiceRestTransport._UpdateChildPublisher._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 = child_publisher_messages.ChildPublisher() + pb_resp = child_publisher_messages.ChildPublisher.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_update_child_publisher(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_update_child_publisher_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = child_publisher_messages.ChildPublisher.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.ChildPublisherServiceClient.update_child_publisher", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "UpdateChildPublisher", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def batch_create_child_publishers( + self, + ) -> Callable[ + [child_publisher_service.BatchCreateChildPublishersRequest], + child_publisher_service.BatchCreateChildPublishersResponse, + ]: + # 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._BatchCreateChildPublishers( + self._session, self._host, self._interceptor + ) # type: ignore + + @property + def batch_update_child_publishers( + self, + ) -> Callable[ + [child_publisher_service.BatchUpdateChildPublishersRequest], + child_publisher_service.BatchUpdateChildPublishersResponse, + ]: + # 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._BatchUpdateChildPublishers( + self._session, self._host, self._interceptor + ) # type: ignore + + @property + def create_child_publisher( + self, + ) -> Callable[ + [child_publisher_service.CreateChildPublisherRequest], + child_publisher_messages.ChildPublisher, + ]: + # 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._CreateChildPublisher(self._session, self._host, self._interceptor) # type: ignore + + @property + def get_child_publisher( + self, + ) -> Callable[ + [child_publisher_service.GetChildPublisherRequest], + child_publisher_messages.ChildPublisher, + ]: + # 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._GetChildPublisher(self._session, self._host, self._interceptor) # type: ignore + + @property + def list_child_publishers( + self, + ) -> Callable[ + [child_publisher_service.ListChildPublishersRequest], + child_publisher_service.ListChildPublishersResponse, + ]: + # 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._ListChildPublishers(self._session, self._host, self._interceptor) # type: ignore + + @property + def update_child_publisher( + self, + ) -> Callable[ + [child_publisher_service.UpdateChildPublisherRequest], + child_publisher_messages.ChildPublisher, + ]: + # 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._UpdateChildPublisher(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( + _BaseChildPublisherServiceRestTransport._BaseCancelOperation, + ChildPublisherServiceRestStub, + ): + def __hash__(self): + return hash("ChildPublisherServiceRestTransport.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 = _BaseChildPublisherServiceRestTransport._BaseCancelOperation._get_http_options() + + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request = _BaseChildPublisherServiceRestTransport._BaseCancelOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseChildPublisherServiceRestTransport._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.ChildPublisherServiceClient.CancelOperation", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + ChildPublisherServiceRestTransport._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 + + class _GetOperation( + _BaseChildPublisherServiceRestTransport._BaseGetOperation, + ChildPublisherServiceRestStub, + ): + def __hash__(self): + return hash("ChildPublisherServiceRestTransport.GetOperation") + + @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.GetOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operations_pb2.Operation: + r"""Call the get operation method over HTTP. + + Args: + request (operations_pb2.GetOperationRequest): + The request object 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: Response from GetOperation method. + """ + + http_options = _BaseChildPublisherServiceRestTransport._BaseGetOperation._get_http_options() + + request, metadata = self._interceptor.pre_get_operation(request, metadata) + transcoded_request = _BaseChildPublisherServiceRestTransport._BaseGetOperation._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseChildPublisherServiceRestTransport._BaseGetOperation._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.ChildPublisherServiceClient.GetOperation", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "GetOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ChildPublisherServiceRestTransport._GetOperation._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) + + content = response.content.decode("utf-8") + resp = operations_pb2.Operation() + resp = json_format.Parse(content, resp) + resp = self._interceptor.post_get_operation(resp) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = json_format.MessageToJson(resp) + 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.ChildPublisherServiceAsyncClient.GetOperation", + extra={ + "serviceName": "google.ads.admanager.v1.ChildPublisherService", + "rpcName": "GetOperation", + "httpResponse": http_response, + "metadata": http_response["headers"], + }, + ) + return resp + + @property + def kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("ChildPublisherServiceRestTransport",) diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/rest_base.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/rest_base.py new file mode 100644 index 000000000000..0243e9333e26 --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/child_publisher_service/transports/rest_base.py @@ -0,0 +1,471 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# 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 # type: ignore +import re +from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union + +from google.api_core import gapic_v1, path_template +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf import json_format + +from google.ads.admanager_v1.types import ( + child_publisher_messages, + child_publisher_service, +) + +from .base import DEFAULT_CLIENT_INFO, ChildPublisherServiceTransport + + +class _BaseChildPublisherServiceRestTransport(ChildPublisherServiceTransport): + """Base REST backend transport for ChildPublisherService. + + Note: This class is not meant to be used directly. Use its sync and + async sub-classes instead. + + This class defines the same methods as the primary client, so the + primary client can load the underlying transport implementation + and call it. + + It sends JSON representations of protocol buffers over HTTP/1.1 + """ + + def __init__( + self, + *, + host: str = "admanager.googleapis.com", + credentials: Optional[Any] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + url_scheme: str = "https", + api_audience: Optional[str] = None, + ) -> None: + """Instantiate the transport. + Args: + host (Optional[str]): + The hostname to connect to (default: 'admanager.googleapis.com'). + credentials (Optional[Any]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you are developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + url_scheme: the protocol scheme for the API endpoint. Normally + "https", but for testing or local servers, + "http" can be specified. + """ + # Run the base constructor + maybe_url_match = re.match("^(?Phttp(?:s)?://)?(?P.*)$", host) + if maybe_url_match is None: + raise ValueError( + f"Unexpected hostname structure: {host}" + ) # pragma: NO COVER + + url_match_items = maybe_url_match.groupdict() + + host = f"{url_scheme}://{host}" if not url_match_items["scheme"] else host + + super().__init__( + host=host, + credentials=credentials, + client_info=client_info, + always_use_jwt_access=always_use_jwt_access, + api_audience=api_audience, + ) + + class _BaseBatchCreateChildPublishers: + 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/*}/childPublishers:batchCreate", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = child_publisher_service.BatchCreateChildPublishersRequest.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( + _BaseChildPublisherServiceRestTransport._BaseBatchCreateChildPublishers._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseBatchUpdateChildPublishers: + 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/*}/childPublishers:batchUpdate", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = child_publisher_service.BatchUpdateChildPublishersRequest.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( + _BaseChildPublisherServiceRestTransport._BaseBatchUpdateChildPublishers._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseCreateChildPublisher: + 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/*}/childPublishers", + "body": "child_publisher", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = child_publisher_service.CreateChildPublisherRequest.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( + _BaseChildPublisherServiceRestTransport._BaseCreateChildPublisher._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseGetChildPublisher: + 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": "get", + "uri": "/v1/{name=networks/*/childPublishers/*}", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = child_publisher_service.GetChildPublisherRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @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( + _BaseChildPublisherServiceRestTransport._BaseGetChildPublisher._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseListChildPublishers: + 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": "get", + "uri": "/v1/{parent=networks/*}/childPublishers", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = child_publisher_service.ListChildPublishersRequest.pb(request) + transcoded_request = path_template.transcode(http_options, pb_request) + return transcoded_request + + @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( + _BaseChildPublisherServiceRestTransport._BaseListChildPublishers._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseUpdateChildPublisher: + 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/{child_publisher.name=networks/*/childPublishers/*}", + "body": "child_publisher", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = child_publisher_service.UpdateChildPublisherRequest.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( + _BaseChildPublisherServiceRestTransport._BaseUpdateChildPublisher._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.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/v1/{name=networks/*/operations/reports/runs/*}", + }, + ] + 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 + + +__all__ = ("_BaseChildPublisherServiceRestTransport",) 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 ad92e2b92f77..3f7fd0decdd9 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 @@ -61,6 +61,7 @@ _LOGGER = std_logging.getLogger(__name__) +import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore from google.longrunning import operations_pb2 # type: ignore @@ -110,7 +111,9 @@ def get_transport_class( class CompanyServiceClient(metaclass=CompanyServiceClientMeta): - """Provides methods for handling ``Company`` objects.""" + """Provides methods for handling + [Company][google.ads.admanager.v1.Company] objects. + """ @staticmethod def _get_default_mtls_endpoint(api_endpoint) -> Optional[str]: @@ -805,7 +808,7 @@ def get_company( timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> company_messages.Company: - r"""Retrieves a ``Company`` object. + r"""Retrieves a [Company][google.ads.admanager.v1.Company] object. .. code-block:: python @@ -835,7 +838,7 @@ def sample_get_company(): Args: request (Union[google.ads.admanager_v1.types.GetCompanyRequest, dict]): - The request object. Request object for ``GetCompany`` method. + The request object. Request object for [GetCompany][] method. name (str): Required. The resource name of the Company. Format: ``networks/{network_code}/companies/{company_id}`` @@ -910,7 +913,7 @@ def list_companies( timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), ) -> pagers.ListCompaniesPager: - r"""Lists ``Company`` objects. + r"""Lists [Company][google.ads.admanager.v1.Company] objects. .. code-block:: python @@ -941,10 +944,10 @@ def sample_list_companies(): Args: request (Union[google.ads.admanager_v1.types.ListCompaniesRequest, dict]): - The request object. Request object for ``ListCompanies`` method. + The request object. Request object for [ListCompanies][] method. parent (str): Required. The parent, which owns this collection of - Companies. Format: ``networks/{network_code}`` + [Companies][]. Format: ``networks/{network_code}`` This corresponds to the ``parent`` field on the ``request`` instance; if ``request`` is provided, this @@ -959,8 +962,10 @@ def sample_list_companies(): Returns: google.ads.admanager_v1.services.company_service.pagers.ListCompaniesPager: - Response object for ListCompaniesRequest containing matching Company - objects. + Response object for + [ListCompaniesRequest][google.ads.admanager.v1.ListCompaniesRequest] + containing matching + [Company][google.ads.admanager.v1.Company] objects. Iterating over this object will yield results and resolve additional pages automatically. @@ -1023,6 +1028,491 @@ def sample_list_companies(): # Done; return the response. return response + def create_company( + self, + request: Optional[Union[company_service.CreateCompanyRequest, dict]] = None, + *, + parent: Optional[str] = None, + company: Optional[company_messages.Company] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> company_messages.Company: + r"""Creates a [Company][google.ads.admanager.v1.Company] 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_create_company(): + # Create a client + client = admanager_v1.CompanyServiceClient() + + # Initialize request argument(s) + request = admanager_v1.CreateCompanyRequest( + parent="parent_value", + ) + + # Make the request + response = client.create_company(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.CreateCompanyRequest, dict]): + The request object. Request object for [CreateCompany][] method. + parent (str): + Required. The parent resource where this + [Company][google.ads.admanager.v1.Company] 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. + company (google.ads.admanager_v1.types.Company): + Required. The [Company][google.ads.admanager.v1.Company] + to create. + + This corresponds to the ``company`` 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.Company: + 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 + # gotten any keyword arguments that map to the request. + flattened_params = [parent, company] + 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, company_service.CreateCompanyRequest): + request = company_service.CreateCompanyRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if company is not None: + request.company = company + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.create_company] + + # 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_companies( + self, + request: Optional[ + Union[company_service.BatchCreateCompaniesRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + requests: Optional[ + MutableSequence[company_service.CreateCompanyRequest] + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> company_service.BatchCreateCompaniesResponse: + r"""Creates [Company][google.ads.admanager.v1.Company] 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_companies(): + # Create a client + client = admanager_v1.CompanyServiceClient() + + # Initialize request argument(s) + requests = admanager_v1.CreateCompanyRequest() + requests.parent = "parent_value" + + request = admanager_v1.BatchCreateCompaniesRequest( + parent="parent_value", + requests=requests, + ) + + # Make the request + response = client.batch_create_companies(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.BatchCreateCompaniesRequest, dict]): + The request object. Request object for [BatchCreateCompanies][] method. + parent (str): + Required. The parent resource where [Companies][] will + be created. Format: ``networks/{network_code}`` The + parent field in the CreateCompanyRequest 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.CreateCompanyRequest]): + Required. The [Company][google.ads.admanager.v1.Company] + objects to create. A maximum of 100 objects can be + created in a batch. + + 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.BatchCreateCompaniesResponse: + Response object for [BatchCreateCompanies][] 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, company_service.BatchCreateCompaniesRequest): + request = company_service.BatchCreateCompaniesRequest(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_create_companies] + + # 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 update_company( + self, + request: Optional[Union[company_service.UpdateCompanyRequest, dict]] = None, + *, + company: Optional[company_messages.Company] = 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]]] = (), + ) -> company_messages.Company: + r"""Updates a [Company][google.ads.admanager.v1.Company] 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_company(): + # Create a client + client = admanager_v1.CompanyServiceClient() + + # Initialize request argument(s) + request = admanager_v1.UpdateCompanyRequest( + ) + + # Make the request + response = client.update_company(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.UpdateCompanyRequest, dict]): + The request object. Request object for [UpdateCompany][] method. + company (google.ads.admanager_v1.types.Company): + Required. The [Company][google.ads.admanager.v1.Company] + to update. + + The [Company][google.ads.admanager.v1.Company]'s + ``name`` is used to identify the + [Company][google.ads.admanager.v1.Company] to update. + + This corresponds to the ``company`` 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.Company: + 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 + # gotten any keyword arguments that map to the request. + flattened_params = [company, 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, company_service.UpdateCompanyRequest): + request = company_service.UpdateCompanyRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if company is not None: + request.company = company + 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_company] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("company.name", request.company.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_companies( + self, + request: Optional[ + Union[company_service.BatchUpdateCompaniesRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + requests: Optional[ + MutableSequence[company_service.UpdateCompanyRequest] + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> company_service.BatchUpdateCompaniesResponse: + r"""Batch updates [Company][google.ads.admanager.v1.Company] + 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_companies(): + # Create a client + client = admanager_v1.CompanyServiceClient() + + # Initialize request argument(s) + request = admanager_v1.BatchUpdateCompaniesRequest( + parent="parent_value", + ) + + # Make the request + response = client.batch_update_companies(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.admanager_v1.types.BatchUpdateCompaniesRequest, dict]): + The request object. Request object for [BatchUpdateCompanies][] method. + parent (str): + Required. The parent resource where [Companies][] will + be updated. Format: ``networks/{network_code}`` The + parent field in the UpdateCompanyRequest 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.UpdateCompanyRequest]): + Required. The [Company][google.ads.admanager.v1.Company] + objects to update. A maximum of 100 objects can be + updated in a batch. + + 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.BatchUpdateCompaniesResponse: + Response object for [BatchUpdateCompanies][] 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, company_service.BatchUpdateCompaniesRequest): + request = company_service.BatchUpdateCompaniesRequest(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_companies] + + # 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) -> "CompanyServiceClient": return self 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 360122f3704d..cec0cabafe4b 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 @@ -154,6 +154,26 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.create_company: gapic_v1.method.wrap_method( + self.create_company, + default_timeout=None, + client_info=client_info, + ), + self.batch_create_companies: gapic_v1.method.wrap_method( + self.batch_create_companies, + default_timeout=None, + client_info=client_info, + ), + self.update_company: gapic_v1.method.wrap_method( + self.update_company, + default_timeout=None, + client_info=client_info, + ), + self.batch_update_companies: gapic_v1.method.wrap_method( + self.batch_update_companies, + default_timeout=None, + client_info=client_info, + ), self.cancel_operation: gapic_v1.method.wrap_method( self.cancel_operation, default_timeout=None, @@ -196,6 +216,48 @@ def list_companies( ]: raise NotImplementedError() + @property + def create_company( + self, + ) -> Callable[ + [company_service.CreateCompanyRequest], + Union[company_messages.Company, Awaitable[company_messages.Company]], + ]: + raise NotImplementedError() + + @property + def batch_create_companies( + self, + ) -> Callable[ + [company_service.BatchCreateCompaniesRequest], + Union[ + company_service.BatchCreateCompaniesResponse, + Awaitable[company_service.BatchCreateCompaniesResponse], + ], + ]: + raise NotImplementedError() + + @property + def update_company( + self, + ) -> Callable[ + [company_service.UpdateCompanyRequest], + Union[company_messages.Company, Awaitable[company_messages.Company]], + ]: + raise NotImplementedError() + + @property + def batch_update_companies( + self, + ) -> Callable[ + [company_service.BatchUpdateCompaniesRequest], + Union[ + company_service.BatchUpdateCompaniesResponse, + Awaitable[company_service.BatchUpdateCompaniesResponse], + ], + ]: + raise NotImplementedError() + @property def get_operation( self, 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 02d44330a3de..329c7c5155a3 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 @@ -72,6 +72,30 @@ class CompanyServiceRestInterceptor: .. code-block:: python class MyCustomCompanyServiceInterceptor(CompanyServiceRestInterceptor): + def pre_batch_create_companies(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_create_companies(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_batch_update_companies(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_batch_update_companies(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_create_company(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_create_company(self, response): + logging.log(f"Received response: {response}") + return response + def pre_get_company(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -88,12 +112,172 @@ def post_list_companies(self, response): logging.log(f"Received response: {response}") return response + def pre_update_company(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_update_company(self, response): + logging.log(f"Received response: {response}") + return response + transport = CompanyServiceRestTransport(interceptor=MyCustomCompanyServiceInterceptor()) client = CompanyServiceClient(transport=transport) """ + def pre_batch_create_companies( + self, + request: company_service.BatchCreateCompaniesRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + company_service.BatchCreateCompaniesRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_create_companies + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanyService server. + """ + return request, metadata + + def post_batch_create_companies( + self, response: company_service.BatchCreateCompaniesResponse + ) -> company_service.BatchCreateCompaniesResponse: + """Post-rpc interceptor for batch_create_companies + + DEPRECATED. Please use the `post_batch_create_companies_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CompanyService server but before + it is returned to user code. This `post_batch_create_companies` interceptor runs + before the `post_batch_create_companies_with_metadata` interceptor. + """ + return response + + def post_batch_create_companies_with_metadata( + self, + response: company_service.BatchCreateCompaniesResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + company_service.BatchCreateCompaniesResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_create_companies + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CompanyService server but before it is returned to user code. + + We recommend only using this `post_batch_create_companies_with_metadata` + interceptor in new development instead of the `post_batch_create_companies` interceptor. + When both interceptors are used, this `post_batch_create_companies_with_metadata` interceptor runs after the + `post_batch_create_companies` interceptor. The (possibly modified) response returned by + `post_batch_create_companies` will be passed to + `post_batch_create_companies_with_metadata`. + """ + return response, metadata + + def pre_batch_update_companies( + self, + request: company_service.BatchUpdateCompaniesRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + company_service.BatchUpdateCompaniesRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for batch_update_companies + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanyService server. + """ + return request, metadata + + def post_batch_update_companies( + self, response: company_service.BatchUpdateCompaniesResponse + ) -> company_service.BatchUpdateCompaniesResponse: + """Post-rpc interceptor for batch_update_companies + + DEPRECATED. Please use the `post_batch_update_companies_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CompanyService server but before + it is returned to user code. This `post_batch_update_companies` interceptor runs + before the `post_batch_update_companies_with_metadata` interceptor. + """ + return response + + def post_batch_update_companies_with_metadata( + self, + response: company_service.BatchUpdateCompaniesResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + company_service.BatchUpdateCompaniesResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for batch_update_companies + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CompanyService server but before it is returned to user code. + + We recommend only using this `post_batch_update_companies_with_metadata` + interceptor in new development instead of the `post_batch_update_companies` interceptor. + When both interceptors are used, this `post_batch_update_companies_with_metadata` interceptor runs after the + `post_batch_update_companies` interceptor. The (possibly modified) response returned by + `post_batch_update_companies` will be passed to + `post_batch_update_companies_with_metadata`. + """ + return response, metadata + + def pre_create_company( + self, + request: company_service.CreateCompanyRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + company_service.CreateCompanyRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for create_company + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanyService server. + """ + return request, metadata + + def post_create_company( + self, response: company_messages.Company + ) -> company_messages.Company: + """Post-rpc interceptor for create_company + + DEPRECATED. Please use the `post_create_company_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CompanyService server but before + it is returned to user code. This `post_create_company` interceptor runs + before the `post_create_company_with_metadata` interceptor. + """ + return response + + def post_create_company_with_metadata( + self, + response: company_messages.Company, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[company_messages.Company, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for create_company + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CompanyService server but before it is returned to user code. + + We recommend only using this `post_create_company_with_metadata` + interceptor in new development instead of the `post_create_company` interceptor. + When both interceptors are used, this `post_create_company_with_metadata` interceptor runs after the + `post_create_company` interceptor. The (possibly modified) response returned by + `post_create_company` will be passed to + `post_create_company_with_metadata`. + """ + return response, metadata + def pre_get_company( self, request: company_service.GetCompanyRequest, @@ -192,6 +376,54 @@ def post_list_companies_with_metadata( """ return response, metadata + def pre_update_company( + self, + request: company_service.UpdateCompanyRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + company_service.UpdateCompanyRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for update_company + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanyService server. + """ + return request, metadata + + def post_update_company( + self, response: company_messages.Company + ) -> company_messages.Company: + """Post-rpc interceptor for update_company + + DEPRECATED. Please use the `post_update_company_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CompanyService server but before + it is returned to user code. This `post_update_company` interceptor runs + before the `post_update_company_with_metadata` interceptor. + """ + return response + + def post_update_company_with_metadata( + self, + response: company_messages.Company, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[company_messages.Company, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for update_company + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CompanyService server but before it is returned to user code. + + We recommend only using this `post_update_company_with_metadata` + interceptor in new development instead of the `post_update_company` interceptor. + When both interceptors are used, this `post_update_company_with_metadata` interceptor runs after the + `post_update_company` interceptor. The (possibly modified) response returned by + `post_update_company` will be passed to + `post_update_company_with_metadata`. + """ + return response, metadata + def pre_cancel_operation( self, request: operations_pb2.CancelOperationRequest, @@ -251,7 +483,8 @@ class CompanyServiceRestStub: class CompanyServiceRestTransport(_BaseCompanyServiceRestTransport): """REST backend synchronous transport for CompanyService. - Provides methods for handling ``Company`` objects. + Provides methods for handling + [Company][google.ads.admanager.v1.Company] objects. This class defines the same methods as the primary client, so the primary client can load the underlying transport implementation @@ -334,11 +567,12 @@ def __init__( self._interceptor = interceptor or CompanyServiceRestInterceptor() self._prep_wrapped_messages(client_info) - class _GetCompany( - _BaseCompanyServiceRestTransport._BaseGetCompany, CompanyServiceRestStub + class _BatchCreateCompanies( + _BaseCompanyServiceRestTransport._BaseBatchCreateCompanies, + CompanyServiceRestStub, ): def __hash__(self): - return hash("CompanyServiceRestTransport.GetCompany") + return hash("CompanyServiceRestTransport.BatchCreateCompanies") @staticmethod def _get_response( @@ -359,22 +593,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: company_service.GetCompanyRequest, + request: company_service.BatchCreateCompaniesRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> company_messages.Company: - r"""Call the get company method over HTTP. + ) -> company_service.BatchCreateCompaniesResponse: + r"""Call the batch create companies method over HTTP. Args: - request (~.company_service.GetCompanyRequest): - The request object. Request object for ``GetCompany`` method. + request (~.company_service.BatchCreateCompaniesRequest): + The request object. Request object for [BatchCreateCompanies][] method. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -384,24 +619,26 @@ def __call__( be of type `bytes`. Returns: - ~.company_messages.Company: - The [Company][google.ads.admanager.v1.Company] resource. + ~.company_service.BatchCreateCompaniesResponse: + Response object for [BatchCreateCompanies][] method. """ - http_options = ( - _BaseCompanyServiceRestTransport._BaseGetCompany._get_http_options() - ) + http_options = _BaseCompanyServiceRestTransport._BaseBatchCreateCompanies._get_http_options() - request, metadata = self._interceptor.pre_get_company(request, metadata) - transcoded_request = _BaseCompanyServiceRestTransport._BaseGetCompany._get_transcoded_request( + request, metadata = self._interceptor.pre_batch_create_companies( + request, metadata + ) + transcoded_request = _BaseCompanyServiceRestTransport._BaseBatchCreateCompanies._get_transcoded_request( http_options, request ) + body = _BaseCompanyServiceRestTransport._BaseBatchCreateCompanies._get_request_body_json( + transcoded_request + ) + # Jsonify the query params - query_params = ( - _BaseCompanyServiceRestTransport._BaseGetCompany._get_query_params_json( - transcoded_request - ) + query_params = _BaseCompanyServiceRestTransport._BaseBatchCreateCompanies._get_query_params_json( + transcoded_request ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( @@ -422,23 +659,24 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.ads.admanager_v1.CompanyServiceClient.GetCompany", + f"Sending request for google.ads.admanager_v1.CompanyServiceClient.BatchCreateCompanies", extra={ "serviceName": "google.ads.admanager.v1.CompanyService", - "rpcName": "GetCompany", + "rpcName": "BatchCreateCompanies", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CompanyServiceRestTransport._GetCompany._get_response( + response = CompanyServiceRestTransport._BatchCreateCompanies._get_response( self._host, metadata, query_params, self._session, timeout, transcoded_request, + body, ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -447,21 +685,23 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = company_messages.Company() - pb_resp = company_messages.Company.pb(resp) + resp = company_service.BatchCreateCompaniesResponse() + pb_resp = company_service.BatchCreateCompaniesResponse.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_get_company(resp) + resp = self._interceptor.post_batch_create_companies(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_get_company_with_metadata( + resp, _ = self._interceptor.post_batch_create_companies_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = company_messages.Company.to_json(response) + response_payload = ( + company_service.BatchCreateCompaniesResponse.to_json(response) + ) except: response_payload = None http_response = { @@ -470,21 +710,22 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.ads.admanager_v1.CompanyServiceClient.get_company", + "Received response for google.ads.admanager_v1.CompanyServiceClient.batch_create_companies", extra={ "serviceName": "google.ads.admanager.v1.CompanyService", - "rpcName": "GetCompany", + "rpcName": "BatchCreateCompanies", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - class _ListCompanies( - _BaseCompanyServiceRestTransport._BaseListCompanies, CompanyServiceRestStub + class _BatchUpdateCompanies( + _BaseCompanyServiceRestTransport._BaseBatchUpdateCompanies, + CompanyServiceRestStub, ): def __hash__(self): - return hash("CompanyServiceRestTransport.ListCompanies") + return hash("CompanyServiceRestTransport.BatchUpdateCompanies") @staticmethod def _get_response( @@ -505,22 +746,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: company_service.ListCompaniesRequest, + request: company_service.BatchUpdateCompaniesRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Optional[float] = None, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), - ) -> company_service.ListCompaniesResponse: - r"""Call the list companies method over HTTP. + ) -> company_service.BatchUpdateCompaniesResponse: + r"""Call the batch update companies method over HTTP. Args: - request (~.company_service.ListCompaniesRequest): - The request object. Request object for ``ListCompanies`` method. + request (~.company_service.BatchUpdateCompaniesRequest): + The request object. Request object for [BatchUpdateCompanies][] method. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. timeout (float): The timeout for this request. @@ -530,23 +772,25 @@ def __call__( be of type `bytes`. Returns: - ~.company_service.ListCompaniesResponse: - Response object for ``ListCompaniesRequest`` containing - matching ``Company`` objects. - + ~.company_service.BatchUpdateCompaniesResponse: + Response object for [BatchUpdateCompanies][] method. """ - http_options = ( - _BaseCompanyServiceRestTransport._BaseListCompanies._get_http_options() - ) + http_options = _BaseCompanyServiceRestTransport._BaseBatchUpdateCompanies._get_http_options() - request, metadata = self._interceptor.pre_list_companies(request, metadata) - transcoded_request = _BaseCompanyServiceRestTransport._BaseListCompanies._get_transcoded_request( + request, metadata = self._interceptor.pre_batch_update_companies( + request, metadata + ) + transcoded_request = _BaseCompanyServiceRestTransport._BaseBatchUpdateCompanies._get_transcoded_request( http_options, request ) + body = _BaseCompanyServiceRestTransport._BaseBatchUpdateCompanies._get_request_body_json( + transcoded_request + ) + # Jsonify the query params - query_params = _BaseCompanyServiceRestTransport._BaseListCompanies._get_query_params_json( + query_params = _BaseCompanyServiceRestTransport._BaseBatchUpdateCompanies._get_query_params_json( transcoded_request ) @@ -568,23 +812,24 @@ def __call__( "headers": dict(metadata), } _LOGGER.debug( - f"Sending request for google.ads.admanager_v1.CompanyServiceClient.ListCompanies", + f"Sending request for google.ads.admanager_v1.CompanyServiceClient.BatchUpdateCompanies", extra={ "serviceName": "google.ads.admanager.v1.CompanyService", - "rpcName": "ListCompanies", + "rpcName": "BatchUpdateCompanies", "httpRequest": http_request, "metadata": http_request["headers"], }, ) # Send the request - response = CompanyServiceRestTransport._ListCompanies._get_response( + response = CompanyServiceRestTransport._BatchUpdateCompanies._get_response( self._host, metadata, query_params, self._session, timeout, transcoded_request, + body, ) # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception @@ -593,22 +838,22 @@ def __call__( raise core_exceptions.from_http_response(response) # Return the response - resp = company_service.ListCompaniesResponse() - pb_resp = company_service.ListCompaniesResponse.pb(resp) + resp = company_service.BatchUpdateCompaniesResponse() + pb_resp = company_service.BatchUpdateCompaniesResponse.pb(resp) json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) - resp = self._interceptor.post_list_companies(resp) + resp = self._interceptor.post_batch_update_companies(resp) response_metadata = [(k, str(v)) for k, v in response.headers.items()] - resp, _ = self._interceptor.post_list_companies_with_metadata( + resp, _ = self._interceptor.post_batch_update_companies_with_metadata( resp, response_metadata ) if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( logging.DEBUG ): # pragma: NO COVER try: - response_payload = company_service.ListCompaniesResponse.to_json( - response + response_payload = ( + company_service.BatchUpdateCompaniesResponse.to_json(response) ) except: response_payload = None @@ -618,33 +863,667 @@ def __call__( "status": response.status_code, } _LOGGER.debug( - "Received response for google.ads.admanager_v1.CompanyServiceClient.list_companies", + "Received response for google.ads.admanager_v1.CompanyServiceClient.batch_update_companies", extra={ "serviceName": "google.ads.admanager.v1.CompanyService", - "rpcName": "ListCompanies", + "rpcName": "BatchUpdateCompanies", "metadata": http_response["headers"], "httpResponse": http_response, }, ) return resp - @property - def get_company( - self, - ) -> Callable[[company_service.GetCompanyRequest], company_messages.Company]: - # 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._GetCompany(self._session, self._host, self._interceptor) # type: ignore + class _CreateCompany( + _BaseCompanyServiceRestTransport._BaseCreateCompany, CompanyServiceRestStub + ): + def __hash__(self): + return hash("CompanyServiceRestTransport.CreateCompany") - @property - def list_companies( - self, - ) -> Callable[ - [company_service.ListCompaniesRequest], company_service.ListCompaniesResponse - ]: - # 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._ListCompanies(self._session, self._host, self._interceptor) # type: ignore + @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: company_service.CreateCompanyRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> company_messages.Company: + r"""Call the create company method over HTTP. + + Args: + request (~.company_service.CreateCompanyRequest): + The request object. Request object for [CreateCompany][] 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: + ~.company_messages.Company: + The [Company][google.ads.admanager.v1.Company] resource. + """ + + http_options = ( + _BaseCompanyServiceRestTransport._BaseCreateCompany._get_http_options() + ) + + request, metadata = self._interceptor.pre_create_company(request, metadata) + transcoded_request = _BaseCompanyServiceRestTransport._BaseCreateCompany._get_transcoded_request( + http_options, request + ) + + body = _BaseCompanyServiceRestTransport._BaseCreateCompany._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseCompanyServiceRestTransport._BaseCreateCompany._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.CompanyServiceClient.CreateCompany", + extra={ + "serviceName": "google.ads.admanager.v1.CompanyService", + "rpcName": "CreateCompany", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanyServiceRestTransport._CreateCompany._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 = company_messages.Company() + pb_resp = company_messages.Company.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_create_company(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_create_company_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = company_messages.Company.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.CompanyServiceClient.create_company", + extra={ + "serviceName": "google.ads.admanager.v1.CompanyService", + "rpcName": "CreateCompany", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _GetCompany( + _BaseCompanyServiceRestTransport._BaseGetCompany, CompanyServiceRestStub + ): + def __hash__(self): + return hash("CompanyServiceRestTransport.GetCompany") + + @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: company_service.GetCompanyRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> company_messages.Company: + r"""Call the get company method over HTTP. + + Args: + request (~.company_service.GetCompanyRequest): + The request object. Request object for [GetCompany][] 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: + ~.company_messages.Company: + The [Company][google.ads.admanager.v1.Company] resource. + """ + + http_options = ( + _BaseCompanyServiceRestTransport._BaseGetCompany._get_http_options() + ) + + request, metadata = self._interceptor.pre_get_company(request, metadata) + transcoded_request = _BaseCompanyServiceRestTransport._BaseGetCompany._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = ( + _BaseCompanyServiceRestTransport._BaseGetCompany._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.CompanyServiceClient.GetCompany", + extra={ + "serviceName": "google.ads.admanager.v1.CompanyService", + "rpcName": "GetCompany", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanyServiceRestTransport._GetCompany._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 = company_messages.Company() + pb_resp = company_messages.Company.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_company(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_company_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = company_messages.Company.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.CompanyServiceClient.get_company", + extra={ + "serviceName": "google.ads.admanager.v1.CompanyService", + "rpcName": "GetCompany", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _ListCompanies( + _BaseCompanyServiceRestTransport._BaseListCompanies, CompanyServiceRestStub + ): + def __hash__(self): + return hash("CompanyServiceRestTransport.ListCompanies") + + @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: company_service.ListCompaniesRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> company_service.ListCompaniesResponse: + r"""Call the list companies method over HTTP. + + Args: + request (~.company_service.ListCompaniesRequest): + The request object. Request object for [ListCompanies][] 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: + ~.company_service.ListCompaniesResponse: + Response object for + [ListCompaniesRequest][google.ads.admanager.v1.ListCompaniesRequest] + containing matching + [Company][google.ads.admanager.v1.Company] objects. + + """ + + http_options = ( + _BaseCompanyServiceRestTransport._BaseListCompanies._get_http_options() + ) + + request, metadata = self._interceptor.pre_list_companies(request, metadata) + transcoded_request = _BaseCompanyServiceRestTransport._BaseListCompanies._get_transcoded_request( + http_options, request + ) + + # Jsonify the query params + query_params = _BaseCompanyServiceRestTransport._BaseListCompanies._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.CompanyServiceClient.ListCompanies", + extra={ + "serviceName": "google.ads.admanager.v1.CompanyService", + "rpcName": "ListCompanies", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanyServiceRestTransport._ListCompanies._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 = company_service.ListCompaniesResponse() + pb_resp = company_service.ListCompaniesResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_list_companies(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_list_companies_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = company_service.ListCompaniesResponse.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.CompanyServiceClient.list_companies", + extra={ + "serviceName": "google.ads.admanager.v1.CompanyService", + "rpcName": "ListCompanies", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _UpdateCompany( + _BaseCompanyServiceRestTransport._BaseUpdateCompany, CompanyServiceRestStub + ): + def __hash__(self): + return hash("CompanyServiceRestTransport.UpdateCompany") + + @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: company_service.UpdateCompanyRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> company_messages.Company: + r"""Call the update company method over HTTP. + + Args: + request (~.company_service.UpdateCompanyRequest): + The request object. Request object for [UpdateCompany][] 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: + ~.company_messages.Company: + The [Company][google.ads.admanager.v1.Company] resource. + """ + + http_options = ( + _BaseCompanyServiceRestTransport._BaseUpdateCompany._get_http_options() + ) + + request, metadata = self._interceptor.pre_update_company(request, metadata) + transcoded_request = _BaseCompanyServiceRestTransport._BaseUpdateCompany._get_transcoded_request( + http_options, request + ) + + body = _BaseCompanyServiceRestTransport._BaseUpdateCompany._get_request_body_json( + transcoded_request + ) + + # Jsonify the query params + query_params = _BaseCompanyServiceRestTransport._BaseUpdateCompany._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.CompanyServiceClient.UpdateCompany", + extra={ + "serviceName": "google.ads.admanager.v1.CompanyService", + "rpcName": "UpdateCompany", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanyServiceRestTransport._UpdateCompany._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 = company_messages.Company() + pb_resp = company_messages.Company.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_update_company(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_update_company_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = company_messages.Company.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.CompanyServiceClient.update_company", + extra={ + "serviceName": "google.ads.admanager.v1.CompanyService", + "rpcName": "UpdateCompany", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def batch_create_companies( + self, + ) -> Callable[ + [company_service.BatchCreateCompaniesRequest], + company_service.BatchCreateCompaniesResponse, + ]: + # 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._BatchCreateCompanies(self._session, self._host, self._interceptor) # type: ignore + + @property + def batch_update_companies( + self, + ) -> Callable[ + [company_service.BatchUpdateCompaniesRequest], + company_service.BatchUpdateCompaniesResponse, + ]: + # 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._BatchUpdateCompanies(self._session, self._host, self._interceptor) # type: ignore + + @property + def create_company( + self, + ) -> Callable[[company_service.CreateCompanyRequest], company_messages.Company]: + # 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._CreateCompany(self._session, self._host, self._interceptor) # type: ignore + + @property + def get_company( + self, + ) -> Callable[[company_service.GetCompanyRequest], company_messages.Company]: + # 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._GetCompany(self._session, self._host, self._interceptor) # type: ignore + + @property + def list_companies( + self, + ) -> Callable[ + [company_service.ListCompaniesRequest], company_service.ListCompaniesResponse + ]: + # 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._ListCompanies(self._session, self._host, self._interceptor) # type: ignore + + @property + def update_company( + self, + ) -> Callable[[company_service.UpdateCompanyRequest], company_messages.Company]: + # 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._UpdateCompany(self._session, self._host, self._interceptor) # type: ignore @property def cancel_operation(self): 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 d604efd9f301..2f2894690d6d 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 @@ -88,6 +88,177 @@ def __init__( api_audience=api_audience, ) + class _BaseBatchCreateCompanies: + 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/*}/companies:batchCreate", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = company_service.BatchCreateCompaniesRequest.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( + _BaseCompanyServiceRestTransport._BaseBatchCreateCompanies._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseBatchUpdateCompanies: + 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/*}/companies:batchUpdate", + "body": "*", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = company_service.BatchUpdateCompaniesRequest.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( + _BaseCompanyServiceRestTransport._BaseBatchUpdateCompanies._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + + class _BaseCreateCompany: + 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/*}/companies", + "body": "company", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = company_service.CreateCompanyRequest.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( + _BaseCompanyServiceRestTransport._BaseCreateCompany._get_unset_required_fields( + query_params + ) + ) + + query_params["$alt"] = "json;enum-encoding=int" + return query_params + class _BaseGetCompany: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -182,6 +353,63 @@ def _get_query_params_json(transcoded_request): query_params["$alt"] = "json;enum-encoding=int" return query_params + class _BaseUpdateCompany: + 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/{company.name=networks/*/companies/*}", + "body": "company", + }, + ] + return http_options + + @staticmethod + def _get_transcoded_request(http_options, request): + pb_request = company_service.UpdateCompanyRequest.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( + _BaseCompanyServiceRestTransport._BaseUpdateCompany._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.") diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_wrapper_service/__init__.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_wrapper_service/__init__.py new file mode 100644 index 000000000000..e217e64b66a5 --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_wrapper_service/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# 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 CreativeWrapperServiceClient + +__all__ = ("CreativeWrapperServiceClient",) diff --git a/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_wrapper_service/client.py b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_wrapper_service/client.py new file mode 100644 index 000000000000..fc9768c5f00b --- /dev/null +++ b/packages/google-ads-admanager/google/ads/admanager_v1/services/creative_wrapper_service/client.py @@ -0,0 +1,1973 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# 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.creative_wrapper_service import pagers +from google.ads.admanager_v1.types import ( + creative_wrapper_enums, + creative_wrapper_messages, + creative_wrapper_service, + third_party_data_declaration, + video_tracking_url, +) + +from .transports.base import DEFAULT_CLIENT_INFO, CreativeWrapperServiceTransport +from .transports.rest import CreativeWrapperServiceRestTransport + + +class CreativeWrapperServiceClientMeta(type): + """Metaclass for the CreativeWrapperService 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[CreativeWrapperServiceTransport]] + _transport_registry["rest"] = CreativeWrapperServiceRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[CreativeWrapperServiceTransport]: + """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 CreativeWrapperServiceClient(metaclass=CreativeWrapperServiceClientMeta): + """Provides methods for handling ``CreativeWrapper`` 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: + CreativeWrapperServiceClient: 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: + CreativeWrapperServiceClient: 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) -> CreativeWrapperServiceTransport: + """Returns the transport used by the client instance. + + Returns: + CreativeWrapperServiceTransport: The transport used by the client + instance. + """ + return self._transport + + @staticmethod + def creative_path( + network_code: str, + creative: str, + ) -> str: + """Returns a fully-qualified creative string.""" + return "networks/{network_code}/creatives/{creative}".format( + network_code=network_code, + creative=creative, + ) + + @staticmethod + def parse_creative_path(path: str) -> Dict[str, str]: + """Parses a creative path into its component segments.""" + m = re.match( + r"^networks/(?P.+?)/creatives/(?P.+?)$", path + ) + return m.groupdict() if m else {} + + @staticmethod + def creative_wrapper_path( + network_code: str, + creative_wrapper: str, + ) -> str: + """Returns a fully-qualified creative_wrapper string.""" + return "networks/{network_code}/creativeWrappers/{creative_wrapper}".format( + network_code=network_code, + creative_wrapper=creative_wrapper, + ) + + @staticmethod + def parse_creative_wrapper_path(path: str) -> Dict[str, str]: + """Parses a creative_wrapper path into its component segments.""" + m = re.match( + r"^networks/(?P.+?)/creativeWrappers/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + + @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