# 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.Page do
  @moduledoc """
  A page in a presentation.

  ## Attributes

  *   `layoutProperties` (*type:* `GoogleApi.Slides.V1.Model.LayoutProperties.t`, *default:* `nil`) - Layout specific properties. Only set if page_type = LAYOUT.
  *   `masterProperties` (*type:* `GoogleApi.Slides.V1.Model.MasterProperties.t`, *default:* `nil`) - Master specific properties. Only set if page_type = MASTER.
  *   `notesProperties` (*type:* `GoogleApi.Slides.V1.Model.NotesProperties.t`, *default:* `nil`) - Notes specific properties. Only set if page_type = NOTES.
  *   `objectId` (*type:* `String.t`, *default:* `nil`) - The object ID for this page. Object IDs used by Page and PageElement share the same namespace.
  *   `pageElements` (*type:* `list(GoogleApi.Slides.V1.Model.PageElement.t)`, *default:* `nil`) - The page elements rendered on the page.
  *   `pageProperties` (*type:* `GoogleApi.Slides.V1.Model.PageProperties.t`, *default:* `nil`) - The properties of the page.
  *   `pageType` (*type:* `String.t`, *default:* `nil`) - The type of the page.
  *   `revisionId` (*type:* `String.t`, *default:* `nil`) - Output only. The revision ID of the presentation. Can be used in update requests to assert the presentation revision hasn't changed since the last read operation. Only populated if the user has edit access to the presentation. The revision ID is not a sequential number but an opaque string. The format of the revision ID might change over time. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated. However, a changed ID can also be due to internal factors such as ID format changes.
  *   `slideProperties` (*type:* `GoogleApi.Slides.V1.Model.SlideProperties.t`, *default:* `nil`) - Slide specific properties. Only set if page_type = SLIDE.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :layoutProperties => GoogleApi.Slides.V1.Model.LayoutProperties.t() | nil,
          :masterProperties => GoogleApi.Slides.V1.Model.MasterProperties.t() | nil,
          :notesProperties => GoogleApi.Slides.V1.Model.NotesProperties.t() | nil,
          :objectId => String.t() | nil,
          :pageElements => list(GoogleApi.Slides.V1.Model.PageElement.t()) | nil,
          :pageProperties => GoogleApi.Slides.V1.Model.PageProperties.t() | nil,
          :pageType => String.t() | nil,
          :revisionId => String.t() | nil,
          :slideProperties => GoogleApi.Slides.V1.Model.SlideProperties.t() | nil
        }

  field(:layoutProperties, as: GoogleApi.Slides.V1.Model.LayoutProperties)
  field(:masterProperties, as: GoogleApi.Slides.V1.Model.MasterProperties)
  field(:notesProperties, as: GoogleApi.Slides.V1.Model.NotesProperties)
  field(:objectId)
  field(:pageElements, as: GoogleApi.Slides.V1.Model.PageElement, type: :list)
  field(:pageProperties, as: GoogleApi.Slides.V1.Model.PageProperties)
  field(:pageType)
  field(:revisionId)
  field(:slideProperties, as: GoogleApi.Slides.V1.Model.SlideProperties)
end

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

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