# 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.Retail.V2.Model.GoogleCloudRetailV2AddLocalInventoriesRequest do
  @moduledoc """
  Request message for ProductService.AddLocalInventories method.

  ## Attributes

  *   `addMask` (*type:* `String.t`, *default:* `nil`) - Indicates which inventory fields in the provided list of LocalInventory to update. The field is updated to the provided value. If a field is set while the place does not have a previous local inventory, the local inventory at that store is created. If a field is set while the value of that field is not provided, the original field value, if it exists, is deleted. If the mask is not set or set with empty paths, all inventory fields will be updated. If an unsupported or unknown field is provided, an INVALID_ARGUMENT error is returned and the entire update will be ignored.
  *   `addTime` (*type:* `DateTime.t`, *default:* `nil`) - The time when the inventory updates are issued. Used to prevent out-of-order updates on local inventory fields. If not provided, the internal system time will be used.
  *   `allowMissing` (*type:* `boolean()`, *default:* `nil`) - If set to true, and the Product is not found, the local inventory will still be processed and retained for at most 1 day and processed once the Product is created. If set to false, a NOT_FOUND error is returned if the Product is not found.
  *   `localInventories` (*type:* `list(GoogleApi.Retail.V2.Model.GoogleCloudRetailV2LocalInventory.t)`, *default:* `nil`) - Required. A list of inventory information at difference places. Each place is identified by its place ID. At most 3000 inventories are allowed per request.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :addMask => String.t() | nil,
          :addTime => DateTime.t() | nil,
          :allowMissing => boolean() | nil,
          :localInventories =>
            list(GoogleApi.Retail.V2.Model.GoogleCloudRetailV2LocalInventory.t()) | nil
        }

  field(:addMask)
  field(:addTime, as: DateTime)
  field(:allowMissing)

  field(:localInventories,
    as: GoogleApi.Retail.V2.Model.GoogleCloudRetailV2LocalInventory,
    type: :list
  )
end

defimpl Poison.Decoder,
  for: GoogleApi.Retail.V2.Model.GoogleCloudRetailV2AddLocalInventoriesRequest do
  def decode(value, options) do
    GoogleApi.Retail.V2.Model.GoogleCloudRetailV2AddLocalInventoriesRequest.decode(value, options)
  end
end

defimpl Poison.Encoder,
  for: GoogleApi.Retail.V2.Model.GoogleCloudRetailV2AddLocalInventoriesRequest do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
