// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/api/resource.proto

package com.google.api;

public interface ResourceDescriptorOrBuilder extends
    // @@protoc_insertion_point(interface_extends:google.api.ResourceDescriptor)
    com.google.protobuf.MessageOrBuilder {

  /**
   * <pre>
   * The full name of the resource type. It must be in the format of
   * {service_name}/{resource_type_kind}. The resource type names are
   * singular and do not contain version numbers.
   * For example: `storage.googleapis.com/Bucket`
   * The value of the resource_type_kind must follow the regular expression
   * /[A-Z][a-zA-Z0-9]+/. It must start with upper case character and
   * recommended to use PascalCase (UpperCamelCase). The maximum number of
   * characters allowed for the resource_type_kind is 100.
   * </pre>
   *
   * <code>string type = 1;</code>
   */
  java.lang.String getType();
  /**
   * <pre>
   * The full name of the resource type. It must be in the format of
   * {service_name}/{resource_type_kind}. The resource type names are
   * singular and do not contain version numbers.
   * For example: `storage.googleapis.com/Bucket`
   * The value of the resource_type_kind must follow the regular expression
   * /[A-Z][a-zA-Z0-9]+/. It must start with upper case character and
   * recommended to use PascalCase (UpperCamelCase). The maximum number of
   * characters allowed for the resource_type_kind is 100.
   * </pre>
   *
   * <code>string type = 1;</code>
   */
  com.google.protobuf.ByteString
      getTypeBytes();

  /**
   * <pre>
   * Required. The valid pattern or patterns for this resource's names.
   * Examples:
   *   - "projects/{project}/topics/{topic}"
   *   - "projects/{project}/knowledgeBases/{knowledge_base}"
   * The components in braces correspond to the IDs for each resource in the
   * hierarchy. It is expected that, if multiple patterns are provided,
   * the same component name (e.g. "project") refers to IDs of the same
   * type of resource.
   * </pre>
   *
   * <code>repeated string pattern = 2;</code>
   */
  java.util.List<java.lang.String>
      getPatternList();
  /**
   * <pre>
   * Required. The valid pattern or patterns for this resource's names.
   * Examples:
   *   - "projects/{project}/topics/{topic}"
   *   - "projects/{project}/knowledgeBases/{knowledge_base}"
   * The components in braces correspond to the IDs for each resource in the
   * hierarchy. It is expected that, if multiple patterns are provided,
   * the same component name (e.g. "project") refers to IDs of the same
   * type of resource.
   * </pre>
   *
   * <code>repeated string pattern = 2;</code>
   */
  int getPatternCount();
  /**
   * <pre>
   * Required. The valid pattern or patterns for this resource's names.
   * Examples:
   *   - "projects/{project}/topics/{topic}"
   *   - "projects/{project}/knowledgeBases/{knowledge_base}"
   * The components in braces correspond to the IDs for each resource in the
   * hierarchy. It is expected that, if multiple patterns are provided,
   * the same component name (e.g. "project") refers to IDs of the same
   * type of resource.
   * </pre>
   *
   * <code>repeated string pattern = 2;</code>
   */
  java.lang.String getPattern(int index);
  /**
   * <pre>
   * Required. The valid pattern or patterns for this resource's names.
   * Examples:
   *   - "projects/{project}/topics/{topic}"
   *   - "projects/{project}/knowledgeBases/{knowledge_base}"
   * The components in braces correspond to the IDs for each resource in the
   * hierarchy. It is expected that, if multiple patterns are provided,
   * the same component name (e.g. "project") refers to IDs of the same
   * type of resource.
   * </pre>
   *
   * <code>repeated string pattern = 2;</code>
   */
  com.google.protobuf.ByteString
      getPatternBytes(int index);

  /**
   * <pre>
   * Optional. The field on the resource that designates the resource name
   * field. If omitted, this is assumed to be "name".
   * </pre>
   *
   * <code>string name_field = 3;</code>
   */
  java.lang.String getNameField();
  /**
   * <pre>
   * Optional. The field on the resource that designates the resource name
   * field. If omitted, this is assumed to be "name".
   * </pre>
   *
   * <code>string name_field = 3;</code>
   */
  com.google.protobuf.ByteString
      getNameFieldBytes();

  /**
   * <pre>
   * Optional. The historical or future-looking state of the resource pattern.
   * Example:
   *   // The InspectTemplate message originally only supported resource
   *   // names with organization, and project was added later.
   *   message InspectTemplate {
   *     option (google.api.resource) = {
   *       type: "dlp.googleapis.com/InspectTemplate"
   *       pattern: "organizations/{organization}/inspectTemplates/{inspect_template}"
   *       pattern: "projects/{project}/inspectTemplates/{inspect_template}"
   *       history: ORIGINALLY_SINGLE_PATTERN
   *     };
   *   }
   * </pre>
   *
   * <code>.google.api.ResourceDescriptor.History history = 4;</code>
   */
  int getHistoryValue();
  /**
   * <pre>
   * Optional. The historical or future-looking state of the resource pattern.
   * Example:
   *   // The InspectTemplate message originally only supported resource
   *   // names with organization, and project was added later.
   *   message InspectTemplate {
   *     option (google.api.resource) = {
   *       type: "dlp.googleapis.com/InspectTemplate"
   *       pattern: "organizations/{organization}/inspectTemplates/{inspect_template}"
   *       pattern: "projects/{project}/inspectTemplates/{inspect_template}"
   *       history: ORIGINALLY_SINGLE_PATTERN
   *     };
   *   }
   * </pre>
   *
   * <code>.google.api.ResourceDescriptor.History history = 4;</code>
   */
  com.google.api.ResourceDescriptor.History getHistory();
}
