blob: 792f914b0be534b6c4cecb378e7c233ff3587751 [file] [log] [blame]
// Copyright 2017 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.privacy.dlp.v2beta1;
import "google/api/annotations.proto";
option go_package = "google.golang.org/genproto/googleapis/privacy/dlp/v2beta1;dlp";
option java_multiple_files = true;
option java_outer_classname = "DlpStorage";
option java_package = "com.google.privacy.dlp.v2beta1";
// Type of information detected by the API.
message InfoType {
// Name of the information type, provided by the API call ListInfoTypes.
string name = 1;
}
// General identifier of a data field in a storage service.
message FieldId {
// Column name describing the field.
string column_name = 1;
}
// Datastore partition ID.
// A partition ID identifies a grouping of entities. The grouping is always
// by project and namespace, however the namespace ID may be empty.
//
// A partition ID contains several dimensions:
// project ID and namespace ID.
message PartitionId {
// The ID of the project to which the entities belong.
string project_id = 2;
// If not empty, the ID of the namespace to which the entities belong.
string namespace_id = 4;
}
// A representation of a Datastore kind.
message KindExpression {
// The name of the kind.
string name = 1;
}
// A reference to a property relative to the Datastore kind expressions.
message PropertyReference {
// The name of the property.
// If name includes "."s, it may be interpreted as a property name path.
string name = 2;
}
// A representation of a Datastore property in a projection.
message Projection {
// The property to project.
PropertyReference property = 1;
}
// Options defining a data set within Google Cloud Datastore.
message DatastoreOptions {
// A partition ID identifies a grouping of entities. The grouping is always
// by project and namespace, however the namespace ID may be empty.
PartitionId partition_id = 1;
// The kind to process.
KindExpression kind = 2;
// Properties to scan. If none are specified, all properties will be scanned
// by default.
repeated Projection projection = 3;
}
// Options defining a file or a set of files (path ending with *) within
// a Google Cloud Storage bucket.
message CloudStorageOptions {
// Set of files to scan.
message FileSet {
// The url, in the format gs://<bucket>/<path>. Trailing wildcard in the
// path is allowed.
string url = 1;
}
FileSet file_set = 1;
}
// A location in Cloud Storage.
message CloudStoragePath {
// The url, in the format of gs://bucket/<path>.
string path = 1;
}
// Shared message indicating Cloud storage type.
message StorageConfig {
oneof type {
// Google Cloud Datastore options specification.
DatastoreOptions datastore_options = 2;
// Google Cloud Storage options specification.
CloudStorageOptions cloud_storage_options = 3;
}
}
// Record key for a finding in a Cloud Storage file.
message CloudStorageKey {
// Path to the file.
string file_path = 1;
// Byte offset of the referenced data in the file.
int64 start_offset = 2;
}
// Record key for a finding in Cloud Datastore.
message DatastoreKey {
// Datastore entity key.
Key entity_key = 1;
}
// A unique identifier for a Datastore entity.
// If a key's partition ID or any of its path kinds or names are
// reserved/read-only, the key is reserved/read-only.
// A reserved/read-only key is forbidden in certain documented contexts.
message Key {
// A (kind, ID/name) pair used to construct a key path.
//
// If either name or ID is set, the element is complete.
// If neither is set, the element is incomplete.
message PathElement {
// The kind of the entity.
// A kind matching regex `__.*__` is reserved/read-only.
// A kind must not contain more than 1500 bytes when UTF-8 encoded.
// Cannot be `""`.
string kind = 1;
// The type of ID.
oneof id_type {
// The auto-allocated ID of the entity.
// Never equal to zero. Values less than zero are discouraged and may not
// be supported in the future.
int64 id = 2;
// The name of the entity.
// A name matching regex `__.*__` is reserved/read-only.
// A name must not be more than 1500 bytes when UTF-8 encoded.
// Cannot be `""`.
string name = 3;
}
}
// Entities are partitioned into subsets, currently identified by a project
// ID and namespace ID.
// Queries are scoped to a single partition.
PartitionId partition_id = 1;
// The entity path.
// An entity path consists of one or more elements composed of a kind and a
// string or numerical identifier, which identify entities. The first
// element identifies a _root entity_, the second element identifies
// a _child_ of the root entity, the third element identifies a child of the
// second entity, and so forth. The entities identified by all prefixes of
// the path are called the element's _ancestors_.
//
// A path can never be empty, and a path can have at most 100 elements.
repeated PathElement path = 2;
}
// Message for a unique key indicating a record that contains a finding.
message RecordKey {
oneof type {
CloudStorageKey cloud_storage_key = 1;
DatastoreKey datastore_key = 2;
}
}