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

/**
 * IMPORTANT: This proto is being migrated to ProviderId. If you are adding new field, please add to
 * ProviderId as well.
 *
 * <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 Document AI Warehouse 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 AssistantContextMediaProviderId extends com.google.api.client.json.GenericJson {

  /**
   * Unique package name that identifies a Android app of the provider.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String androidPackageName;

  /**
   * Unique app id that identifies a Cast app of the provider.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String castAppId;

  /**
   * Unique package name that identifies a ChromeOS app of the provider.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String chromeOsPackageName;

  /**
   * Unique package name that identifies a Home app of the provider.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String homeAppPackageName;

  /**
   * Bundle identifier that identifies an iOS app of the provider.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String iosBundleIdentifier;

  /**
   * Unique package name that identifies a KaiOS app of the provider.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String kaiOsPackageName;

  /**
   * Each onboarded provider has a unique provider key. KG provider keys are string identifiers used
   * to identify a provider in some Media backends since mids, names, etc can change.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String kgProviderKey;

  /**
   * The MID of the provider. A MID is a unique identifier issued by Knowledge Graph for all
   * entities contained in its graph.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String mid;

  /**
   * Provider variant corresponding to the current MediaProviderId.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AssistantContextProviderVariant providerVariant;

  /**
   * Bundle id that identifies an Session Initiation Protocol (SIP) provider.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String sipProviderId;

  /**
   * Unique package name that identifies a Android app of the provider.
   * @return value or {@code null} for none
   */
  public java.lang.String getAndroidPackageName() {
    return androidPackageName;
  }

  /**
   * Unique package name that identifies a Android app of the provider.
   * @param androidPackageName androidPackageName or {@code null} for none
   */
  public AssistantContextMediaProviderId setAndroidPackageName(java.lang.String androidPackageName) {
    this.androidPackageName = androidPackageName;
    return this;
  }

  /**
   * Unique app id that identifies a Cast app of the provider.
   * @return value or {@code null} for none
   */
  public java.lang.String getCastAppId() {
    return castAppId;
  }

  /**
   * Unique app id that identifies a Cast app of the provider.
   * @param castAppId castAppId or {@code null} for none
   */
  public AssistantContextMediaProviderId setCastAppId(java.lang.String castAppId) {
    this.castAppId = castAppId;
    return this;
  }

  /**
   * Unique package name that identifies a ChromeOS app of the provider.
   * @return value or {@code null} for none
   */
  public java.lang.String getChromeOsPackageName() {
    return chromeOsPackageName;
  }

  /**
   * Unique package name that identifies a ChromeOS app of the provider.
   * @param chromeOsPackageName chromeOsPackageName or {@code null} for none
   */
  public AssistantContextMediaProviderId setChromeOsPackageName(java.lang.String chromeOsPackageName) {
    this.chromeOsPackageName = chromeOsPackageName;
    return this;
  }

  /**
   * Unique package name that identifies a Home app of the provider.
   * @return value or {@code null} for none
   */
  public java.lang.String getHomeAppPackageName() {
    return homeAppPackageName;
  }

  /**
   * Unique package name that identifies a Home app of the provider.
   * @param homeAppPackageName homeAppPackageName or {@code null} for none
   */
  public AssistantContextMediaProviderId setHomeAppPackageName(java.lang.String homeAppPackageName) {
    this.homeAppPackageName = homeAppPackageName;
    return this;
  }

  /**
   * Bundle identifier that identifies an iOS app of the provider.
   * @return value or {@code null} for none
   */
  public java.lang.String getIosBundleIdentifier() {
    return iosBundleIdentifier;
  }

  /**
   * Bundle identifier that identifies an iOS app of the provider.
   * @param iosBundleIdentifier iosBundleIdentifier or {@code null} for none
   */
  public AssistantContextMediaProviderId setIosBundleIdentifier(java.lang.String iosBundleIdentifier) {
    this.iosBundleIdentifier = iosBundleIdentifier;
    return this;
  }

  /**
   * Unique package name that identifies a KaiOS app of the provider.
   * @return value or {@code null} for none
   */
  public java.lang.String getKaiOsPackageName() {
    return kaiOsPackageName;
  }

  /**
   * Unique package name that identifies a KaiOS app of the provider.
   * @param kaiOsPackageName kaiOsPackageName or {@code null} for none
   */
  public AssistantContextMediaProviderId setKaiOsPackageName(java.lang.String kaiOsPackageName) {
    this.kaiOsPackageName = kaiOsPackageName;
    return this;
  }

  /**
   * Each onboarded provider has a unique provider key. KG provider keys are string identifiers used
   * to identify a provider in some Media backends since mids, names, etc can change.
   * @return value or {@code null} for none
   */
  public java.lang.String getKgProviderKey() {
    return kgProviderKey;
  }

  /**
   * Each onboarded provider has a unique provider key. KG provider keys are string identifiers used
   * to identify a provider in some Media backends since mids, names, etc can change.
   * @param kgProviderKey kgProviderKey or {@code null} for none
   */
  public AssistantContextMediaProviderId setKgProviderKey(java.lang.String kgProviderKey) {
    this.kgProviderKey = kgProviderKey;
    return this;
  }

  /**
   * The MID of the provider. A MID is a unique identifier issued by Knowledge Graph for all
   * entities contained in its graph.
   * @return value or {@code null} for none
   */
  public java.lang.String getMid() {
    return mid;
  }

  /**
   * The MID of the provider. A MID is a unique identifier issued by Knowledge Graph for all
   * entities contained in its graph.
   * @param mid mid or {@code null} for none
   */
  public AssistantContextMediaProviderId setMid(java.lang.String mid) {
    this.mid = mid;
    return this;
  }

  /**
   * Provider variant corresponding to the current MediaProviderId.
   * @return value or {@code null} for none
   */
  public AssistantContextProviderVariant getProviderVariant() {
    return providerVariant;
  }

  /**
   * Provider variant corresponding to the current MediaProviderId.
   * @param providerVariant providerVariant or {@code null} for none
   */
  public AssistantContextMediaProviderId setProviderVariant(AssistantContextProviderVariant providerVariant) {
    this.providerVariant = providerVariant;
    return this;
  }

  /**
   * Bundle id that identifies an Session Initiation Protocol (SIP) provider.
   * @return value or {@code null} for none
   */
  public java.lang.String getSipProviderId() {
    return sipProviderId;
  }

  /**
   * Bundle id that identifies an Session Initiation Protocol (SIP) provider.
   * @param sipProviderId sipProviderId or {@code null} for none
   */
  public AssistantContextMediaProviderId setSipProviderId(java.lang.String sipProviderId) {
    this.sipProviderId = sipProviderId;
    return this;
  }

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

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

}
