/*
 * Copyright 2020 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/iot/v1/resources.proto

package com.google.cloud.iot.v1;

public interface DeviceRegistryOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.iot.v1.DeviceRegistry)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * The identifier of this device registry. For example, `myRegistry`.
   * </pre>
   *
   * <code>string id = 1;</code>
   *
   * @return The id.
   */
  java.lang.String getId();
  /**
   *
   *
   * <pre>
   * The identifier of this device registry. For example, `myRegistry`.
   * </pre>
   *
   * <code>string id = 1;</code>
   *
   * @return The bytes for id.
   */
  com.google.protobuf.ByteString getIdBytes();

  /**
   *
   *
   * <pre>
   * The resource path name. For example,
   * `projects/example-project/locations/us-central1/registries/my-registry`.
   * </pre>
   *
   * <code>string name = 2;</code>
   *
   * @return The name.
   */
  java.lang.String getName();
  /**
   *
   *
   * <pre>
   * The resource path name. For example,
   * `projects/example-project/locations/us-central1/registries/my-registry`.
   * </pre>
   *
   * <code>string name = 2;</code>
   *
   * @return The bytes for name.
   */
  com.google.protobuf.ByteString getNameBytes();

  /**
   *
   *
   * <pre>
   * The configuration for notification of telemetry events received from the
   * device. All telemetry events that were successfully published by the
   * device and acknowledged by Cloud IoT Core are guaranteed to be
   * delivered to Cloud Pub/Sub. If multiple configurations match a message,
   * only the first matching configuration is used. If you try to publish a
   * device telemetry event using MQTT without specifying a Cloud Pub/Sub topic
   * for the device's registry, the connection closes automatically. If you try
   * to do so using an HTTP connection, an error is returned. Up to 10
   * configurations may be provided.
   * </pre>
   *
   * <code>repeated .google.cloud.iot.v1.EventNotificationConfig event_notification_configs = 10;
   * </code>
   */
  java.util.List<com.google.cloud.iot.v1.EventNotificationConfig> getEventNotificationConfigsList();
  /**
   *
   *
   * <pre>
   * The configuration for notification of telemetry events received from the
   * device. All telemetry events that were successfully published by the
   * device and acknowledged by Cloud IoT Core are guaranteed to be
   * delivered to Cloud Pub/Sub. If multiple configurations match a message,
   * only the first matching configuration is used. If you try to publish a
   * device telemetry event using MQTT without specifying a Cloud Pub/Sub topic
   * for the device's registry, the connection closes automatically. If you try
   * to do so using an HTTP connection, an error is returned. Up to 10
   * configurations may be provided.
   * </pre>
   *
   * <code>repeated .google.cloud.iot.v1.EventNotificationConfig event_notification_configs = 10;
   * </code>
   */
  com.google.cloud.iot.v1.EventNotificationConfig getEventNotificationConfigs(int index);
  /**
   *
   *
   * <pre>
   * The configuration for notification of telemetry events received from the
   * device. All telemetry events that were successfully published by the
   * device and acknowledged by Cloud IoT Core are guaranteed to be
   * delivered to Cloud Pub/Sub. If multiple configurations match a message,
   * only the first matching configuration is used. If you try to publish a
   * device telemetry event using MQTT without specifying a Cloud Pub/Sub topic
   * for the device's registry, the connection closes automatically. If you try
   * to do so using an HTTP connection, an error is returned. Up to 10
   * configurations may be provided.
   * </pre>
   *
   * <code>repeated .google.cloud.iot.v1.EventNotificationConfig event_notification_configs = 10;
   * </code>
   */
  int getEventNotificationConfigsCount();
  /**
   *
   *
   * <pre>
   * The configuration for notification of telemetry events received from the
   * device. All telemetry events that were successfully published by the
   * device and acknowledged by Cloud IoT Core are guaranteed to be
   * delivered to Cloud Pub/Sub. If multiple configurations match a message,
   * only the first matching configuration is used. If you try to publish a
   * device telemetry event using MQTT without specifying a Cloud Pub/Sub topic
   * for the device's registry, the connection closes automatically. If you try
   * to do so using an HTTP connection, an error is returned. Up to 10
   * configurations may be provided.
   * </pre>
   *
   * <code>repeated .google.cloud.iot.v1.EventNotificationConfig event_notification_configs = 10;
   * </code>
   */
  java.util.List<? extends com.google.cloud.iot.v1.EventNotificationConfigOrBuilder>
      getEventNotificationConfigsOrBuilderList();
  /**
   *
   *
   * <pre>
   * The configuration for notification of telemetry events received from the
   * device. All telemetry events that were successfully published by the
   * device and acknowledged by Cloud IoT Core are guaranteed to be
   * delivered to Cloud Pub/Sub. If multiple configurations match a message,
   * only the first matching configuration is used. If you try to publish a
   * device telemetry event using MQTT without specifying a Cloud Pub/Sub topic
   * for the device's registry, the connection closes automatically. If you try
   * to do so using an HTTP connection, an error is returned. Up to 10
   * configurations may be provided.
   * </pre>
   *
   * <code>repeated .google.cloud.iot.v1.EventNotificationConfig event_notification_configs = 10;
   * </code>
   */
  com.google.cloud.iot.v1.EventNotificationConfigOrBuilder getEventNotificationConfigsOrBuilder(
      int index);

  /**
   *
   *
   * <pre>
   * The configuration for notification of new states received from the device.
   * State updates are guaranteed to be stored in the state history, but
   * notifications to Cloud Pub/Sub are not guaranteed. For example, if
   * permissions are misconfigured or the specified topic doesn't exist, no
   * notification will be published but the state will still be stored in Cloud
   * IoT Core.
   * </pre>
   *
   * <code>.google.cloud.iot.v1.StateNotificationConfig state_notification_config = 7;</code>
   *
   * @return Whether the stateNotificationConfig field is set.
   */
  boolean hasStateNotificationConfig();
  /**
   *
   *
   * <pre>
   * The configuration for notification of new states received from the device.
   * State updates are guaranteed to be stored in the state history, but
   * notifications to Cloud Pub/Sub are not guaranteed. For example, if
   * permissions are misconfigured or the specified topic doesn't exist, no
   * notification will be published but the state will still be stored in Cloud
   * IoT Core.
   * </pre>
   *
   * <code>.google.cloud.iot.v1.StateNotificationConfig state_notification_config = 7;</code>
   *
   * @return The stateNotificationConfig.
   */
  com.google.cloud.iot.v1.StateNotificationConfig getStateNotificationConfig();
  /**
   *
   *
   * <pre>
   * The configuration for notification of new states received from the device.
   * State updates are guaranteed to be stored in the state history, but
   * notifications to Cloud Pub/Sub are not guaranteed. For example, if
   * permissions are misconfigured or the specified topic doesn't exist, no
   * notification will be published but the state will still be stored in Cloud
   * IoT Core.
   * </pre>
   *
   * <code>.google.cloud.iot.v1.StateNotificationConfig state_notification_config = 7;</code>
   */
  com.google.cloud.iot.v1.StateNotificationConfigOrBuilder getStateNotificationConfigOrBuilder();

  /**
   *
   *
   * <pre>
   * The MQTT configuration for this device registry.
   * </pre>
   *
   * <code>.google.cloud.iot.v1.MqttConfig mqtt_config = 4;</code>
   *
   * @return Whether the mqttConfig field is set.
   */
  boolean hasMqttConfig();
  /**
   *
   *
   * <pre>
   * The MQTT configuration for this device registry.
   * </pre>
   *
   * <code>.google.cloud.iot.v1.MqttConfig mqtt_config = 4;</code>
   *
   * @return The mqttConfig.
   */
  com.google.cloud.iot.v1.MqttConfig getMqttConfig();
  /**
   *
   *
   * <pre>
   * The MQTT configuration for this device registry.
   * </pre>
   *
   * <code>.google.cloud.iot.v1.MqttConfig mqtt_config = 4;</code>
   */
  com.google.cloud.iot.v1.MqttConfigOrBuilder getMqttConfigOrBuilder();

  /**
   *
   *
   * <pre>
   * The DeviceService (HTTP) configuration for this device registry.
   * </pre>
   *
   * <code>.google.cloud.iot.v1.HttpConfig http_config = 9;</code>
   *
   * @return Whether the httpConfig field is set.
   */
  boolean hasHttpConfig();
  /**
   *
   *
   * <pre>
   * The DeviceService (HTTP) configuration for this device registry.
   * </pre>
   *
   * <code>.google.cloud.iot.v1.HttpConfig http_config = 9;</code>
   *
   * @return The httpConfig.
   */
  com.google.cloud.iot.v1.HttpConfig getHttpConfig();
  /**
   *
   *
   * <pre>
   * The DeviceService (HTTP) configuration for this device registry.
   * </pre>
   *
   * <code>.google.cloud.iot.v1.HttpConfig http_config = 9;</code>
   */
  com.google.cloud.iot.v1.HttpConfigOrBuilder getHttpConfigOrBuilder();

  /**
   *
   *
   * <pre>
   * **Beta Feature**
   * The default logging verbosity for activity from devices in this registry.
   * The verbosity level can be overridden by Device.log_level.
   * </pre>
   *
   * <code>.google.cloud.iot.v1.LogLevel log_level = 11;</code>
   *
   * @return The enum numeric value on the wire for logLevel.
   */
  int getLogLevelValue();
  /**
   *
   *
   * <pre>
   * **Beta Feature**
   * The default logging verbosity for activity from devices in this registry.
   * The verbosity level can be overridden by Device.log_level.
   * </pre>
   *
   * <code>.google.cloud.iot.v1.LogLevel log_level = 11;</code>
   *
   * @return The logLevel.
   */
  com.google.cloud.iot.v1.LogLevel getLogLevel();

  /**
   *
   *
   * <pre>
   * The credentials used to verify the device credentials. No more than 10
   * credentials can be bound to a single registry at a time. The verification
   * process occurs at the time of device creation or update. If this field is
   * empty, no verification is performed. Otherwise, the credentials of a newly
   * created device or added credentials of an updated device should be signed
   * with one of these registry credentials.
   * Note, however, that existing devices will never be affected by
   * modifications to this list of credentials: after a device has been
   * successfully created in a registry, it should be able to connect even if
   * its registry credentials are revoked, deleted, or modified.
   * </pre>
   *
   * <code>repeated .google.cloud.iot.v1.RegistryCredential credentials = 8;</code>
   */
  java.util.List<com.google.cloud.iot.v1.RegistryCredential> getCredentialsList();
  /**
   *
   *
   * <pre>
   * The credentials used to verify the device credentials. No more than 10
   * credentials can be bound to a single registry at a time. The verification
   * process occurs at the time of device creation or update. If this field is
   * empty, no verification is performed. Otherwise, the credentials of a newly
   * created device or added credentials of an updated device should be signed
   * with one of these registry credentials.
   * Note, however, that existing devices will never be affected by
   * modifications to this list of credentials: after a device has been
   * successfully created in a registry, it should be able to connect even if
   * its registry credentials are revoked, deleted, or modified.
   * </pre>
   *
   * <code>repeated .google.cloud.iot.v1.RegistryCredential credentials = 8;</code>
   */
  com.google.cloud.iot.v1.RegistryCredential getCredentials(int index);
  /**
   *
   *
   * <pre>
   * The credentials used to verify the device credentials. No more than 10
   * credentials can be bound to a single registry at a time. The verification
   * process occurs at the time of device creation or update. If this field is
   * empty, no verification is performed. Otherwise, the credentials of a newly
   * created device or added credentials of an updated device should be signed
   * with one of these registry credentials.
   * Note, however, that existing devices will never be affected by
   * modifications to this list of credentials: after a device has been
   * successfully created in a registry, it should be able to connect even if
   * its registry credentials are revoked, deleted, or modified.
   * </pre>
   *
   * <code>repeated .google.cloud.iot.v1.RegistryCredential credentials = 8;</code>
   */
  int getCredentialsCount();
  /**
   *
   *
   * <pre>
   * The credentials used to verify the device credentials. No more than 10
   * credentials can be bound to a single registry at a time. The verification
   * process occurs at the time of device creation or update. If this field is
   * empty, no verification is performed. Otherwise, the credentials of a newly
   * created device or added credentials of an updated device should be signed
   * with one of these registry credentials.
   * Note, however, that existing devices will never be affected by
   * modifications to this list of credentials: after a device has been
   * successfully created in a registry, it should be able to connect even if
   * its registry credentials are revoked, deleted, or modified.
   * </pre>
   *
   * <code>repeated .google.cloud.iot.v1.RegistryCredential credentials = 8;</code>
   */
  java.util.List<? extends com.google.cloud.iot.v1.RegistryCredentialOrBuilder>
      getCredentialsOrBuilderList();
  /**
   *
   *
   * <pre>
   * The credentials used to verify the device credentials. No more than 10
   * credentials can be bound to a single registry at a time. The verification
   * process occurs at the time of device creation or update. If this field is
   * empty, no verification is performed. Otherwise, the credentials of a newly
   * created device or added credentials of an updated device should be signed
   * with one of these registry credentials.
   * Note, however, that existing devices will never be affected by
   * modifications to this list of credentials: after a device has been
   * successfully created in a registry, it should be able to connect even if
   * its registry credentials are revoked, deleted, or modified.
   * </pre>
   *
   * <code>repeated .google.cloud.iot.v1.RegistryCredential credentials = 8;</code>
   */
  com.google.cloud.iot.v1.RegistryCredentialOrBuilder getCredentialsOrBuilder(int index);
}
