# 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 FcmdataV1beta1 # Message delivery data for a given date, app, and analytics label combination. class GoogleFirebaseFcmDataV1beta1AndroidDeliveryData include Google::Apis::Core::Hashable # The analytics label associated with the messages sent. All messages sent # without an analytics label will be grouped together in a single entry. # Corresponds to the JSON property `analyticsLabel` # @return [String] attr_accessor :analytics_label # The app ID to which the messages were sent. # Corresponds to the JSON property `appId` # @return [String] attr_accessor :app_id # Data detailing messaging delivery # Corresponds to the JSON property `data` # @return [Google::Apis::FcmdataV1beta1::GoogleFirebaseFcmDataV1beta1Data] attr_accessor :data # Represents a whole or partial calendar date, such as a birthday. The time of # day and time zone are either specified elsewhere or are insignificant. The # date is relative to the Gregorian Calendar. This can represent one of the # following: * A full date, with non-zero year, month, and day values. * A month # and day, with a zero year (for example, an anniversary). * A year on its own, # with a zero month and a zero day. * A year and month, with a zero day (for # example, a credit card expiration date). Related types: * google.type. # TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # Corresponds to the JSON property `date` # @return [Google::Apis::FcmdataV1beta1::GoogleTypeDate] attr_accessor :date def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @analytics_label = args[:analytics_label] if args.key?(:analytics_label) @app_id = args[:app_id] if args.key?(:app_id) @data = args[:data] if args.key?(:data) @date = args[:date] if args.key?(:date) end end # Data detailing messaging delivery class GoogleFirebaseFcmDataV1beta1Data include Google::Apis::Core::Hashable # Count of messages accepted by FCM intended to Android devices. The targeted # device must have opted in to the collection of usage and diagnostic # information. # Corresponds to the JSON property `countMessagesAccepted` # @return [Fixnum] attr_accessor :count_messages_accepted # Overview of delivery performance for messages that were successfully delivered. # All percentages are calculated with countMessagesAccepted as the denominator. # These categories are not mutually exclusive; a message can be delayed for # multiple reasons. # Corresponds to the JSON property `deliveryPerformancePercents` # @return [Google::Apis::FcmdataV1beta1::GoogleFirebaseFcmDataV1beta1DeliveryPerformancePercents] attr_accessor :delivery_performance_percents # Additional information about message delivery. All percentages are calculated # with countMessagesAccepted as the denominator. # Corresponds to the JSON property `messageInsightPercents` # @return [Google::Apis::FcmdataV1beta1::GoogleFirebaseFcmDataV1beta1MessageInsightPercents] attr_accessor :message_insight_percents # Percentage breakdown of message delivery outcomes. These categories are # mutually exclusive. All percentages are calculated with countMessagesAccepted # as the denominator. These categories may not account for all message outcomes. # Corresponds to the JSON property `messageOutcomePercents` # @return [Google::Apis::FcmdataV1beta1::GoogleFirebaseFcmDataV1beta1MessageOutcomePercents] attr_accessor :message_outcome_percents def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @count_messages_accepted = args[:count_messages_accepted] if args.key?(:count_messages_accepted) @delivery_performance_percents = args[:delivery_performance_percents] if args.key?(:delivery_performance_percents) @message_insight_percents = args[:message_insight_percents] if args.key?(:message_insight_percents) @message_outcome_percents = args[:message_outcome_percents] if args.key?(:message_outcome_percents) end end # Overview of delivery performance for messages that were successfully delivered. # All percentages are calculated with countMessagesAccepted as the denominator. # These categories are not mutually exclusive; a message can be delayed for # multiple reasons. class GoogleFirebaseFcmDataV1beta1DeliveryPerformancePercents include Google::Apis::Core::Hashable # The percentage of accepted messages that were delayed because the device was # in doze mode. Only [normal priority messages](https://firebase.google.com/docs/ # cloud-messaging/concept-options#setting-the-priority-of-a-message) should be # delayed due to doze mode. # Corresponds to the JSON property `delayedDeviceDoze` # @return [Float] attr_accessor :delayed_device_doze # The percentage of accepted messages that were delayed because the target # device was not connected at the time of sending. These messages were # eventually delivered when the device reconnected. # Corresponds to the JSON property `delayedDeviceOffline` # @return [Float] attr_accessor :delayed_device_offline # The percentage of accepted messages that were delayed due to message # throttling, such as [collapsible message throttling](https://firebase.google. # com/docs/cloud-messaging/concept-options#collapsible_throttling) or [maximum # message rate throttling](https://firebase.google.com/docs/cloud-messaging/ # concept-options#device_throttling). # Corresponds to the JSON property `delayedMessageThrottled` # @return [Float] attr_accessor :delayed_message_throttled # The percentage of accepted messages that were delayed because the intended # device user-profile was [stopped](https://firebase.google.com/docs/cloud- # messaging/android/receive#handling_messages) on the target device at the time # of the send. The messages were eventually delivered when the user-profile was # started again. # Corresponds to the JSON property `delayedUserStopped` # @return [Float] attr_accessor :delayed_user_stopped # The percentage of accepted messages that were delivered to the device without # delay from the FCM system. # Corresponds to the JSON property `deliveredNoDelay` # @return [Float] attr_accessor :delivered_no_delay def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @delayed_device_doze = args[:delayed_device_doze] if args.key?(:delayed_device_doze) @delayed_device_offline = args[:delayed_device_offline] if args.key?(:delayed_device_offline) @delayed_message_throttled = args[:delayed_message_throttled] if args.key?(:delayed_message_throttled) @delayed_user_stopped = args[:delayed_user_stopped] if args.key?(:delayed_user_stopped) @delivered_no_delay = args[:delivered_no_delay] if args.key?(:delivered_no_delay) end end # Response message for ListAndroidDeliveryData. class GoogleFirebaseFcmDataV1beta1ListAndroidDeliveryDataResponse include Google::Apis::Core::Hashable # The delivery data for the provided app. There will be one entry per # combination of app, date, and analytics label. # Corresponds to the JSON property `androidDeliveryData` # @return [Array] attr_accessor :android_delivery_data # A token, which can be sent as `page_token` to retrieve the next page. If this # field is omitted, there are no subsequent pages. # 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) @android_delivery_data = args[:android_delivery_data] if args.key?(:android_delivery_data) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) end end # Additional information about message delivery. All percentages are calculated # with countMessagesAccepted as the denominator. class GoogleFirebaseFcmDataV1beta1MessageInsightPercents include Google::Apis::Core::Hashable # The percentage of accepted messages that had their priority lowered from high # to normal due to [app standby buckets](https://firebase.google.com/docs/cloud- # messaging/concept-options#setting-the-priority-of-a-message). # Corresponds to the JSON property `priorityLowered` # @return [Float] attr_accessor :priority_lowered def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @priority_lowered = args[:priority_lowered] if args.key?(:priority_lowered) end end # Percentage breakdown of message delivery outcomes. These categories are # mutually exclusive. All percentages are calculated with countMessagesAccepted # as the denominator. These categories may not account for all message outcomes. class GoogleFirebaseFcmDataV1beta1MessageOutcomePercents include Google::Apis::Core::Hashable # The percentage of all accepted messages that were successfully delivered to # the device. # Corresponds to the JSON property `delivered` # @return [Float] attr_accessor :delivered # The percentage of accepted messages that were dropped because the application # was force stopped on the device at the time of delivery and retries were # unsuccessful. # Corresponds to the JSON property `droppedAppForceStopped` # @return [Float] attr_accessor :dropped_app_force_stopped # The percentage of accepted messages that were dropped because the target # device is inactive. FCM will drop messages if the target device is deemed # inactive by our servers. If a device does reconnect, we call [ # OnDeletedMessages()](https://firebase.google.com/docs/cloud-messaging/android/ # receive#override-ondeletedmessages) in our SDK instead of delivering the # messages. # Corresponds to the JSON property `droppedDeviceInactive` # @return [Float] attr_accessor :dropped_device_inactive # The percentage of accepted messages that were dropped due to [too many # undelivered non-collapsible messages](https://firebase.google.com/docs/cloud- # messaging/concept-options#collapsible_and_non-collapsible_messages). # Specifically, each app instance can only have 100 pending messages stored on # our servers for a device which is disconnected. When that device reconnects, # those messages are delivered. When there are more than the maximum pending # messages, we call [OnDeletedMessages()](https://firebase.google.com/docs/cloud- # messaging/android/receive#override-ondeletedmessages) in our SDK instead of # delivering the messages. # Corresponds to the JSON property `droppedTooManyPendingMessages` # @return [Float] attr_accessor :dropped_too_many_pending_messages # The percentage of messages accepted on this day that were not dropped and not # delivered, due to the device being disconnected (as of the end of the America/ # Los_Angeles day when the message was sent to FCM). A portion of these messages # will be delivered the next day when the device connects but others may be # destined to devices that ultimately never reconnect. # Corresponds to the JSON property `pending` # @return [Float] attr_accessor :pending def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @delivered = args[:delivered] if args.key?(:delivered) @dropped_app_force_stopped = args[:dropped_app_force_stopped] if args.key?(:dropped_app_force_stopped) @dropped_device_inactive = args[:dropped_device_inactive] if args.key?(:dropped_device_inactive) @dropped_too_many_pending_messages = args[:dropped_too_many_pending_messages] if args.key?(:dropped_too_many_pending_messages) @pending = args[:pending] if args.key?(:pending) end end # Represents a whole or partial calendar date, such as a birthday. The time of # day and time zone are either specified elsewhere or are insignificant. The # date is relative to the Gregorian Calendar. This can represent one of the # following: * A full date, with non-zero year, month, and day values. * A month # and day, with a zero year (for example, an anniversary). * A year on its own, # with a zero month and a zero day. * A year and month, with a zero day (for # example, a credit card expiration date). Related types: * google.type. # TimeOfDay * google.type.DateTime * google.protobuf.Timestamp class GoogleTypeDate include Google::Apis::Core::Hashable # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to # specify a year by itself or a year and month where the day isn't significant. # Corresponds to the JSON property `day` # @return [Fixnum] attr_accessor :day # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month # and day. # Corresponds to the JSON property `month` # @return [Fixnum] attr_accessor :month # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a # year. # Corresponds to the JSON property `year` # @return [Fixnum] attr_accessor :year def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @day = args[:day] if args.key?(:day) @month = args[:month] if args.key?(:month) @year = args[:year] if args.key?(:year) end end end end end