/*
 * Copyright 2023 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
 *
 *     https://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.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/essentialcontacts/v1/service.proto

package com.google.cloud.essentialcontacts.v1;

public interface ContactOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.essentialcontacts.v1.Contact)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Output only. The identifier for the contact.
   * Format: {resource_type}/{resource_id}/contacts/{contact_id}
   * </pre>
   *
   * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return The name.
   */
  java.lang.String getName();
  /**
   *
   *
   * <pre>
   * Output only. The identifier for the contact.
   * Format: {resource_type}/{resource_id}/contacts/{contact_id}
   * </pre>
   *
   * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return The bytes for name.
   */
  com.google.protobuf.ByteString getNameBytes();

  /**
   *
   *
   * <pre>
   * Required. The email address to send notifications to. The email address
   * does not need to be a Google Account.
   * </pre>
   *
   * <code>string email = 2 [(.google.api.field_behavior) = REQUIRED];</code>
   *
   * @return The email.
   */
  java.lang.String getEmail();
  /**
   *
   *
   * <pre>
   * Required. The email address to send notifications to. The email address
   * does not need to be a Google Account.
   * </pre>
   *
   * <code>string email = 2 [(.google.api.field_behavior) = REQUIRED];</code>
   *
   * @return The bytes for email.
   */
  com.google.protobuf.ByteString getEmailBytes();

  /**
   *
   *
   * <pre>
   * Required. The categories of notifications that the contact will receive
   * communications for.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.essentialcontacts.v1.NotificationCategory notification_category_subscriptions = 3 [(.google.api.field_behavior) = REQUIRED];
   * </code>
   *
   * @return A list containing the notificationCategorySubscriptions.
   */
  java.util.List<com.google.cloud.essentialcontacts.v1.NotificationCategory>
      getNotificationCategorySubscriptionsList();
  /**
   *
   *
   * <pre>
   * Required. The categories of notifications that the contact will receive
   * communications for.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.essentialcontacts.v1.NotificationCategory notification_category_subscriptions = 3 [(.google.api.field_behavior) = REQUIRED];
   * </code>
   *
   * @return The count of notificationCategorySubscriptions.
   */
  int getNotificationCategorySubscriptionsCount();
  /**
   *
   *
   * <pre>
   * Required. The categories of notifications that the contact will receive
   * communications for.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.essentialcontacts.v1.NotificationCategory notification_category_subscriptions = 3 [(.google.api.field_behavior) = REQUIRED];
   * </code>
   *
   * @param index The index of the element to return.
   * @return The notificationCategorySubscriptions at the given index.
   */
  com.google.cloud.essentialcontacts.v1.NotificationCategory getNotificationCategorySubscriptions(
      int index);
  /**
   *
   *
   * <pre>
   * Required. The categories of notifications that the contact will receive
   * communications for.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.essentialcontacts.v1.NotificationCategory notification_category_subscriptions = 3 [(.google.api.field_behavior) = REQUIRED];
   * </code>
   *
   * @return A list containing the enum numeric values on the wire for
   *     notificationCategorySubscriptions.
   */
  java.util.List<java.lang.Integer> getNotificationCategorySubscriptionsValueList();
  /**
   *
   *
   * <pre>
   * Required. The categories of notifications that the contact will receive
   * communications for.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.essentialcontacts.v1.NotificationCategory notification_category_subscriptions = 3 [(.google.api.field_behavior) = REQUIRED];
   * </code>
   *
   * @param index The index of the value to return.
   * @return The enum numeric value on the wire of notificationCategorySubscriptions at the given
   *     index.
   */
  int getNotificationCategorySubscriptionsValue(int index);

  /**
   *
   *
   * <pre>
   * Required. The preferred language for notifications, as a ISO 639-1 language
   * code. See [Supported
   * languages](https://cloud.google.com/resource-manager/docs/managing-notification-contacts#supported-languages)
   * for a list of supported languages.
   * </pre>
   *
   * <code>string language_tag = 4 [(.google.api.field_behavior) = REQUIRED];</code>
   *
   * @return The languageTag.
   */
  java.lang.String getLanguageTag();
  /**
   *
   *
   * <pre>
   * Required. The preferred language for notifications, as a ISO 639-1 language
   * code. See [Supported
   * languages](https://cloud.google.com/resource-manager/docs/managing-notification-contacts#supported-languages)
   * for a list of supported languages.
   * </pre>
   *
   * <code>string language_tag = 4 [(.google.api.field_behavior) = REQUIRED];</code>
   *
   * @return The bytes for languageTag.
   */
  com.google.protobuf.ByteString getLanguageTagBytes();

  /**
   *
   *
   * <pre>
   * The validity of the contact. A contact is considered valid if it is the
   * correct recipient for notifications for a particular resource.
   * </pre>
   *
   * <code>.google.cloud.essentialcontacts.v1.ValidationState validation_state = 8;</code>
   *
   * @return The enum numeric value on the wire for validationState.
   */
  int getValidationStateValue();
  /**
   *
   *
   * <pre>
   * The validity of the contact. A contact is considered valid if it is the
   * correct recipient for notifications for a particular resource.
   * </pre>
   *
   * <code>.google.cloud.essentialcontacts.v1.ValidationState validation_state = 8;</code>
   *
   * @return The validationState.
   */
  com.google.cloud.essentialcontacts.v1.ValidationState getValidationState();

  /**
   *
   *
   * <pre>
   * The last time the validation_state was updated, either manually or
   * automatically. A contact is considered stale if its validation state was
   * updated more than 1 year ago.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp validate_time = 9;</code>
   *
   * @return Whether the validateTime field is set.
   */
  boolean hasValidateTime();
  /**
   *
   *
   * <pre>
   * The last time the validation_state was updated, either manually or
   * automatically. A contact is considered stale if its validation state was
   * updated more than 1 year ago.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp validate_time = 9;</code>
   *
   * @return The validateTime.
   */
  com.google.protobuf.Timestamp getValidateTime();
  /**
   *
   *
   * <pre>
   * The last time the validation_state was updated, either manually or
   * automatically. A contact is considered stale if its validation state was
   * updated more than 1 year ago.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp validate_time = 9;</code>
   */
  com.google.protobuf.TimestampOrBuilder getValidateTimeOrBuilder();
}
