# 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.Meet.V2.Model.SpaceConfig do
  @moduledoc """
  The configuration pertaining to a meeting space.

  ## Attributes

  *   `accessType` (*type:* `String.t`, *default:* `nil`) - Access type of the meeting space that determines who can join without knocking. Default: The user's default access settings. Controlled by the user's admin for enterprise users or RESTRICTED.
  *   `artifactConfig` (*type:* `GoogleApi.Meet.V2.Model.ArtifactConfig.t`, *default:* `nil`) - [Developer Preview](https://developers.google.com/workspace/preview): Configuration pertaining to the auto-generated artifacts that the meeting supports.
  *   `attendanceReportGenerationType` (*type:* `String.t`, *default:* `nil`) - [Developer Preview](https://developers.google.com/workspace/preview): Whether attendance report is enabled for the meeting space.
  *   `entryPointAccess` (*type:* `String.t`, *default:* `nil`) - Defines the entry points that can be used to join meetings hosted in this meeting space. Default: EntryPointAccess.ALL
  *   `moderation` (*type:* `String.t`, *default:* `nil`) - [Developer Preview](https://developers.google.com/workspace/preview): The pre-configured moderation mode for the Meeting. Default: Controlled by the user's policies.
  *   `moderationRestrictions` (*type:* `GoogleApi.Meet.V2.Model.ModerationRestrictions.t`, *default:* `nil`) - [Developer Preview](https://developers.google.com/workspace/preview): When moderation.ON, these restrictions go into effect for the meeting. When moderation.OFF, will be reset to default ModerationRestrictions.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :accessType => String.t() | nil,
          :artifactConfig => GoogleApi.Meet.V2.Model.ArtifactConfig.t() | nil,
          :attendanceReportGenerationType => String.t() | nil,
          :entryPointAccess => String.t() | nil,
          :moderation => String.t() | nil,
          :moderationRestrictions => GoogleApi.Meet.V2.Model.ModerationRestrictions.t() | nil
        }

  field(:accessType)
  field(:artifactConfig, as: GoogleApi.Meet.V2.Model.ArtifactConfig)
  field(:attendanceReportGenerationType)
  field(:entryPointAccess)
  field(:moderation)
  field(:moderationRestrictions, as: GoogleApi.Meet.V2.Model.ModerationRestrictions)
end

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

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