# 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.Request do
  @moduledoc """
  A single kind of update to apply to a presentation.

  ## Attributes

  *   `mergeTableCells` (*type:* `GoogleApi.Slides.V1.Model.MergeTableCellsRequest.t`, *default:* `nil`) - Merges cells in a Table.
  *   `replaceAllShapesWithImage` (*type:* `GoogleApi.Slides.V1.Model.ReplaceAllShapesWithImageRequest.t`, *default:* `nil`) - Replaces all shapes matching some criteria with an image.
  *   `updateSlidesPosition` (*type:* `GoogleApi.Slides.V1.Model.UpdateSlidesPositionRequest.t`, *default:* `nil`) - Updates the position of a set of slides in the presentation.
  *   `updatePageProperties` (*type:* `GoogleApi.Slides.V1.Model.UpdatePagePropertiesRequest.t`, *default:* `nil`) - Updates the properties of a Page.
  *   `replaceAllShapesWithSheetsChart` (*type:* `GoogleApi.Slides.V1.Model.ReplaceAllShapesWithSheetsChartRequest.t`, *default:* `nil`) - Replaces all shapes matching some criteria with a Google Sheets chart.
  *   `createImage` (*type:* `GoogleApi.Slides.V1.Model.CreateImageRequest.t`, *default:* `nil`) - Creates an image.
  *   `updateTableBorderProperties` (*type:* `GoogleApi.Slides.V1.Model.UpdateTableBorderPropertiesRequest.t`, *default:* `nil`) - Updates the properties of the table borders in a Table.
  *   `duplicateObject` (*type:* `GoogleApi.Slides.V1.Model.DuplicateObjectRequest.t`, *default:* `nil`) - Duplicates a slide or page element.
  *   `updateTableCellProperties` (*type:* `GoogleApi.Slides.V1.Model.UpdateTableCellPropertiesRequest.t`, *default:* `nil`) - Updates the properties of a TableCell.
  *   `refreshSheetsChart` (*type:* `GoogleApi.Slides.V1.Model.RefreshSheetsChartRequest.t`, *default:* `nil`) - Refreshes a Google Sheets chart.
  *   `deleteParagraphBullets` (*type:* `GoogleApi.Slides.V1.Model.DeleteParagraphBulletsRequest.t`, *default:* `nil`) - Deletes bullets from paragraphs.
  *   `insertTableRows` (*type:* `GoogleApi.Slides.V1.Model.InsertTableRowsRequest.t`, *default:* `nil`) - Inserts rows into a table.
  *   `createLine` (*type:* `GoogleApi.Slides.V1.Model.CreateLineRequest.t`, *default:* `nil`) - Creates a line.
  *   `updateLineCategory` (*type:* `GoogleApi.Slides.V1.Model.UpdateLineCategoryRequest.t`, *default:* `nil`) - Updates the category of a line.
  *   `updateTextStyle` (*type:* `GoogleApi.Slides.V1.Model.UpdateTextStyleRequest.t`, *default:* `nil`) - Updates the styling of text within a Shape or Table.
  *   `replaceAllText` (*type:* `GoogleApi.Slides.V1.Model.ReplaceAllTextRequest.t`, *default:* `nil`) - Replaces all instances of specified text.
  *   `createShape` (*type:* `GoogleApi.Slides.V1.Model.CreateShapeRequest.t`, *default:* `nil`) - Creates a new shape.
  *   `deleteText` (*type:* `GoogleApi.Slides.V1.Model.DeleteTextRequest.t`, *default:* `nil`) - Deletes text from a shape or a table cell.
  *   `rerouteLine` (*type:* `GoogleApi.Slides.V1.Model.RerouteLineRequest.t`, *default:* `nil`) - Reroutes a line such that it's connected at the two closest connection sites on the connected page elements.
  *   `updatePageElementAltText` (*type:* `GoogleApi.Slides.V1.Model.UpdatePageElementAltTextRequest.t`, *default:* `nil`) - Updates the alt text title and/or description of a page element.
  *   `updateVideoProperties` (*type:* `GoogleApi.Slides.V1.Model.UpdateVideoPropertiesRequest.t`, *default:* `nil`) - Updates the properties of a Video.
  *   `updateShapeProperties` (*type:* `GoogleApi.Slides.V1.Model.UpdateShapePropertiesRequest.t`, *default:* `nil`) - Updates the properties of a Shape.
  *   `deleteObject` (*type:* `GoogleApi.Slides.V1.Model.DeleteObjectRequest.t`, *default:* `nil`) - Deletes a page or page element from the presentation.
  *   `unmergeTableCells` (*type:* `GoogleApi.Slides.V1.Model.UnmergeTableCellsRequest.t`, *default:* `nil`) - Unmerges cells in a Table.
  *   `updatePageElementTransform` (*type:* `GoogleApi.Slides.V1.Model.UpdatePageElementTransformRequest.t`, *default:* `nil`) - Updates the transform of a page element.
  *   `updateLineProperties` (*type:* `GoogleApi.Slides.V1.Model.UpdateLinePropertiesRequest.t`, *default:* `nil`) - Updates the properties of a Line.
  *   `deleteTableRow` (*type:* `GoogleApi.Slides.V1.Model.DeleteTableRowRequest.t`, *default:* `nil`) - Deletes a row from a table.
  *   `createSlide` (*type:* `GoogleApi.Slides.V1.Model.CreateSlideRequest.t`, *default:* `nil`) - Creates a new slide.
  *   `deleteTableColumn` (*type:* `GoogleApi.Slides.V1.Model.DeleteTableColumnRequest.t`, *default:* `nil`) - Deletes a column from a table.
  *   `createTable` (*type:* `GoogleApi.Slides.V1.Model.CreateTableRequest.t`, *default:* `nil`) - Creates a new table.
  *   `ungroupObjects` (*type:* `GoogleApi.Slides.V1.Model.UngroupObjectsRequest.t`, *default:* `nil`) - Ungroups objects, such as groups.
  *   `groupObjects` (*type:* `GoogleApi.Slides.V1.Model.GroupObjectsRequest.t`, *default:* `nil`) - Groups objects, such as page elements.
  *   `updateImageProperties` (*type:* `GoogleApi.Slides.V1.Model.UpdateImagePropertiesRequest.t`, *default:* `nil`) - Updates the properties of an Image.
  *   `insertText` (*type:* `GoogleApi.Slides.V1.Model.InsertTextRequest.t`, *default:* `nil`) - Inserts text into a shape or table cell.
  *   `updatePageElementsZOrder` (*type:* `GoogleApi.Slides.V1.Model.UpdatePageElementsZOrderRequest.t`, *default:* `nil`) - Updates the Z-order of page elements.
  *   `createSheetsChart` (*type:* `GoogleApi.Slides.V1.Model.CreateSheetsChartRequest.t`, *default:* `nil`) - Creates an embedded Google Sheets chart.
  *   `replaceImage` (*type:* `GoogleApi.Slides.V1.Model.ReplaceImageRequest.t`, *default:* `nil`) - Replaces an existing image with a new image.
  *   `updateTableColumnProperties` (*type:* `GoogleApi.Slides.V1.Model.UpdateTableColumnPropertiesRequest.t`, *default:* `nil`) - Updates the properties of a Table column.
  *   `insertTableColumns` (*type:* `GoogleApi.Slides.V1.Model.InsertTableColumnsRequest.t`, *default:* `nil`) - Inserts columns into a table.
  *   `updateTableRowProperties` (*type:* `GoogleApi.Slides.V1.Model.UpdateTableRowPropertiesRequest.t`, *default:* `nil`) - Updates the properties of a Table row.
  *   `updateSlideProperties` (*type:* `GoogleApi.Slides.V1.Model.UpdateSlidePropertiesRequest.t`, *default:* `nil`) - Updates the properties of a Slide
  *   `updateParagraphStyle` (*type:* `GoogleApi.Slides.V1.Model.UpdateParagraphStyleRequest.t`, *default:* `nil`) - Updates the styling of paragraphs within a Shape or Table.
  *   `createParagraphBullets` (*type:* `GoogleApi.Slides.V1.Model.CreateParagraphBulletsRequest.t`, *default:* `nil`) - Creates bullets for paragraphs.
  *   `createVideo` (*type:* `GoogleApi.Slides.V1.Model.CreateVideoRequest.t`, *default:* `nil`) - Creates a video.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :mergeTableCells => GoogleApi.Slides.V1.Model.MergeTableCellsRequest.t() | nil,
          :replaceAllShapesWithImage =>
            GoogleApi.Slides.V1.Model.ReplaceAllShapesWithImageRequest.t() | nil,
          :updateSlidesPosition =>
            GoogleApi.Slides.V1.Model.UpdateSlidesPositionRequest.t() | nil,
          :updatePageProperties =>
            GoogleApi.Slides.V1.Model.UpdatePagePropertiesRequest.t() | nil,
          :replaceAllShapesWithSheetsChart =>
            GoogleApi.Slides.V1.Model.ReplaceAllShapesWithSheetsChartRequest.t() | nil,
          :createImage => GoogleApi.Slides.V1.Model.CreateImageRequest.t() | nil,
          :updateTableBorderProperties =>
            GoogleApi.Slides.V1.Model.UpdateTableBorderPropertiesRequest.t() | nil,
          :duplicateObject => GoogleApi.Slides.V1.Model.DuplicateObjectRequest.t() | nil,
          :updateTableCellProperties =>
            GoogleApi.Slides.V1.Model.UpdateTableCellPropertiesRequest.t() | nil,
          :refreshSheetsChart => GoogleApi.Slides.V1.Model.RefreshSheetsChartRequest.t() | nil,
          :deleteParagraphBullets =>
            GoogleApi.Slides.V1.Model.DeleteParagraphBulletsRequest.t() | nil,
          :insertTableRows => GoogleApi.Slides.V1.Model.InsertTableRowsRequest.t() | nil,
          :createLine => GoogleApi.Slides.V1.Model.CreateLineRequest.t() | nil,
          :updateLineCategory => GoogleApi.Slides.V1.Model.UpdateLineCategoryRequest.t() | nil,
          :updateTextStyle => GoogleApi.Slides.V1.Model.UpdateTextStyleRequest.t() | nil,
          :replaceAllText => GoogleApi.Slides.V1.Model.ReplaceAllTextRequest.t() | nil,
          :createShape => GoogleApi.Slides.V1.Model.CreateShapeRequest.t() | nil,
          :deleteText => GoogleApi.Slides.V1.Model.DeleteTextRequest.t() | nil,
          :rerouteLine => GoogleApi.Slides.V1.Model.RerouteLineRequest.t() | nil,
          :updatePageElementAltText =>
            GoogleApi.Slides.V1.Model.UpdatePageElementAltTextRequest.t() | nil,
          :updateVideoProperties =>
            GoogleApi.Slides.V1.Model.UpdateVideoPropertiesRequest.t() | nil,
          :updateShapeProperties =>
            GoogleApi.Slides.V1.Model.UpdateShapePropertiesRequest.t() | nil,
          :deleteObject => GoogleApi.Slides.V1.Model.DeleteObjectRequest.t() | nil,
          :unmergeTableCells => GoogleApi.Slides.V1.Model.UnmergeTableCellsRequest.t() | nil,
          :updatePageElementTransform =>
            GoogleApi.Slides.V1.Model.UpdatePageElementTransformRequest.t() | nil,
          :updateLineProperties =>
            GoogleApi.Slides.V1.Model.UpdateLinePropertiesRequest.t() | nil,
          :deleteTableRow => GoogleApi.Slides.V1.Model.DeleteTableRowRequest.t() | nil,
          :createSlide => GoogleApi.Slides.V1.Model.CreateSlideRequest.t() | nil,
          :deleteTableColumn => GoogleApi.Slides.V1.Model.DeleteTableColumnRequest.t() | nil,
          :createTable => GoogleApi.Slides.V1.Model.CreateTableRequest.t() | nil,
          :ungroupObjects => GoogleApi.Slides.V1.Model.UngroupObjectsRequest.t() | nil,
          :groupObjects => GoogleApi.Slides.V1.Model.GroupObjectsRequest.t() | nil,
          :updateImageProperties =>
            GoogleApi.Slides.V1.Model.UpdateImagePropertiesRequest.t() | nil,
          :insertText => GoogleApi.Slides.V1.Model.InsertTextRequest.t() | nil,
          :updatePageElementsZOrder =>
            GoogleApi.Slides.V1.Model.UpdatePageElementsZOrderRequest.t() | nil,
          :createSheetsChart => GoogleApi.Slides.V1.Model.CreateSheetsChartRequest.t() | nil,
          :replaceImage => GoogleApi.Slides.V1.Model.ReplaceImageRequest.t() | nil,
          :updateTableColumnProperties =>
            GoogleApi.Slides.V1.Model.UpdateTableColumnPropertiesRequest.t() | nil,
          :insertTableColumns => GoogleApi.Slides.V1.Model.InsertTableColumnsRequest.t() | nil,
          :updateTableRowProperties =>
            GoogleApi.Slides.V1.Model.UpdateTableRowPropertiesRequest.t() | nil,
          :updateSlideProperties =>
            GoogleApi.Slides.V1.Model.UpdateSlidePropertiesRequest.t() | nil,
          :updateParagraphStyle =>
            GoogleApi.Slides.V1.Model.UpdateParagraphStyleRequest.t() | nil,
          :createParagraphBullets =>
            GoogleApi.Slides.V1.Model.CreateParagraphBulletsRequest.t() | nil,
          :createVideo => GoogleApi.Slides.V1.Model.CreateVideoRequest.t() | nil
        }

  field(:mergeTableCells, as: GoogleApi.Slides.V1.Model.MergeTableCellsRequest)

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

  field(:updateSlidesPosition, as: GoogleApi.Slides.V1.Model.UpdateSlidesPositionRequest)
  field(:updatePageProperties, as: GoogleApi.Slides.V1.Model.UpdatePagePropertiesRequest)

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

  field(:createImage, as: GoogleApi.Slides.V1.Model.CreateImageRequest)

  field(:updateTableBorderProperties,
    as: GoogleApi.Slides.V1.Model.UpdateTableBorderPropertiesRequest
  )

  field(:duplicateObject, as: GoogleApi.Slides.V1.Model.DuplicateObjectRequest)

  field(:updateTableCellProperties, as: GoogleApi.Slides.V1.Model.UpdateTableCellPropertiesRequest)

  field(:refreshSheetsChart, as: GoogleApi.Slides.V1.Model.RefreshSheetsChartRequest)
  field(:deleteParagraphBullets, as: GoogleApi.Slides.V1.Model.DeleteParagraphBulletsRequest)
  field(:insertTableRows, as: GoogleApi.Slides.V1.Model.InsertTableRowsRequest)
  field(:createLine, as: GoogleApi.Slides.V1.Model.CreateLineRequest)
  field(:updateLineCategory, as: GoogleApi.Slides.V1.Model.UpdateLineCategoryRequest)
  field(:updateTextStyle, as: GoogleApi.Slides.V1.Model.UpdateTextStyleRequest)
  field(:replaceAllText, as: GoogleApi.Slides.V1.Model.ReplaceAllTextRequest)
  field(:createShape, as: GoogleApi.Slides.V1.Model.CreateShapeRequest)
  field(:deleteText, as: GoogleApi.Slides.V1.Model.DeleteTextRequest)
  field(:rerouteLine, as: GoogleApi.Slides.V1.Model.RerouteLineRequest)
  field(:updatePageElementAltText, as: GoogleApi.Slides.V1.Model.UpdatePageElementAltTextRequest)
  field(:updateVideoProperties, as: GoogleApi.Slides.V1.Model.UpdateVideoPropertiesRequest)
  field(:updateShapeProperties, as: GoogleApi.Slides.V1.Model.UpdateShapePropertiesRequest)
  field(:deleteObject, as: GoogleApi.Slides.V1.Model.DeleteObjectRequest)
  field(:unmergeTableCells, as: GoogleApi.Slides.V1.Model.UnmergeTableCellsRequest)

  field(:updatePageElementTransform,
    as: GoogleApi.Slides.V1.Model.UpdatePageElementTransformRequest
  )

  field(:updateLineProperties, as: GoogleApi.Slides.V1.Model.UpdateLinePropertiesRequest)
  field(:deleteTableRow, as: GoogleApi.Slides.V1.Model.DeleteTableRowRequest)
  field(:createSlide, as: GoogleApi.Slides.V1.Model.CreateSlideRequest)
  field(:deleteTableColumn, as: GoogleApi.Slides.V1.Model.DeleteTableColumnRequest)
  field(:createTable, as: GoogleApi.Slides.V1.Model.CreateTableRequest)
  field(:ungroupObjects, as: GoogleApi.Slides.V1.Model.UngroupObjectsRequest)
  field(:groupObjects, as: GoogleApi.Slides.V1.Model.GroupObjectsRequest)
  field(:updateImageProperties, as: GoogleApi.Slides.V1.Model.UpdateImagePropertiesRequest)
  field(:insertText, as: GoogleApi.Slides.V1.Model.InsertTextRequest)
  field(:updatePageElementsZOrder, as: GoogleApi.Slides.V1.Model.UpdatePageElementsZOrderRequest)
  field(:createSheetsChart, as: GoogleApi.Slides.V1.Model.CreateSheetsChartRequest)
  field(:replaceImage, as: GoogleApi.Slides.V1.Model.ReplaceImageRequest)

  field(:updateTableColumnProperties,
    as: GoogleApi.Slides.V1.Model.UpdateTableColumnPropertiesRequest
  )

  field(:insertTableColumns, as: GoogleApi.Slides.V1.Model.InsertTableColumnsRequest)
  field(:updateTableRowProperties, as: GoogleApi.Slides.V1.Model.UpdateTableRowPropertiesRequest)
  field(:updateSlideProperties, as: GoogleApi.Slides.V1.Model.UpdateSlidePropertiesRequest)
  field(:updateParagraphStyle, as: GoogleApi.Slides.V1.Model.UpdateParagraphStyleRequest)
  field(:createParagraphBullets, as: GoogleApi.Slides.V1.Model.CreateParagraphBulletsRequest)
  field(:createVideo, as: GoogleApi.Slides.V1.Model.CreateVideoRequest)
end

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

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