# 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.V1.Model.CampaignFlight do
  @moduledoc """
  Settings that track the planned spend and duration of a campaign.

  ## Attributes

  *   `plannedDates` (*type:* `GoogleApi.DisplayVideo.V1.Model.DateRange.t`, *default:* `nil`) - Required. The dates that the campaign is expected to run. They are resolved relative to the parent advertiser's time zone. * The dates specified here will not affect serving. They are used to generate alerts and warnings. For example, if the flight date of any child insertion order is outside the range of these dates, the user interface will show a warning. * `start_date` is required and must be the current date or later. * `end_date` is optional. If specified, it must be the `start_date` or later. * Any specified date must be before the year 2037.
  *   `plannedSpendAmountMicros` (*type:* `String.t`, *default:* `nil`) - The amount the campaign is expected to spend for its given planned_dates. This will not limit serving, but will be used for tracking spend in the DV360 UI. The amount is in micros. Must be greater than or equal to 0. For example, 500000000 represents 500 standard units of the currency.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :plannedDates => GoogleApi.DisplayVideo.V1.Model.DateRange.t() | nil,
          :plannedSpendAmountMicros => String.t() | nil
        }

  field(:plannedDates, as: GoogleApi.DisplayVideo.V1.Model.DateRange)
  field(:plannedSpendAmountMicros)
end

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

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