lib/google_api/content/v21/model/repricing_rule.ex

# 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.Content.V21.Model.RepricingRule do
  @moduledoc """
  Represents a repricing rule. A repricing rule is used by shopping serving to adjust transactable offer prices if conditions are met. Next ID: 24

  ## Attributes

  *   `cogsBasedRule` (*type:* `GoogleApi.Content.V21.Model.RepricingRuleCostOfGoodsSaleRule.t`, *default:* `nil`) - The rule definition for TYPE_COGS_BASED. Required when the rule type is TYPE_COGS_BASED.
  *   `countryCode` (*type:* `String.t`, *default:* `nil`) - Required. Immutable. [CLDR country code](http://www.unicode.org/repos/cldr/tags/latest/common/main/en.xml) (e.g. "US").
  *   `effectiveTimePeriod` (*type:* `GoogleApi.Content.V21.Model.RepricingRuleEffectiveTime.t`, *default:* `nil`) - Required. Time period when the rule should take effect.
  *   `eligibleOfferMatcher` (*type:* `GoogleApi.Content.V21.Model.RepricingRuleEligibleOfferMatcher.t`, *default:* `nil`) - Required. Match criteria for the eligible offers.
  *   `languageCode` (*type:* `String.t`, *default:* `nil`) - Required. Immutable. The two-letter ISO 639-1 language code associated with the repricing rule.
  *   `merchantId` (*type:* `String.t`, *default:* `nil`) - Output only. Immutable. Merchant that owns the repricing rule.
  *   `paused` (*type:* `boolean()`, *default:* `nil`) - Represents whether a rule is paused. A paused rule will behave like a non-paused rule within CRUD operations, with the major difference that a paused rule will not be evaluated and will have no effect on offers.
  *   `restriction` (*type:* `GoogleApi.Content.V21.Model.RepricingRuleRestriction.t`, *default:* `nil`) - Required. Restriction of the rule appliance.
  *   `ruleId` (*type:* `String.t`, *default:* `nil`) - Output only. Immutable. The ID to uniquely identify each repricing rule.
  *   `statsBasedRule` (*type:* `GoogleApi.Content.V21.Model.RepricingRuleStatsBasedRule.t`, *default:* `nil`) - The rule definition for TYPE_STATS_BASED. Required when the rule type is TYPE_STATS_BASED.
  *   `title` (*type:* `String.t`, *default:* `nil`) - The title for the rule.
  *   `type` (*type:* `String.t`, *default:* `nil`) - Required. Immutable. The type of the rule.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :cogsBasedRule =>
            GoogleApi.Content.V21.Model.RepricingRuleCostOfGoodsSaleRule.t() | nil,
          :countryCode => String.t() | nil,
          :effectiveTimePeriod =>
            GoogleApi.Content.V21.Model.RepricingRuleEffectiveTime.t() | nil,
          :eligibleOfferMatcher =>
            GoogleApi.Content.V21.Model.RepricingRuleEligibleOfferMatcher.t() | nil,
          :languageCode => String.t() | nil,
          :merchantId => String.t() | nil,
          :paused => boolean() | nil,
          :restriction => GoogleApi.Content.V21.Model.RepricingRuleRestriction.t() | nil,
          :ruleId => String.t() | nil,
          :statsBasedRule => GoogleApi.Content.V21.Model.RepricingRuleStatsBasedRule.t() | nil,
          :title => String.t() | nil,
          :type => String.t() | nil
        }

  field(:cogsBasedRule, as: GoogleApi.Content.V21.Model.RepricingRuleCostOfGoodsSaleRule)
  field(:countryCode)
  field(:effectiveTimePeriod, as: GoogleApi.Content.V21.Model.RepricingRuleEffectiveTime)
  field(:eligibleOfferMatcher, as: GoogleApi.Content.V21.Model.RepricingRuleEligibleOfferMatcher)
  field(:languageCode)
  field(:merchantId)
  field(:paused)
  field(:restriction, as: GoogleApi.Content.V21.Model.RepricingRuleRestriction)
  field(:ruleId)
  field(:statsBasedRule, as: GoogleApi.Content.V21.Model.RepricingRuleStatsBasedRule)
  field(:title)
  field(:type)
end

defimpl Poison.Decoder, for: GoogleApi.Content.V21.Model.RepricingRule do
  def decode(value, options) do
    GoogleApi.Content.V21.Model.RepricingRule.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Content.V21.Model.RepricingRule do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end