# 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.DisplayVideo.V3.Model.IntegralAdScience do
  @moduledoc """
  Details of Integral Ad Science settings.

  ## Attributes

  *   `customSegmentId` (*type:* `list(String.t)`, *default:* `nil`) - The custom segment ID provided by Integral Ad Science. The ID must be between `1000001` and `1999999` or `3000001` and `3999999`, inclusive.
  *   `displayViewability` (*type:* `String.t`, *default:* `nil`) - Display Viewability section (applicable to display line items only).
  *   `excludeUnrateable` (*type:* `boolean()`, *default:* `nil`) - Brand Safety - **Unrateable**.
  *   `excludedAdFraudRisk` (*type:* `String.t`, *default:* `nil`) - Ad Fraud settings.
  *   `excludedAdultRisk` (*type:* `String.t`, *default:* `nil`) - Brand Safety - **Adult content**.
  *   `excludedAlcoholRisk` (*type:* `String.t`, *default:* `nil`) - Brand Safety - **Alcohol**.
  *   `excludedDrugsRisk` (*type:* `String.t`, *default:* `nil`) - Brand Safety - **Drugs**.
  *   `excludedGamblingRisk` (*type:* `String.t`, *default:* `nil`) - Brand Safety - **Gambling**.
  *   `excludedHateSpeechRisk` (*type:* `String.t`, *default:* `nil`) - Brand Safety - **Hate speech**.
  *   `excludedIllegalDownloadsRisk` (*type:* `String.t`, *default:* `nil`) - Brand Safety - **Illegal downloads**.
  *   `excludedOffensiveLanguageRisk` (*type:* `String.t`, *default:* `nil`) - Brand Safety - **Offensive language**.
  *   `excludedViolenceRisk` (*type:* `String.t`, *default:* `nil`) - Brand Safety - **Violence**.
  *   `qualitySyncCustomSegmentId` (*type:* `list(String.t)`, *default:* `nil`) - Optional. The quality sync custom segment ID provided by Integral Ad Science. The ID must be between `3000000` and `4999999`, inclusive.
  *   `traqScoreOption` (*type:* `String.t`, *default:* `nil`) - True advertising quality (applicable to Display line items only).
  *   `videoViewability` (*type:* `String.t`, *default:* `nil`) - Video Viewability Section (applicable to video line items only).
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :customSegmentId => list(String.t()) | nil,
          :displayViewability => String.t() | nil,
          :excludeUnrateable => boolean() | nil,
          :excludedAdFraudRisk => String.t() | nil,
          :excludedAdultRisk => String.t() | nil,
          :excludedAlcoholRisk => String.t() | nil,
          :excludedDrugsRisk => String.t() | nil,
          :excludedGamblingRisk => String.t() | nil,
          :excludedHateSpeechRisk => String.t() | nil,
          :excludedIllegalDownloadsRisk => String.t() | nil,
          :excludedOffensiveLanguageRisk => String.t() | nil,
          :excludedViolenceRisk => String.t() | nil,
          :qualitySyncCustomSegmentId => list(String.t()) | nil,
          :traqScoreOption => String.t() | nil,
          :videoViewability => String.t() | nil
        }

  field(:customSegmentId, type: :list)
  field(:displayViewability)
  field(:excludeUnrateable)
  field(:excludedAdFraudRisk)
  field(:excludedAdultRisk)
  field(:excludedAlcoholRisk)
  field(:excludedDrugsRisk)
  field(:excludedGamblingRisk)
  field(:excludedHateSpeechRisk)
  field(:excludedIllegalDownloadsRisk)
  field(:excludedOffensiveLanguageRisk)
  field(:excludedViolenceRisk)
  field(:qualitySyncCustomSegmentId, type: :list)
  field(:traqScoreOption)
  field(:videoViewability)
end

defimpl Poison.Decoder, for: GoogleApi.DisplayVideo.V3.Model.IntegralAdScience do
  def decode(value, options) do
    GoogleApi.DisplayVideo.V3.Model.IntegralAdScience.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.DisplayVideo.V3.Model.IntegralAdScience do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
