1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.aiplatform.v1beta1;
18
19import "google/api/field_behavior.proto";
20import "google/api/resource.proto";
21import "google/cloud/aiplatform/v1beta1/feature_monitoring_stats.proto";
22import "google/cloud/aiplatform/v1beta1/featurestore_monitoring.proto";
23import "google/protobuf/timestamp.proto";
24
25option csharp_namespace = "Google.Cloud.AIPlatform.V1Beta1";
26option go_package = "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb;aiplatformpb";
27option java_multiple_files = true;
28option java_outer_classname = "FeatureProto";
29option java_package = "com.google.cloud.aiplatform.v1beta1";
30option php_namespace = "Google\\Cloud\\AIPlatform\\V1beta1";
31option ruby_package = "Google::Cloud::AIPlatform::V1beta1";
32
33// Feature Metadata information that describes an attribute of an entity type.
34// For example, apple is an entity type, and color is a feature that describes
35// apple.
36message Feature {
37  option (google.api.resource) = {
38    type: "aiplatform.googleapis.com/Feature"
39    pattern: "projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}"
40  };
41
42  // A list of historical
43  // [SnapshotAnalysis][google.cloud.aiplatform.v1beta1.FeaturestoreMonitoringConfig.SnapshotAnalysis]
44  // or
45  // [ImportFeaturesAnalysis][google.cloud.aiplatform.v1beta1.FeaturestoreMonitoringConfig.ImportFeaturesAnalysis]
46  // stats requested by user, sorted by
47  // [FeatureStatsAnomaly.start_time][google.cloud.aiplatform.v1beta1.FeatureStatsAnomaly.start_time]
48  // descending.
49  message MonitoringStatsAnomaly {
50    // If the objective in the request is both
51    // Import Feature Analysis and Snapshot Analysis, this objective could be
52    // one of them. Otherwise, this objective should be the same as the
53    // objective in the request.
54    enum Objective {
55      // If it's OBJECTIVE_UNSPECIFIED, monitoring_stats will be empty.
56      OBJECTIVE_UNSPECIFIED = 0;
57
58      // Stats are generated by Import Feature Analysis.
59      IMPORT_FEATURE_ANALYSIS = 1;
60
61      // Stats are generated by Snapshot Analysis.
62      SNAPSHOT_ANALYSIS = 2;
63    }
64
65    // Output only. The objective for each stats.
66    Objective objective = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
67
68    // Output only. The stats and anomalies generated at specific timestamp.
69    FeatureStatsAnomaly feature_stats_anomaly = 2
70        [(google.api.field_behavior) = OUTPUT_ONLY];
71  }
72
73  // An enum representing the value type of a feature.
74  enum ValueType {
75    // The value type is unspecified.
76    VALUE_TYPE_UNSPECIFIED = 0;
77
78    // Used for Feature that is a boolean.
79    BOOL = 1;
80
81    // Used for Feature that is a list of boolean.
82    BOOL_ARRAY = 2;
83
84    // Used for Feature that is double.
85    DOUBLE = 3;
86
87    // Used for Feature that is a list of double.
88    DOUBLE_ARRAY = 4;
89
90    // Used for Feature that is INT64.
91    INT64 = 9;
92
93    // Used for Feature that is a list of INT64.
94    INT64_ARRAY = 10;
95
96    // Used for Feature that is string.
97    STRING = 11;
98
99    // Used for Feature that is a list of String.
100    STRING_ARRAY = 12;
101
102    // Used for Feature that is bytes.
103    BYTES = 13;
104  }
105
106  // Immutable. Name of the Feature.
107  // Format:
108  // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}`
109  //
110  // The last part feature is assigned by the client. The feature can be up to
111  // 64 characters long and can consist only of ASCII Latin letters A-Z and a-z,
112  // underscore(_), and ASCII digits 0-9 starting with a letter. The value will
113  // be unique given an entity type.
114  string name = 1 [(google.api.field_behavior) = IMMUTABLE];
115
116  // Description of the Feature.
117  string description = 2;
118
119  // Required. Immutable. Type of Feature value.
120  ValueType value_type = 3 [
121    (google.api.field_behavior) = REQUIRED,
122    (google.api.field_behavior) = IMMUTABLE
123  ];
124
125  // Output only. Timestamp when this EntityType was created.
126  google.protobuf.Timestamp create_time = 4
127      [(google.api.field_behavior) = OUTPUT_ONLY];
128
129  // Output only. Timestamp when this EntityType was most recently updated.
130  google.protobuf.Timestamp update_time = 5
131      [(google.api.field_behavior) = OUTPUT_ONLY];
132
133  // Optional. The labels with user-defined metadata to organize your Features.
134  //
135  // Label keys and values can be no longer than 64 characters
136  // (Unicode codepoints), can only contain lowercase letters, numeric
137  // characters, underscores and dashes. International characters are allowed.
138  //
139  // See https://goo.gl/xmQnxf for more information on and examples of labels.
140  // No more than 64 user labels can be associated with one Feature (System
141  // labels are excluded)."
142  // System reserved label keys are prefixed with "aiplatform.googleapis.com/"
143  // and are immutable.
144  map<string, string> labels = 6 [(google.api.field_behavior) = OPTIONAL];
145
146  // Used to perform a consistent read-modify-write updates. If not set, a blind
147  // "overwrite" update happens.
148  string etag = 7;
149
150  // Optional. Deprecated: The custom monitoring configuration for this Feature,
151  // if not set, use the monitoring_config defined for the EntityType this
152  // Feature belongs to. Only Features with type
153  // ([Feature.ValueType][google.cloud.aiplatform.v1beta1.Feature.ValueType])
154  // BOOL, STRING, DOUBLE or INT64 can enable monitoring.
155  //
156  // If this is populated with
157  // [FeaturestoreMonitoringConfig.disabled][] = true, snapshot analysis
158  // monitoring is disabled; if
159  // [FeaturestoreMonitoringConfig.monitoring_interval][] specified, snapshot
160  // analysis monitoring is enabled. Otherwise, snapshot analysis monitoring
161  // config is same as the EntityType's this Feature belongs to.
162  FeaturestoreMonitoringConfig monitoring_config = 9
163      [deprecated = true, (google.api.field_behavior) = OPTIONAL];
164
165  // Optional. If not set, use the monitoring_config defined for the EntityType
166  // this Feature belongs to. Only Features with type
167  // ([Feature.ValueType][google.cloud.aiplatform.v1beta1.Feature.ValueType])
168  // BOOL, STRING, DOUBLE or INT64 can enable monitoring.
169  //
170  // If set to true, all types of data monitoring are disabled despite the
171  // config on EntityType.
172  bool disable_monitoring = 12 [(google.api.field_behavior) = OPTIONAL];
173
174  // Output only. A list of historical
175  // [SnapshotAnalysis][google.cloud.aiplatform.v1beta1.FeaturestoreMonitoringConfig.SnapshotAnalysis]
176  // stats requested by user, sorted by
177  // [FeatureStatsAnomaly.start_time][google.cloud.aiplatform.v1beta1.FeatureStatsAnomaly.start_time]
178  // descending.
179  repeated FeatureStatsAnomaly monitoring_stats = 10
180      [(google.api.field_behavior) = OUTPUT_ONLY];
181
182  // Output only. The list of historical stats and anomalies with specified
183  // objectives.
184  repeated MonitoringStatsAnomaly monitoring_stats_anomalies = 11
185      [(google.api.field_behavior) = OUTPUT_ONLY];
186}
187