# 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.AnalyticsAdmin.V1alpha.Model.GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal do
  @moduledoc """
  A proposal for a link between a Google Analytics property and a Display & Video 360 advertiser. A proposal is converted to a DisplayVideo360AdvertiserLink once approved. Google Analytics admins approve inbound proposals while Display & Video 360 admins approve outbound proposals.

  ## Attributes

  *   `adsPersonalizationEnabled` (*type:* `boolean()`, *default:* `nil`) - Immutable. Enables personalized advertising features with this integration. If this field is not set on create, it will be defaulted to true.
  *   `advertiserDisplayName` (*type:* `String.t`, *default:* `nil`) - Output only. The display name of the Display & Video Advertiser. Only populated for proposals that originated from Display & Video 360.
  *   `advertiserId` (*type:* `String.t`, *default:* `nil`) - Immutable. The Display & Video 360 Advertiser's advertiser ID.
  *   `campaignDataSharingEnabled` (*type:* `boolean()`, *default:* `nil`) - Immutable. Enables the import of campaign data from Display & Video 360. If this field is not set on create, it will be defaulted to true.
  *   `costDataSharingEnabled` (*type:* `boolean()`, *default:* `nil`) - Immutable. Enables the import of cost data from Display & Video 360. This can only be enabled if campaign_data_sharing_enabled is enabled. If this field is not set on create, it will be defaulted to true.
  *   `linkProposalStatusDetails` (*type:* `GoogleApi.AnalyticsAdmin.V1alpha.Model.GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails.t`, *default:* `nil`) - Output only. The status information for this link proposal.
  *   `name` (*type:* `String.t`, *default:* `nil`) - Output only. The resource name for this DisplayVideo360AdvertiserLinkProposal resource. Format: properties/{propertyId}/displayVideo360AdvertiserLinkProposals/{proposalId} Note: proposalId is not the Display & Video 360 Advertiser ID
  *   `validationEmail` (*type:* `String.t`, *default:* `nil`) - Input only. On a proposal being sent to Display & Video 360, this field must be set to the email address of an admin on the target advertiser. This is used to verify that the Google Analytics admin is aware of at least one admin on the Display & Video 360 Advertiser. This does not restrict approval of the proposal to a single user. Any admin on the Display & Video 360 Advertiser may approve the proposal.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :adsPersonalizationEnabled => boolean() | nil,
          :advertiserDisplayName => String.t() | nil,
          :advertiserId => String.t() | nil,
          :campaignDataSharingEnabled => boolean() | nil,
          :costDataSharingEnabled => boolean() | nil,
          :linkProposalStatusDetails =>
            GoogleApi.AnalyticsAdmin.V1alpha.Model.GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails.t()
            | nil,
          :name => String.t() | nil,
          :validationEmail => String.t() | nil
        }

  field(:adsPersonalizationEnabled)
  field(:advertiserDisplayName)
  field(:advertiserId)
  field(:campaignDataSharingEnabled)
  field(:costDataSharingEnabled)

  field(:linkProposalStatusDetails,
    as:
      GoogleApi.AnalyticsAdmin.V1alpha.Model.GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails
  )

  field(:name)
  field(:validationEmail)
end

defimpl Poison.Decoder,
  for:
    GoogleApi.AnalyticsAdmin.V1alpha.Model.GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal do
  def decode(value, options) do
    GoogleApi.AnalyticsAdmin.V1alpha.Model.GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal.decode(
      value,
      options
    )
  end
end

defimpl Poison.Encoder,
  for:
    GoogleApi.AnalyticsAdmin.V1alpha.Model.GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
