google-backstory 0.a → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5639da2b5abf65a2cb48086225c5af2fdaed46fd86edfdcbff9eca6451d5c0df
4
- data.tar.gz: f4533d954b7dec2a7e241e75964eed42ca53287e4910622f3ea02448fad3439d
3
+ metadata.gz: a8a7a7a745801e4f69210c2fa8861de431e16a55f6a405a30f2b31f8fbfc6c74
4
+ data.tar.gz: 8c18b5ddc75aa577b6afd9e6a71decece8f5ed2056e3fcba0ea399cbb8b169b6
5
5
  SHA512:
6
- metadata.gz: 376dd5395aa33ce263e803593493a89a1383fef040c93b2a0de2d9b3824ea0e26690baec7d02e5ff4baa79eee09371a007b32ef5bb60612e7daeac5100d6e4d5
7
- data.tar.gz: f9c59a59e85c87f5b28630f77b5e0338828fbda15c0e28ab825cffd27d17fe52c6af88feeca20a01bf58052a1fa435af35de5ae63b9e8e6df395cbb1b3b309c4
6
+ metadata.gz: c7a81023af52d95d1734791819ecd43045c4a628366e60c0e966c1862e18f33e9d16af754acaba4300609e03453ebb2eb03470ff63fb04a2fbe94e1706a53443
7
+ data.tar.gz: 65127433be485d05f07c986cea702755ddb37f3645e5a68fad4fd9c91e826194e11dca849e785e57ba8004e5b8ef0383aff79bf049b6e95f2281002d98ce772c
data/CHANGELOG.md ADDED
@@ -0,0 +1,9 @@
1
+ # Changelog
2
+
3
+ ### 0.1.0 (2026-05-19)
4
+
5
+ #### Features
6
+
7
+ * Initial generation of google-backstory ([#411](https://github.com/googleapis/common-protos-ruby/issues/411))
8
+
9
+ ## Changelog
data/README.md CHANGED
@@ -1,8 +1,9 @@
1
- # Placeholder for Ruby gem google-backstory
1
+ # Common Protocol Buffer Types
2
2
 
3
- This is a placeholder for the future Google-authored gem google-backstory.
4
- This placeholder is being released on 2026-05-18 in order to reserve the name.
5
- The final gem should be available shortly after that date. If it has not been
6
- released in a timely manner, or if this placeholder interferes with your work,
7
- you can contact the Google Ruby team by opening an issue in the GitHub
8
- repository https://github.com/googleapis/google-cloud-ruby.
3
+ This gem contains common protocol buffer types used by certain client libraries.
4
+
5
+ ## Installation
6
+
7
+ This library is generally brought in as a dependency by Google API client
8
+ libraries that use it. However, you can include it directly in your
9
+ application's Gemfile if you need to use its protos directly.
@@ -0,0 +1,439 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: backstory/collection.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'backstory/entity_pb'
8
+ require 'backstory/id_pb'
9
+ require 'backstory/udm_pb'
10
+ require 'google/protobuf/duration_pb'
11
+ require 'google/protobuf/struct_pb'
12
+ require 'google/protobuf/timestamp_pb'
13
+ require 'google/type/interval_pb'
14
+
15
+
16
+ descriptor_data = "\n\x1a\x62\x61\x63kstory/collection.proto\x12\x10google.backstory\x1a\x16\x62\x61\x63kstory/entity.proto\x1a\x12\x62\x61\x63kstory/id.proto\x1a\x13\x62\x61\x63kstory/udm.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1agoogle/type/interval.proto\"\xc2\x0b\n\nCollection\x12\n\n\x02id\x18\x07 \x01(\t\x12\x39\n\x04type\x18\x01 \x01(\x0e\x32+.google.backstory.Collection.CollectionType\x12\x34\n\x0cid_namespace\x18\x0c \x01(\x0e\x32\x1e.google.backstory.Id.Namespace\x12\x30\n\x0c\x63reated_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x11last_updated_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12*\n\x0btime_window\x18\x08 \x01(\x0b\x32\x15.google.type.Interval\x12\x36\n\x13\x63ollection_elements\x18\t \x03(\x0b\x32\x19.google.backstory.Element\x12\x33\n\tdetection\x18\x03 \x03(\x0b\x32 .google.backstory.SecurityResult\x12\x32\n\x0e\x64\x65tection_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x36\n\rinvestigation\x18\x04 \x01(\x0b\x32\x1f.google.backstory.Investigation\x12\x0c\n\x04tags\x18\x0b \x03(\t\x12\x46\n\x16response_platform_info\x18\r \x01(\x0b\x32&.google.backstory.ResponsePlatformInfo\x12\x11\n\tcase_name\x18\x0e \x01(\t\x12\x12\n\nsoar_alert\x18\x11 \x01(\x08\x12@\n\x13soar_alert_metadata\x18\x12 \x01(\x0b\x32#.google.backstory.SoarAlertMetadata\x12\x19\n\x11\x64\x61ta_access_scope\x18\x13 \x01(\t\x12U\n\x18\x64\x65tection_timing_details\x18\x14 \x03(\x0e\x32\x33.google.backstory.Collection.DetectionTimingDetails\x12\x39\n\x0flatency_metrics\x18\x15 \x01(\x0b\x32 .google.backstory.LatencyMetrics\x12\x45\n\x12rule_run_frequency\x18\x16 \x01(\x0e\x32).google.backstory.Collection.RunFrequency\x12\x1d\n\x15simulated_event_count\x18\x17 \x01(\x03\x12\x1d\n\x15simulated_event_names\x18\x18 \x03(\t\"\xb5\x01\n\x0e\x43ollectionType\x12\x1f\n\x1b\x43OLLECTION_TYPE_UNSPECIFIED\x10\x00\x12\x13\n\x0fTELEMETRY_ALERT\x10\x01\x12\x10\n\x0cGCTI_FINDING\x10\x02\x12\x13\n\x0fUPPERCASE_ALERT\x10\x02\x12\x12\n\x0eRULE_DETECTION\x10\x03\x12\x1e\n\x1aMACHINE_INTELLIGENCE_ALERT\x10\x04\x12\x0e\n\nSOAR_ALERT\x10\x05\x1a\x02\x10\x01\"\x95\x01\n\x16\x44\x65tectionTimingDetails\x12(\n$DETECTION_TIMING_DETAILS_UNSPECIFIED\x10\x00\x12)\n%DETECTION_TIMING_DETAILS_REPROCESSING\x10\x01\x12&\n\"DETECTION_TIMING_DETAILS_RETROHUNT\x10\x02\"|\n\x0cRunFrequency\x12\x1d\n\x19RUN_FREQUENCY_UNSPECIFIED\x10\x00\x12\x1a\n\x16RUN_FREQUENCY_REALTIME\x10\x01\x12\x18\n\x14RUN_FREQUENCY_HOURLY\x10\x02\x12\x17\n\x13RUN_FREQUENCY_DAILY\x10\x03J\x04\x08\x0f\x10\x10J\x04\x08\x10\x10\x11\"\xfe\x01\n\x15\x45ntityGraphEnrichment\x12\x12\n\ndata_table\x18\x01 \x01(\t\x12O\n\x0f\x65nrichment_type\x18\x03 \x01(\x0e\x32\x36.google.backstory.EntityGraphEnrichment.EnrichmentType\x12\x33\n\x11overridden_entity\x18\x02 \x01(\x0b\x32\x18.google.backstory.Entity\"K\n\x0e\x45nrichmentType\x12\x1f\n\x1b\x45NRICHMENT_TYPE_UNSPECIFIED\x10\x00\x12\n\n\x06\x41PPEND\x10\x01\x12\x0c\n\x08OVERRIDE\x10\x02\"\\\n\x10\x44\x61taTableRowInfo\x12\x12\n\ndata_table\x18\x01 \x01(\t\x12$\n\x03row\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x0e\n\x06row_id\x18\x03 \x01(\t\"\xaa\x02\n\x0eLatencyMetrics\x12\x39\n\x15oldest_ingestion_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x39\n\x15newest_ingestion_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x11oldest_event_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x11newest_event_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x11ingestion_latency\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x9d\x02\n\tReference\x12$\n\x05\x65vent\x18\x01 \x01(\x0b\x32\x15.google.backstory.UDM\x12(\n\x06\x65ntity\x18\x02 \x01(\x0b\x32\x18.google.backstory.Entity\x12\x42\n\x16joined_data_table_rows\x18\x04 \x03(\x0b\x32\".google.backstory.DataTableRowInfo\x12\x41\n\x10graph_enrichment\x18\x05 \x01(\x0b\x32\'.google.backstory.EntityGraphEnrichment\x12 \n\x02id\x18\x03 \x01(\x0b\x32\x14.google.backstory.Id\x12\x17\n\x0flog_batch_token\x18\x06 \x01(\t\"\xd7\x01\n\x07\x45lement\x12\x35\n\x0b\x61ssociation\x18\x01 \x01(\x0b\x32 .google.backstory.SecurityResult\x12/\n\nreferences\x18\x02 \x03(\x0b\x32\x1b.google.backstory.Reference\x12\r\n\x05label\x18\x03 \x01(\t\x12\x1a\n\x12references_sampled\x18\x04 \x01(\x08\x12\x39\n\x0flatency_metrics\x18\x05 \x01(\x0b\x32 .google.backstory.LatencyMetrics\"\xeb\x01\n\x14ResponsePlatformInfo\x12\x10\n\x08\x61lert_id\x18\x02 \x01(\t\x12[\n\x16response_platform_type\x18\x03 \x01(\x0e\x32;.google.backstory.ResponsePlatformInfo.ResponsePlatformType\"d\n\x14ResponsePlatformType\x12&\n\"RESPONSE_PLATFORM_TYPE_UNSPECIFIED\x10\x00\x12$\n RESPONSE_PLATFORM_TYPE_SIEMPLIFY\x10\x01\"\xae\x01\n\x11SoarAlertMetadata\x12\x10\n\x08\x61lert_id\x18\x01 \x01(\t\x12\x13\n\x0bsource_rule\x18\x02 \x01(\t\x12\x0e\n\x06vendor\x18\x03 \x01(\t\x12\x15\n\rsource_system\x18\x04 \x01(\t\x12\x0f\n\x07product\x18\x05 \x01(\t\x12\x1f\n\x17source_system_ticket_id\x18\x06 \x01(\t\x12\x19\n\x11source_system_uri\x18\x07 \x01(\tB\x8d\x01\n\x14\x63om.google.backstoryP\x01Z9google.golang.org/genproto/googleapis/backstory;backstory\xaa\x02\x10Google.Backstory\xca\x02\x10Google\\Backstory\xea\x02\x11Google::Backstoryb\x06proto3"
17
+
18
+ pool = Google::Protobuf::DescriptorPool.generated_pool
19
+
20
+ begin
21
+ pool.add_serialized_file(descriptor_data)
22
+ rescue TypeError
23
+ # Compatibility code: will be removed in the next major version.
24
+ require 'google/protobuf/descriptor_pb'
25
+ parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
26
+ parsed.clear_dependency
27
+ serialized = parsed.class.encode(parsed)
28
+ file = pool.add_serialized_file(serialized)
29
+ warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
30
+ imports = [
31
+ ["google.protobuf.Timestamp", "google/protobuf/timestamp.proto"],
32
+ ["google.type.Interval", "google/type/interval.proto"],
33
+ ["google.backstory.SecurityResult", "backstory/udm.proto"],
34
+ ["google.backstory.Entity", "backstory/entity.proto"],
35
+ ["google.protobuf.Struct", "google/protobuf/struct.proto"],
36
+ ["google.protobuf.Duration", "google/protobuf/duration.proto"],
37
+ ["google.backstory.Id", "backstory/id.proto"],
38
+ ]
39
+ imports.each do |type_name, expected_filename|
40
+ import_file = pool.lookup(type_name).file_descriptor
41
+ if import_file.name != expected_filename
42
+ warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
43
+ end
44
+ end
45
+ warn "Each proto file must use a consistent fully-qualified name."
46
+ warn "This will become an error in the next major version."
47
+ end
48
+
49
+ module Google
50
+ module Backstory
51
+ Collection = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.Collection").msgclass
52
+ Collection::CollectionType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.Collection.CollectionType").enummodule
53
+ Collection::DetectionTimingDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.Collection.DetectionTimingDetails").enummodule
54
+ Collection::RunFrequency = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.Collection.RunFrequency").enummodule
55
+ EntityGraphEnrichment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.EntityGraphEnrichment").msgclass
56
+ EntityGraphEnrichment::EnrichmentType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.EntityGraphEnrichment.EnrichmentType").enummodule
57
+ DataTableRowInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.DataTableRowInfo").msgclass
58
+ LatencyMetrics = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.LatencyMetrics").msgclass
59
+ Reference = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.Reference").msgclass
60
+ Element = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.Element").msgclass
61
+ ResponsePlatformInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.ResponsePlatformInfo").msgclass
62
+ ResponsePlatformInfo::ResponsePlatformType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.ResponsePlatformInfo.ResponsePlatformType").enummodule
63
+ SoarAlertMetadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.SoarAlertMetadata").msgclass
64
+ end
65
+ end
66
+
67
+ #### Source proto file: backstory/collection.proto ####
68
+ #
69
+ # // Copyright 2026 Google LLC
70
+ # //
71
+ # // Licensed under the Apache License, Version 2.0 (the "License");
72
+ # // you may not use this file except in compliance with the License.
73
+ # // You may obtain a copy of the License at
74
+ # //
75
+ # // http://www.apache.org/licenses/LICENSE-2.0
76
+ # //
77
+ # // Unless required by applicable law or agreed to in writing, software
78
+ # // distributed under the License is distributed on an "AS IS" BASIS,
79
+ # // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
80
+ # // See the License for the specific language governing permissions and
81
+ # // limitations under the License.
82
+ #
83
+ # syntax = "proto3";
84
+ #
85
+ # package google.backstory;
86
+ #
87
+ # import "backstory/entity.proto";
88
+ # import "backstory/id.proto";
89
+ # import "backstory/udm.proto";
90
+ # import "google/protobuf/duration.proto";
91
+ # import "google/protobuf/struct.proto";
92
+ # import "google/protobuf/timestamp.proto";
93
+ # import "google/type/interval.proto";
94
+ #
95
+ # option csharp_namespace = "Google.Backstory";
96
+ # option go_package = "google.golang.org/genproto/googleapis/backstory;backstory";
97
+ # option java_multiple_files = true;
98
+ # option java_package = "com.google.backstory";
99
+ # option php_namespace = "Google\\Backstory";
100
+ # option ruby_package = "Google::Backstory";
101
+ #
102
+ # // Collection represents a container of objects (such as events, entity
103
+ # // context metadata, detection finding metadata) and state (such as
104
+ # // investigation details).
105
+ # //
106
+ # // An example use case for Collection is to model a detection and investigation
107
+ # // from detection finding metadata to investigative state collected in the
108
+ # // course of the investigation. For more complex investigation and response
109
+ # // workflows a Collection could represent an incident consisting of multiple
110
+ # // child findings or incidents. This can be expanded on to model remediation
111
+ # // elements of a full detection and response workflow.
112
+ # //
113
+ # message Collection {
114
+ # // The type of the collection which will indicate which other fields are
115
+ # // relevant. For example, detection finding collections will populate the
116
+ # // detection field. Findings that evolve into investigations will populate the
117
+ # // investigation field.
118
+ # enum CollectionType {
119
+ # option allow_alias = true;
120
+ #
121
+ # // An unspecified collection type.
122
+ # COLLECTION_TYPE_UNSPECIFIED = 0;
123
+ #
124
+ # // An alert reported in customer telemetry.
125
+ # TELEMETRY_ALERT = 1;
126
+ #
127
+ # // A finding from the Uppercase team.
128
+ # GCTI_FINDING = 2;
129
+ #
130
+ # UPPERCASE_ALERT = 2;
131
+ #
132
+ # // A detection found by applying a rule.
133
+ # RULE_DETECTION = 3;
134
+ #
135
+ # // An alert generated by Chronicle machine learning models.
136
+ # MACHINE_INTELLIGENCE_ALERT = 4;
137
+ #
138
+ # // An alert coming from other SIEMs via Chronicle SOAR.
139
+ # SOAR_ALERT = 5;
140
+ # }
141
+ #
142
+ # // Detection timing details for the collection.
143
+ # enum DetectionTimingDetails {
144
+ # // Detection timing details are unspecified.
145
+ # DETECTION_TIMING_DETAILS_UNSPECIFIED = 0;
146
+ #
147
+ # // Detection is generated by a reprocessing run.
148
+ # DETECTION_TIMING_DETAILS_REPROCESSING = 1;
149
+ #
150
+ # // Detection is generated by a retrohunt run.
151
+ # DETECTION_TIMING_DETAILS_RETROHUNT = 2;
152
+ # }
153
+ #
154
+ # // Run frequencies used by rule executions.
155
+ # enum RunFrequency {
156
+ # // Unspecified run frequency.
157
+ # RUN_FREQUENCY_UNSPECIFIED = 0;
158
+ #
159
+ # // Real-time run frequency.
160
+ # RUN_FREQUENCY_REALTIME = 1;
161
+ #
162
+ # // Executes once an hour.
163
+ # RUN_FREQUENCY_HOURLY = 2;
164
+ #
165
+ # // Executes once a day.
166
+ # RUN_FREQUENCY_DAILY = 3;
167
+ # }
168
+ #
169
+ # // Unique ID for the collection.
170
+ # // The ID is specific to the type of collection. For example, with rule
171
+ # // detections this is the detection ID.
172
+ # string id = 7;
173
+ #
174
+ # // What the collection represents.
175
+ # CollectionType type = 1;
176
+ #
177
+ # // The ID namespace used for the Collection.
178
+ # Id.Namespace id_namespace = 12;
179
+ #
180
+ # // Time the collection was created.
181
+ # google.protobuf.Timestamp created_time = 5;
182
+ #
183
+ # // Time the collection was last updated.
184
+ # google.protobuf.Timestamp last_updated_time = 6;
185
+ #
186
+ # // Time interval that the collection represents.
187
+ # google.type.Interval time_window = 8;
188
+ #
189
+ # // Constituent elements of the collection. Each element shares an association
190
+ # // that groups it together and is a component of the overall collection. For
191
+ # // example, a detection collection may have several constituent elements that
192
+ # // each share a correlation association that together represent a particular
193
+ # // pattern or behavior.
194
+ # repeated Element collection_elements = 9;
195
+ #
196
+ # // Detection metadata for findings that represent detections, can include
197
+ # // rule details, machine learning model metadata, and indicators implicated
198
+ # // in the detection (using the .about field).
199
+ # repeated SecurityResult detection = 3;
200
+ #
201
+ # // Timestamp within the time_window related to the time of the
202
+ # // collection_elements. For Rule Detections, this timestamp is the end of the
203
+ # // the time_window for multi-event rules or the time of the event for single
204
+ # // event rules. For late-arriving events that trigger new alerts, the
205
+ # // detection_time will be the event time of the event.
206
+ # google.protobuf.Timestamp detection_time = 10;
207
+ #
208
+ # // Consolidated investigation details (categorization, status, etc) typically
209
+ # // for collections that begin as detection findings and then evolve with
210
+ # // analyst action and feedback into investigations around the detection
211
+ # // output.
212
+ # Investigation investigation = 4;
213
+ #
214
+ # // Tags set by UC/DSML/RE for the Finding during creation.
215
+ # repeated string tags = 11;
216
+ #
217
+ # // Alert related info of this same alert in customer's SOAR platform.
218
+ # ResponsePlatformInfo response_platform_info = 13;
219
+ #
220
+ # // The resource name of the Case that this collection belongs to.
221
+ # // Example:
222
+ # // projects/{project id}/locations/{region}/chronicle/cases/{internal_case_id}
223
+ # string case_name = 14;
224
+ #
225
+ # // The current primary analyst feedback.
226
+ # // This does not include the history of feedback given, which may be supplied
227
+ # // in `feedback`.
228
+ # reserved 15;
229
+ #
230
+ # // The history of feedback submitted by analysts for this finding,
231
+ # // in descending order by timestamp.
232
+ # // This field is limited to the most recent 1000 feedback events.
233
+ # // The primary feedback will also be included in this list.
234
+ # reserved 16;
235
+ #
236
+ # // A boolean field indicating that the alert is present in SOAR.
237
+ # bool soar_alert = 17;
238
+ #
239
+ # // Metadata fields of alerts coming from other SIEM systems via SOAR.
240
+ # SoarAlertMetadata soar_alert_metadata = 18;
241
+ #
242
+ # // The resource name of the DataAccessScope of this collection.
243
+ # string data_access_scope = 19;
244
+ #
245
+ # // Detection timing details for the collection. These details are used to
246
+ # // determine prossible causes of latency for the detection.
247
+ # // This field is only set for detections that are generated by rules.
248
+ # repeated DetectionTimingDetails detection_timing_details = 20;
249
+ #
250
+ # // The latency metrics for the specific detection. These metrics are
251
+ # // calculated from ALL of the events that contribute to the detection, not
252
+ # // just the sampled ones.
253
+ # LatencyMetrics latency_metrics = 21;
254
+ #
255
+ # // The run frequency of the rule when it generated the detection.
256
+ # RunFrequency rule_run_frequency = 22;
257
+ #
258
+ # // The total number of simulated events that contributed to this detection.
259
+ # // Simulated events are realistic threat sequences (Raw Logs or UDM)
260
+ # // programmatically delivered into the production ingestion pipeline to verify
261
+ # // the entire detection lifecycle—from identification to action.
262
+ # int64 simulated_event_count = 23;
263
+ #
264
+ # // The set of all values from event ingestion_labels where SIMULATED is set as
265
+ # // the key, for all simulated events that participated in this detection.
266
+ # repeated string simulated_event_names = 24;
267
+ # }
268
+ #
269
+ # // EntityGraphEnrichment contains the data table name and the enrichment applied
270
+ # // to the entity.
271
+ # message EntityGraphEnrichment {
272
+ # // Type of enrichment.
273
+ # enum EnrichmentType {
274
+ # // Enrichment type is unspecified.
275
+ # ENRICHMENT_TYPE_UNSPECIFIED = 0;
276
+ #
277
+ # // The data table was appended to the entity graph.
278
+ # APPEND = 1;
279
+ #
280
+ # // The entity graph was overridden by the data table.
281
+ # OVERRIDE = 2;
282
+ # }
283
+ #
284
+ # // The name of the data table.
285
+ # string data_table = 1;
286
+ #
287
+ # // The type of enrichment.
288
+ # EnrichmentType enrichment_type = 3;
289
+ #
290
+ # // The entity which has only the overridden fields populated. Only populated
291
+ # // if the enrichment type is OVERRIDE.
292
+ # Entity overridden_entity = 2;
293
+ # }
294
+ #
295
+ # // DataTableRowInfo captures information about a data table row including the
296
+ # // name of the data table.
297
+ # message DataTableRowInfo {
298
+ # // The name of data table.
299
+ # string data_table = 1;
300
+ #
301
+ # // Stores the key value pair for a data table row where the key is the name
302
+ # // of the column for the given value.
303
+ # google.protobuf.Struct row = 2;
304
+ #
305
+ # // The row id of the data table row.
306
+ # string row_id = 3;
307
+ # }
308
+ #
309
+ # // LatencyMetrics contains relevant timestamps for measuring latency per event
310
+ # // variable. These metrics are calculated from ALL of the events that contribute
311
+ # // to the detection, not just the sampled ones.
312
+ # message LatencyMetrics {
313
+ # // The oldest ingestion timestamp from the events used to create the
314
+ # // detection.
315
+ # google.protobuf.Timestamp oldest_ingestion_time = 1;
316
+ #
317
+ # // The newest (most recent) ingestion timestamp from the events used to
318
+ # // create the detection.
319
+ # google.protobuf.Timestamp newest_ingestion_time = 2;
320
+ #
321
+ # // The oldest event timestamp from the events used to create the detection.
322
+ # google.protobuf.Timestamp oldest_event_time = 3;
323
+ #
324
+ # // The newest (most recent) event timestamp from the events used to create
325
+ # // the detection.
326
+ # google.protobuf.Timestamp newest_event_time = 4;
327
+ #
328
+ # // The difference between newest ingestion timestamp and newest event
329
+ # // timestamp.
330
+ # google.protobuf.Duration ingestion_latency = 5;
331
+ # }
332
+ #
333
+ # // Reference to model primatives including event and entity. As support is added
334
+ # // for fast retrieval of objects by identifiers, this will be
335
+ # // expanded to include ID references rather than full object copies.
336
+ # message Reference {
337
+ # // Only one of event or entity will be populated for a single
338
+ # // reference.
339
+ # // Start one-of
340
+ # // Event being referenced.
341
+ # UDM event = 1;
342
+ #
343
+ # // Entity being referenced. In cases where the entity graph is overridden by
344
+ # // data table, this will represent the original entity.
345
+ # // End one-of
346
+ # Entity entity = 2;
347
+ #
348
+ # // The data table rows joined with the event.
349
+ # repeated DataTableRowInfo joined_data_table_rows = 4;
350
+ #
351
+ # // The entity graph enrichment details. Only set when the reference is an
352
+ # // Entity which has been overridden by a data table or appended from a data
353
+ # // table.
354
+ # EntityGraphEnrichment graph_enrichment = 5;
355
+ #
356
+ # // Id being referenced. This field will also be populated for both event and
357
+ # // entity with the event id. For detections, only this field will be
358
+ # // populated.
359
+ # Id id = 3;
360
+ #
361
+ # // The log batch token of the event being referenced. This field is
362
+ # // used to fetch the raw log associated with the event in some legacy systems.
363
+ # // This field is only populated for events/entities.
364
+ # string log_batch_token = 6;
365
+ # }
366
+ #
367
+ # message Element {
368
+ # // Metadata that provides the relevant association for the references in the
369
+ # // element. For a detection, this can be the correlated aspect of the
370
+ # // references that contributed to the overall detection. For example, may
371
+ # // include sub-rule condition, machine learning model metadata, and/or
372
+ # // indicators implicated in this component of the detection
373
+ # // (using the .about field).
374
+ # SecurityResult association = 1;
375
+ #
376
+ # // References to model primatives including events and entities that share a
377
+ # // common association.
378
+ # // Even though a reference can have both UDM and entity, a collection of
379
+ # // references (of a single element) will only have one type of message in it
380
+ # // (either UDM / Entity).
381
+ # repeated Reference references = 2;
382
+ #
383
+ # // A name that labels the entire references group.
384
+ # string label = 3;
385
+ #
386
+ # // Copied from the detection event_sample.too_many_event_samples field.
387
+ # // If true, the number of references will be capped at the sample limit
388
+ # // (set at rule service).
389
+ # // This is applicable to both UDM references and Entity references.
390
+ # bool references_sampled = 4;
391
+ #
392
+ # // Latency metrics for the specific element. These are
393
+ # // calculated from all the contributing events or entities for a single event
394
+ # // variable, not just the sampled ones included in references. This is
395
+ # // currently only populated for UDM events.
396
+ # LatencyMetrics latency_metrics = 5;
397
+ # }
398
+ #
399
+ # // Related info of an Alert in customer's SOAR platform.
400
+ # message ResponsePlatformInfo {
401
+ # // Available response platforms.
402
+ # enum ResponsePlatformType {
403
+ # // Response platform not specified.
404
+ # RESPONSE_PLATFORM_TYPE_UNSPECIFIED = 0;
405
+ #
406
+ # // Siemplify
407
+ # RESPONSE_PLATFORM_TYPE_SIEMPLIFY = 1;
408
+ # }
409
+ #
410
+ # // Id of the alert in SOAR product.
411
+ # string alert_id = 2;
412
+ #
413
+ # // Type of SOAR product.
414
+ # ResponsePlatformType response_platform_type = 3;
415
+ # }
416
+ #
417
+ # // Metadata fields of alerts coming from other SIEM systems.
418
+ # message SoarAlertMetadata {
419
+ # // Alert ID in the source SIEM system.
420
+ # string alert_id = 1;
421
+ #
422
+ # // Name of the rule triggering the alert in the source SIEM.
423
+ # string source_rule = 2;
424
+ #
425
+ # // Name of the vendor.
426
+ # string vendor = 3;
427
+ #
428
+ # // Name of the Source SIEM system.
429
+ # string source_system = 4;
430
+ #
431
+ # // Name of the product the alert is coming from.
432
+ # string product = 5;
433
+ #
434
+ # // Ticket id for the alert in the source system.
435
+ # string source_system_ticket_id = 6;
436
+ #
437
+ # // Url to the source SIEM system.
438
+ # string source_system_uri = 7;
439
+ # }
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: backstory/data_access.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+
8
+ descriptor_data = "\n\x1b\x62\x61\x63kstory/data_access.proto\x12\x10google.backstory\"6\n\x18\x44\x61taAccessIngestionLabel\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xd4\x01\n\x10\x44\x61taAccessLabels\x12\x11\n\tlog_types\x18\x01 \x03(\t\x12\x1c\n\x10ingestion_labels\x18\x02 \x03(\tB\x02\x18\x01\x12\x12\n\nnamespaces\x18\x03 \x03(\t\x12\x15\n\rcustom_labels\x18\x04 \x03(\t\x12G\n\x13ingestion_kv_labels\x18\x05 \x03(\x0b\x32*.google.backstory.DataAccessIngestionLabel\x12\x1b\n\x13\x61llow_scoped_access\x18\x06 \x01(\x08\x42\x8d\x01\n\x14\x63om.google.backstoryP\x01Z9google.golang.org/genproto/googleapis/backstory;backstory\xaa\x02\x10Google.Backstory\xca\x02\x10Google\\Backstory\xea\x02\x11Google::Backstoryb\x06proto3"
9
+
10
+ pool = Google::Protobuf::DescriptorPool.generated_pool
11
+
12
+ begin
13
+ pool.add_serialized_file(descriptor_data)
14
+ rescue TypeError
15
+ # Compatibility code: will be removed in the next major version.
16
+ require 'google/protobuf/descriptor_pb'
17
+ parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
18
+ parsed.clear_dependency
19
+ serialized = parsed.class.encode(parsed)
20
+ file = pool.add_serialized_file(serialized)
21
+ warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
22
+ imports = [
23
+ ]
24
+ imports.each do |type_name, expected_filename|
25
+ import_file = pool.lookup(type_name).file_descriptor
26
+ if import_file.name != expected_filename
27
+ warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
28
+ end
29
+ end
30
+ warn "Each proto file must use a consistent fully-qualified name."
31
+ warn "This will become an error in the next major version."
32
+ end
33
+
34
+ module Google
35
+ module Backstory
36
+ DataAccessIngestionLabel = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.DataAccessIngestionLabel").msgclass
37
+ DataAccessLabels = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.backstory.DataAccessLabels").msgclass
38
+ end
39
+ end
40
+
41
+ #### Source proto file: backstory/data_access.proto ####
42
+ #
43
+ # // Copyright 2026 Google LLC
44
+ # //
45
+ # // Licensed under the Apache License, Version 2.0 (the "License");
46
+ # // you may not use this file except in compliance with the License.
47
+ # // You may obtain a copy of the License at
48
+ # //
49
+ # // http://www.apache.org/licenses/LICENSE-2.0
50
+ # //
51
+ # // Unless required by applicable law or agreed to in writing, software
52
+ # // distributed under the License is distributed on an "AS IS" BASIS,
53
+ # // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
54
+ # // See the License for the specific language governing permissions and
55
+ # // limitations under the License.
56
+ #
57
+ # syntax = "proto3";
58
+ #
59
+ # package google.backstory;
60
+ #
61
+ # option csharp_namespace = "Google.Backstory";
62
+ # option go_package = "google.golang.org/genproto/googleapis/backstory;backstory";
63
+ # option java_multiple_files = true;
64
+ # option java_package = "com.google.backstory";
65
+ # option php_namespace = "Google\\Backstory";
66
+ # option ruby_package = "Google::Backstory";
67
+ #
68
+ # // Label used in data access for ingestion.
69
+ # message DataAccessIngestionLabel {
70
+ # // The key.
71
+ # string key = 1;
72
+ #
73
+ # // The value.
74
+ # string value = 2;
75
+ # }
76
+ #
77
+ # // Label used in data access.
78
+ # message DataAccessLabels {
79
+ # // All the LogType labels.
80
+ # repeated string log_types = 1;
81
+ #
82
+ # // All the ingestion labels.
83
+ # repeated string ingestion_labels = 2 [deprecated = true];
84
+ #
85
+ # // All the namespaces.
86
+ # repeated string namespaces = 3;
87
+ #
88
+ # // All the complex labels (UDM search syntax based).
89
+ # repeated string custom_labels = 4;
90
+ #
91
+ # // All the ingestion labels (key/value pairs).
92
+ # repeated DataAccessIngestionLabel ingestion_kv_labels = 5;
93
+ #
94
+ # // Are the labels ready for scoped access
95
+ # bool allow_scoped_access = 6;
96
+ # }