/*
 * 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.tagmanager.model;

/**
 * Model definition for ContainerFeatures.
 *
 * <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 Tag Manager 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 ContainerFeatures extends com.google.api.client.json.GenericJson {

  /**
   * Whether this Container supports built-in variables
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportBuiltInVariables;

  /**
   * Whether this Container supports clients.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportClients;

  /**
   * Whether this Container supports environments.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportEnvironments;

  /**
   * Whether this Container supports folders.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportFolders;

  /**
   * Whether this Container supports Google tag config.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportGtagConfigs;

  /**
   * Whether this Container supports tags.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportTags;

  /**
   * Whether this Container supports templates.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportTemplates;

  /**
   * Whether this Container supports transformations.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportTransformations;

  /**
   * Whether this Container supports triggers.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportTriggers;

  /**
   * Whether this Container supports user permissions managed by GTM.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportUserPermissions;

  /**
   * Whether this Container supports variables.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportVariables;

  /**
   * Whether this Container supports Container versions.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportVersions;

  /**
   * Whether this Container supports workspaces.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportWorkspaces;

  /**
   * Whether this Container supports zones.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean supportZones;

  /**
   * Whether this Container supports built-in variables
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportBuiltInVariables() {
    return supportBuiltInVariables;
  }

  /**
   * Whether this Container supports built-in variables
   * @param supportBuiltInVariables supportBuiltInVariables or {@code null} for none
   */
  public ContainerFeatures setSupportBuiltInVariables(java.lang.Boolean supportBuiltInVariables) {
    this.supportBuiltInVariables = supportBuiltInVariables;
    return this;
  }

  /**
   * Whether this Container supports clients.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportClients() {
    return supportClients;
  }

  /**
   * Whether this Container supports clients.
   * @param supportClients supportClients or {@code null} for none
   */
  public ContainerFeatures setSupportClients(java.lang.Boolean supportClients) {
    this.supportClients = supportClients;
    return this;
  }

  /**
   * Whether this Container supports environments.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportEnvironments() {
    return supportEnvironments;
  }

  /**
   * Whether this Container supports environments.
   * @param supportEnvironments supportEnvironments or {@code null} for none
   */
  public ContainerFeatures setSupportEnvironments(java.lang.Boolean supportEnvironments) {
    this.supportEnvironments = supportEnvironments;
    return this;
  }

  /**
   * Whether this Container supports folders.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportFolders() {
    return supportFolders;
  }

  /**
   * Whether this Container supports folders.
   * @param supportFolders supportFolders or {@code null} for none
   */
  public ContainerFeatures setSupportFolders(java.lang.Boolean supportFolders) {
    this.supportFolders = supportFolders;
    return this;
  }

  /**
   * Whether this Container supports Google tag config.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportGtagConfigs() {
    return supportGtagConfigs;
  }

  /**
   * Whether this Container supports Google tag config.
   * @param supportGtagConfigs supportGtagConfigs or {@code null} for none
   */
  public ContainerFeatures setSupportGtagConfigs(java.lang.Boolean supportGtagConfigs) {
    this.supportGtagConfigs = supportGtagConfigs;
    return this;
  }

  /**
   * Whether this Container supports tags.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportTags() {
    return supportTags;
  }

  /**
   * Whether this Container supports tags.
   * @param supportTags supportTags or {@code null} for none
   */
  public ContainerFeatures setSupportTags(java.lang.Boolean supportTags) {
    this.supportTags = supportTags;
    return this;
  }

  /**
   * Whether this Container supports templates.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportTemplates() {
    return supportTemplates;
  }

  /**
   * Whether this Container supports templates.
   * @param supportTemplates supportTemplates or {@code null} for none
   */
  public ContainerFeatures setSupportTemplates(java.lang.Boolean supportTemplates) {
    this.supportTemplates = supportTemplates;
    return this;
  }

  /**
   * Whether this Container supports transformations.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportTransformations() {
    return supportTransformations;
  }

  /**
   * Whether this Container supports transformations.
   * @param supportTransformations supportTransformations or {@code null} for none
   */
  public ContainerFeatures setSupportTransformations(java.lang.Boolean supportTransformations) {
    this.supportTransformations = supportTransformations;
    return this;
  }

  /**
   * Whether this Container supports triggers.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportTriggers() {
    return supportTriggers;
  }

  /**
   * Whether this Container supports triggers.
   * @param supportTriggers supportTriggers or {@code null} for none
   */
  public ContainerFeatures setSupportTriggers(java.lang.Boolean supportTriggers) {
    this.supportTriggers = supportTriggers;
    return this;
  }

  /**
   * Whether this Container supports user permissions managed by GTM.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportUserPermissions() {
    return supportUserPermissions;
  }

  /**
   * Whether this Container supports user permissions managed by GTM.
   * @param supportUserPermissions supportUserPermissions or {@code null} for none
   */
  public ContainerFeatures setSupportUserPermissions(java.lang.Boolean supportUserPermissions) {
    this.supportUserPermissions = supportUserPermissions;
    return this;
  }

  /**
   * Whether this Container supports variables.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportVariables() {
    return supportVariables;
  }

  /**
   * Whether this Container supports variables.
   * @param supportVariables supportVariables or {@code null} for none
   */
  public ContainerFeatures setSupportVariables(java.lang.Boolean supportVariables) {
    this.supportVariables = supportVariables;
    return this;
  }

  /**
   * Whether this Container supports Container versions.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportVersions() {
    return supportVersions;
  }

  /**
   * Whether this Container supports Container versions.
   * @param supportVersions supportVersions or {@code null} for none
   */
  public ContainerFeatures setSupportVersions(java.lang.Boolean supportVersions) {
    this.supportVersions = supportVersions;
    return this;
  }

  /**
   * Whether this Container supports workspaces.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportWorkspaces() {
    return supportWorkspaces;
  }

  /**
   * Whether this Container supports workspaces.
   * @param supportWorkspaces supportWorkspaces or {@code null} for none
   */
  public ContainerFeatures setSupportWorkspaces(java.lang.Boolean supportWorkspaces) {
    this.supportWorkspaces = supportWorkspaces;
    return this;
  }

  /**
   * Whether this Container supports zones.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSupportZones() {
    return supportZones;
  }

  /**
   * Whether this Container supports zones.
   * @param supportZones supportZones or {@code null} for none
   */
  public ContainerFeatures setSupportZones(java.lang.Boolean supportZones) {
    this.supportZones = supportZones;
    return this;
  }

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

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

}
