aboutsummaryrefslogtreecommitdiff
path: root/google/devtools/clouderrorreporting/v1beta1/error_stats_service.proto
blob: ffb25b2b8ac25160a5c67b3cf3247256a5312967 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
// Copyright 2016 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.devtools.clouderrorreporting.v1beta1;

import "google/api/annotations.proto";
import "google/devtools/clouderrorreporting/v1beta1/common.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";

option csharp_namespace = "Google.Cloud.ErrorReporting.V1Beta1";
option go_package = "google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1;clouderrorreporting";
option java_multiple_files = true;
option java_outer_classname = "ErrorStatsServiceProto";
option java_package = "com.google.devtools.clouderrorreporting.v1beta1";
option php_namespace = "Google\\Cloud\\ErrorReporting\\V1beta1";

// An API for retrieving and managing error statistics as well as data for
// individual events.
service ErrorStatsService {
  // Lists the specified groups.
  rpc ListGroupStats(ListGroupStatsRequest) returns (ListGroupStatsResponse) {
    option (google.api.http) = {
      get: "/v1beta1/{project_name=projects/*}/groupStats"
    };
  }

  // Lists the specified events.
  rpc ListEvents(ListEventsRequest) returns (ListEventsResponse) {
    option (google.api.http) = {
      get: "/v1beta1/{project_name=projects/*}/events"
    };
  }

  // Deletes all error events of a given project.
  rpc DeleteEvents(DeleteEventsRequest) returns (DeleteEventsResponse) {
    option (google.api.http) = {
      delete: "/v1beta1/{project_name=projects/*}/events"
    };
  }
}

// Specifies a set of `ErrorGroupStats` to return.
message ListGroupStatsRequest {
  // [Required] The resource name of the Google Cloud Platform project. Written
  // as <code>projects/</code> plus the
  // <a href="https://support.google.com/cloud/answer/6158840">Google Cloud
  // Platform project ID</a>.
  //
  // Example: <code>projects/my-project-123</code>.
  string project_name = 1;

  // [Optional] List all <code>ErrorGroupStats</code> with these IDs.
  repeated string group_id = 2;

  // [Optional] List only <code>ErrorGroupStats</code> which belong to a service
  // context that matches the filter.
  // Data for all service contexts is returned if this field is not specified.
  ServiceContextFilter service_filter = 3;

  // [Optional] List data for the given time range.
  // If not set a default time range is used. The field time_range_begin
  // in the response will specify the beginning of this time range.
  // Only <code>ErrorGroupStats</code> with a non-zero count in the given time
  // range are returned, unless the request contains an explicit group_id list.
  // If a group_id list is given, also <code>ErrorGroupStats</code> with zero
  // occurrences are returned.
  QueryTimeRange time_range = 5;

  // [Optional] The preferred duration for a single returned `TimedCount`.
  // If not set, no timed counts are returned.
  google.protobuf.Duration timed_count_duration = 6;

  // [Optional] The alignment of the timed counts to be returned.
  // Default is `ALIGNMENT_EQUAL_AT_END`.
  TimedCountAlignment alignment = 7;

  // [Optional] Time where the timed counts shall be aligned if rounded
  // alignment is chosen. Default is 00:00 UTC.
  google.protobuf.Timestamp alignment_time = 8;

  // [Optional] The sort order in which the results are returned.
  // Default is `COUNT_DESC`.
  ErrorGroupOrder order = 9;

  // [Optional] The maximum number of results to return per response.
  // Default is 20.
  int32 page_size = 11;

  // [Optional] A `next_page_token` provided by a previous response. To view
  // additional results, pass this token along with the identical query
  // parameters as the first request.
  string page_token = 12;
}

// Contains a set of requested error group stats.
message ListGroupStatsResponse {
  // The error group stats which match the given request.
  repeated ErrorGroupStats error_group_stats = 1;

  // If non-empty, more results are available.
  // Pass this token, along with the same query parameters as the first
  // request, to view the next page of results.
  string next_page_token = 2;

  // The timestamp specifies the start time to which the request was restricted.
  // The start time is set based on the requested time range. It may be adjusted
  // to a later time if a project has exceeded the storage quota and older data
  // has been deleted.
  google.protobuf.Timestamp time_range_begin = 4;
}

// Data extracted for a specific group based on certain filter criteria,
// such as a given time period and/or service filter.
message ErrorGroupStats {
  // Group data that is independent of the filter criteria.
  ErrorGroup group = 1;

  // Approximate total number of events in the given group that match
  // the filter criteria.
  int64 count = 2;

  // Approximate number of affected users in the given group that
  // match the filter criteria.
  // Users are distinguished by data in the `ErrorContext` of the
  // individual error events, such as their login name or their remote
  // IP address in case of HTTP requests.
  // The number of affected users can be zero even if the number of
  // errors is non-zero if no data was provided from which the
  // affected user could be deduced.
  // Users are counted based on data in the request
  // context that was provided in the error report. If more users are
  // implicitly affected, such as due to a crash of the whole service,
  // this is not reflected here.
  int64 affected_users_count = 3;

  // Approximate number of occurrences over time.
  // Timed counts returned by ListGroups are guaranteed to be:
  //
  // - Inside the requested time interval
  // - Non-overlapping, and
  // - Ordered by ascending time.
  repeated TimedCount timed_counts = 4;

  // Approximate first occurrence that was ever seen for this group
  // and which matches the given filter criteria, ignoring the
  // time_range that was specified in the request.
  google.protobuf.Timestamp first_seen_time = 5;

  // Approximate last occurrence that was ever seen for this group and
  // which matches the given filter criteria, ignoring the time_range
  // that was specified in the request.
  google.protobuf.Timestamp last_seen_time = 6;

  // Service contexts with a non-zero error count for the given filter
  // criteria. This list can be truncated if multiple services are affected.
  // Refer to `num_affected_services` for the total count.
  repeated ServiceContext affected_services = 7;

  // The total number of services with a non-zero error count for the given
  // filter criteria.
  int32 num_affected_services = 8;

  // An arbitrary event that is chosen as representative for the whole group.
  // The representative event is intended to be used as a quick preview for
  // the whole group. Events in the group are usually sufficiently similar
  // to each other such that showing an arbitrary representative provides
  // insight into the characteristics of the group as a whole.
  ErrorEvent representative = 9;
}

// The number of errors in a given time period.
// All numbers are approximate since the error events are sampled
// before counting them.
message TimedCount {
  // Approximate number of occurrences in the given time period.
  int64 count = 1;

  // Start of the time period to which `count` refers (included).
  google.protobuf.Timestamp start_time = 2;

  // End of the time period to which `count` refers (excluded).
  google.protobuf.Timestamp end_time = 3;
}

// Specifies a set of error events to return.
message ListEventsRequest {
  // [Required] The resource name of the Google Cloud Platform project. Written
  // as `projects/` plus the
  // [Google Cloud Platform project
  // ID](https://support.google.com/cloud/answer/6158840).
  // Example: `projects/my-project-123`.
  string project_name = 1;

  // [Required] The group for which events shall be returned.
  string group_id = 2;

  // [Optional] List only ErrorGroups which belong to a service context that
  // matches the filter.
  // Data for all service contexts is returned if this field is not specified.
  ServiceContextFilter service_filter = 3;

  // [Optional] List only data for the given time range.
  // If not set a default time range is used. The field time_range_begin
  // in the response will specify the beginning of this time range.
  QueryTimeRange time_range = 4;

  // [Optional] The maximum number of results to return per response.
  int32 page_size = 6;

  // [Optional] A `next_page_token` provided by a previous response.
  string page_token = 7;
}

// Contains a set of requested error events.
message ListEventsResponse {
  // The error events which match the given request.
  repeated ErrorEvent error_events = 1;

  // If non-empty, more results are available.
  // Pass this token, along with the same query parameters as the first
  // request, to view the next page of results.
  string next_page_token = 2;

  // The timestamp specifies the start time to which the request was restricted.
  google.protobuf.Timestamp time_range_begin = 4;
}

// Requests might be rejected or the resulting timed count durations might be
// adjusted for lower durations.
message QueryTimeRange {
  // The supported time ranges.
  enum Period {
    // Do not use.
    PERIOD_UNSPECIFIED = 0;

    // Retrieve data for the last hour.
    // Recommended minimum timed count duration: 1 min.
    PERIOD_1_HOUR = 1;

    // Retrieve data for the last 6 hours.
    // Recommended minimum timed count duration: 10 min.
    PERIOD_6_HOURS = 2;

    // Retrieve data for the last day.
    // Recommended minimum timed count duration: 1 hour.
    PERIOD_1_DAY = 3;

    // Retrieve data for the last week.
    // Recommended minimum timed count duration: 6 hours.
    PERIOD_1_WEEK = 4;

    // Retrieve data for the last 30 days.
    // Recommended minimum timed count duration: 1 day.
    PERIOD_30_DAYS = 5;
  }

  // Restricts the query to the specified time range.
  Period period = 1;
}

// Specifies criteria for filtering a subset of service contexts.
// The fields in the filter correspond to the fields in `ServiceContext`.
// Only exact, case-sensitive matches are supported.
// If a field is unset or empty, it matches arbitrary values.
message ServiceContextFilter {
  // [Optional] The exact value to match against
  // [`ServiceContext.service`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.service).
  string service = 2;

  // [Optional] The exact value to match against
  // [`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).
  string version = 3;

  // [Optional] The exact value to match against
  // [`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).
  string resource_type = 4;
}

// Deletes all events in the project.
message DeleteEventsRequest {
  // [Required] The resource name of the Google Cloud Platform project. Written
  // as `projects/` plus the
  // [Google Cloud Platform project
  // ID](https://support.google.com/cloud/answer/6158840).
  // Example: `projects/my-project-123`.
  string project_name = 1;
}

// Response message for deleting error events.
message DeleteEventsResponse {}

// Specifies how the time periods of error group counts are aligned.
enum TimedCountAlignment {
  // No alignment specified.
  ERROR_COUNT_ALIGNMENT_UNSPECIFIED = 0;

  // The time periods shall be consecutive, have width equal to the
  // requested duration, and be aligned at the `alignment_time` provided in
  // the request.
  // The `alignment_time` does not have to be inside the query period but
  // even if it is outside, only time periods are returned which overlap
  // with the query period.
  // A rounded alignment will typically result in a
  // different size of the first or the last time period.
  ALIGNMENT_EQUAL_ROUNDED = 1;

  // The time periods shall be consecutive, have width equal to the
  // requested duration, and be aligned at the end of the requested time
  // period. This can result in a different size of the
  // first time period.
  ALIGNMENT_EQUAL_AT_END = 2;
}

// A sorting order of error groups.
enum ErrorGroupOrder {
  // No group order specified.
  GROUP_ORDER_UNSPECIFIED = 0;

  // Total count of errors in the given time window in descending order.
  COUNT_DESC = 1;

  // Timestamp when the group was last seen in the given time window
  // in descending order.
  LAST_SEEN_DESC = 2;

  // Timestamp when the group was created in descending order.
  CREATED_DESC = 3;

  // Number of affected users in the given time window in descending order.
  AFFECTED_USERS_DESC = 4;
}