v2/doc/google/privacy/dlp/v2/doc_dlp.js

// Copyright 2019 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.

// Note: this file is purely for documentation. Any contents are not expected
// to be loaded as the JS file.

/**
 * List of exclude infoTypes.
 *
 * @property {Object[]} infoTypes
 *   InfoType list in ExclusionRule rule drops a finding when it overlaps or
 *   contained within with a finding of an infoType from this list. For
 *   example, for `InspectionRuleSet.info_types` containing "PHONE_NUMBER"` and
 *   `exclusion_rule` containing `exclude_info_types.info_types` with
 *   "EMAIL_ADDRESS" the phone number findings are dropped if they overlap
 *   with EMAIL_ADDRESS finding.
 *   That leads to "555-222-2222@example.org" to generate only a single
 *   finding, namely email address.
 *
 *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
 *
 * @typedef ExcludeInfoTypes
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ExcludeInfoTypes definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ExcludeInfoTypes = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * The rule that specifies conditions when findings of infoTypes specified in
 * `InspectionRuleSet` are removed from results.
 *
 * @property {Object} dictionary
 *   Dictionary which defines the rule.
 *
 *   This object should have the same structure as [Dictionary]{@link google.privacy.dlp.v2.Dictionary}
 *
 * @property {Object} regex
 *   Regular expression which defines the rule.
 *
 *   This object should have the same structure as [Regex]{@link google.privacy.dlp.v2.Regex}
 *
 * @property {Object} excludeInfoTypes
 *   Set of infoTypes for which findings would affect this rule.
 *
 *   This object should have the same structure as [ExcludeInfoTypes]{@link google.privacy.dlp.v2.ExcludeInfoTypes}
 *
 * @property {number} matchingType
 *   How the rule is applied, see MatchingType documentation for details.
 *
 *   The number should be among the values of [MatchingType]{@link google.privacy.dlp.v2.MatchingType}
 *
 * @typedef ExclusionRule
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ExclusionRule definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ExclusionRule = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * A single inspection rule to be applied to infoTypes, specified in
 * `InspectionRuleSet`.
 *
 * @property {Object} hotwordRule
 *   Hotword-based detection rule.
 *
 *   This object should have the same structure as [HotwordRule]{@link google.privacy.dlp.v2.HotwordRule}
 *
 * @property {Object} exclusionRule
 *   Exclusion rule.
 *
 *   This object should have the same structure as [ExclusionRule]{@link google.privacy.dlp.v2.ExclusionRule}
 *
 * @typedef InspectionRule
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InspectionRule definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InspectionRule = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Rule set for modifying a set of infoTypes to alter behavior under certain
 * circumstances, depending on the specific details of the rules within the set.
 *
 * @property {Object[]} infoTypes
 *   List of infoTypes this rule set is applied to.
 *
 *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
 *
 * @property {Object[]} rules
 *   Set of rules to be applied to infoTypes. The rules are applied in order.
 *
 *   This object should have the same structure as [InspectionRule]{@link google.privacy.dlp.v2.InspectionRule}
 *
 * @typedef InspectionRuleSet
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InspectionRuleSet definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InspectionRuleSet = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Configuration description of the scanning process.
 * When used with redactContent only info_types and min_likelihood are currently
 * used.
 *
 * @property {Object[]} infoTypes
 *   Restricts what info_types to look for. The values must correspond to
 *   InfoType values returned by ListInfoTypes or listed at
 *   https://cloud.google.com/dlp/docs/infotypes-reference.
 *
 *   When no InfoTypes or CustomInfoTypes are specified in a request, the
 *   system may automatically choose what detectors to run. By default this may
 *   be all types, but may change over time as detectors are updated.
 *
 *   The special InfoType name "ALL_BASIC" can be used to trigger all detectors,
 *   but may change over time as new InfoTypes are added. If you need precise
 *   control and predictability as to what detectors are run you should specify
 *   specific InfoTypes listed in the reference.
 *
 *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
 *
 * @property {number} minLikelihood
 *   Only returns findings equal or above this threshold. The default is
 *   POSSIBLE.
 *   See https://cloud.google.com/dlp/docs/likelihood to learn more.
 *
 *   The number should be among the values of [Likelihood]{@link google.privacy.dlp.v2.Likelihood}
 *
 * @property {Object} limits
 *   This object should have the same structure as [FindingLimits]{@link google.privacy.dlp.v2.FindingLimits}
 *
 * @property {boolean} includeQuote
 *   When true, a contextual quote from the data that triggered a finding is
 *   included in the response; see Finding.quote.
 *
 * @property {boolean} excludeInfoTypes
 *   When true, excludes type information of the findings.
 *
 * @property {Object[]} customInfoTypes
 *   CustomInfoTypes provided by the user. See
 *   https://cloud.google.com/dlp/docs/creating-custom-infotypes to learn more.
 *
 *   This object should have the same structure as [CustomInfoType]{@link google.privacy.dlp.v2.CustomInfoType}
 *
 * @property {number[]} contentOptions
 *   List of options defining data content to scan.
 *   If empty, text, images, and other content will be included.
 *
 *   The number should be among the values of [ContentOption]{@link google.privacy.dlp.v2.ContentOption}
 *
 * @property {Object[]} ruleSet
 *   Set of rules to apply to the findings for this InspectConfig.
 *   Exclusion rules, contained in the set are executed in the end, other
 *   rules are executed in the order they are specified for each info type.
 *
 *   This object should have the same structure as [InspectionRuleSet]{@link google.privacy.dlp.v2.InspectionRuleSet}
 *
 * @typedef InspectConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InspectConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InspectConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * @property {number} maxFindingsPerItem
   *   Max number of findings that will be returned for each item scanned.
   *   When set within `InspectDataSourceRequest`,
   *   the maximum returned is 2000 regardless if this is set higher.
   *   When set within `InspectContentRequest`, this field is ignored.
   *
   * @property {number} maxFindingsPerRequest
   *   Max number of findings that will be returned per request/job.
   *   When set within `InspectContentRequest`, the maximum returned is 2000
   *   regardless if this is set higher.
   *
   * @property {Object[]} maxFindingsPerInfoType
   *   Configuration of findings limit given for specified infoTypes.
   *
   *   This object should have the same structure as [InfoTypeLimit]{@link google.privacy.dlp.v2.InfoTypeLimit}
   *
   * @typedef FindingLimits
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.InspectConfig.FindingLimits definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  FindingLimits: {
    // This is for documentation. Actual contents will be loaded by gRPC.

    /**
     * Max findings configuration per infoType, per content item or long
     * running DlpJob.
     *
     * @property {Object} infoType
     *   Type of information the findings limit applies to. Only one limit per
     *   info_type should be provided. If InfoTypeLimit does not have an
     *   info_type, the DLP API applies the limit against all info_types that
     *   are found but not specified in another InfoTypeLimit.
     *
     *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
     *
     * @property {number} maxFindings
     *   Max findings limit for the given infoType.
     *
     * @typedef InfoTypeLimit
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.InspectConfig.FindingLimits.InfoTypeLimit definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    InfoTypeLimit: {
      // This is for documentation. Actual contents will be loaded by gRPC.
    }
  }
};

/**
 * Container for bytes to inspect or redact.
 *
 * @property {number} type
 *   The type of data stored in the bytes string. Default will be TEXT_UTF8.
 *
 *   The number should be among the values of [BytesType]{@link google.privacy.dlp.v2.BytesType}
 *
 * @property {Buffer} data
 *   Content data to inspect or redact.
 *
 * @typedef ByteContentItem
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ByteContentItem definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ByteContentItem = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * @enum {number}
   * @memberof google.privacy.dlp.v2
   */
  BytesType: {
    BYTES_TYPE_UNSPECIFIED: 0,
    IMAGE: 6,
    IMAGE_JPEG: 1,
    IMAGE_BMP: 2,
    IMAGE_PNG: 3,
    IMAGE_SVG: 4,
    TEXT_UTF8: 5,
    AVRO: 11
  }
};

/**
 * Container structure for the content to inspect.
 *
 * @property {string} value
 *   String data to inspect or redact.
 *
 * @property {Object} table
 *   Structured content for inspection. See
 *   https://cloud.google.com/dlp/docs/inspecting-text#inspecting_a_table to
 *   learn more.
 *
 *   This object should have the same structure as [Table]{@link google.privacy.dlp.v2.Table}
 *
 * @property {Object} byteItem
 *   Content data to inspect or redact. Replaces `type` and `data`.
 *
 *   This object should have the same structure as [ByteContentItem]{@link google.privacy.dlp.v2.ByteContentItem}
 *
 * @typedef ContentItem
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ContentItem definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ContentItem = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Structured content to inspect. Up to 50,000 `Value`s per request allowed.
 * See https://cloud.google.com/dlp/docs/inspecting-text#inspecting_a_table to
 * learn more.
 *
 * @property {Object[]} headers
 *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
 *
 * @property {Object[]} rows
 *   This object should have the same structure as [Row]{@link google.privacy.dlp.v2.Row}
 *
 * @typedef Table
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.Table definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const Table = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * @property {Object[]} values
   *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
   *
   * @typedef Row
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.Table.Row definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  Row: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * All the findings for a single scanned item.
 *
 * @property {Object[]} findings
 *   List of findings for an item.
 *
 *   This object should have the same structure as [Finding]{@link google.privacy.dlp.v2.Finding}
 *
 * @property {boolean} findingsTruncated
 *   If true, then this item might have more findings than were returned,
 *   and the findings returned are an arbitrary subset of all findings.
 *   The findings list might be truncated because the input items were too
 *   large, or because the server reached the maximum amount of resources
 *   allowed for a single API call. For best results, divide the input into
 *   smaller batches.
 *
 * @typedef InspectResult
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InspectResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InspectResult = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Represents a piece of potentially sensitive content.
 *
 * @property {string} quote
 *   The content that was found. Even if the content is not textual, it
 *   may be converted to a textual representation here.
 *   Provided if `include_quote` is true and the finding is
 *   less than or equal to 4096 bytes long. If the finding exceeds 4096 bytes
 *   in length, the quote may be omitted.
 *
 * @property {Object} infoType
 *   The type of content that might have been found.
 *   Provided if `excluded_types` is false.
 *
 *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
 *
 * @property {number} likelihood
 *   Confidence of how likely it is that the `info_type` is correct.
 *
 *   The number should be among the values of [Likelihood]{@link google.privacy.dlp.v2.Likelihood}
 *
 * @property {Object} location
 *   Where the content was found.
 *
 *   This object should have the same structure as [Location]{@link google.privacy.dlp.v2.Location}
 *
 * @property {Object} createTime
 *   Timestamp when finding was detected.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} quoteInfo
 *   Contains data parsed from quotes. Only populated if include_quote was set
 *   to true and a supported infoType was requested. Currently supported
 *   infoTypes: DATE, DATE_OF_BIRTH and TIME.
 *
 *   This object should have the same structure as [QuoteInfo]{@link google.privacy.dlp.v2.QuoteInfo}
 *
 * @typedef Finding
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.Finding definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const Finding = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Specifies the location of the finding.
 *
 * @property {Object} byteRange
 *   Zero-based byte offsets delimiting the finding.
 *   These are relative to the finding's containing element.
 *   Note that when the content is not textual, this references
 *   the UTF-8 encoded textual representation of the content.
 *   Omitted if content is an image.
 *
 *   This object should have the same structure as [Range]{@link google.privacy.dlp.v2.Range}
 *
 * @property {Object} codepointRange
 *   Unicode character offsets delimiting the finding.
 *   These are relative to the finding's containing element.
 *   Provided when the content is text.
 *
 *   This object should have the same structure as [Range]{@link google.privacy.dlp.v2.Range}
 *
 * @property {Object[]} contentLocations
 *   List of nested objects pointing to the precise location of the finding
 *   within the file or record.
 *
 *   This object should have the same structure as [ContentLocation]{@link google.privacy.dlp.v2.ContentLocation}
 *
 * @typedef Location
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.Location definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const Location = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Findings container location data.
 *
 * @property {string} containerName
 *   Name of the container where the finding is located.
 *   The top level name is the source file name or table name. Names of some
 *   common storage containers are formatted as follows:
 *
 *   * BigQuery tables:  `<project_id>:<dataset_id>.<table_id>`
 *   * Cloud Storage files: `gs://<bucket>/<path>`
 *   * Datastore namespace: <namespace>
 *
 *   Nested names could be absent if the embedded object has no string
 *   identifier (for an example an image contained within a document).
 *
 * @property {Object} recordLocation
 *   Location within a row or record of a database table.
 *
 *   This object should have the same structure as [RecordLocation]{@link google.privacy.dlp.v2.RecordLocation}
 *
 * @property {Object} imageLocation
 *   Location within an image's pixels.
 *
 *   This object should have the same structure as [ImageLocation]{@link google.privacy.dlp.v2.ImageLocation}
 *
 * @property {Object} documentLocation
 *   Location data for document files.
 *
 *   This object should have the same structure as [DocumentLocation]{@link google.privacy.dlp.v2.DocumentLocation}
 *
 * @property {Object} containerTimestamp
 *   Findings container modification timestamp, if applicable.
 *   For Google Cloud Storage contains last file modification timestamp.
 *   For BigQuery table contains last_modified_time property.
 *   For Datastore - not populated.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {string} containerVersion
 *   Findings container version, if available
 *   ("generation" for Google Cloud Storage).
 *
 * @typedef ContentLocation
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ContentLocation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ContentLocation = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Location of a finding within a document.
 *
 * @property {number} fileOffset
 *   Offset of the line, from the beginning of the file, where the finding
 *   is located.
 *
 * @typedef DocumentLocation
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DocumentLocation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DocumentLocation = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Location of a finding within a row or record.
 *
 * @property {Object} recordKey
 *   Key of the finding.
 *
 *   This object should have the same structure as [RecordKey]{@link google.privacy.dlp.v2.RecordKey}
 *
 * @property {Object} fieldId
 *   Field id of the field containing the finding.
 *
 *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
 *
 * @property {Object} tableLocation
 *   Location within a `ContentItem.Table`.
 *
 *   This object should have the same structure as [TableLocation]{@link google.privacy.dlp.v2.TableLocation}
 *
 * @typedef RecordLocation
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.RecordLocation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const RecordLocation = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Location of a finding within a table.
 *
 * @property {number} rowIndex
 *   The zero-based index of the row where the finding is located.
 *
 * @typedef TableLocation
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.TableLocation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const TableLocation = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Generic half-open interval [start, end)
 *
 * @property {number} start
 *   Index of the first character of the range (inclusive).
 *
 * @property {number} end
 *   Index of the last character of the range (exclusive).
 *
 * @typedef Range
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.Range definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const Range = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Location of the finding within an image.
 *
 * @property {Object[]} boundingBoxes
 *   Bounding boxes locating the pixels within the image containing the finding.
 *
 *   This object should have the same structure as [BoundingBox]{@link google.privacy.dlp.v2.BoundingBox}
 *
 * @typedef ImageLocation
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ImageLocation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ImageLocation = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Bounding box encompassing detected text within an image.
 *
 * @property {number} top
 *   Top coordinate of the bounding box. (0,0) is upper left.
 *
 * @property {number} left
 *   Left coordinate of the bounding box. (0,0) is upper left.
 *
 * @property {number} width
 *   Width of the bounding box in pixels.
 *
 * @property {number} height
 *   Height of the bounding box in pixels.
 *
 * @typedef BoundingBox
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.BoundingBox definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const BoundingBox = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request to search for potentially sensitive info in an image and redact it
 * by covering it with a colored rectangle.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id.
 *
 * @property {Object} inspectConfig
 *   Configuration for the inspector.
 *
 *   This object should have the same structure as [InspectConfig]{@link google.privacy.dlp.v2.InspectConfig}
 *
 * @property {Object[]} imageRedactionConfigs
 *   The configuration for specifying what content to redact from images.
 *
 *   This object should have the same structure as [ImageRedactionConfig]{@link google.privacy.dlp.v2.ImageRedactionConfig}
 *
 * @property {boolean} includeFindings
 *   Whether the response should include findings along with the redacted
 *   image.
 *
 * @property {Object} byteItem
 *   The content must be PNG, JPEG, SVG or BMP.
 *
 *   This object should have the same structure as [ByteContentItem]{@link google.privacy.dlp.v2.ByteContentItem}
 *
 * @typedef RedactImageRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.RedactImageRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const RedactImageRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * Configuration for determining how redaction of images should occur.
   *
   * @property {Object} infoType
   *   Only one per info_type should be provided per request. If not
   *   specified, and redact_all_text is false, the DLP API will redact all
   *   text that it matches against all info_types that are found, but not
   *   specified in another ImageRedactionConfig.
   *
   *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
   *
   * @property {boolean} redactAllText
   *   If true, all text found in the image, regardless whether it matches an
   *   info_type, is redacted. Only one should be provided.
   *
   * @property {Object} redactionColor
   *   The color to use when redacting content from an image. If not specified,
   *   the default is black.
   *
   *   This object should have the same structure as [Color]{@link google.privacy.dlp.v2.Color}
   *
   * @typedef ImageRedactionConfig
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  ImageRedactionConfig: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * Represents a color in the RGB color space.
 *
 * @property {number} red
 *   The amount of red in the color as a value in the interval [0, 1].
 *
 * @property {number} green
 *   The amount of green in the color as a value in the interval [0, 1].
 *
 * @property {number} blue
 *   The amount of blue in the color as a value in the interval [0, 1].
 *
 * @typedef Color
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.Color definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const Color = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Results of redacting an image.
 *
 * @property {Buffer} redactedImage
 *   The redacted image. The type will be the same as the original image.
 *
 * @property {string} extractedText
 *   If an image was being inspected and the InspectConfig's include_quote was
 *   set to true, then this field will include all text, if any, that was found
 *   in the image.
 *
 * @property {Object} inspectResult
 *   The findings. Populated when include_findings in the request is true.
 *
 *   This object should have the same structure as [InspectResult]{@link google.privacy.dlp.v2.InspectResult}
 *
 * @typedef RedactImageResponse
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.RedactImageResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const RedactImageResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request to de-identify a list of items.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id.
 *
 * @property {Object} deidentifyConfig
 *   Configuration for the de-identification of the content item.
 *   Items specified here will override the template referenced by the
 *   deidentify_template_name argument.
 *
 *   This object should have the same structure as [DeidentifyConfig]{@link google.privacy.dlp.v2.DeidentifyConfig}
 *
 * @property {Object} inspectConfig
 *   Configuration for the inspector.
 *   Items specified here will override the template referenced by the
 *   inspect_template_name argument.
 *
 *   This object should have the same structure as [InspectConfig]{@link google.privacy.dlp.v2.InspectConfig}
 *
 * @property {Object} item
 *   The item to de-identify. Will be treated as text.
 *
 *   This object should have the same structure as [ContentItem]{@link google.privacy.dlp.v2.ContentItem}
 *
 * @property {string} inspectTemplateName
 *   Optional template to use. Any configuration directly specified in
 *   inspect_config will override those set in the template. Singular fields
 *   that are set in this request will replace their corresponding fields in the
 *   template. Repeated fields are appended. Singular sub-messages and groups
 *   are recursively merged.
 *
 * @property {string} deidentifyTemplateName
 *   Optional template to use. Any configuration directly specified in
 *   deidentify_config will override those set in the template. Singular fields
 *   that are set in this request will replace their corresponding fields in the
 *   template. Repeated fields are appended. Singular sub-messages and groups
 *   are recursively merged.
 *
 * @typedef DeidentifyContentRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DeidentifyContentRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DeidentifyContentRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Results of de-identifying a ContentItem.
 *
 * @property {Object} item
 *   The de-identified item.
 *
 *   This object should have the same structure as [ContentItem]{@link google.privacy.dlp.v2.ContentItem}
 *
 * @property {Object} overview
 *   An overview of the changes that were made on the `item`.
 *
 *   This object should have the same structure as [TransformationOverview]{@link google.privacy.dlp.v2.TransformationOverview}
 *
 * @typedef DeidentifyContentResponse
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DeidentifyContentResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DeidentifyContentResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request to re-identify an item.
 *
 * @property {string} parent
 *   The parent resource name.
 *
 * @property {Object} reidentifyConfig
 *   Configuration for the re-identification of the content item.
 *   This field shares the same proto message type that is used for
 *   de-identification, however its usage here is for the reversal of the
 *   previous de-identification. Re-identification is performed by examining
 *   the transformations used to de-identify the items and executing the
 *   reverse. This requires that only reversible transformations
 *   be provided here. The reversible transformations are:
 *
 *    - `CryptoReplaceFfxFpeConfig`
 *
 *   This object should have the same structure as [DeidentifyConfig]{@link google.privacy.dlp.v2.DeidentifyConfig}
 *
 * @property {Object} inspectConfig
 *   Configuration for the inspector.
 *
 *   This object should have the same structure as [InspectConfig]{@link google.privacy.dlp.v2.InspectConfig}
 *
 * @property {Object} item
 *   The item to re-identify. Will be treated as text.
 *
 *   This object should have the same structure as [ContentItem]{@link google.privacy.dlp.v2.ContentItem}
 *
 * @property {string} inspectTemplateName
 *   Optional template to use. Any configuration directly specified in
 *   `inspect_config` will override those set in the template. Singular fields
 *   that are set in this request will replace their corresponding fields in the
 *   template. Repeated fields are appended. Singular sub-messages and groups
 *   are recursively merged.
 *
 * @property {string} reidentifyTemplateName
 *   Optional template to use. References an instance of `DeidentifyTemplate`.
 *   Any configuration directly specified in `reidentify_config` or
 *   `inspect_config` will override those set in the template. Singular fields
 *   that are set in this request will replace their corresponding fields in the
 *   template. Repeated fields are appended. Singular sub-messages and groups
 *   are recursively merged.
 *
 * @typedef ReidentifyContentRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ReidentifyContentRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ReidentifyContentRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Results of re-identifying a item.
 *
 * @property {Object} item
 *   The re-identified item.
 *
 *   This object should have the same structure as [ContentItem]{@link google.privacy.dlp.v2.ContentItem}
 *
 * @property {Object} overview
 *   An overview of the changes that were made to the `item`.
 *
 *   This object should have the same structure as [TransformationOverview]{@link google.privacy.dlp.v2.TransformationOverview}
 *
 * @typedef ReidentifyContentResponse
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ReidentifyContentResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ReidentifyContentResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request to search for potentially sensitive info in a ContentItem.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id.
 *
 * @property {Object} inspectConfig
 *   Configuration for the inspector. What specified here will override
 *   the template referenced by the inspect_template_name argument.
 *
 *   This object should have the same structure as [InspectConfig]{@link google.privacy.dlp.v2.InspectConfig}
 *
 * @property {Object} item
 *   The item to inspect.
 *
 *   This object should have the same structure as [ContentItem]{@link google.privacy.dlp.v2.ContentItem}
 *
 * @property {string} inspectTemplateName
 *   Optional template to use. Any configuration directly specified in
 *   inspect_config will override those set in the template. Singular fields
 *   that are set in this request will replace their corresponding fields in the
 *   template. Repeated fields are appended. Singular sub-messages and groups
 *   are recursively merged.
 *
 * @typedef InspectContentRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InspectContentRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InspectContentRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Results of inspecting an item.
 *
 * @property {Object} result
 *   The findings.
 *
 *   This object should have the same structure as [InspectResult]{@link google.privacy.dlp.v2.InspectResult}
 *
 * @typedef InspectContentResponse
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InspectContentResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InspectContentResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Cloud repository for storing output.
 *
 * @property {Object} table
 *   Store findings in an existing table or a new table in an existing
 *   dataset. If table_id is not set a new one will be generated
 *   for you with the following format:
 *   dlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific timezone will be used for
 *   generating the date details.
 *
 *   For Inspect, each column in an existing output table must have the same
 *   name, type, and mode of a field in the `Finding` object.
 *
 *   For Risk, an existing output table should be the output of a previous
 *   Risk analysis job run on the same source table, with the same privacy
 *   metric and quasi-identifiers. Risk jobs that analyze the same table but
 *   compute a different privacy metric, or use different sets of
 *   quasi-identifiers, cannot store their results in the same table.
 *
 *   This object should have the same structure as [BigQueryTable]{@link google.privacy.dlp.v2.BigQueryTable}
 *
 * @property {number} outputSchema
 *   Schema used for writing the findings for Inspect jobs. This field is only
 *   used for Inspect and must be unspecified for Risk jobs. Columns are derived
 *   from the `Finding` object. If appending to an existing table, any columns
 *   from the predefined schema that are missing will be added. No columns in
 *   the existing table will be deleted.
 *
 *   If unspecified, then all available columns will be used for a new table or
 *   an (existing) table with no schema, and no changes will be made to an
 *   existing table that has a schema.
 *
 *   The number should be among the values of [OutputSchema]{@link google.privacy.dlp.v2.OutputSchema}
 *
 * @typedef OutputStorageConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.OutputStorageConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const OutputStorageConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * Predefined schemas for storing findings.
   *
   * @enum {number}
   * @memberof google.privacy.dlp.v2
   */
  OutputSchema: {
    OUTPUT_SCHEMA_UNSPECIFIED: 0,

    /**
     * Basic schema including only `info_type`, `quote`, `certainty`, and
     * `timestamp`.
     */
    BASIC_COLUMNS: 1,

    /**
     * Schema tailored to findings from scanning Google Cloud Storage.
     */
    GCS_COLUMNS: 2,

    /**
     * Schema tailored to findings from scanning Google Datastore.
     */
    DATASTORE_COLUMNS: 3,

    /**
     * Schema tailored to findings from scanning Google BigQuery.
     */
    BIG_QUERY_COLUMNS: 4,

    /**
     * Schema containing all columns.
     */
    ALL_COLUMNS: 5
  }
};

/**
 * Statistics regarding a specific InfoType.
 *
 * @property {Object} infoType
 *   The type of finding this stat is for.
 *
 *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
 *
 * @property {number} count
 *   Number of findings for this infoType.
 *
 * @typedef InfoTypeStats
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InfoTypeStats definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InfoTypeStats = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * The results of an inspect DataSource job.
 *
 * @property {Object} requestedOptions
 *   The configuration used for this job.
 *
 *   This object should have the same structure as [RequestedOptions]{@link google.privacy.dlp.v2.RequestedOptions}
 *
 * @property {Object} result
 *   A summary of the outcome of this inspect job.
 *
 *   This object should have the same structure as [Result]{@link google.privacy.dlp.v2.Result}
 *
 * @typedef InspectDataSourceDetails
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InspectDataSourceDetails definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InspectDataSourceDetails = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * @property {Object} snapshotInspectTemplate
   *   If run with an InspectTemplate, a snapshot of its state at the time of
   *   this run.
   *
   *   This object should have the same structure as [InspectTemplate]{@link google.privacy.dlp.v2.InspectTemplate}
   *
   * @property {Object} jobConfig
   *   This object should have the same structure as [InspectJobConfig]{@link google.privacy.dlp.v2.InspectJobConfig}
   *
   * @typedef RequestedOptions
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  RequestedOptions: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * All result fields mentioned below are updated while the job is processing.
   *
   * @property {number} processedBytes
   *   Total size in bytes that were processed.
   *
   * @property {number} totalEstimatedBytes
   *   Estimate of the number of bytes to process.
   *
   * @property {Object[]} infoTypeStats
   *   Statistics of how many instances of each info type were found during
   *   inspect job.
   *
   *   This object should have the same structure as [InfoTypeStats]{@link google.privacy.dlp.v2.InfoTypeStats}
   *
   * @typedef Result
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.InspectDataSourceDetails.Result definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  Result: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * InfoType description.
 *
 * @property {string} name
 *   Internal name of the infoType.
 *
 * @property {string} displayName
 *   Human readable form of the infoType name.
 *
 * @property {number[]} supportedBy
 *   Which parts of the API supports this InfoType.
 *
 *   The number should be among the values of [InfoTypeSupportedBy]{@link google.privacy.dlp.v2.InfoTypeSupportedBy}
 *
 * @property {string} description
 *   Description of the infotype. Translated when language is provided in the
 *   request.
 *
 * @typedef InfoTypeDescription
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InfoTypeDescription definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InfoTypeDescription = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request for the list of infoTypes.
 *
 * @property {string} languageCode
 *   Optional BCP-47 language code for localized infoType friendly
 *   names. If omitted, or if localized strings are not available,
 *   en-US strings will be returned.
 *
 * @property {string} filter
 *   Optional filter to only return infoTypes supported by certain parts of the
 *   API. Defaults to supported_by=INSPECT.
 *
 * @typedef ListInfoTypesRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListInfoTypesRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListInfoTypesRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Response to the ListInfoTypes request.
 *
 * @property {Object[]} infoTypes
 *   Set of sensitive infoTypes.
 *
 *   This object should have the same structure as [InfoTypeDescription]{@link google.privacy.dlp.v2.InfoTypeDescription}
 *
 * @typedef ListInfoTypesResponse
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListInfoTypesResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListInfoTypesResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Configuration for a risk analysis job. See
 * https://cloud.google.com/dlp/docs/concepts-risk-analysis to learn more.
 *
 * @property {Object} privacyMetric
 *   Privacy metric to compute.
 *
 *   This object should have the same structure as [PrivacyMetric]{@link google.privacy.dlp.v2.PrivacyMetric}
 *
 * @property {Object} sourceTable
 *   Input dataset to compute metrics over.
 *
 *   This object should have the same structure as [BigQueryTable]{@link google.privacy.dlp.v2.BigQueryTable}
 *
 * @property {Object[]} actions
 *   Actions to execute at the completion of the job. Are executed in the order
 *   provided.
 *
 *   This object should have the same structure as [Action]{@link google.privacy.dlp.v2.Action}
 *
 * @typedef RiskAnalysisJobConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.RiskAnalysisJobConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const RiskAnalysisJobConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * A column with a semantic tag attached.
 *
 * @property {Object} field
 *   Identifies the column. [required]
 *
 *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
 *
 * @property {Object} infoType
 *   A column can be tagged with a InfoType to use the relevant public
 *   dataset as a statistical model of population, if available. We
 *   currently support US ZIP codes, region codes, ages and genders.
 *   To programmatically obtain the list of supported InfoTypes, use
 *   ListInfoTypes with the supported_by=RISK_ANALYSIS filter.
 *
 *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
 *
 * @property {string} customTag
 *   A column can be tagged with a custom tag. In this case, the user must
 *   indicate an auxiliary table that contains statistical information on
 *   the possible values of this column (below).
 *
 * @property {Object} inferred
 *   If no semantic tag is indicated, we infer the statistical model from
 *   the distribution of values in the input data
 *
 *   This object should have the same structure as [Empty]{@link google.protobuf.Empty}
 *
 * @typedef QuasiId
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.QuasiId definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const QuasiId = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * An auxiliary table containing statistical information on the relative
 * frequency of different quasi-identifiers values. It has one or several
 * quasi-identifiers columns, and one column that indicates the relative
 * frequency of each quasi-identifier tuple.
 * If a tuple is present in the data but not in the auxiliary table, the
 * corresponding relative frequency is assumed to be zero (and thus, the
 * tuple is highly reidentifiable).
 *
 * @property {Object} table
 *   Auxiliary table location. [required]
 *
 *   This object should have the same structure as [BigQueryTable]{@link google.privacy.dlp.v2.BigQueryTable}
 *
 * @property {Object[]} quasiIds
 *   Quasi-identifier columns. [required]
 *
 *   This object should have the same structure as [QuasiIdentifierField]{@link google.privacy.dlp.v2.QuasiIdentifierField}
 *
 * @property {Object} relativeFrequency
 *   The relative frequency column must contain a floating-point number
 *   between 0 and 1 (inclusive). Null values are assumed to be zero.
 *   [required]
 *
 *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
 *
 * @typedef StatisticalTable
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.StatisticalTable definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const StatisticalTable = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * A quasi-identifier column has a custom_tag, used to know which column
   * in the data corresponds to which column in the statistical model.
   *
   * @property {Object} field
   *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
   *
   * @property {string} customTag
   *
   * @typedef QuasiIdentifierField
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.StatisticalTable.QuasiIdentifierField definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  QuasiIdentifierField: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * Privacy metric to compute for reidentification risk analysis.
 *
 * @property {Object} numericalStatsConfig
 *   This object should have the same structure as [NumericalStatsConfig]{@link google.privacy.dlp.v2.NumericalStatsConfig}
 *
 * @property {Object} categoricalStatsConfig
 *   This object should have the same structure as [CategoricalStatsConfig]{@link google.privacy.dlp.v2.CategoricalStatsConfig}
 *
 * @property {Object} kAnonymityConfig
 *   This object should have the same structure as [KAnonymityConfig]{@link google.privacy.dlp.v2.KAnonymityConfig}
 *
 * @property {Object} lDiversityConfig
 *   This object should have the same structure as [LDiversityConfig]{@link google.privacy.dlp.v2.LDiversityConfig}
 *
 * @property {Object} kMapEstimationConfig
 *   This object should have the same structure as [KMapEstimationConfig]{@link google.privacy.dlp.v2.KMapEstimationConfig}
 *
 * @property {Object} deltaPresenceEstimationConfig
 *   This object should have the same structure as [DeltaPresenceEstimationConfig]{@link google.privacy.dlp.v2.DeltaPresenceEstimationConfig}
 *
 * @typedef PrivacyMetric
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.PrivacyMetric definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const PrivacyMetric = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * Compute numerical stats over an individual column, including
   * min, max, and quantiles.
   *
   * @property {Object} field
   *   Field to compute numerical stats on. Supported types are
   *   integer, float, date, datetime, timestamp, time.
   *
   *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
   *
   * @typedef NumericalStatsConfig
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.PrivacyMetric.NumericalStatsConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  NumericalStatsConfig: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * Compute numerical stats over an individual column, including
   * number of distinct values and value count distribution.
   *
   * @property {Object} field
   *   Field to compute categorical stats on. All column types are
   *   supported except for arrays and structs. However, it may be more
   *   informative to use NumericalStats when the field type is supported,
   *   depending on the data.
   *
   *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
   *
   * @typedef CategoricalStatsConfig
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.PrivacyMetric.CategoricalStatsConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  CategoricalStatsConfig: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * k-anonymity metric, used for analysis of reidentification risk.
   *
   * @property {Object[]} quasiIds
   *   Set of fields to compute k-anonymity over. When multiple fields are
   *   specified, they are considered a single composite key. Structs and
   *   repeated data types are not supported; however, nested fields are
   *   supported so long as they are not structs themselves or nested within
   *   a repeated field.
   *
   *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
   *
   * @property {Object} entityId
   *   Optional message indicating that multiple rows might be associated to a
   *   single individual. If the same entity_id is associated to multiple
   *   quasi-identifier tuples over distinct rows, we consider the entire
   *   collection of tuples as the composite quasi-identifier. This collection
   *   is a multiset: the order in which the different tuples appear in the
   *   dataset is ignored, but their frequency is taken into account.
   *
   *   Important note: a maximum of 1000 rows can be associated to a single
   *   entity ID. If more rows are associated with the same entity ID, some
   *   might be ignored.
   *
   *   This object should have the same structure as [EntityId]{@link google.privacy.dlp.v2.EntityId}
   *
   * @typedef KAnonymityConfig
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  KAnonymityConfig: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * l-diversity metric, used for analysis of reidentification risk.
   *
   * @property {Object[]} quasiIds
   *   Set of quasi-identifiers indicating how equivalence classes are
   *   defined for the l-diversity computation. When multiple fields are
   *   specified, they are considered a single composite key.
   *
   *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
   *
   * @property {Object} sensitiveAttribute
   *   Sensitive field for computing the l-value.
   *
   *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
   *
   * @typedef LDiversityConfig
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.PrivacyMetric.LDiversityConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  LDiversityConfig: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * Reidentifiability metric. This corresponds to a risk model similar to what
   * is called "journalist risk" in the literature, except the attack dataset is
   * statistically modeled instead of being perfectly known. This can be done
   * using publicly available data (like the US Census), or using a custom
   * statistical model (indicated as one or several BigQuery tables), or by
   * extrapolating from the distribution of values in the input dataset.
   * A column with a semantic tag attached.
   *
   * @property {Object[]} quasiIds
   *   Fields considered to be quasi-identifiers. No two columns can have the
   *   same tag. [required]
   *
   *   This object should have the same structure as [TaggedField]{@link google.privacy.dlp.v2.TaggedField}
   *
   * @property {string} regionCode
   *   ISO 3166-1 alpha-2 region code to use in the statistical modeling.
   *   Required if no column is tagged with a region-specific InfoType (like
   *   US_ZIP_5) or a region code.
   *
   * @property {Object[]} auxiliaryTables
   *   Several auxiliary tables can be used in the analysis. Each custom_tag
   *   used to tag a quasi-identifiers column must appear in exactly one column
   *   of one auxiliary table.
   *
   *   This object should have the same structure as [AuxiliaryTable]{@link google.privacy.dlp.v2.AuxiliaryTable}
   *
   * @typedef KMapEstimationConfig
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  KMapEstimationConfig: {
    // This is for documentation. Actual contents will be loaded by gRPC.

    /**
     * @property {Object} field
     *   Identifies the column. [required]
     *
     *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
     *
     * @property {Object} infoType
     *   A column can be tagged with a InfoType to use the relevant public
     *   dataset as a statistical model of population, if available. We
     *   currently support US ZIP codes, region codes, ages and genders.
     *   To programmatically obtain the list of supported InfoTypes, use
     *   ListInfoTypes with the supported_by=RISK_ANALYSIS filter.
     *
     *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
     *
     * @property {string} customTag
     *   A column can be tagged with a custom tag. In this case, the user must
     *   indicate an auxiliary table that contains statistical information on
     *   the possible values of this column (below).
     *
     * @property {Object} inferred
     *   If no semantic tag is indicated, we infer the statistical model from
     *   the distribution of values in the input data
     *
     *   This object should have the same structure as [Empty]{@link google.protobuf.Empty}
     *
     * @typedef TaggedField
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    TaggedField: {
      // This is for documentation. Actual contents will be loaded by gRPC.
    },

    /**
     * An auxiliary table contains statistical information on the relative
     * frequency of different quasi-identifiers values. It has one or several
     * quasi-identifiers columns, and one column that indicates the relative
     * frequency of each quasi-identifier tuple.
     * If a tuple is present in the data but not in the auxiliary table, the
     * corresponding relative frequency is assumed to be zero (and thus, the
     * tuple is highly reidentifiable).
     *
     * @property {Object} table
     *   Auxiliary table location. [required]
     *
     *   This object should have the same structure as [BigQueryTable]{@link google.privacy.dlp.v2.BigQueryTable}
     *
     * @property {Object[]} quasiIds
     *   Quasi-identifier columns. [required]
     *
     *   This object should have the same structure as [QuasiIdField]{@link google.privacy.dlp.v2.QuasiIdField}
     *
     * @property {Object} relativeFrequency
     *   The relative frequency column must contain a floating-point number
     *   between 0 and 1 (inclusive). Null values are assumed to be zero.
     *   [required]
     *
     *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
     *
     * @typedef AuxiliaryTable
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    AuxiliaryTable: {
      // This is for documentation. Actual contents will be loaded by gRPC.

      /**
       * A quasi-identifier column has a custom_tag, used to know which column
       * in the data corresponds to which column in the statistical model.
       *
       * @property {Object} field
       *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
       *
       * @property {string} customTag
       *
       * @typedef QuasiIdField
       * @memberof google.privacy.dlp.v2
       * @see [google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdField definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
       */
      QuasiIdField: {
        // This is for documentation. Actual contents will be loaded by gRPC.
      }
    }
  },

  /**
   * δ-presence metric, used to estimate how likely it is for an attacker to
   * figure out that one given individual appears in a de-identified dataset.
   * Similarly to the k-map metric, we cannot compute δ-presence exactly without
   * knowing the attack dataset, so we use a statistical model instead.
   *
   * @property {Object[]} quasiIds
   *   Fields considered to be quasi-identifiers. No two fields can have the
   *   same tag. [required]
   *
   *   This object should have the same structure as [QuasiId]{@link google.privacy.dlp.v2.QuasiId}
   *
   * @property {string} regionCode
   *   ISO 3166-1 alpha-2 region code to use in the statistical modeling.
   *   Required if no column is tagged with a region-specific InfoType (like
   *   US_ZIP_5) or a region code.
   *
   * @property {Object[]} auxiliaryTables
   *   Several auxiliary tables can be used in the analysis. Each custom_tag
   *   used to tag a quasi-identifiers field must appear in exactly one
   *   field of one auxiliary table.
   *
   *   This object should have the same structure as [StatisticalTable]{@link google.privacy.dlp.v2.StatisticalTable}
   *
   * @typedef DeltaPresenceEstimationConfig
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.PrivacyMetric.DeltaPresenceEstimationConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  DeltaPresenceEstimationConfig: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * Result of a risk analysis operation request.
 *
 * @property {Object} requestedPrivacyMetric
 *   Privacy metric to compute.
 *
 *   This object should have the same structure as [PrivacyMetric]{@link google.privacy.dlp.v2.PrivacyMetric}
 *
 * @property {Object} requestedSourceTable
 *   Input dataset to compute metrics over.
 *
 *   This object should have the same structure as [BigQueryTable]{@link google.privacy.dlp.v2.BigQueryTable}
 *
 * @property {Object} numericalStatsResult
 *   This object should have the same structure as [NumericalStatsResult]{@link google.privacy.dlp.v2.NumericalStatsResult}
 *
 * @property {Object} categoricalStatsResult
 *   This object should have the same structure as [CategoricalStatsResult]{@link google.privacy.dlp.v2.CategoricalStatsResult}
 *
 * @property {Object} kAnonymityResult
 *   This object should have the same structure as [KAnonymityResult]{@link google.privacy.dlp.v2.KAnonymityResult}
 *
 * @property {Object} lDiversityResult
 *   This object should have the same structure as [LDiversityResult]{@link google.privacy.dlp.v2.LDiversityResult}
 *
 * @property {Object} kMapEstimationResult
 *   This object should have the same structure as [KMapEstimationResult]{@link google.privacy.dlp.v2.KMapEstimationResult}
 *
 * @property {Object} deltaPresenceEstimationResult
 *   This object should have the same structure as [DeltaPresenceEstimationResult]{@link google.privacy.dlp.v2.DeltaPresenceEstimationResult}
 *
 * @typedef AnalyzeDataSourceRiskDetails
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const AnalyzeDataSourceRiskDetails = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * Result of the numerical stats computation.
   *
   * @property {Object} minValue
   *   Minimum value appearing in the column.
   *
   *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
   *
   * @property {Object} maxValue
   *   Maximum value appearing in the column.
   *
   *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
   *
   * @property {Object[]} quantileValues
   *   List of 99 values that partition the set of field values into 100 equal
   *   sized buckets.
   *
   *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
   *
   * @typedef NumericalStatsResult
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  NumericalStatsResult: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * Result of the categorical stats computation.
   *
   * @property {Object[]} valueFrequencyHistogramBuckets
   *   Histogram of value frequencies in the column.
   *
   *   This object should have the same structure as [CategoricalStatsHistogramBucket]{@link google.privacy.dlp.v2.CategoricalStatsHistogramBucket}
   *
   * @typedef CategoricalStatsResult
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  CategoricalStatsResult: {
    // This is for documentation. Actual contents will be loaded by gRPC.

    /**
     * @property {number} valueFrequencyLowerBound
     *   Lower bound on the value frequency of the values in this bucket.
     *
     * @property {number} valueFrequencyUpperBound
     *   Upper bound on the value frequency of the values in this bucket.
     *
     * @property {number} bucketSize
     *   Total number of values in this bucket.
     *
     * @property {Object[]} bucketValues
     *   Sample of value frequencies in this bucket. The total number of
     *   values returned per bucket is capped at 20.
     *
     *   This object should have the same structure as [ValueFrequency]{@link google.privacy.dlp.v2.ValueFrequency}
     *
     * @property {number} bucketValueCount
     *   Total number of distinct values in this bucket.
     *
     * @typedef CategoricalStatsHistogramBucket
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    CategoricalStatsHistogramBucket: {
      // This is for documentation. Actual contents will be loaded by gRPC.
    }
  },

  /**
   * Result of the k-anonymity computation.
   *
   * @property {Object[]} equivalenceClassHistogramBuckets
   *   Histogram of k-anonymity equivalence classes.
   *
   *   This object should have the same structure as [KAnonymityHistogramBucket]{@link google.privacy.dlp.v2.KAnonymityHistogramBucket}
   *
   * @typedef KAnonymityResult
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  KAnonymityResult: {
    // This is for documentation. Actual contents will be loaded by gRPC.

    /**
     * The set of columns' values that share the same ldiversity value
     *
     * @property {Object[]} quasiIdsValues
     *   Set of values defining the equivalence class. One value per
     *   quasi-identifier column in the original KAnonymity metric message.
     *   The order is always the same as the original request.
     *
     *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
     *
     * @property {number} equivalenceClassSize
     *   Size of the equivalence class, for example number of rows with the
     *   above set of values.
     *
     * @typedef KAnonymityEquivalenceClass
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    KAnonymityEquivalenceClass: {
      // This is for documentation. Actual contents will be loaded by gRPC.
    },

    /**
     * @property {number} equivalenceClassSizeLowerBound
     *   Lower bound on the size of the equivalence classes in this bucket.
     *
     * @property {number} equivalenceClassSizeUpperBound
     *   Upper bound on the size of the equivalence classes in this bucket.
     *
     * @property {number} bucketSize
     *   Total number of equivalence classes in this bucket.
     *
     * @property {Object[]} bucketValues
     *   Sample of equivalence classes in this bucket. The total number of
     *   classes returned per bucket is capped at 20.
     *
     *   This object should have the same structure as [KAnonymityEquivalenceClass]{@link google.privacy.dlp.v2.KAnonymityEquivalenceClass}
     *
     * @property {number} bucketValueCount
     *   Total number of distinct equivalence classes in this bucket.
     *
     * @typedef KAnonymityHistogramBucket
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    KAnonymityHistogramBucket: {
      // This is for documentation. Actual contents will be loaded by gRPC.
    }
  },

  /**
   * Result of the l-diversity computation.
   *
   * @property {Object[]} sensitiveValueFrequencyHistogramBuckets
   *   Histogram of l-diversity equivalence class sensitive value frequencies.
   *
   *   This object should have the same structure as [LDiversityHistogramBucket]{@link google.privacy.dlp.v2.LDiversityHistogramBucket}
   *
   * @typedef LDiversityResult
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  LDiversityResult: {
    // This is for documentation. Actual contents will be loaded by gRPC.

    /**
     * The set of columns' values that share the same ldiversity value.
     *
     * @property {Object[]} quasiIdsValues
     *   Quasi-identifier values defining the k-anonymity equivalence
     *   class. The order is always the same as the original request.
     *
     *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
     *
     * @property {number} equivalenceClassSize
     *   Size of the k-anonymity equivalence class.
     *
     * @property {number} numDistinctSensitiveValues
     *   Number of distinct sensitive values in this equivalence class.
     *
     * @property {Object[]} topSensitiveValues
     *   Estimated frequencies of top sensitive values.
     *
     *   This object should have the same structure as [ValueFrequency]{@link google.privacy.dlp.v2.ValueFrequency}
     *
     * @typedef LDiversityEquivalenceClass
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    LDiversityEquivalenceClass: {
      // This is for documentation. Actual contents will be loaded by gRPC.
    },

    /**
     * @property {number} sensitiveValueFrequencyLowerBound
     *   Lower bound on the sensitive value frequencies of the equivalence
     *   classes in this bucket.
     *
     * @property {number} sensitiveValueFrequencyUpperBound
     *   Upper bound on the sensitive value frequencies of the equivalence
     *   classes in this bucket.
     *
     * @property {number} bucketSize
     *   Total number of equivalence classes in this bucket.
     *
     * @property {Object[]} bucketValues
     *   Sample of equivalence classes in this bucket. The total number of
     *   classes returned per bucket is capped at 20.
     *
     *   This object should have the same structure as [LDiversityEquivalenceClass]{@link google.privacy.dlp.v2.LDiversityEquivalenceClass}
     *
     * @property {number} bucketValueCount
     *   Total number of distinct equivalence classes in this bucket.
     *
     * @typedef LDiversityHistogramBucket
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    LDiversityHistogramBucket: {
      // This is for documentation. Actual contents will be loaded by gRPC.
    }
  },

  /**
   * Result of the reidentifiability analysis. Note that these results are an
   * estimation, not exact values.
   *
   * @property {Object[]} kMapEstimationHistogram
   *   The intervals [min_anonymity, max_anonymity] do not overlap. If a value
   *   doesn't correspond to any such interval, the associated frequency is
   *   zero. For example, the following records:
   *     {min_anonymity: 1, max_anonymity: 1, frequency: 17}
   *     {min_anonymity: 2, max_anonymity: 3, frequency: 42}
   *     {min_anonymity: 5, max_anonymity: 10, frequency: 99}
   *   mean that there are no record with an estimated anonymity of 4, 5, or
   *   larger than 10.
   *
   *   This object should have the same structure as [KMapEstimationHistogramBucket]{@link google.privacy.dlp.v2.KMapEstimationHistogramBucket}
   *
   * @typedef KMapEstimationResult
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  KMapEstimationResult: {
    // This is for documentation. Actual contents will be loaded by gRPC.

    /**
     * A tuple of values for the quasi-identifier columns.
     *
     * @property {Object[]} quasiIdsValues
     *   The quasi-identifier values.
     *
     *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
     *
     * @property {number} estimatedAnonymity
     *   The estimated anonymity for these quasi-identifier values.
     *
     * @typedef KMapEstimationQuasiIdValues
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    KMapEstimationQuasiIdValues: {
      // This is for documentation. Actual contents will be loaded by gRPC.
    },

    /**
     * A KMapEstimationHistogramBucket message with the following values:
     *   min_anonymity: 3
     *   max_anonymity: 5
     *   frequency: 42
     * means that there are 42 records whose quasi-identifier values correspond
     * to 3, 4 or 5 people in the overlying population. An important particular
     * case is when min_anonymity = max_anonymity = 1: the frequency field then
     * corresponds to the number of uniquely identifiable records.
     *
     * @property {number} minAnonymity
     *   Always positive.
     *
     * @property {number} maxAnonymity
     *   Always greater than or equal to min_anonymity.
     *
     * @property {number} bucketSize
     *   Number of records within these anonymity bounds.
     *
     * @property {Object[]} bucketValues
     *   Sample of quasi-identifier tuple values in this bucket. The total
     *   number of classes returned per bucket is capped at 20.
     *
     *   This object should have the same structure as [KMapEstimationQuasiIdValues]{@link google.privacy.dlp.v2.KMapEstimationQuasiIdValues}
     *
     * @property {number} bucketValueCount
     *   Total number of distinct quasi-identifier tuple values in this bucket.
     *
     * @typedef KMapEstimationHistogramBucket
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    KMapEstimationHistogramBucket: {
      // This is for documentation. Actual contents will be loaded by gRPC.
    }
  },

  /**
   * Result of the δ-presence computation. Note that these results are an
   * estimation, not exact values.
   *
   * @property {Object[]} deltaPresenceEstimationHistogram
   *   The intervals [min_probability, max_probability) do not overlap. If a
   *   value doesn't correspond to any such interval, the associated frequency
   *   is zero. For example, the following records:
   *     {min_probability: 0, max_probability: 0.1, frequency: 17}
   *     {min_probability: 0.2, max_probability: 0.3, frequency: 42}
   *     {min_probability: 0.3, max_probability: 0.4, frequency: 99}
   *   mean that there are no record with an estimated probability in [0.1, 0.2)
   *   nor larger or equal to 0.4.
   *
   *   This object should have the same structure as [DeltaPresenceEstimationHistogramBucket]{@link google.privacy.dlp.v2.DeltaPresenceEstimationHistogramBucket}
   *
   * @typedef DeltaPresenceEstimationResult
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  DeltaPresenceEstimationResult: {
    // This is for documentation. Actual contents will be loaded by gRPC.

    /**
     * A tuple of values for the quasi-identifier columns.
     *
     * @property {Object[]} quasiIdsValues
     *   The quasi-identifier values.
     *
     *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
     *
     * @property {number} estimatedProbability
     *   The estimated probability that a given individual sharing these
     *   quasi-identifier values is in the dataset. This value, typically called
     *   δ, is the ratio between the number of records in the dataset with these
     *   quasi-identifier values, and the total number of individuals (inside
     *   *and* outside the dataset) with these quasi-identifier values.
     *   For example, if there are 15 individuals in the dataset who share the
     *   same quasi-identifier values, and an estimated 100 people in the entire
     *   population with these values, then δ is 0.15.
     *
     * @typedef DeltaPresenceEstimationQuasiIdValues
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationQuasiIdValues definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    DeltaPresenceEstimationQuasiIdValues: {
      // This is for documentation. Actual contents will be loaded by gRPC.
    },

    /**
     * A DeltaPresenceEstimationHistogramBucket message with the following
     * values:
     *   min_probability: 0.1
     *   max_probability: 0.2
     *   frequency: 42
     * means that there are 42 records for which δ is in [0.1, 0.2). An
     * important particular case is when min_probability = max_probability = 1:
     * then, every individual who shares this quasi-identifier combination is in
     * the dataset.
     *
     * @property {number} minProbability
     *   Between 0 and 1.
     *
     * @property {number} maxProbability
     *   Always greater than or equal to min_probability.
     *
     * @property {number} bucketSize
     *   Number of records within these probability bounds.
     *
     * @property {Object[]} bucketValues
     *   Sample of quasi-identifier tuple values in this bucket. The total
     *   number of classes returned per bucket is capped at 20.
     *
     *   This object should have the same structure as [DeltaPresenceEstimationQuasiIdValues]{@link google.privacy.dlp.v2.DeltaPresenceEstimationQuasiIdValues}
     *
     * @property {number} bucketValueCount
     *   Total number of distinct quasi-identifier tuple values in this bucket.
     *
     * @typedef DeltaPresenceEstimationHistogramBucket
     * @memberof google.privacy.dlp.v2
     * @see [google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationHistogramBucket definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
     */
    DeltaPresenceEstimationHistogramBucket: {
      // This is for documentation. Actual contents will be loaded by gRPC.
    }
  }
};

/**
 * A value of a field, including its frequency.
 *
 * @property {Object} value
 *   A value contained in the field in question.
 *
 *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
 *
 * @property {number} count
 *   How many times the value is contained in the field.
 *
 * @typedef ValueFrequency
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ValueFrequency definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ValueFrequency = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Set of primitive values supported by the system.
 * Note that for the purposes of inspection or transformation, the number
 * of bytes considered to comprise a 'Value' is based on its representation
 * as a UTF-8 encoded string. For example, if 'integer_value' is set to
 * 123456789, the number of bytes would be counted as 9, even though an
 * int64 only holds up to 8 bytes of data.
 *
 * @property {number} integerValue
 *
 * @property {number} floatValue
 *
 * @property {string} stringValue
 *
 * @property {boolean} booleanValue
 *
 * @property {Object} timestampValue
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} timeValue
 *   This object should have the same structure as [TimeOfDay]{@link google.type.TimeOfDay}
 *
 * @property {Object} dateValue
 *   This object should have the same structure as [Date]{@link google.type.Date}
 *
 * @property {number} dayOfWeekValue
 *   The number should be among the values of [DayOfWeek]{@link google.type.DayOfWeek}
 *
 * @typedef Value
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.Value definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const Value = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Message for infoType-dependent details parsed from quote.
 *
 * @property {Object} dateTime
 *   The date time indicated by the quote.
 *
 *   This object should have the same structure as [DateTime]{@link google.privacy.dlp.v2.DateTime}
 *
 * @typedef QuoteInfo
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.QuoteInfo definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const QuoteInfo = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Message for a date time object.
 * e.g. 2018-01-01, 5th August.
 *
 * @property {Object} date
 *   One or more of the following must be set. All fields are optional, but
 *   when set must be valid date or time values.
 *
 *   This object should have the same structure as [Date]{@link google.type.Date}
 *
 * @property {number} dayOfWeek
 *   The number should be among the values of [DayOfWeek]{@link google.type.DayOfWeek}
 *
 * @property {Object} time
 *   This object should have the same structure as [TimeOfDay]{@link google.type.TimeOfDay}
 *
 * @property {Object} timeZone
 *   This object should have the same structure as [TimeZone]{@link google.privacy.dlp.v2.TimeZone}
 *
 * @typedef DateTime
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DateTime definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DateTime = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * @property {number} offsetMinutes
   *   Set only if the offset can be determined. Positive for time ahead of UTC.
   *   E.g. For "UTC-9", this value is -540.
   *
   * @typedef TimeZone
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.DateTime.TimeZone definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  TimeZone: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * The configuration that controls how the data will change.
 *
 * @property {Object} infoTypeTransformations
 *   Treat the dataset as free-form text and apply the same free text
 *   transformation everywhere.
 *
 *   This object should have the same structure as [InfoTypeTransformations]{@link google.privacy.dlp.v2.InfoTypeTransformations}
 *
 * @property {Object} recordTransformations
 *   Treat the dataset as structured. Transformations can be applied to
 *   specific locations within structured datasets, such as transforming
 *   a column within a table.
 *
 *   This object should have the same structure as [RecordTransformations]{@link google.privacy.dlp.v2.RecordTransformations}
 *
 * @typedef DeidentifyConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DeidentifyConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DeidentifyConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * A rule for transforming a value.
 *
 * @property {Object} replaceConfig
 *   This object should have the same structure as [ReplaceValueConfig]{@link google.privacy.dlp.v2.ReplaceValueConfig}
 *
 * @property {Object} redactConfig
 *   This object should have the same structure as [RedactConfig]{@link google.privacy.dlp.v2.RedactConfig}
 *
 * @property {Object} characterMaskConfig
 *   This object should have the same structure as [CharacterMaskConfig]{@link google.privacy.dlp.v2.CharacterMaskConfig}
 *
 * @property {Object} cryptoReplaceFfxFpeConfig
 *   This object should have the same structure as [CryptoReplaceFfxFpeConfig]{@link google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig}
 *
 * @property {Object} fixedSizeBucketingConfig
 *   This object should have the same structure as [FixedSizeBucketingConfig]{@link google.privacy.dlp.v2.FixedSizeBucketingConfig}
 *
 * @property {Object} bucketingConfig
 *   This object should have the same structure as [BucketingConfig]{@link google.privacy.dlp.v2.BucketingConfig}
 *
 * @property {Object} replaceWithInfoTypeConfig
 *   This object should have the same structure as [ReplaceWithInfoTypeConfig]{@link google.privacy.dlp.v2.ReplaceWithInfoTypeConfig}
 *
 * @property {Object} timePartConfig
 *   This object should have the same structure as [TimePartConfig]{@link google.privacy.dlp.v2.TimePartConfig}
 *
 * @property {Object} cryptoHashConfig
 *   This object should have the same structure as [CryptoHashConfig]{@link google.privacy.dlp.v2.CryptoHashConfig}
 *
 * @property {Object} dateShiftConfig
 *   This object should have the same structure as [DateShiftConfig]{@link google.privacy.dlp.v2.DateShiftConfig}
 *
 * @property {Object} cryptoDeterministicConfig
 *   This object should have the same structure as [CryptoDeterministicConfig]{@link google.privacy.dlp.v2.CryptoDeterministicConfig}
 *
 * @typedef PrimitiveTransformation
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.PrimitiveTransformation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const PrimitiveTransformation = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a
 * portion of the value.
 *
 * @property {number} partToExtract
 *   The number should be among the values of [TimePart]{@link google.privacy.dlp.v2.TimePart}
 *
 * @typedef TimePartConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.TimePartConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const TimePartConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * @enum {number}
   * @memberof google.privacy.dlp.v2
   */
  TimePart: {
    TIME_PART_UNSPECIFIED: 0,

    /**
     * [0-9999]
     */
    YEAR: 1,

    /**
     * [1-12]
     */
    MONTH: 2,

    /**
     * [1-31]
     */
    DAY_OF_MONTH: 3,

    /**
     * [1-7]
     */
    DAY_OF_WEEK: 4,

    /**
     * [1-52]
     */
    WEEK_OF_YEAR: 5,

    /**
     * [0-23]
     */
    HOUR_OF_DAY: 6
  }
};

/**
 * Pseudonymization method that generates surrogates via cryptographic hashing.
 * Uses SHA-256.
 * The key size must be either 32 or 64 bytes.
 * Outputs a base64 encoded representation of the hashed output
 * (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
 * Currently, only string and integer values can be hashed.
 * See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
 *
 * @property {Object} cryptoKey
 *   The key used by the hash function.
 *
 *   This object should have the same structure as [CryptoKey]{@link google.privacy.dlp.v2.CryptoKey}
 *
 * @typedef CryptoHashConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CryptoHashConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CryptoHashConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Pseudonymization method that generates deterministic encryption for the given
 * input. Outputs a base64 encoded representation of the encrypted output.
 * Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
 *
 * @property {Object} cryptoKey
 *   The key used by the encryption function.
 *
 *   This object should have the same structure as [CryptoKey]{@link google.privacy.dlp.v2.CryptoKey}
 *
 * @property {Object} surrogateInfoType
 *   The custom info type to annotate the surrogate with.
 *   This annotation will be applied to the surrogate by prefixing it with
 *   the name of the custom info type followed by the number of
 *   characters comprising the surrogate. The following scheme defines the
 *   format: <info type name>(<surrogate character count>):<surrogate>
 *
 *   For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and
 *   the surrogate is 'abc', the full replacement value
 *   will be: 'MY_TOKEN_INFO_TYPE(3):abc'
 *
 *   This annotation identifies the surrogate when inspecting content using the
 *   custom info type 'Surrogate'. This facilitates reversal of the
 *   surrogate when it occurs in free text.
 *
 *   In order for inspection to work properly, the name of this info type must
 *   not occur naturally anywhere in your data; otherwise, inspection may either
 *
 *   - reverse a surrogate that does not correspond to an actual identifier
 *   - be unable to parse the surrogate and result in an error
 *
 *   Therefore, choose your custom info type name carefully after considering
 *   what your data looks like. One way to select a name that has a high chance
 *   of yielding reliable detection is to include one or more unicode characters
 *   that are highly improbable to exist in your data.
 *   For example, assuming your data is entered from a regular ASCII keyboard,
 *   the symbol with the hex code point 29DD might be used like so:
 *   ⧝MY_TOKEN_TYPE
 *
 *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
 *
 * @property {Object} context
 *   Optional. A context may be used for higher security and maintaining
 *   referential integrity such that the same identifier in two different
 *   contexts will be given a distinct surrogate. The context is appended to
 *   plaintext value being encrypted. On decryption the provided context is
 *   validated against the value used during encryption. If a context was
 *   provided during encryption, same context must be provided during decryption
 *   as well.
 *
 *   If the context is not set, plaintext would be used as is for encryption.
 *   If the context is set but:
 *
 *   1. there is no record present when transforming a given value or
 *   2. the field is not present when transforming a given value,
 *
 *   plaintext would be used as is for encryption.
 *
 *   Note that case (1) is expected when an `InfoTypeTransformation` is
 *   applied to both structured and non-structured `ContentItem`s.
 *
 *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
 *
 * @typedef CryptoDeterministicConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CryptoDeterministicConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CryptoDeterministicConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Replace each input value with a given `Value`.
 *
 * @property {Object} newValue
 *   Value to replace it with.
 *
 *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
 *
 * @typedef ReplaceValueConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ReplaceValueConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ReplaceValueConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Replace each matching finding with the name of the info_type.
 * @typedef ReplaceWithInfoTypeConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ReplaceWithInfoTypeConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ReplaceWithInfoTypeConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Redact a given value. For example, if used with an `InfoTypeTransformation`
 * transforming PHONE_NUMBER, and input 'My phone number is 206-555-0123', the
 * output would be 'My phone number is '.
 * @typedef RedactConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.RedactConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const RedactConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Characters to skip when doing deidentification of a value. These will be left
 * alone and skipped.
 *
 * @property {string} charactersToSkip
 *
 * @property {number} commonCharactersToIgnore
 *   The number should be among the values of [CommonCharsToIgnore]{@link google.privacy.dlp.v2.CommonCharsToIgnore}
 *
 * @typedef CharsToIgnore
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CharsToIgnore definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CharsToIgnore = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * @enum {number}
   * @memberof google.privacy.dlp.v2
   */
  CommonCharsToIgnore: {
    COMMON_CHARS_TO_IGNORE_UNSPECIFIED: 0,

    /**
     * 0-9
     */
    NUMERIC: 1,

    /**
     * A-Z
     */
    ALPHA_UPPER_CASE: 2,

    /**
     * a-z
     */
    ALPHA_LOWER_CASE: 3,

    /**
     * US Punctuation, one of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
     */
    PUNCTUATION: 4,

    /**
     * Whitespace character, one of [ \t\n\x0B\f\r]
     */
    WHITESPACE: 5
  }
};

/**
 * Partially mask a string by replacing a given number of characters with a
 * fixed character. Masking can start from the beginning or end of the string.
 * This can be used on data of any type (numbers, longs, and so on) and when
 * de-identifying structured data we'll attempt to preserve the original data's
 * type. (This allows you to take a long like 123 and modify it to a string like
 * **3.
 *
 * @property {string} maskingCharacter
 *   Character to mask the sensitive values&mdash;for example, "*" for an
 *   alphabetic string such as name, or "0" for a numeric string such as ZIP
 *   code or credit card number. String must have length 1. If not supplied, we
 *   will default to "*" for strings, 0 for digits.
 *
 * @property {number} numberToMask
 *   Number of characters to mask. If not set, all matching chars will be
 *   masked. Skipped characters do not count towards this tally.
 *
 * @property {boolean} reverseOrder
 *   Mask characters in reverse order. For example, if `masking_character` is
 *   '0', number_to_mask is 14, and `reverse_order` is false, then
 *   1234-5678-9012-3456 -> 00000000000000-3456
 *   If `masking_character` is '*', `number_to_mask` is 3, and `reverse_order`
 *   is true, then 12345 -> 12***
 *
 * @property {Object[]} charactersToIgnore
 *   When masking a string, items in this list will be skipped when replacing.
 *   For example, if your string is 555-555-5555 and you ask us to skip `-` and
 *   mask 5 chars with * we would produce ***-*55-5555.
 *
 *   This object should have the same structure as [CharsToIgnore]{@link google.privacy.dlp.v2.CharsToIgnore}
 *
 * @typedef CharacterMaskConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CharacterMaskConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CharacterMaskConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Buckets values based on fixed size ranges. The
 * Bucketing transformation can provide all of this functionality,
 * but requires more configuration. This message is provided as a convenience to
 * the user for simple bucketing strategies.
 *
 * The transformed value will be a hyphenated string of
 * <lower_bound>-<upper_bound>, i.e if lower_bound = 10 and upper_bound = 20
 * all values that are within this bucket will be replaced with "10-20".
 *
 * This can be used on data of type: double, long.
 *
 * If the bound Value type differs from the type of data
 * being transformed, we will first attempt converting the type of the data to
 * be transformed to match the type of the bound before comparing.
 *
 * See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
 *
 * @property {Object} lowerBound
 *   Lower bound value of buckets. All values less than `lower_bound` are
 *   grouped together into a single bucket; for example if `lower_bound` = 10,
 *   then all values less than 10 are replaced with the value “-10”. [Required].
 *
 *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
 *
 * @property {Object} upperBound
 *   Upper bound value of buckets. All values greater than upper_bound are
 *   grouped together into a single bucket; for example if `upper_bound` = 89,
 *   then all values greater than 89 are replaced with the value “89+”.
 *   [Required].
 *
 *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
 *
 * @property {number} bucketSize
 *   Size of each bucket (except for minimum and maximum buckets). So if
 *   `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
 *   following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
 *   60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works. [Required].
 *
 * @typedef FixedSizeBucketingConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.FixedSizeBucketingConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const FixedSizeBucketingConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Generalization function that buckets values based on ranges. The ranges and
 * replacement values are dynamically provided by the user for custom behavior,
 * such as 1-30 -> LOW 31-65 -> MEDIUM 66-100 -> HIGH
 * This can be used on
 * data of type: number, long, string, timestamp.
 * If the bound `Value` type differs from the type of data being transformed, we
 * will first attempt converting the type of the data to be transformed to match
 * the type of the bound before comparing.
 * See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
 *
 * @property {Object[]} buckets
 *   Set of buckets. Ranges must be non-overlapping.
 *
 *   This object should have the same structure as [Bucket]{@link google.privacy.dlp.v2.Bucket}
 *
 * @typedef BucketingConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.BucketingConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const BucketingConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * Bucket is represented as a range, along with replacement values.
   *
   * @property {Object} min
   *   Lower bound of the range, inclusive. Type should be the same as max if
   *   used.
   *
   *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
   *
   * @property {Object} max
   *   Upper bound of the range, exclusive; type must match min.
   *
   *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
   *
   * @property {Object} replacementValue
   *   Replacement value for this bucket. If not provided
   *   the default behavior will be to hyphenate the min-max range.
   *
   *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
   *
   * @typedef Bucket
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.BucketingConfig.Bucket definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  Bucket: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * Replaces an identifier with a surrogate using Format Preserving Encryption
 * (FPE) with the FFX mode of operation; however when used in the
 * `ReidentifyContent` API method, it serves the opposite function by reversing
 * the surrogate back into the original identifier. The identifier must be
 * encoded as ASCII. For a given crypto key and context, the same identifier
 * will be replaced with the same surrogate. Identifiers must be at least two
 * characters long. In the case that the identifier is the empty string, it will
 * be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
 * more.
 *
 * Note: We recommend using  CryptoDeterministicConfig for all use cases which
 * do not require preserving the input alphabet space and size, plus warrant
 * referential integrity.
 *
 * @property {Object} cryptoKey
 *   The key used by the encryption algorithm. [required]
 *
 *   This object should have the same structure as [CryptoKey]{@link google.privacy.dlp.v2.CryptoKey}
 *
 * @property {Object} context
 *   The 'tweak', a context may be used for higher security since the same
 *   identifier in two different contexts won't be given the same surrogate. If
 *   the context is not set, a default tweak will be used.
 *
 *   If the context is set but:
 *
 *   1. there is no record present when transforming a given value or
 *   1. the field is not present when transforming a given value,
 *
 *   a default tweak will be used.
 *
 *   Note that case (1) is expected when an `InfoTypeTransformation` is
 *   applied to both structured and non-structured `ContentItem`s.
 *   Currently, the referenced field may be of value type integer or string.
 *
 *   The tweak is constructed as a sequence of bytes in big endian byte order
 *   such that:
 *
 *   - a 64 bit integer is encoded followed by a single byte of value 1
 *   - a string is encoded in UTF-8 format followed by a single byte of value 2
 *
 *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
 *
 * @property {number} commonAlphabet
 *   The number should be among the values of [FfxCommonNativeAlphabet]{@link google.privacy.dlp.v2.FfxCommonNativeAlphabet}
 *
 * @property {string} customAlphabet
 *   This is supported by mapping these to the alphanumeric characters
 *   that the FFX mode natively supports. This happens before/after
 *   encryption/decryption.
 *   Each character listed must appear only once.
 *   Number of characters must be in the range [2, 62].
 *   This must be encoded as ASCII.
 *   The order of characters does not matter.
 *
 * @property {number} radix
 *   The native way to select the alphabet. Must be in the range [2, 62].
 *
 * @property {Object} surrogateInfoType
 *   The custom infoType to annotate the surrogate with.
 *   This annotation will be applied to the surrogate by prefixing it with
 *   the name of the custom infoType followed by the number of
 *   characters comprising the surrogate. The following scheme defines the
 *   format: info_type_name(surrogate_character_count):surrogate
 *
 *   For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and
 *   the surrogate is 'abc', the full replacement value
 *   will be: 'MY_TOKEN_INFO_TYPE(3):abc'
 *
 *   This annotation identifies the surrogate when inspecting content using the
 *   custom infoType
 *   [`SurrogateType`](https://cloud.google.com/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
 *   This facilitates reversal of the surrogate when it occurs in free text.
 *
 *   In order for inspection to work properly, the name of this infoType must
 *   not occur naturally anywhere in your data; otherwise, inspection may
 *   find a surrogate that does not correspond to an actual identifier.
 *   Therefore, choose your custom infoType name carefully after considering
 *   what your data looks like. One way to select a name that has a high chance
 *   of yielding reliable detection is to include one or more unicode characters
 *   that are highly improbable to exist in your data.
 *   For example, assuming your data is entered from a regular ASCII keyboard,
 *   the symbol with the hex code point 29DD might be used like so:
 *   ⧝MY_TOKEN_TYPE
 *
 *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
 *
 * @typedef CryptoReplaceFfxFpeConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CryptoReplaceFfxFpeConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * These are commonly used subsets of the alphabet that the FFX mode
   * natively supports. In the algorithm, the alphabet is selected using
   * the "radix". Therefore each corresponds to particular radix.
   *
   * @enum {number}
   * @memberof google.privacy.dlp.v2
   */
  FfxCommonNativeAlphabet: {
    FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED: 0,

    /**
     * [0-9] (radix of 10)
     */
    NUMERIC: 1,

    /**
     * [0-9A-F] (radix of 16)
     */
    HEXADECIMAL: 2,

    /**
     * [0-9A-Z] (radix of 36)
     */
    UPPER_CASE_ALPHA_NUMERIC: 3,

    /**
     * [0-9A-Za-z] (radix of 62)
     */
    ALPHA_NUMERIC: 4
  }
};

/**
 * This is a data encryption key (DEK) (as opposed to
 * a key encryption key (KEK) stored by KMS).
 * When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
 * IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
 * unwrap the data crypto key.
 *
 * @property {Object} transient
 *   This object should have the same structure as [TransientCryptoKey]{@link google.privacy.dlp.v2.TransientCryptoKey}
 *
 * @property {Object} unwrapped
 *   This object should have the same structure as [UnwrappedCryptoKey]{@link google.privacy.dlp.v2.UnwrappedCryptoKey}
 *
 * @property {Object} kmsWrapped
 *   This object should have the same structure as [KmsWrappedCryptoKey]{@link google.privacy.dlp.v2.KmsWrappedCryptoKey}
 *
 * @typedef CryptoKey
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CryptoKey definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CryptoKey = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Use this to have a random data crypto key generated.
 * It will be discarded after the request finishes.
 *
 * @property {string} name
 *   Name of the key. [required]
 *   This is an arbitrary string used to differentiate different keys.
 *   A unique key is generated per name: two separate `TransientCryptoKey`
 *   protos share the same generated key if their names are the same.
 *   When the data crypto key is generated, this name is not used in any way
 *   (repeating the api call will result in a different key being generated).
 *
 * @typedef TransientCryptoKey
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.TransientCryptoKey definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const TransientCryptoKey = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Using raw keys is prone to security risks due to accidentally
 * leaking the key. Choose another type of key if possible.
 *
 * @property {Buffer} key
 *   A 128/192/256 bit key. [required]
 *
 * @typedef UnwrappedCryptoKey
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.UnwrappedCryptoKey definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const UnwrappedCryptoKey = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Include to use an existing data crypto key wrapped by KMS.
 * The wrapped key must be a 128/192/256 bit key.
 * Authorization requires the following IAM permissions when sending a request
 * to perform a crypto transformation using a kms-wrapped crypto key:
 * dlp.kms.encrypt
 *
 * @property {Buffer} wrappedKey
 *   The wrapped data crypto key. [required]
 *
 * @property {string} cryptoKeyName
 *   The resource name of the KMS CryptoKey to use for unwrapping. [required]
 *
 * @typedef KmsWrappedCryptoKey
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.KmsWrappedCryptoKey definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const KmsWrappedCryptoKey = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Shifts dates by random number of days, with option to be consistent for the
 * same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
 * to learn more.
 *
 * @property {number} upperBoundDays
 *   Range of shift in days. Actual shift will be selected at random within this
 *   range (inclusive ends). Negative means shift to earlier in time. Must not
 *   be more than 365250 days (1000 years) each direction.
 *
 *   For example, 3 means shift date to at most 3 days into the future.
 *   [Required]
 *
 * @property {number} lowerBoundDays
 *   For example, -5 means shift date to at most 5 days back in the past.
 *   [Required]
 *
 * @property {Object} context
 *   Points to the field that contains the context, for example, an entity id.
 *   If set, must also set method. If set, shift will be consistent for the
 *   given context.
 *
 *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
 *
 * @property {Object} cryptoKey
 *   Causes the shift to be computed based on this key and the context. This
 *   results in the same shift for the same context and crypto_key.
 *
 *   This object should have the same structure as [CryptoKey]{@link google.privacy.dlp.v2.CryptoKey}
 *
 * @typedef DateShiftConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DateShiftConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DateShiftConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * A type of transformation that will scan unstructured text and
 * apply various `PrimitiveTransformation`s to each finding, where the
 * transformation is applied to only values that were identified as a specific
 * info_type.
 *
 * @property {Object[]} transformations
 *   Transformation for each infoType. Cannot specify more than one
 *   for a given infoType. [required]
 *
 *   This object should have the same structure as [InfoTypeTransformation]{@link google.privacy.dlp.v2.InfoTypeTransformation}
 *
 * @typedef InfoTypeTransformations
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InfoTypeTransformations definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InfoTypeTransformations = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * A transformation to apply to text that is identified as a specific
   * info_type.
   *
   * @property {Object[]} infoTypes
   *   InfoTypes to apply the transformation to. An empty list will cause
   *   this transformation to apply to all findings that correspond to
   *   infoTypes that were requested in `InspectConfig`.
   *
   *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
   *
   * @property {Object} primitiveTransformation
   *   Primitive transformation to apply to the infoType. [required]
   *
   *   This object should have the same structure as [PrimitiveTransformation]{@link google.privacy.dlp.v2.PrimitiveTransformation}
   *
   * @typedef InfoTypeTransformation
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  InfoTypeTransformation: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * The transformation to apply to the field.
 *
 * @property {Object[]} fields
 *   Input field(s) to apply the transformation to. [required]
 *
 *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
 *
 * @property {Object} condition
 *   Only apply the transformation if the condition evaluates to true for the
 *   given `RecordCondition`. The conditions are allowed to reference fields
 *   that are not used in the actual transformation. [optional]
 *
 *   Example Use Cases:
 *
 *   - Apply a different bucket transformation to an age column if the zip code
 *   column for the same record is within a specific range.
 *   - Redact a field if the date of birth field is greater than 85.
 *
 *   This object should have the same structure as [RecordCondition]{@link google.privacy.dlp.v2.RecordCondition}
 *
 * @property {Object} primitiveTransformation
 *   Apply the transformation to the entire field.
 *
 *   This object should have the same structure as [PrimitiveTransformation]{@link google.privacy.dlp.v2.PrimitiveTransformation}
 *
 * @property {Object} infoTypeTransformations
 *   Treat the contents of the field as free text, and selectively
 *   transform content that matches an `InfoType`.
 *
 *   This object should have the same structure as [InfoTypeTransformations]{@link google.privacy.dlp.v2.InfoTypeTransformations}
 *
 * @typedef FieldTransformation
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.FieldTransformation definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const FieldTransformation = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * A type of transformation that is applied over structured data such as a
 * table.
 *
 * @property {Object[]} fieldTransformations
 *   Transform the record by applying various field transformations.
 *
 *   This object should have the same structure as [FieldTransformation]{@link google.privacy.dlp.v2.FieldTransformation}
 *
 * @property {Object[]} recordSuppressions
 *   Configuration defining which records get suppressed entirely. Records that
 *   match any suppression rule are omitted from the output [optional].
 *
 *   This object should have the same structure as [RecordSuppression]{@link google.privacy.dlp.v2.RecordSuppression}
 *
 * @typedef RecordTransformations
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.RecordTransformations definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const RecordTransformations = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Configuration to suppress records whose suppression conditions evaluate to
 * true.
 *
 * @property {Object} condition
 *   A condition that when it evaluates to true will result in the record being
 *   evaluated to be suppressed from the transformed content.
 *
 *   This object should have the same structure as [RecordCondition]{@link google.privacy.dlp.v2.RecordCondition}
 *
 * @typedef RecordSuppression
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.RecordSuppression definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const RecordSuppression = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * A condition for determining whether a transformation should be applied to
 * a field.
 *
 * @property {Object} expressions
 *   An expression.
 *
 *   This object should have the same structure as [Expressions]{@link google.privacy.dlp.v2.Expressions}
 *
 * @typedef RecordCondition
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.RecordCondition definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const RecordCondition = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * The field type of `value` and `field` do not need to match to be
   * considered equal, but not all comparisons are possible.
   * EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
   * but all other comparisons are invalid with incompatible types.
   * A `value` of type:
   *
   * - `string` can be compared against all other types
   * - `boolean` can only be compared against other booleans
   * - `integer` can be compared against doubles or a string if the string value
   * can be parsed as an integer.
   * - `double` can be compared against integers or a string if the string can
   * be parsed as a double.
   * - `Timestamp` can be compared against strings in RFC 3339 date string
   * format.
   * - `TimeOfDay` can be compared against timestamps and strings in the format
   * of 'HH:mm:ss'.
   *
   * If we fail to compare do to type mismatch, a warning will be given and
   * the condition will evaluate to false.
   *
   * @property {Object} field
   *   Field within the record this condition is evaluated against. [required]
   *
   *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
   *
   * @property {number} operator
   *   Operator used to compare the field or infoType to the value. [required]
   *
   *   The number should be among the values of [RelationalOperator]{@link google.privacy.dlp.v2.RelationalOperator}
   *
   * @property {Object} value
   *   Value to compare against. [Required, except for `EXISTS` tests.]
   *
   *   This object should have the same structure as [Value]{@link google.privacy.dlp.v2.Value}
   *
   * @typedef Condition
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.RecordCondition.Condition definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  Condition: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * A collection of conditions.
   *
   * @property {Object[]} conditions
   *   This object should have the same structure as [Condition]{@link google.privacy.dlp.v2.Condition}
   *
   * @typedef Conditions
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.RecordCondition.Conditions definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  Conditions: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * An expression, consisting or an operator and conditions.
   *
   * @property {number} logicalOperator
   *   The operator to apply to the result of conditions. Default and currently
   *   only supported value is `AND`.
   *
   *   The number should be among the values of [LogicalOperator]{@link google.privacy.dlp.v2.LogicalOperator}
   *
   * @property {Object} conditions
   *   This object should have the same structure as [Conditions]{@link google.privacy.dlp.v2.Conditions}
   *
   * @typedef Expressions
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.RecordCondition.Expressions definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  Expressions: {
    // This is for documentation. Actual contents will be loaded by gRPC.

    /**
     * @enum {number}
     * @memberof google.privacy.dlp.v2
     */
    LogicalOperator: {
      LOGICAL_OPERATOR_UNSPECIFIED: 0,
      AND: 1
    }
  }
};

/**
 * Overview of the modifications that occurred.
 *
 * @property {number} transformedBytes
 *   Total size in bytes that were transformed in some way.
 *
 * @property {Object[]} transformationSummaries
 *   Transformations applied to the dataset.
 *
 *   This object should have the same structure as [TransformationSummary]{@link google.privacy.dlp.v2.TransformationSummary}
 *
 * @typedef TransformationOverview
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.TransformationOverview definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const TransformationOverview = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Summary of a single transformation.
 * Only one of 'transformation', 'field_transformation', or 'record_suppress'
 * will be set.
 *
 * @property {Object} infoType
 *   Set if the transformation was limited to a specific InfoType.
 *
 *   This object should have the same structure as [InfoType]{@link google.privacy.dlp.v2.InfoType}
 *
 * @property {Object} field
 *   Set if the transformation was limited to a specific FieldId.
 *
 *   This object should have the same structure as [FieldId]{@link google.privacy.dlp.v2.FieldId}
 *
 * @property {Object} transformation
 *   The specific transformation these stats apply to.
 *
 *   This object should have the same structure as [PrimitiveTransformation]{@link google.privacy.dlp.v2.PrimitiveTransformation}
 *
 * @property {Object[]} fieldTransformations
 *   The field transformation that was applied.
 *   If multiple field transformations are requested for a single field,
 *   this list will contain all of them; otherwise, only one is supplied.
 *
 *   This object should have the same structure as [FieldTransformation]{@link google.privacy.dlp.v2.FieldTransformation}
 *
 * @property {Object} recordSuppress
 *   The specific suppression option these stats apply to.
 *
 *   This object should have the same structure as [RecordSuppression]{@link google.privacy.dlp.v2.RecordSuppression}
 *
 * @property {Object[]} results
 *   This object should have the same structure as [SummaryResult]{@link google.privacy.dlp.v2.SummaryResult}
 *
 * @property {number} transformedBytes
 *   Total size in bytes that were transformed in some way.
 *
 * @typedef TransformationSummary
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.TransformationSummary definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const TransformationSummary = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * A collection that informs the user the number of times a particular
   * `TransformationResultCode` and error details occurred.
   *
   * @property {number} count
   *
   * @property {number} code
   *   The number should be among the values of [TransformationResultCode]{@link google.privacy.dlp.v2.TransformationResultCode}
   *
   * @property {string} details
   *   A place for warnings or errors to show up if a transformation didn't
   *   work as expected.
   *
   * @typedef SummaryResult
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.TransformationSummary.SummaryResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  SummaryResult: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * Possible outcomes of transformations.
   *
   * @enum {number}
   * @memberof google.privacy.dlp.v2
   */
  TransformationResultCode: {
    TRANSFORMATION_RESULT_CODE_UNSPECIFIED: 0,
    SUCCESS: 1,
    ERROR: 2
  }
};

/**
 * Schedule for triggeredJobs.
 *
 * @property {Object} recurrencePeriodDuration
 *   With this option a job is started a regular periodic basis. For
 *   example: every day (86400 seconds).
 *
 *   A scheduled start time will be skipped if the previous
 *   execution has not ended when its scheduled time occurs.
 *
 *   This value must be set to a time duration greater than or equal
 *   to 1 day and can be no longer than 60 days.
 *
 *   This object should have the same structure as [Duration]{@link google.protobuf.Duration}
 *
 * @typedef Schedule
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.Schedule definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const Schedule = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * The inspectTemplate contains a configuration (set of types of sensitive data
 * to be detected) to be used anywhere you otherwise would normally specify
 * InspectConfig. See https://cloud.google.com/dlp/docs/concepts-templates
 * to learn more.
 *
 * @property {string} name
 *   The template name. Output only.
 *
 *   The template will have one of the following formats:
 *   `projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID` OR
 *   `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID`
 *
 * @property {string} displayName
 *   Display name (max 256 chars).
 *
 * @property {string} description
 *   Short description (max 256 chars).
 *
 * @property {Object} createTime
 *   The creation timestamp of a inspectTemplate, output only field.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} updateTime
 *   The last update timestamp of a inspectTemplate, output only field.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} inspectConfig
 *   The core content of the template. Configuration of the scanning process.
 *
 *   This object should have the same structure as [InspectConfig]{@link google.privacy.dlp.v2.InspectConfig}
 *
 * @typedef InspectTemplate
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InspectTemplate definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InspectTemplate = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * The DeidentifyTemplates contains instructions on how to deidentify content.
 * See https://cloud.google.com/dlp/docs/concepts-templates to learn more.
 *
 * @property {string} name
 *   The template name. Output only.
 *
 *   The template will have one of the following formats:
 *   `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR
 *   `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`
 *
 * @property {string} displayName
 *   Display name (max 256 chars).
 *
 * @property {string} description
 *   Short description (max 256 chars).
 *
 * @property {Object} createTime
 *   The creation timestamp of a inspectTemplate, output only field.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} updateTime
 *   The last update timestamp of a inspectTemplate, output only field.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} deidentifyConfig
 *   ///////////// // The core content of the template  // ///////////////
 *
 *   This object should have the same structure as [DeidentifyConfig]{@link google.privacy.dlp.v2.DeidentifyConfig}
 *
 * @typedef DeidentifyTemplate
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DeidentifyTemplate definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DeidentifyTemplate = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Details information about an error encountered during job execution or
 * the results of an unsuccessful activation of the JobTrigger.
 * Output only field.
 *
 * @property {Object} details
 *   This object should have the same structure as [Status]{@link google.rpc.Status}
 *
 * @property {Object[]} timestamps
 *   The times the error occurred.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @typedef Error
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.Error definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const Error = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Contains a configuration to make dlp api calls on a repeating basis.
 * See https://cloud.google.com/dlp/docs/concepts-job-triggers to learn more.
 *
 * @property {string} name
 *   Unique resource name for the triggeredJob, assigned by the service when the
 *   triggeredJob is created, for example
 *   `projects/dlp-test-project/triggeredJobs/53234423`.
 *
 * @property {string} displayName
 *   Display name (max 100 chars)
 *
 * @property {string} description
 *   User provided description (max 256 chars)
 *
 * @property {Object} inspectJob
 *   This object should have the same structure as [InspectJobConfig]{@link google.privacy.dlp.v2.InspectJobConfig}
 *
 * @property {Object[]} triggers
 *   A list of triggers which will be OR'ed together. Only one in the list
 *   needs to trigger for a job to be started. The list may contain only
 *   a single Schedule trigger and must have at least one object.
 *
 *   This object should have the same structure as [Trigger]{@link google.privacy.dlp.v2.Trigger}
 *
 * @property {Object[]} errors
 *   A stream of errors encountered when the trigger was activated. Repeated
 *   errors may result in the JobTrigger automatically being paused.
 *   Will return the last 100 errors. Whenever the JobTrigger is modified
 *   this list will be cleared. Output only field.
 *
 *   This object should have the same structure as [Error]{@link google.privacy.dlp.v2.Error}
 *
 * @property {Object} createTime
 *   The creation timestamp of a triggeredJob, output only field.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} updateTime
 *   The last update timestamp of a triggeredJob, output only field.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} lastRunTime
 *   The timestamp of the last time this trigger executed, output only field.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {number} status
 *   A status for this trigger. [required]
 *
 *   The number should be among the values of [Status]{@link google.privacy.dlp.v2.Status}
 *
 * @typedef JobTrigger
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.JobTrigger definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const JobTrigger = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * What event needs to occur for a new job to be started.
   *
   * @property {Object} schedule
   *   Create a job on a repeating basis based on the elapse of time.
   *
   *   This object should have the same structure as [Schedule]{@link google.privacy.dlp.v2.Schedule}
   *
   * @typedef Trigger
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.JobTrigger.Trigger definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  Trigger: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * Whether the trigger is currently active. If PAUSED or CANCELLED, no jobs
   * will be created with this configuration. The service may automatically
   * pause triggers experiencing frequent errors. To restart a job, set the
   * status to HEALTHY after correcting user errors.
   *
   * @enum {number}
   * @memberof google.privacy.dlp.v2
   */
  Status: {
    STATUS_UNSPECIFIED: 0,

    /**
     * Trigger is healthy.
     */
    HEALTHY: 1,

    /**
     * Trigger is temporarily paused.
     */
    PAUSED: 2,

    /**
     * Trigger is cancelled and can not be resumed.
     */
    CANCELLED: 3
  }
};

/**
 * A task to execute on the completion of a job.
 * See https://cloud.google.com/dlp/docs/concepts-actions to learn more.
 *
 * @property {Object} saveFindings
 *   Save resulting findings in a provided location.
 *
 *   This object should have the same structure as [SaveFindings]{@link google.privacy.dlp.v2.SaveFindings}
 *
 * @property {Object} pubSub
 *   Publish a notification to a pubsub topic.
 *
 *   This object should have the same structure as [PublishToPubSub]{@link google.privacy.dlp.v2.PublishToPubSub}
 *
 * @property {Object} publishSummaryToCscc
 *   Publish summary to Cloud Security Command Center (Alpha).
 *
 *   This object should have the same structure as [PublishSummaryToCscc]{@link google.privacy.dlp.v2.PublishSummaryToCscc}
 *
 * @property {Object} publishFindingsToCloudDataCatalog
 *   Publish findings to Cloud Datahub.
 *
 *   This object should have the same structure as [PublishFindingsToCloudDataCatalog]{@link google.privacy.dlp.v2.PublishFindingsToCloudDataCatalog}
 *
 * @property {Object} jobNotificationEmails
 *   Enable email notification to project owners and editors on job's
 *   completion/failure.
 *
 *   This object should have the same structure as [JobNotificationEmails]{@link google.privacy.dlp.v2.JobNotificationEmails}
 *
 * @typedef Action
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.Action definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const Action = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * If set, the detailed findings will be persisted to the specified
   * OutputStorageConfig. Only a single instance of this action can be
   * specified.
   * Compatible with: Inspect, Risk
   *
   * @property {Object} outputConfig
   *   This object should have the same structure as [OutputStorageConfig]{@link google.privacy.dlp.v2.OutputStorageConfig}
   *
   * @typedef SaveFindings
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.Action.SaveFindings definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  SaveFindings: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * Publish a message into given Pub/Sub topic when DlpJob has completed. The
   * message contains a single field, `DlpJobName`, which is equal to the
   * finished job's
   * [`DlpJob.name`](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs#DlpJob).
   * Compatible with: Inspect, Risk
   *
   * @property {string} topic
   *   Cloud Pub/Sub topic to send notifications to. The topic must have given
   *   publishing access rights to the DLP API service account executing
   *   the long running DlpJob sending the notifications.
   *   Format is projects/{project}/topics/{topic}.
   *
   * @typedef PublishToPubSub
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.Action.PublishToPubSub definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  PublishToPubSub: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * Publish the result summary of a DlpJob to the Cloud Security
   * Command Center (CSCC Alpha).
   * This action is only available for projects which are parts of
   * an organization and whitelisted for the alpha Cloud Security Command
   * Center.
   * The action will publish count of finding instances and their info types.
   * The summary of findings will be persisted in CSCC and are governed by CSCC
   * service-specific policy, see https://cloud.google.com/terms/service-terms
   * Only a single instance of this action can be specified.
   * Compatible with: Inspect
   * @typedef PublishSummaryToCscc
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.Action.PublishSummaryToCscc definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  PublishSummaryToCscc: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * Publish findings of a DlpJob to Cloud Data Catalog. Labels summarizing the
   * results of the DlpJob will be applied to the entry for the resource scanned
   * in Cloud Data Catalog. Any labels previously written by another DlpJob will
   * be deleted. InfoType naming patterns are strictly enforced when using this
   * feature. Note that the findings will be persisted in Cloud Data Catalog
   * storage and are governed by Data Catalog service-specific policy, see
   * https://cloud.google.com/terms/service-terms
   * Only a single instance of this action can be specified and only allowed if
   * all resources being scanned are BigQuery tables.
   * Compatible with: Inspect
   * @typedef PublishFindingsToCloudDataCatalog
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.Action.PublishFindingsToCloudDataCatalog definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  PublishFindingsToCloudDataCatalog: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * Enable email notification to project owners and editors on jobs's
   * completion/failure.
   * @typedef JobNotificationEmails
   * @memberof google.privacy.dlp.v2
   * @see [google.privacy.dlp.v2.Action.JobNotificationEmails definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
   */
  JobNotificationEmails: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * Request message for CreateInspectTemplate.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id or
 *   organizations/my-org-id.
 *
 * @property {Object} inspectTemplate
 *   The InspectTemplate to create.
 *
 *   This object should have the same structure as [InspectTemplate]{@link google.privacy.dlp.v2.InspectTemplate}
 *
 * @property {string} templateId
 *   The template id can contain uppercase and lowercase letters,
 *   numbers, and hyphens; that is, it must match the regular
 *   expression: `[a-zA-Z\\d-_]+`. The maximum length is 100
 *   characters. Can be empty to allow the system to generate one.
 *
 * @typedef CreateInspectTemplateRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CreateInspectTemplateRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CreateInspectTemplateRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for UpdateInspectTemplate.
 *
 * @property {string} name
 *   Resource name of organization and inspectTemplate to be updated, for
 *   example `organizations/433245324/inspectTemplates/432452342` or
 *   projects/project-id/inspectTemplates/432452342.
 *
 * @property {Object} inspectTemplate
 *   New InspectTemplate value.
 *
 *   This object should have the same structure as [InspectTemplate]{@link google.privacy.dlp.v2.InspectTemplate}
 *
 * @property {Object} updateMask
 *   Mask to control which fields get updated.
 *
 *   This object should have the same structure as [FieldMask]{@link google.protobuf.FieldMask}
 *
 * @typedef UpdateInspectTemplateRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.UpdateInspectTemplateRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const UpdateInspectTemplateRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for GetInspectTemplate.
 *
 * @property {string} name
 *   Resource name of the organization and inspectTemplate to be read, for
 *   example `organizations/433245324/inspectTemplates/432452342` or
 *   projects/project-id/inspectTemplates/432452342.
 *
 * @typedef GetInspectTemplateRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.GetInspectTemplateRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const GetInspectTemplateRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for ListInspectTemplates.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id or
 *   organizations/my-org-id.
 *
 * @property {string} pageToken
 *   Optional page token to continue retrieval. Comes from previous call
 *   to `ListInspectTemplates`.
 *
 * @property {number} pageSize
 *   Optional size of the page, can be limited by server. If zero server returns
 *   a page of max size 100.
 *
 * @property {string} orderBy
 *   Optional comma separated list of fields to order by,
 *   followed by `asc` or `desc` postfix. This list is case-insensitive,
 *   default sorting order is ascending, redundant space characters are
 *   insignificant.
 *
 *   Example: `name asc,update_time, create_time desc`
 *
 *   Supported fields are:
 *
 *   - `create_time`: corresponds to time the template was created.
 *   - `update_time`: corresponds to time the template was last updated.
 *   - `name`: corresponds to template's name.
 *   - `display_name`: corresponds to template's display name.
 *
 * @typedef ListInspectTemplatesRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListInspectTemplatesRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListInspectTemplatesRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Response message for ListInspectTemplates.
 *
 * @property {Object[]} inspectTemplates
 *   List of inspectTemplates, up to page_size in ListInspectTemplatesRequest.
 *
 *   This object should have the same structure as [InspectTemplate]{@link google.privacy.dlp.v2.InspectTemplate}
 *
 * @property {string} nextPageToken
 *   If the next page is available then the next page token to be used
 *   in following ListInspectTemplates request.
 *
 * @typedef ListInspectTemplatesResponse
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListInspectTemplatesResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListInspectTemplatesResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for DeleteInspectTemplate.
 *
 * @property {string} name
 *   Resource name of the organization and inspectTemplate to be deleted, for
 *   example `organizations/433245324/inspectTemplates/432452342` or
 *   projects/project-id/inspectTemplates/432452342.
 *
 * @typedef DeleteInspectTemplateRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DeleteInspectTemplateRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DeleteInspectTemplateRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for CreateJobTrigger.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id.
 *
 * @property {Object} jobTrigger
 *   The JobTrigger to create.
 *
 *   This object should have the same structure as [JobTrigger]{@link google.privacy.dlp.v2.JobTrigger}
 *
 * @property {string} triggerId
 *   The trigger id can contain uppercase and lowercase letters,
 *   numbers, and hyphens; that is, it must match the regular
 *   expression: `[a-zA-Z\\d-_]+`. The maximum length is 100
 *   characters. Can be empty to allow the system to generate one.
 *
 * @typedef CreateJobTriggerRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CreateJobTriggerRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CreateJobTriggerRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for ActivateJobTrigger.
 *
 * @property {string} name
 *   Resource name of the trigger to activate, for example
 *   `projects/dlp-test-project/jobTriggers/53234423`.
 *
 * @typedef ActivateJobTriggerRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ActivateJobTriggerRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ActivateJobTriggerRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for UpdateJobTrigger.
 *
 * @property {string} name
 *   Resource name of the project and the triggeredJob, for example
 *   `projects/dlp-test-project/jobTriggers/53234423`.
 *
 * @property {Object} jobTrigger
 *   New JobTrigger value.
 *
 *   This object should have the same structure as [JobTrigger]{@link google.privacy.dlp.v2.JobTrigger}
 *
 * @property {Object} updateMask
 *   Mask to control which fields get updated.
 *
 *   This object should have the same structure as [FieldMask]{@link google.protobuf.FieldMask}
 *
 * @typedef UpdateJobTriggerRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.UpdateJobTriggerRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const UpdateJobTriggerRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for GetJobTrigger.
 *
 * @property {string} name
 *   Resource name of the project and the triggeredJob, for example
 *   `projects/dlp-test-project/jobTriggers/53234423`.
 *
 * @typedef GetJobTriggerRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.GetJobTriggerRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const GetJobTriggerRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for CreateDlpJobRequest. Used to initiate long running
 * jobs such as calculating risk metrics or inspecting Google Cloud
 * Storage.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id.
 *
 * @property {Object} inspectJob
 *   This object should have the same structure as [InspectJobConfig]{@link google.privacy.dlp.v2.InspectJobConfig}
 *
 * @property {Object} riskJob
 *   This object should have the same structure as [RiskAnalysisJobConfig]{@link google.privacy.dlp.v2.RiskAnalysisJobConfig}
 *
 * @property {string} jobId
 *   The job id can contain uppercase and lowercase letters,
 *   numbers, and hyphens; that is, it must match the regular
 *   expression: `[a-zA-Z\\d-_]+`. The maximum length is 100
 *   characters. Can be empty to allow the system to generate one.
 *
 * @typedef CreateDlpJobRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CreateDlpJobRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CreateDlpJobRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for ListJobTriggers.
 *
 * @property {string} parent
 *   The parent resource name, for example `projects/my-project-id`.
 *
 * @property {string} pageToken
 *   Optional page token to continue retrieval. Comes from previous call
 *   to ListJobTriggers. `order_by` field must not
 *   change for subsequent calls.
 *
 * @property {number} pageSize
 *   Optional size of the page, can be limited by a server.
 *
 * @property {string} orderBy
 *   Optional comma separated list of triggeredJob fields to order by,
 *   followed by `asc` or `desc` postfix. This list is case-insensitive,
 *   default sorting order is ascending, redundant space characters are
 *   insignificant.
 *
 *   Example: `name asc,update_time, create_time desc`
 *
 *   Supported fields are:
 *
 *   - `create_time`: corresponds to time the JobTrigger was created.
 *   - `update_time`: corresponds to time the JobTrigger was last updated.
 *   - `last_run_time`: corresponds to the last time the JobTrigger ran.
 *   - `name`: corresponds to JobTrigger's name.
 *   - `display_name`: corresponds to JobTrigger's display name.
 *   - `status`: corresponds to JobTrigger's status.
 *
 * @property {string} filter
 *   Optional. Allows filtering.
 *
 *   Supported syntax:
 *
 *   * Filter expressions are made up of one or more restrictions.
 *   * Restrictions can be combined by `AND` or `OR` logical operators. A
 *   sequence of restrictions implicitly uses `AND`.
 *   * A restriction has the form of `<field> <operator> <value>`.
 *   * Supported fields/values for inspect jobs:
 *       - `status` - HEALTHY|PAUSED|CANCELLED
 *       - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
 *       - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by
 *       quotation marks. Nanoseconds are ignored.
 *       - 'error_count' - Number of errors that have occurred while running.
 *   * The operator must be `=` or `!=` for status and inspected_storage.
 *
 *   Examples:
 *
 *   * inspected_storage = cloud_storage AND status = HEALTHY
 *   * inspected_storage = cloud_storage OR inspected_storage = bigquery
 *   * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY)
 *   * last_run_time > \"2017-12-12T00:00:00+00:00\"
 *
 *   The length of this field should be no more than 500 characters.
 *
 * @typedef ListJobTriggersRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListJobTriggersRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListJobTriggersRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Response message for ListJobTriggers.
 *
 * @property {Object[]} jobTriggers
 *   List of triggeredJobs, up to page_size in ListJobTriggersRequest.
 *
 *   This object should have the same structure as [JobTrigger]{@link google.privacy.dlp.v2.JobTrigger}
 *
 * @property {string} nextPageToken
 *   If the next page is available then the next page token to be used
 *   in following ListJobTriggers request.
 *
 * @typedef ListJobTriggersResponse
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListJobTriggersResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListJobTriggersResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for DeleteJobTrigger.
 *
 * @property {string} name
 *   Resource name of the project and the triggeredJob, for example
 *   `projects/dlp-test-project/jobTriggers/53234423`.
 *
 * @typedef DeleteJobTriggerRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DeleteJobTriggerRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DeleteJobTriggerRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * @property {Object} storageConfig
 *   The data to scan.
 *
 *   This object should have the same structure as [StorageConfig]{@link google.privacy.dlp.v2.StorageConfig}
 *
 * @property {Object} inspectConfig
 *   How and what to scan for.
 *
 *   This object should have the same structure as [InspectConfig]{@link google.privacy.dlp.v2.InspectConfig}
 *
 * @property {string} inspectTemplateName
 *   If provided, will be used as the default for all values in InspectConfig.
 *   `inspect_config` will be merged into the values persisted as part of the
 *   template.
 *
 * @property {Object[]} actions
 *   Actions to execute at the completion of the job.
 *
 *   This object should have the same structure as [Action]{@link google.privacy.dlp.v2.Action}
 *
 * @typedef InspectJobConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.InspectJobConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const InspectJobConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Combines all of the information about a DLP job.
 *
 * @property {string} name
 *   The server-assigned name.
 *
 * @property {number} type
 *   The type of job.
 *
 *   The number should be among the values of [DlpJobType]{@link google.privacy.dlp.v2.DlpJobType}
 *
 * @property {number} state
 *   State of a job.
 *
 *   The number should be among the values of [JobState]{@link google.privacy.dlp.v2.JobState}
 *
 * @property {Object} riskDetails
 *   Results from analyzing risk of a data source.
 *
 *   This object should have the same structure as [AnalyzeDataSourceRiskDetails]{@link google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails}
 *
 * @property {Object} inspectDetails
 *   Results from inspecting a data source.
 *
 *   This object should have the same structure as [InspectDataSourceDetails]{@link google.privacy.dlp.v2.InspectDataSourceDetails}
 *
 * @property {Object} createTime
 *   Time when the job was created.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} startTime
 *   Time when the job started.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} endTime
 *   Time when the job finished.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {string} jobTriggerName
 *   If created by a job trigger, the resource name of the trigger that
 *   instantiated the job.
 *
 * @property {Object[]} errors
 *   A stream of errors encountered running the job.
 *
 *   This object should have the same structure as [Error]{@link google.privacy.dlp.v2.Error}
 *
 * @typedef DlpJob
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DlpJob definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DlpJob = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * @enum {number}
   * @memberof google.privacy.dlp.v2
   */
  JobState: {
    JOB_STATE_UNSPECIFIED: 0,

    /**
     * The job has not yet started.
     */
    PENDING: 1,

    /**
     * The job is currently running.
     */
    RUNNING: 2,

    /**
     * The job is no longer running.
     */
    DONE: 3,

    /**
     * The job was canceled before it could complete.
     */
    CANCELED: 4,

    /**
     * The job had an error and did not complete.
     */
    FAILED: 5
  }
};

/**
 * The request message for DlpJobs.GetDlpJob.
 *
 * @property {string} name
 *   The name of the DlpJob resource.
 *
 * @typedef GetDlpJobRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.GetDlpJobRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const GetDlpJobRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * The request message for listing DLP jobs.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id.
 *
 * @property {string} filter
 *   Optional. Allows filtering.
 *
 *   Supported syntax:
 *
 *   * Filter expressions are made up of one or more restrictions.
 *   * Restrictions can be combined by `AND` or `OR` logical operators. A
 *   sequence of restrictions implicitly uses `AND`.
 *   * A restriction has the form of `<field> <operator> <value>`.
 *   * Supported fields/values for inspect jobs:
 *       - `state` - PENDING|RUNNING|CANCELED|FINISHED|FAILED
 *       - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
 *       - `trigger_name` - The resource name of the trigger that created job.
 *       - 'end_time` - Corresponds to time the job finished.
 *       - 'start_time` - Corresponds to time the job finished.
 *   * Supported fields for risk analysis jobs:
 *       - `state` - RUNNING|CANCELED|FINISHED|FAILED
 *       - 'end_time` - Corresponds to time the job finished.
 *       - 'start_time` - Corresponds to time the job finished.
 *   * The operator must be `=` or `!=`.
 *
 *   Examples:
 *
 *   * inspected_storage = cloud_storage AND state = done
 *   * inspected_storage = cloud_storage OR inspected_storage = bigquery
 *   * inspected_storage = cloud_storage AND (state = done OR state = canceled)
 *   * end_time > \"2017-12-12T00:00:00+00:00\"
 *
 *   The length of this field should be no more than 500 characters.
 *
 * @property {number} pageSize
 *   The standard list page size.
 *
 * @property {string} pageToken
 *   The standard list page token.
 *
 * @property {number} type
 *   The type of job. Defaults to `DlpJobType.INSPECT`
 *
 *   The number should be among the values of [DlpJobType]{@link google.privacy.dlp.v2.DlpJobType}
 *
 * @property {string} orderBy
 *   Optional comma separated list of fields to order by,
 *   followed by `asc` or `desc` postfix. This list is case-insensitive,
 *   default sorting order is ascending, redundant space characters are
 *   insignificant.
 *
 *   Example: `name asc, end_time asc, create_time desc`
 *
 *   Supported fields are:
 *
 *   - `create_time`: corresponds to time the job was created.
 *   - `end_time`: corresponds to time the job ended.
 *   - `name`: corresponds to job's name.
 *   - `state`: corresponds to `state`
 *
 * @typedef ListDlpJobsRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListDlpJobsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListDlpJobsRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * The response message for listing DLP jobs.
 *
 * @property {Object[]} jobs
 *   A list of DlpJobs that matches the specified filter in the request.
 *
 *   This object should have the same structure as [DlpJob]{@link google.privacy.dlp.v2.DlpJob}
 *
 * @property {string} nextPageToken
 *   The standard List next-page token.
 *
 * @typedef ListDlpJobsResponse
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListDlpJobsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListDlpJobsResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * The request message for canceling a DLP job.
 *
 * @property {string} name
 *   The name of the DlpJob resource to be cancelled.
 *
 * @typedef CancelDlpJobRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CancelDlpJobRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CancelDlpJobRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * The request message for deleting a DLP job.
 *
 * @property {string} name
 *   The name of the DlpJob resource to be deleted.
 *
 * @typedef DeleteDlpJobRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DeleteDlpJobRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DeleteDlpJobRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for CreateDeidentifyTemplate.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id or
 *   organizations/my-org-id.
 *
 * @property {Object} deidentifyTemplate
 *   The DeidentifyTemplate to create.
 *
 *   This object should have the same structure as [DeidentifyTemplate]{@link google.privacy.dlp.v2.DeidentifyTemplate}
 *
 * @property {string} templateId
 *   The template id can contain uppercase and lowercase letters,
 *   numbers, and hyphens; that is, it must match the regular
 *   expression: `[a-zA-Z\\d-_]+`. The maximum length is 100
 *   characters. Can be empty to allow the system to generate one.
 *
 * @typedef CreateDeidentifyTemplateRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CreateDeidentifyTemplateRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CreateDeidentifyTemplateRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for UpdateDeidentifyTemplate.
 *
 * @property {string} name
 *   Resource name of organization and deidentify template to be updated, for
 *   example `organizations/433245324/deidentifyTemplates/432452342` or
 *   projects/project-id/deidentifyTemplates/432452342.
 *
 * @property {Object} deidentifyTemplate
 *   New DeidentifyTemplate value.
 *
 *   This object should have the same structure as [DeidentifyTemplate]{@link google.privacy.dlp.v2.DeidentifyTemplate}
 *
 * @property {Object} updateMask
 *   Mask to control which fields get updated.
 *
 *   This object should have the same structure as [FieldMask]{@link google.protobuf.FieldMask}
 *
 * @typedef UpdateDeidentifyTemplateRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const UpdateDeidentifyTemplateRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for GetDeidentifyTemplate.
 *
 * @property {string} name
 *   Resource name of the organization and deidentify template to be read, for
 *   example `organizations/433245324/deidentifyTemplates/432452342` or
 *   projects/project-id/deidentifyTemplates/432452342.
 *
 * @typedef GetDeidentifyTemplateRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.GetDeidentifyTemplateRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const GetDeidentifyTemplateRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for ListDeidentifyTemplates.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id or
 *   organizations/my-org-id.
 *
 * @property {string} pageToken
 *   Optional page token to continue retrieval. Comes from previous call
 *   to `ListDeidentifyTemplates`.
 *
 * @property {number} pageSize
 *   Optional size of the page, can be limited by server. If zero server returns
 *   a page of max size 100.
 *
 * @property {string} orderBy
 *   Optional comma separated list of fields to order by,
 *   followed by `asc` or `desc` postfix. This list is case-insensitive,
 *   default sorting order is ascending, redundant space characters are
 *   insignificant.
 *
 *   Example: `name asc,update_time, create_time desc`
 *
 *   Supported fields are:
 *
 *   - `create_time`: corresponds to time the template was created.
 *   - `update_time`: corresponds to time the template was last updated.
 *   - `name`: corresponds to template's name.
 *   - `display_name`: corresponds to template's display name.
 *
 * @typedef ListDeidentifyTemplatesRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListDeidentifyTemplatesRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListDeidentifyTemplatesRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Response message for ListDeidentifyTemplates.
 *
 * @property {Object[]} deidentifyTemplates
 *   List of deidentify templates, up to page_size in
 *   ListDeidentifyTemplatesRequest.
 *
 *   This object should have the same structure as [DeidentifyTemplate]{@link google.privacy.dlp.v2.DeidentifyTemplate}
 *
 * @property {string} nextPageToken
 *   If the next page is available then the next page token to be used
 *   in following ListDeidentifyTemplates request.
 *
 * @typedef ListDeidentifyTemplatesResponse
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListDeidentifyTemplatesResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListDeidentifyTemplatesResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for DeleteDeidentifyTemplate.
 *
 * @property {string} name
 *   Resource name of the organization and deidentify template to be deleted,
 *   for example `organizations/433245324/deidentifyTemplates/432452342` or
 *   projects/project-id/deidentifyTemplates/432452342.
 *
 * @typedef DeleteDeidentifyTemplateRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DeleteDeidentifyTemplateRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DeleteDeidentifyTemplateRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Configuration for a custom dictionary created from a data source of any size
 * up to the maximum size defined in the
 * [limits](https://cloud.google.com/dlp/limits) page. The artifacts of
 * dictionary creation are stored in the specified Google Cloud Storage
 * location. Consider using `CustomInfoType.Dictionary` for smaller dictionaries
 * that satisfy the size requirements.
 *
 * @property {Object} outputPath
 *   Location to store dictionary artifacts in Google Cloud Storage. These files
 *   will only be accessible by project owners and the DLP API. If any of these
 *   artifacts are modified, the dictionary is considered invalid and can no
 *   longer be used.
 *
 *   This object should have the same structure as [CloudStoragePath]{@link google.privacy.dlp.v2.CloudStoragePath}
 *
 * @property {Object} cloudStorageFileSet
 *   Set of files containing newline-delimited lists of dictionary phrases.
 *
 *   This object should have the same structure as [CloudStorageFileSet]{@link google.privacy.dlp.v2.CloudStorageFileSet}
 *
 * @property {Object} bigQueryField
 *   Field in a BigQuery table where each cell represents a dictionary phrase.
 *
 *   This object should have the same structure as [BigQueryField]{@link google.privacy.dlp.v2.BigQueryField}
 *
 * @typedef LargeCustomDictionaryConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.LargeCustomDictionaryConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const LargeCustomDictionaryConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Summary statistics of a custom dictionary.
 *
 * @property {number} approxNumPhrases
 *   Approximate number of distinct phrases in the dictionary.
 *
 * @typedef LargeCustomDictionaryStats
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.LargeCustomDictionaryStats definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const LargeCustomDictionaryStats = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Configuration for a StoredInfoType.
 *
 * @property {string} displayName
 *   Display name of the StoredInfoType (max 256 characters).
 *
 * @property {string} description
 *   Description of the StoredInfoType (max 256 characters).
 *
 * @property {Object} largeCustomDictionary
 *   StoredInfoType where findings are defined by a dictionary of phrases.
 *
 *   This object should have the same structure as [LargeCustomDictionaryConfig]{@link google.privacy.dlp.v2.LargeCustomDictionaryConfig}
 *
 * @typedef StoredInfoTypeConfig
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.StoredInfoTypeConfig definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const StoredInfoTypeConfig = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Statistics for a StoredInfoType.
 *
 * @property {Object} largeCustomDictionary
 *   StoredInfoType where findings are defined by a dictionary of phrases.
 *
 *   This object should have the same structure as [LargeCustomDictionaryStats]{@link google.privacy.dlp.v2.LargeCustomDictionaryStats}
 *
 * @typedef StoredInfoTypeStats
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.StoredInfoTypeStats definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const StoredInfoTypeStats = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Version of a StoredInfoType, including the configuration used to build it,
 * create timestamp, and current state.
 *
 * @property {Object} config
 *   StoredInfoType configuration.
 *
 *   This object should have the same structure as [StoredInfoTypeConfig]{@link google.privacy.dlp.v2.StoredInfoTypeConfig}
 *
 * @property {Object} createTime
 *   Create timestamp of the version. Read-only, determined by the system
 *   when the version is created.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {number} state
 *   Stored info type version state. Read-only, updated by the system
 *   during dictionary creation.
 *
 *   The number should be among the values of [StoredInfoTypeState]{@link google.privacy.dlp.v2.StoredInfoTypeState}
 *
 * @property {Object[]} errors
 *   Errors that occurred when creating this storedInfoType version, or
 *   anomalies detected in the storedInfoType data that render it unusable. Only
 *   the five most recent errors will be displayed, with the most recent error
 *   appearing first.
 *   <p>For example, some of the data for stored custom dictionaries is put in
 *   the user's Google Cloud Storage bucket, and if this data is modified or
 *   deleted by the user or another system, the dictionary becomes invalid.
 *   <p>If any errors occur, fix the problem indicated by the error message and
 *   use the UpdateStoredInfoType API method to create another version of the
 *   storedInfoType to continue using it, reusing the same `config` if it was
 *   not the source of the error.
 *
 *   This object should have the same structure as [Error]{@link google.privacy.dlp.v2.Error}
 *
 * @property {Object} stats
 *   Statistics about this storedInfoType version.
 *
 *   This object should have the same structure as [StoredInfoTypeStats]{@link google.privacy.dlp.v2.StoredInfoTypeStats}
 *
 * @typedef StoredInfoTypeVersion
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.StoredInfoTypeVersion definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const StoredInfoTypeVersion = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * StoredInfoType resource message that contains information about the current
 * version and any pending updates.
 *
 * @property {string} name
 *   Resource name.
 *
 * @property {Object} currentVersion
 *   Current version of the stored info type.
 *
 *   This object should have the same structure as [StoredInfoTypeVersion]{@link google.privacy.dlp.v2.StoredInfoTypeVersion}
 *
 * @property {Object[]} pendingVersions
 *   Pending versions of the stored info type. Empty if no versions are
 *   pending.
 *
 *   This object should have the same structure as [StoredInfoTypeVersion]{@link google.privacy.dlp.v2.StoredInfoTypeVersion}
 *
 * @typedef StoredInfoType
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.StoredInfoType definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const StoredInfoType = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for CreateStoredInfoType.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id or
 *   organizations/my-org-id.
 *
 * @property {Object} config
 *   Configuration of the storedInfoType to create.
 *
 *   This object should have the same structure as [StoredInfoTypeConfig]{@link google.privacy.dlp.v2.StoredInfoTypeConfig}
 *
 * @property {string} storedInfoTypeId
 *   The storedInfoType ID can contain uppercase and lowercase letters,
 *   numbers, and hyphens; that is, it must match the regular
 *   expression: `[a-zA-Z\\d-_]+`. The maximum length is 100
 *   characters. Can be empty to allow the system to generate one.
 *
 * @typedef CreateStoredInfoTypeRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.CreateStoredInfoTypeRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const CreateStoredInfoTypeRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for UpdateStoredInfoType.
 *
 * @property {string} name
 *   Resource name of organization and storedInfoType to be updated, for
 *   example `organizations/433245324/storedInfoTypes/432452342` or
 *   projects/project-id/storedInfoTypes/432452342.
 *
 * @property {Object} config
 *   Updated configuration for the storedInfoType. If not provided, a new
 *   version of the storedInfoType will be created with the existing
 *   configuration.
 *
 *   This object should have the same structure as [StoredInfoTypeConfig]{@link google.privacy.dlp.v2.StoredInfoTypeConfig}
 *
 * @property {Object} updateMask
 *   Mask to control which fields get updated.
 *
 *   This object should have the same structure as [FieldMask]{@link google.protobuf.FieldMask}
 *
 * @typedef UpdateStoredInfoTypeRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.UpdateStoredInfoTypeRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const UpdateStoredInfoTypeRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for GetStoredInfoType.
 *
 * @property {string} name
 *   Resource name of the organization and storedInfoType to be read, for
 *   example `organizations/433245324/storedInfoTypes/432452342` or
 *   projects/project-id/storedInfoTypes/432452342.
 *
 * @typedef GetStoredInfoTypeRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.GetStoredInfoTypeRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const GetStoredInfoTypeRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for ListStoredInfoTypes.
 *
 * @property {string} parent
 *   The parent resource name, for example projects/my-project-id or
 *   organizations/my-org-id.
 *
 * @property {string} pageToken
 *   Optional page token to continue retrieval. Comes from previous call
 *   to `ListStoredInfoTypes`.
 *
 * @property {number} pageSize
 *   Optional size of the page, can be limited by server. If zero server returns
 *   a page of max size 100.
 *
 * @property {string} orderBy
 *   Optional comma separated list of fields to order by,
 *   followed by `asc` or `desc` postfix. This list is case-insensitive,
 *   default sorting order is ascending, redundant space characters are
 *   insignificant.
 *
 *   Example: `name asc, display_name, create_time desc`
 *
 *   Supported fields are:
 *
 *   - `create_time`: corresponds to time the most recent version of the
 *   resource was created.
 *   - `state`: corresponds to the state of the resource.
 *   - `name`: corresponds to resource name.
 *   - `display_name`: corresponds to info type's display name.
 *
 * @typedef ListStoredInfoTypesRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListStoredInfoTypesRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListStoredInfoTypesRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Response message for ListStoredInfoTypes.
 *
 * @property {Object[]} storedInfoTypes
 *   List of storedInfoTypes, up to page_size in ListStoredInfoTypesRequest.
 *
 *   This object should have the same structure as [StoredInfoType]{@link google.privacy.dlp.v2.StoredInfoType}
 *
 * @property {string} nextPageToken
 *   If the next page is available then the next page token to be used
 *   in following ListStoredInfoTypes request.
 *
 * @typedef ListStoredInfoTypesResponse
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.ListStoredInfoTypesResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const ListStoredInfoTypesResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request message for DeleteStoredInfoType.
 *
 * @property {string} name
 *   Resource name of the organization and storedInfoType to be deleted, for
 *   example `organizations/433245324/storedInfoTypes/432452342` or
 *   projects/project-id/storedInfoTypes/432452342.
 *
 * @typedef DeleteStoredInfoTypeRequest
 * @memberof google.privacy.dlp.v2
 * @see [google.privacy.dlp.v2.DeleteStoredInfoTypeRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto}
 */
const DeleteStoredInfoTypeRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Options describing which parts of the provided content should be scanned.
 *
 * @enum {number}
 * @memberof google.privacy.dlp.v2
 */
const ContentOption = {

  /**
   * Includes entire content of a file or a data stream.
   */
  CONTENT_UNSPECIFIED: 0,

  /**
   * Text content within the data, excluding any metadata.
   */
  CONTENT_TEXT: 1,

  /**
   * Images found in the data.
   */
  CONTENT_IMAGE: 2
};

/**
 * An enum to represent the various type of DLP jobs.
 *
 * @enum {number}
 * @memberof google.privacy.dlp.v2
 */
const DlpJobType = {
  DLP_JOB_TYPE_UNSPECIFIED: 0,

  /**
   * The job inspected Google Cloud for sensitive data.
   */
  INSPECT_JOB: 1,

  /**
   * The job executed a Risk Analysis computation.
   */
  RISK_ANALYSIS_JOB: 2
};

/**
 * Parts of the APIs which use certain infoTypes.
 *
 * @enum {number}
 * @memberof google.privacy.dlp.v2
 */
const InfoTypeSupportedBy = {
  ENUM_TYPE_UNSPECIFIED: 0,

  /**
   * Supported by the inspect operations.
   */
  INSPECT: 1,

  /**
   * Supported by the risk analysis operations.
   */
  RISK_ANALYSIS: 2
};

/**
 * Type of the match which can be applied to different ways of matching, like
 * Dictionary, regular expression and intersecting with findings of another
 * info type.
 *
 * @enum {number}
 * @memberof google.privacy.dlp.v2
 */
const MatchingType = {

  /**
   * Invalid.
   */
  MATCHING_TYPE_UNSPECIFIED: 0,

  /**
   * Full match.
   *
   * - Dictionary: join of Dictionary results matched complete finding quote
   * - Regex: all regex matches fill a finding quote start to end
   * - Exclude info type: completely inside affecting info types findings
   */
  MATCHING_TYPE_FULL_MATCH: 1,

  /**
   * Partial match.
   *
   * - Dictionary: at least one of the tokens in the finding matches
   * - Regex: substring of the finding matches
   * - Exclude info type: intersects with affecting info types findings
   */
  MATCHING_TYPE_PARTIAL_MATCH: 2,

  /**
   * Inverse match.
   *
   * - Dictionary: no tokens in the finding match the dictionary
   * - Regex: finding doesn't match the regex
   * - Exclude info type: no intersection with affecting info types findings
   */
  MATCHING_TYPE_INVERSE_MATCH: 3
};

/**
 * Operators available for comparing the value of fields.
 *
 * @enum {number}
 * @memberof google.privacy.dlp.v2
 */
const RelationalOperator = {
  RELATIONAL_OPERATOR_UNSPECIFIED: 0,

  /**
   * Equal. Attempts to match even with incompatible types.
   */
  EQUAL_TO: 1,

  /**
   * Not equal to. Attempts to match even with incompatible types.
   */
  NOT_EQUAL_TO: 2,

  /**
   * Greater than.
   */
  GREATER_THAN: 3,

  /**
   * Less than.
   */
  LESS_THAN: 4,

  /**
   * Greater than or equals.
   */
  GREATER_THAN_OR_EQUALS: 5,

  /**
   * Less than or equals.
   */
  LESS_THAN_OR_EQUALS: 6,

  /**
   * Exists
   */
  EXISTS: 7
};

/**
 * State of a StoredInfoType version.
 *
 * @enum {number}
 * @memberof google.privacy.dlp.v2
 */
const StoredInfoTypeState = {
  STORED_INFO_TYPE_STATE_UNSPECIFIED: 0,

  /**
   * StoredInfoType version is being created.
   */
  PENDING: 1,

  /**
   * StoredInfoType version is ready for use.
   */
  READY: 2,

  /**
   * StoredInfoType creation failed. All relevant error messages are returned in
   * the `StoredInfoTypeVersion` message.
   */
  FAILED: 3,

  /**
   * StoredInfoType is no longer valid because artifacts stored in
   * user-controlled storage were modified. To fix an invalid StoredInfoType,
   * use the `UpdateStoredInfoType` method to create a new version.
   */
  INVALID: 4
};