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

/**
 * ProjectsMetadata is the metadata CCFE stores about the all the relevant projects (tenant,
 * consumer, producer).
 *
 * <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 App Engine Admin 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 ProjectsMetadata extends com.google.api.client.json.GenericJson {

  /**
   * The consumer project id.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String consumerProjectId;

  /**
   * The consumer project number.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long consumerProjectNumber;

  /**
   * The CCFE state of the consumer project. It is the same state that is communicated to the CLH
   * during project events. Notice that this field is not set in the DB, it is only set in this
   * proto when communicated to CLH in the side channel.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String consumerProjectState;

  /**
   * The service account authorized to operate on the consumer project. Note: CCFE only propagates
   * P4SA with default tag to CLH.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String p4ServiceAccount;

  /**
   * The producer project id.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String producerProjectId;

  /**
   * The producer project number.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long producerProjectNumber;

  /**
   * The tenant project id.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String tenantProjectId;

  /**
   * The tenant project number.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long tenantProjectNumber;

  /**
   * The consumer project id.
   * @return value or {@code null} for none
   */
  public java.lang.String getConsumerProjectId() {
    return consumerProjectId;
  }

  /**
   * The consumer project id.
   * @param consumerProjectId consumerProjectId or {@code null} for none
   */
  public ProjectsMetadata setConsumerProjectId(java.lang.String consumerProjectId) {
    this.consumerProjectId = consumerProjectId;
    return this;
  }

  /**
   * The consumer project number.
   * @return value or {@code null} for none
   */
  public java.lang.Long getConsumerProjectNumber() {
    return consumerProjectNumber;
  }

  /**
   * The consumer project number.
   * @param consumerProjectNumber consumerProjectNumber or {@code null} for none
   */
  public ProjectsMetadata setConsumerProjectNumber(java.lang.Long consumerProjectNumber) {
    this.consumerProjectNumber = consumerProjectNumber;
    return this;
  }

  /**
   * The CCFE state of the consumer project. It is the same state that is communicated to the CLH
   * during project events. Notice that this field is not set in the DB, it is only set in this
   * proto when communicated to CLH in the side channel.
   * @return value or {@code null} for none
   */
  public java.lang.String getConsumerProjectState() {
    return consumerProjectState;
  }

  /**
   * The CCFE state of the consumer project. It is the same state that is communicated to the CLH
   * during project events. Notice that this field is not set in the DB, it is only set in this
   * proto when communicated to CLH in the side channel.
   * @param consumerProjectState consumerProjectState or {@code null} for none
   */
  public ProjectsMetadata setConsumerProjectState(java.lang.String consumerProjectState) {
    this.consumerProjectState = consumerProjectState;
    return this;
  }

  /**
   * The service account authorized to operate on the consumer project. Note: CCFE only propagates
   * P4SA with default tag to CLH.
   * @return value or {@code null} for none
   */
  public java.lang.String getP4ServiceAccount() {
    return p4ServiceAccount;
  }

  /**
   * The service account authorized to operate on the consumer project. Note: CCFE only propagates
   * P4SA with default tag to CLH.
   * @param p4ServiceAccount p4ServiceAccount or {@code null} for none
   */
  public ProjectsMetadata setP4ServiceAccount(java.lang.String p4ServiceAccount) {
    this.p4ServiceAccount = p4ServiceAccount;
    return this;
  }

  /**
   * The producer project id.
   * @return value or {@code null} for none
   */
  public java.lang.String getProducerProjectId() {
    return producerProjectId;
  }

  /**
   * The producer project id.
   * @param producerProjectId producerProjectId or {@code null} for none
   */
  public ProjectsMetadata setProducerProjectId(java.lang.String producerProjectId) {
    this.producerProjectId = producerProjectId;
    return this;
  }

  /**
   * The producer project number.
   * @return value or {@code null} for none
   */
  public java.lang.Long getProducerProjectNumber() {
    return producerProjectNumber;
  }

  /**
   * The producer project number.
   * @param producerProjectNumber producerProjectNumber or {@code null} for none
   */
  public ProjectsMetadata setProducerProjectNumber(java.lang.Long producerProjectNumber) {
    this.producerProjectNumber = producerProjectNumber;
    return this;
  }

  /**
   * The tenant project id.
   * @return value or {@code null} for none
   */
  public java.lang.String getTenantProjectId() {
    return tenantProjectId;
  }

  /**
   * The tenant project id.
   * @param tenantProjectId tenantProjectId or {@code null} for none
   */
  public ProjectsMetadata setTenantProjectId(java.lang.String tenantProjectId) {
    this.tenantProjectId = tenantProjectId;
    return this;
  }

  /**
   * The tenant project number.
   * @return value or {@code null} for none
   */
  public java.lang.Long getTenantProjectNumber() {
    return tenantProjectNumber;
  }

  /**
   * The tenant project number.
   * @param tenantProjectNumber tenantProjectNumber or {@code null} for none
   */
  public ProjectsMetadata setTenantProjectNumber(java.lang.Long tenantProjectNumber) {
    this.tenantProjectNumber = tenantProjectNumber;
    return this;
  }

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

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

}
