# 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.Slides.V1.Model.Response do
  @moduledoc """
  A single response from an update.

  ## Attributes

  *   `createImage` (*type:* `GoogleApi.Slides.V1.Model.CreateImageResponse.t`, *default:* `nil`) - The result of creating an image.
  *   `createLine` (*type:* `GoogleApi.Slides.V1.Model.CreateLineResponse.t`, *default:* `nil`) - The result of creating a line.
  *   `createShape` (*type:* `GoogleApi.Slides.V1.Model.CreateShapeResponse.t`, *default:* `nil`) - The result of creating a shape.
  *   `createSheetsChart` (*type:* `GoogleApi.Slides.V1.Model.CreateSheetsChartResponse.t`, *default:* `nil`) - The result of creating a Google Sheets chart.
  *   `createSlide` (*type:* `GoogleApi.Slides.V1.Model.CreateSlideResponse.t`, *default:* `nil`) - The result of creating a slide.
  *   `createTable` (*type:* `GoogleApi.Slides.V1.Model.CreateTableResponse.t`, *default:* `nil`) - The result of creating a table.
  *   `createVideo` (*type:* `GoogleApi.Slides.V1.Model.CreateVideoResponse.t`, *default:* `nil`) - The result of creating a video.
  *   `duplicateObject` (*type:* `GoogleApi.Slides.V1.Model.DuplicateObjectResponse.t`, *default:* `nil`) - The result of duplicating an object.
  *   `groupObjects` (*type:* `GoogleApi.Slides.V1.Model.GroupObjectsResponse.t`, *default:* `nil`) - The result of grouping objects.
  *   `replaceAllShapesWithImage` (*type:* `GoogleApi.Slides.V1.Model.ReplaceAllShapesWithImageResponse.t`, *default:* `nil`) - The result of replacing all shapes matching some criteria with an image.
  *   `replaceAllShapesWithSheetsChart` (*type:* `GoogleApi.Slides.V1.Model.ReplaceAllShapesWithSheetsChartResponse.t`, *default:* `nil`) - The result of replacing all shapes matching some criteria with a Google Sheets chart.
  *   `replaceAllText` (*type:* `GoogleApi.Slides.V1.Model.ReplaceAllTextResponse.t`, *default:* `nil`) - The result of replacing text.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :createImage => GoogleApi.Slides.V1.Model.CreateImageResponse.t() | nil,
          :createLine => GoogleApi.Slides.V1.Model.CreateLineResponse.t() | nil,
          :createShape => GoogleApi.Slides.V1.Model.CreateShapeResponse.t() | nil,
          :createSheetsChart => GoogleApi.Slides.V1.Model.CreateSheetsChartResponse.t() | nil,
          :createSlide => GoogleApi.Slides.V1.Model.CreateSlideResponse.t() | nil,
          :createTable => GoogleApi.Slides.V1.Model.CreateTableResponse.t() | nil,
          :createVideo => GoogleApi.Slides.V1.Model.CreateVideoResponse.t() | nil,
          :duplicateObject => GoogleApi.Slides.V1.Model.DuplicateObjectResponse.t() | nil,
          :groupObjects => GoogleApi.Slides.V1.Model.GroupObjectsResponse.t() | nil,
          :replaceAllShapesWithImage =>
            GoogleApi.Slides.V1.Model.ReplaceAllShapesWithImageResponse.t() | nil,
          :replaceAllShapesWithSheetsChart =>
            GoogleApi.Slides.V1.Model.ReplaceAllShapesWithSheetsChartResponse.t() | nil,
          :replaceAllText => GoogleApi.Slides.V1.Model.ReplaceAllTextResponse.t() | nil
        }

  field(:createImage, as: GoogleApi.Slides.V1.Model.CreateImageResponse)
  field(:createLine, as: GoogleApi.Slides.V1.Model.CreateLineResponse)
  field(:createShape, as: GoogleApi.Slides.V1.Model.CreateShapeResponse)
  field(:createSheetsChart, as: GoogleApi.Slides.V1.Model.CreateSheetsChartResponse)
  field(:createSlide, as: GoogleApi.Slides.V1.Model.CreateSlideResponse)
  field(:createTable, as: GoogleApi.Slides.V1.Model.CreateTableResponse)
  field(:createVideo, as: GoogleApi.Slides.V1.Model.CreateVideoResponse)
  field(:duplicateObject, as: GoogleApi.Slides.V1.Model.DuplicateObjectResponse)
  field(:groupObjects, as: GoogleApi.Slides.V1.Model.GroupObjectsResponse)

  field(:replaceAllShapesWithImage,
    as: GoogleApi.Slides.V1.Model.ReplaceAllShapesWithImageResponse
  )

  field(:replaceAllShapesWithSheetsChart,
    as: GoogleApi.Slides.V1.Model.ReplaceAllShapesWithSheetsChartResponse
  )

  field(:replaceAllText, as: GoogleApi.Slides.V1.Model.ReplaceAllTextResponse)
end

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

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