# Copyright 2020 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. require 'date' require 'google/apis/core/base_service' require 'google/apis/core/json_representation' require 'google/apis/core/hashable' require 'google/apis/errors' module Google module Apis module LocalservicesV1 # An Account Report of a GLS account identified by their account id containing # aggregate data gathered from a particular date range. Next ID: 18 class GoogleAdsHomeservicesLocalservicesV1AccountReport include Google::Apis::Core::Hashable # Unique identifier of the GLS account. # Corresponds to the JSON property `accountId` # @return [Fixnum] attr_accessor :account_id # Conatiner for aggregator specific information if lead is for an aggregator GLS # account. # Corresponds to the JSON property `aggregatorInfo` # @return [Google::Apis::LocalservicesV1::GoogleAdsHomeservicesLocalservicesV1AggregatorInfo] attr_accessor :aggregator_info # Average review rating score from 1-5 stars. # Corresponds to the JSON property `averageFiveStarRating` # @return [Float] attr_accessor :average_five_star_rating # Average weekly budget in the currency code of the account. # Corresponds to the JSON property `averageWeeklyBudget` # @return [Float] attr_accessor :average_weekly_budget # Business name of the account. # Corresponds to the JSON property `businessName` # @return [String] attr_accessor :business_name # Currency code of the account. # Corresponds to the JSON property `currencyCode` # @return [String] attr_accessor :currency_code # Number of charged leads the account received in current specified period. # Corresponds to the JSON property `currentPeriodChargedLeads` # @return [Fixnum] attr_accessor :current_period_charged_leads # Number of connected phone calls (duration over 30s) in current specified # period. # Corresponds to the JSON property `currentPeriodConnectedPhoneCalls` # @return [Fixnum] attr_accessor :current_period_connected_phone_calls # Number of phone calls in current specified period, including both connected # and unconnected calls. # Corresponds to the JSON property `currentPeriodPhoneCalls` # @return [Fixnum] attr_accessor :current_period_phone_calls # Total cost of the account in current specified period in the account's # specified currency. # Corresponds to the JSON property `currentPeriodTotalCost` # @return [Float] attr_accessor :current_period_total_cost # Number of impressions that customers have had in the past 2 days. # Corresponds to the JSON property `impressionsLastTwoDays` # @return [Fixnum] attr_accessor :impressions_last_two_days # Phone lead responsiveness of the account for the past 90 days from current # date. This is computed by taking the total number of connected calls from # charged phone leads and dividing by the total number of calls received. # Corresponds to the JSON property `phoneLeadResponsiveness` # @return [Float] attr_accessor :phone_lead_responsiveness # Number of charged leads the account received in previous specified period. # Corresponds to the JSON property `previousPeriodChargedLeads` # @return [Fixnum] attr_accessor :previous_period_charged_leads # Number of connected phone calls (duration over 30s) in previous specified # period. # Corresponds to the JSON property `previousPeriodConnectedPhoneCalls` # @return [Fixnum] attr_accessor :previous_period_connected_phone_calls # Number of phone calls in previous specified period, including both connected # and unconnected calls. # Corresponds to the JSON property `previousPeriodPhoneCalls` # @return [Fixnum] attr_accessor :previous_period_phone_calls # Total cost of the account in previous specified period in the account's # specified currency. # Corresponds to the JSON property `previousPeriodTotalCost` # @return [Float] attr_accessor :previous_period_total_cost # Total number of reviews the account has up to current date. # Corresponds to the JSON property `totalReview` # @return [Fixnum] attr_accessor :total_review def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @account_id = args[:account_id] if args.key?(:account_id) @aggregator_info = args[:aggregator_info] if args.key?(:aggregator_info) @average_five_star_rating = args[:average_five_star_rating] if args.key?(:average_five_star_rating) @average_weekly_budget = args[:average_weekly_budget] if args.key?(:average_weekly_budget) @business_name = args[:business_name] if args.key?(:business_name) @currency_code = args[:currency_code] if args.key?(:currency_code) @current_period_charged_leads = args[:current_period_charged_leads] if args.key?(:current_period_charged_leads) @current_period_connected_phone_calls = args[:current_period_connected_phone_calls] if args.key?(:current_period_connected_phone_calls) @current_period_phone_calls = args[:current_period_phone_calls] if args.key?(:current_period_phone_calls) @current_period_total_cost = args[:current_period_total_cost] if args.key?(:current_period_total_cost) @impressions_last_two_days = args[:impressions_last_two_days] if args.key?(:impressions_last_two_days) @phone_lead_responsiveness = args[:phone_lead_responsiveness] if args.key?(:phone_lead_responsiveness) @previous_period_charged_leads = args[:previous_period_charged_leads] if args.key?(:previous_period_charged_leads) @previous_period_connected_phone_calls = args[:previous_period_connected_phone_calls] if args.key?(:previous_period_connected_phone_calls) @previous_period_phone_calls = args[:previous_period_phone_calls] if args.key?(:previous_period_phone_calls) @previous_period_total_cost = args[:previous_period_total_cost] if args.key?(:previous_period_total_cost) @total_review = args[:total_review] if args.key?(:total_review) end end # Conatiner for aggregator specific information if lead is for an aggregator GLS # account. class GoogleAdsHomeservicesLocalservicesV1AggregatorInfo include Google::Apis::Core::Hashable # Provider id (listed in aggregator system) which maps to a account id in GLS # system. # Corresponds to the JSON property `aggregatorProviderId` # @return [String] attr_accessor :aggregator_provider_id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @aggregator_provider_id = args[:aggregator_provider_id] if args.key?(:aggregator_provider_id) end end # Container for booking lead specific information. class GoogleAdsHomeservicesLocalservicesV1BookingLead include Google::Apis::Core::Hashable # Timestamp of when service is provided by advertiser. # Corresponds to the JSON property `bookingAppointmentTimestamp` # @return [String] attr_accessor :booking_appointment_timestamp # Consumer email associated with the booking lead. # Corresponds to the JSON property `consumerEmail` # @return [String] attr_accessor :consumer_email # Consumer phone number associated with the booking lead. # Corresponds to the JSON property `consumerPhoneNumber` # @return [String] attr_accessor :consumer_phone_number # Name of the customer who created the lead. # Corresponds to the JSON property `customerName` # @return [String] attr_accessor :customer_name # The job type of the specified lead. # Corresponds to the JSON property `jobType` # @return [String] attr_accessor :job_type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @booking_appointment_timestamp = args[:booking_appointment_timestamp] if args.key?(:booking_appointment_timestamp) @consumer_email = args[:consumer_email] if args.key?(:consumer_email) @consumer_phone_number = args[:consumer_phone_number] if args.key?(:consumer_phone_number) @customer_name = args[:customer_name] if args.key?(:customer_name) @job_type = args[:job_type] if args.key?(:job_type) end end # A Detailed Lead Report of a lead identified by their lead id and contains # consumer, account, monetization, and lead data. class GoogleAdsHomeservicesLocalservicesV1DetailedLeadReport include Google::Apis::Core::Hashable # Identifies account that received the lead. # Corresponds to the JSON property `accountId` # @return [Fixnum] attr_accessor :account_id # Conatiner for aggregator specific information if lead is for an aggregator GLS # account. # Corresponds to the JSON property `aggregatorInfo` # @return [Google::Apis::LocalservicesV1::GoogleAdsHomeservicesLocalservicesV1AggregatorInfo] attr_accessor :aggregator_info # Container for booking lead specific information. # Corresponds to the JSON property `bookingLead` # @return [Google::Apis::LocalservicesV1::GoogleAdsHomeservicesLocalservicesV1BookingLead] attr_accessor :booking_lead # Business name associated to the account. # Corresponds to the JSON property `businessName` # @return [String] attr_accessor :business_name # Whether the lead has been charged. # Corresponds to the JSON property `chargeStatus` # @return [String] attr_accessor :charge_status # Currency code. # Corresponds to the JSON property `currencyCode` # @return [String] attr_accessor :currency_code # Dispute status related to the lead. # Corresponds to the JSON property `disputeStatus` # @return [String] attr_accessor :dispute_status # Location of the associated account's home city. # Corresponds to the JSON property `geo` # @return [String] attr_accessor :geo # Lead category (e.g. hvac, plumber) # Corresponds to the JSON property `leadCategory` # @return [String] attr_accessor :lead_category # Timestamp of when the lead was created. # Corresponds to the JSON property `leadCreationTimestamp` # @return [String] attr_accessor :lead_creation_timestamp # Unique identifier of a Detailed Lead Report. # Corresponds to the JSON property `leadId` # @return [Fixnum] attr_accessor :lead_id # Price of the lead (available only after it has been charged). # Corresponds to the JSON property `leadPrice` # @return [Float] attr_accessor :lead_price # Lead type. # Corresponds to the JSON property `leadType` # @return [String] attr_accessor :lead_type # Container for message lead specific information. # Corresponds to the JSON property `messageLead` # @return [Google::Apis::LocalservicesV1::GoogleAdsHomeservicesLocalservicesV1MessageLead] attr_accessor :message_lead # Container for phone lead specific information. # Corresponds to the JSON property `phoneLead` # @return [Google::Apis::LocalservicesV1::GoogleAdsHomeservicesLocalservicesV1PhoneLead] attr_accessor :phone_lead # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/ # time-zones). # Corresponds to the JSON property `timezone` # @return [Google::Apis::LocalservicesV1::GoogleTypeTimeZone] attr_accessor :timezone def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @account_id = args[:account_id] if args.key?(:account_id) @aggregator_info = args[:aggregator_info] if args.key?(:aggregator_info) @booking_lead = args[:booking_lead] if args.key?(:booking_lead) @business_name = args[:business_name] if args.key?(:business_name) @charge_status = args[:charge_status] if args.key?(:charge_status) @currency_code = args[:currency_code] if args.key?(:currency_code) @dispute_status = args[:dispute_status] if args.key?(:dispute_status) @geo = args[:geo] if args.key?(:geo) @lead_category = args[:lead_category] if args.key?(:lead_category) @lead_creation_timestamp = args[:lead_creation_timestamp] if args.key?(:lead_creation_timestamp) @lead_id = args[:lead_id] if args.key?(:lead_id) @lead_price = args[:lead_price] if args.key?(:lead_price) @lead_type = args[:lead_type] if args.key?(:lead_type) @message_lead = args[:message_lead] if args.key?(:message_lead) @phone_lead = args[:phone_lead] if args.key?(:phone_lead) @timezone = args[:timezone] if args.key?(:timezone) end end # Container for message lead specific information. class GoogleAdsHomeservicesLocalservicesV1MessageLead include Google::Apis::Core::Hashable # Consumer phone number associated with the message lead. # Corresponds to the JSON property `consumerPhoneNumber` # @return [String] attr_accessor :consumer_phone_number # Name of the customer who created the lead. # Corresponds to the JSON property `customerName` # @return [String] attr_accessor :customer_name # The job type of the specified lead. # Corresponds to the JSON property `jobType` # @return [String] attr_accessor :job_type # The postal code of the customer who created the lead. # Corresponds to the JSON property `postalCode` # @return [String] attr_accessor :postal_code def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @consumer_phone_number = args[:consumer_phone_number] if args.key?(:consumer_phone_number) @customer_name = args[:customer_name] if args.key?(:customer_name) @job_type = args[:job_type] if args.key?(:job_type) @postal_code = args[:postal_code] if args.key?(:postal_code) end end # Container for phone lead specific information. class GoogleAdsHomeservicesLocalservicesV1PhoneLead include Google::Apis::Core::Hashable # Timestamp of the phone call which resulted in a charged phone lead. # Corresponds to the JSON property `chargedCallTimestamp` # @return [String] attr_accessor :charged_call_timestamp # Duration of the charged phone call in seconds. # Corresponds to the JSON property `chargedConnectedCallDurationSeconds` # @return [String] attr_accessor :charged_connected_call_duration_seconds # Consumer phone number associated with the phone lead. # Corresponds to the JSON property `consumerPhoneNumber` # @return [String] attr_accessor :consumer_phone_number def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @charged_call_timestamp = args[:charged_call_timestamp] if args.key?(:charged_call_timestamp) @charged_connected_call_duration_seconds = args[:charged_connected_call_duration_seconds] if args.key?(:charged_connected_call_duration_seconds) @consumer_phone_number = args[:consumer_phone_number] if args.key?(:consumer_phone_number) end end # A page of the response received from the SearchAccountReports method. A # paginated response where more pages are available has `next_page_token` set. # This token can be used in a subsequent request to retrieve the next request # page. class GoogleAdsHomeservicesLocalservicesV1SearchAccountReportsResponse include Google::Apis::Core::Hashable # List of account reports which maps 1:1 to a particular linked GLS account. # Corresponds to the JSON property `accountReports` # @return [Array] attr_accessor :account_reports # Pagination token to retrieve the next page of results. When `next_page_token` # is not filled in, there is no next page and the list returned is the last page # in the result set. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @account_reports = args[:account_reports] if args.key?(:account_reports) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) end end # A page of the response received from the SearchDetailedLeadReports method. A # paginated response where more pages are available has `next_page_token` set. # This token can be used in a subsequent request to retrieve the next request # page. class GoogleAdsHomeservicesLocalservicesV1SearchDetailedLeadReportsResponse include Google::Apis::Core::Hashable # List of detailed lead reports uniquely identified by external lead id. # Corresponds to the JSON property `detailedLeadReports` # @return [Array] attr_accessor :detailed_lead_reports # Pagination token to retrieve the next page of results. When `next_page_token` # is not filled in, there is no next page and the list returned is the last page # in the result set. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @detailed_lead_reports = args[:detailed_lead_reports] if args.key?(:detailed_lead_reports) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) end end # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/ # time-zones). class GoogleTypeTimeZone include Google::Apis::Core::Hashable # IANA Time Zone Database time zone, e.g. "America/New_York". # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # Optional. IANA Time Zone Database version number, e.g. "2019a". # Corresponds to the JSON property `version` # @return [String] attr_accessor :version def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @id = args[:id] if args.key?(:id) @version = args[:version] if args.key?(:version) end end end end end