# Copyright 2019 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.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.AdExchangeBuyer.V2beta1.Model.BidMetricsRow do
  @moduledoc """
  The set of metrics that are measured in numbers of bids, representing how many bids with the specified dimension values were considered eligible at each stage of the bidding funnel;

  ## Attributes

  *   `bids` (*type:* `GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t`, *default:* `nil`) - The number of bids that Ad Exchange received from the buyer.
  *   `bidsInAuction` (*type:* `GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t`, *default:* `nil`) - The number of bids that were permitted to compete in the auction.
  *   `billedImpressions` (*type:* `GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t`, *default:* `nil`) - The number of bids for which the buyer was billed. Also called valid impressions as invalid impressions are not billed.
  *   `impressionsWon` (*type:* `GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t`, *default:* `nil`) - The number of bids that won the auction.
  *   `measurableImpressions` (*type:* `GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t`, *default:* `nil`) - The number of bids for which the corresponding impression was measurable for viewability (as defined by Active View).
  *   `reachedQueries` (*type:* `GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t`, *default:* `nil`) - The number of bids that won the auction and also won the mediation waterfall (if any).
  *   `rowDimensions` (*type:* `GoogleApi.AdExchangeBuyer.V2beta1.Model.RowDimensions.t`, *default:* `nil`) - The values of all dimensions associated with metric values in this row.
  *   `viewableImpressions` (*type:* `GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t`, *default:* `nil`) - The number of bids for which the corresponding impression was viewable (as defined by Active View).
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :bids => GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t() | nil,
          :bidsInAuction => GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t() | nil,
          :billedImpressions => GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t() | nil,
          :impressionsWon => GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t() | nil,
          :measurableImpressions => GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t() | nil,
          :reachedQueries => GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t() | nil,
          :rowDimensions => GoogleApi.AdExchangeBuyer.V2beta1.Model.RowDimensions.t() | nil,
          :viewableImpressions => GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue.t() | nil
        }

  field(:bids, as: GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue)
  field(:bidsInAuction, as: GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue)
  field(:billedImpressions, as: GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue)
  field(:impressionsWon, as: GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue)
  field(:measurableImpressions, as: GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue)
  field(:reachedQueries, as: GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue)
  field(:rowDimensions, as: GoogleApi.AdExchangeBuyer.V2beta1.Model.RowDimensions)
  field(:viewableImpressions, as: GoogleApi.AdExchangeBuyer.V2beta1.Model.MetricValue)
end

defimpl Poison.Decoder, for: GoogleApi.AdExchangeBuyer.V2beta1.Model.BidMetricsRow do
  def decode(value, options) do
    GoogleApi.AdExchangeBuyer.V2beta1.Model.BidMetricsRow.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.AdExchangeBuyer.V2beta1.Model.BidMetricsRow do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
