/*
 * 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.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.cloudsearch.v1.model;

/**
 * Settings of a meeting space that can be edited by users with corresponding manage privilege.
 * These settings are always populated in responses.
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Cloud Search API. For a detailed explanation see:
 * <a href="https://developers.google.com/api-client-library/java/google-http-java-client/json">https://developers.google.com/api-client-library/java/google-http-java-client/json</a>
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class Settings extends com.google.api.client.json.GenericJson {

  /**
   * The access lock of the meeting space that lets hosts control who can join the meeting.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean accessLock;

  /**
   * The access type of the meeting space.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String accessType;

  /**
   * Whether users can join before host in the conferences of this meeting space.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean allowJoiningBeforeHost;

  /**
   * Whether attendance report is enabled for the meeting space.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean attendanceReportEnabled;

  /**
   * The chat lock of the meeting space that lets owner control whether the participants can send
   * chat messages.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean chatLock;

  /**
   * The co-activity lock of the meeting space that lets owner control whether the participants can
   * start/stop or update the state of co-activity.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean coActivityLock;

  /**
   * Whether meeting artifacts will be shared with cohosts.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean cohostArtifactSharingEnabled;

  /**
   * Whether Client-side Encryption is enabled for the meeting space.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean cseEnabled;

  /**
   * Whether the default role is viewer or not.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean defaultAsViewer;

  /**
   * Indicates whether the meeting space is moderated.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean moderationEnabled;

  /**
   * The present lock of the meeting space that lets owner control whether the participants can
   * present their screen.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean presentLock;

  /**
   * The reactions lock of the meeting space that lets owner control whether the participants can
   * send reactions.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean reactionsLock;

  /**
   * The access lock of the meeting space that lets hosts control who can join the meeting.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getAccessLock() {
    return accessLock;
  }

  /**
   * The access lock of the meeting space that lets hosts control who can join the meeting.
   * @param accessLock accessLock or {@code null} for none
   */
  public Settings setAccessLock(java.lang.Boolean accessLock) {
    this.accessLock = accessLock;
    return this;
  }

  /**
   * The access type of the meeting space.
   * @return value or {@code null} for none
   */
  public java.lang.String getAccessType() {
    return accessType;
  }

  /**
   * The access type of the meeting space.
   * @param accessType accessType or {@code null} for none
   */
  public Settings setAccessType(java.lang.String accessType) {
    this.accessType = accessType;
    return this;
  }

  /**
   * Whether users can join before host in the conferences of this meeting space.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getAllowJoiningBeforeHost() {
    return allowJoiningBeforeHost;
  }

  /**
   * Whether users can join before host in the conferences of this meeting space.
   * @param allowJoiningBeforeHost allowJoiningBeforeHost or {@code null} for none
   */
  public Settings setAllowJoiningBeforeHost(java.lang.Boolean allowJoiningBeforeHost) {
    this.allowJoiningBeforeHost = allowJoiningBeforeHost;
    return this;
  }

  /**
   * Whether attendance report is enabled for the meeting space.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getAttendanceReportEnabled() {
    return attendanceReportEnabled;
  }

  /**
   * Whether attendance report is enabled for the meeting space.
   * @param attendanceReportEnabled attendanceReportEnabled or {@code null} for none
   */
  public Settings setAttendanceReportEnabled(java.lang.Boolean attendanceReportEnabled) {
    this.attendanceReportEnabled = attendanceReportEnabled;
    return this;
  }

  /**
   * The chat lock of the meeting space that lets owner control whether the participants can send
   * chat messages.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getChatLock() {
    return chatLock;
  }

  /**
   * The chat lock of the meeting space that lets owner control whether the participants can send
   * chat messages.
   * @param chatLock chatLock or {@code null} for none
   */
  public Settings setChatLock(java.lang.Boolean chatLock) {
    this.chatLock = chatLock;
    return this;
  }

  /**
   * The co-activity lock of the meeting space that lets owner control whether the participants can
   * start/stop or update the state of co-activity.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getCoActivityLock() {
    return coActivityLock;
  }

  /**
   * The co-activity lock of the meeting space that lets owner control whether the participants can
   * start/stop or update the state of co-activity.
   * @param coActivityLock coActivityLock or {@code null} for none
   */
  public Settings setCoActivityLock(java.lang.Boolean coActivityLock) {
    this.coActivityLock = coActivityLock;
    return this;
  }

  /**
   * Whether meeting artifacts will be shared with cohosts.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getCohostArtifactSharingEnabled() {
    return cohostArtifactSharingEnabled;
  }

  /**
   * Whether meeting artifacts will be shared with cohosts.
   * @param cohostArtifactSharingEnabled cohostArtifactSharingEnabled or {@code null} for none
   */
  public Settings setCohostArtifactSharingEnabled(java.lang.Boolean cohostArtifactSharingEnabled) {
    this.cohostArtifactSharingEnabled = cohostArtifactSharingEnabled;
    return this;
  }

  /**
   * Whether Client-side Encryption is enabled for the meeting space.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getCseEnabled() {
    return cseEnabled;
  }

  /**
   * Whether Client-side Encryption is enabled for the meeting space.
   * @param cseEnabled cseEnabled or {@code null} for none
   */
  public Settings setCseEnabled(java.lang.Boolean cseEnabled) {
    this.cseEnabled = cseEnabled;
    return this;
  }

  /**
   * Whether the default role is viewer or not.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getDefaultAsViewer() {
    return defaultAsViewer;
  }

  /**
   * Whether the default role is viewer or not.
   * @param defaultAsViewer defaultAsViewer or {@code null} for none
   */
  public Settings setDefaultAsViewer(java.lang.Boolean defaultAsViewer) {
    this.defaultAsViewer = defaultAsViewer;
    return this;
  }

  /**
   * Indicates whether the meeting space is moderated.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getModerationEnabled() {
    return moderationEnabled;
  }

  /**
   * Indicates whether the meeting space is moderated.
   * @param moderationEnabled moderationEnabled or {@code null} for none
   */
  public Settings setModerationEnabled(java.lang.Boolean moderationEnabled) {
    this.moderationEnabled = moderationEnabled;
    return this;
  }

  /**
   * The present lock of the meeting space that lets owner control whether the participants can
   * present their screen.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getPresentLock() {
    return presentLock;
  }

  /**
   * The present lock of the meeting space that lets owner control whether the participants can
   * present their screen.
   * @param presentLock presentLock or {@code null} for none
   */
  public Settings setPresentLock(java.lang.Boolean presentLock) {
    this.presentLock = presentLock;
    return this;
  }

  /**
   * The reactions lock of the meeting space that lets owner control whether the participants can
   * send reactions.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getReactionsLock() {
    return reactionsLock;
  }

  /**
   * The reactions lock of the meeting space that lets owner control whether the participants can
   * send reactions.
   * @param reactionsLock reactionsLock or {@code null} for none
   */
  public Settings setReactionsLock(java.lang.Boolean reactionsLock) {
    this.reactionsLock = reactionsLock;
    return this;
  }

  @Override
  public Settings set(String fieldName, Object value) {
    return (Settings) super.set(fieldName, value);
  }

  @Override
  public Settings clone() {
    return (Settings) super.clone();
  }

}
