• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.devtools.resultstore.v2;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/api/field_behavior.proto";
22import "google/api/resource.proto";
23import "google/devtools/resultstore/v2/action.proto";
24import "google/devtools/resultstore/v2/configuration.proto";
25import "google/devtools/resultstore/v2/configured_target.proto";
26import "google/devtools/resultstore/v2/download_metadata.proto";
27import "google/devtools/resultstore/v2/file_set.proto";
28import "google/devtools/resultstore/v2/invocation.proto";
29import "google/devtools/resultstore/v2/target.proto";
30
31option go_package = "google.golang.org/genproto/googleapis/devtools/resultstore/v2;resultstore";
32option java_multiple_files = true;
33option java_outer_classname = "ResultStoreDownloadProto";
34option java_package = "com.google.devtools.resultstore.v2";
35
36// This is the interface used to download information from the ResultStore
37// database.
38//
39// Clients are encourage to use ExportInvocation for most traffic.
40//
41// Most APIs require setting a response FieldMask via the 'fields' URL query
42// parameter or the X-Goog-FieldMask HTTP/gRPC header.
43service ResultStoreDownload {
44  option (google.api.default_host) = "resultstore.googleapis.com";
45  option (google.api.oauth_scopes) =
46      "https://www.googleapis.com/auth/cloud-platform";
47
48  // Exports the invocation with the given name and its child resources.
49  //
50  // The order in which resources are returned is defined as follows,
51  // invocation; download_metadata; configurations; targets interleaving
52  // configured_targets and actions; file_sets.
53  //
54  // - Invocation
55  // - DownloadMetadata
56  // - Configurations
57  // - Targets
58  //   └─ ConfiguredTargets
59  //      └─Actions
60  // - FileSets
61  //
62  // All child resources will be returned before the next parent
63  // resource is returned. For example, all actions under a configured_target
64  // will be returned before the next configured_target is returned.
65  // The order in which results within a given resource type are returned is
66  // undefined, but stable.
67  //
68  // An error will be reported in the following cases:
69  // - If the invocation is not found.
70  // - If the given invocation name is badly formatted.
71  // - If no field mask was given.
72  rpc ExportInvocation(ExportInvocationRequest)
73      returns (ExportInvocationResponse) {
74    option (google.api.http) = {
75      get: "/v2/{name=invocations/*}:export"
76    };
77  }
78
79  // Retrieves the invocation with the given name.
80  //
81  // An error will be reported in the following cases:
82  // - If the invocation is not found.
83  // - If the given invocation name is badly formatted.
84  // - If no field mask was given.
85  rpc GetInvocation(GetInvocationRequest) returns (Invocation) {
86    option (google.api.http) = {
87      get: "/v2/{name=invocations/*}"
88    };
89    option (google.api.method_signature) = "name";
90  }
91
92  // Searches for invocations matching the given query parameters. Results will
93  // be ordered by timing.start_time with most recent first, but total ordering
94  // of results is not guaranteed when difference in timestamps is very small.
95  // Results may be stale. Results may be omitted.
96  //
97  //
98  // An error will be reported in the following cases:
99  // - If a query string is not provided
100  // - If no field mask was given.
101  rpc SearchInvocations(SearchInvocationsRequest)
102      returns (SearchInvocationsResponse) {
103    option (google.api.http) = {
104      get: "/v2/invocations:search"
105    };
106  }
107
108  // Retrieves the metadata for an invocation with the given name.
109  //
110  // An error will be reported in the following cases:
111  // - If the invocation is not found.
112  // - If the given invocation name is badly formatted.
113  rpc GetInvocationDownloadMetadata(GetInvocationDownloadMetadataRequest)
114      returns (DownloadMetadata) {
115    option (google.api.http) = {
116      get: "/v2/{name=invocations/*/downloadMetadata}"
117    };
118    option (google.api.method_signature) = "name";
119  }
120
121  // Retrieves the configuration with the given name.
122  //
123  // An error will be reported in the following cases:
124  // - If the configuration or its parent invocation is not found.
125  // - If the given configuration name is badly formatted.
126  // - If no field mask was given.
127  rpc GetConfiguration(GetConfigurationRequest) returns (Configuration) {
128    option (google.api.http) = {
129      get: "/v2/{name=invocations/*/configs/*}"
130    };
131    option (google.api.method_signature) = "name";
132  }
133
134  // Retrieves all configurations for a parent invocation.
135  // This might be limited by user or server,
136  // in which case a continuation token is provided.
137  // The order in which results are returned is undefined, but stable.
138  //
139  // An error will be reported in the following cases:
140  // - If the parent invocation is not found.
141  // - If the given parent invocation name is badly formatted.
142  // - If no field mask was given.
143  rpc ListConfigurations(ListConfigurationsRequest)
144      returns (ListConfigurationsResponse) {
145    option (google.api.http) = {
146      get: "/v2/{parent=invocations/*}/configs"
147    };
148    option (google.api.method_signature) = "parent";
149  }
150
151  // Retrieves the target with the given name.
152  //
153  // An error will be reported in the following cases:
154  // - If the target or its parent invocation is not found.
155  // - If the given target name is badly formatted.
156  // - If no field mask was given.
157  rpc GetTarget(GetTargetRequest) returns (Target) {
158    option (google.api.http) = {
159      get: "/v2/{name=invocations/*/targets/*}"
160    };
161    option (google.api.method_signature) = "name";
162  }
163
164  // Retrieves all targets for a parent invocation.  This might be limited by
165  // user or server, in which case a continuation token is provided.
166  // The order in which results are returned is undefined, but stable.
167  //
168  // An error will be reported in the following cases:
169  // - If the parent is not found.
170  // - If the given parent name is badly formatted.
171  // - If no field mask was given.
172  rpc ListTargets(ListTargetsRequest) returns (ListTargetsResponse) {
173    option (google.api.http) = {
174      get: "/v2/{parent=invocations/*}/targets"
175    };
176    option (google.api.method_signature) = "parent";
177  }
178
179  // Retrieves the configured target with the given name.
180  //
181  // An error will be reported in the following cases:
182  // - If the configured target is not found.
183  // - If the given name is badly formatted.
184  // - If no field mask was given.
185  rpc GetConfiguredTarget(GetConfiguredTargetRequest)
186      returns (ConfiguredTarget) {
187    option (google.api.http) = {
188      get: "/v2/{name=invocations/*/targets/*/configuredTargets/*}"
189    };
190    option (google.api.method_signature) = "name";
191  }
192
193  // Retrieves all configured targets for a parent invocation/target.
194  // This might be limited by user or server, in which case a continuation
195  // token is provided. Supports '-' for targetId meaning all targets.
196  // The order in which results are returned is undefined, but stable and
197  // consistent with ListTargets and ListConfigurations.
198  //
199  // An error will be reported in the following cases:
200  // - If the parent is not found.
201  // - If the given parent name is badly formatted.
202  // - If no field mask was given.
203  rpc ListConfiguredTargets(ListConfiguredTargetsRequest)
204      returns (ListConfiguredTargetsResponse) {
205    option (google.api.http) = {
206      get: "/v2/{parent=invocations/*/targets/*}/configuredTargets"
207    };
208    option (google.api.method_signature) = "parent";
209  }
210
211  // Searches for ConfiguredTargets matching the given query parameters. Results
212  // will be ordered by timing.start_time with most recent first, but total
213  // ordering of results is not guaranteed when difference in timestamps is
214  // very small. Results may be stale. Results may be omitted.
215  //
216  //
217  // Field masks are supported for only these fields and their subfields:
218  // - configured_targets.name
219  // - configured_targets.id
220  // - configured_targets.status_attributes
221  // - configured_targets.timing
222  // - next_page_token
223  //
224  // An error will be reported in the following cases:
225  // - If a query string is not provided
226  // - If no field mask was given.
227  rpc SearchConfiguredTargets(SearchConfiguredTargetsRequest)
228      returns (SearchConfiguredTargetsResponse) {
229    option (google.api.http) = {
230      get: "/v2/{parent=invocations/*/targets/*}/configuredTargets:search"
231    };
232  }
233
234  // Retrieves the action with the given name.
235  //
236  // An error will be reported in the following cases:
237  // - If the action is not found.
238  // - If the given name is badly formatted.
239  // - If no field mask was given.
240  rpc GetAction(GetActionRequest) returns (Action) {
241    option (google.api.http) = {
242      get: "/v2/{name=invocations/*/targets/*/configuredTargets/*/actions/*}"
243    };
244    option (google.api.method_signature) = "name";
245  }
246
247  // Retrieves all actions for a parent invocation/target/configuration.
248  // This might be limited by user or server, in which case a continuation
249  // token is provided. Supports '-' for configurationId to mean all
250  // actions for all configurations for a target, or '-' for targetId and
251  // configurationId to mean all actions for all configurations and all targets.
252  // Does not support targetId '-' with a specified configuration.
253  // The order in which results are returned is undefined, but stable and
254  // consistent with ListConfiguredTargets.
255  //
256  // An error will be reported in the following cases:
257  // - If the parent is not found.
258  // - If the given parent name is badly formatted.
259  // - If no field mask was given.
260  rpc ListActions(ListActionsRequest) returns (ListActionsResponse) {
261    option (google.api.http) = {
262      get: "/v2/{parent=invocations/*/targets/*/configuredTargets/*}/actions"
263    };
264    option (google.api.method_signature) = "parent";
265  }
266
267  // Retrieves a list of actions for a parent invocation or multiple parents
268  // target/configuration. This might be limited by user or server, in which
269  // case a continuation token is provided. The order in which results are
270  // returned is undefined, but stable and consistent with
271  // ListConfiguredTargets.
272  //
273  // An error will be reported in the following cases:
274  // - If the given parent name is badly formatted.
275  // - If no field mask was given.
276  rpc BatchListActions(BatchListActionsRequest)
277      returns (BatchListActionsResponse) {
278    option (google.api.http) = {
279      get: "/v2/{parent=invocations/*}/actions:batchList"
280    };
281  }
282
283  // Retrieves the file set with the given name.
284  //
285  // An error will be reported in the following cases:
286  // - If the file set or its parent invocation is not found.
287  // - If the given file set name is badly formatted.
288  // - If no field mask was given.
289  rpc GetFileSet(GetFileSetRequest) returns (FileSet) {
290    option (google.api.http) = {
291      get: "/v2/{name=invocations/*/fileSets/*}"
292    };
293    option (google.api.method_signature) = "name";
294  }
295
296  // Retrieves all file sets for a parent invocation.
297  // This might be limited by user or server,
298  // in which case a continuation token is provided.
299  // The order in which results are returned is undefined, but stable.
300  //
301  // An error will be reported in the following cases:
302  // - If the parent invocation is not found.
303  // - If the given parent invocation name is badly formatted.
304  // - If no field mask was given.
305  rpc ListFileSets(ListFileSetsRequest) returns (ListFileSetsResponse) {
306    option (google.api.http) = {
307      get: "/v2/{parent=invocations/*}/fileSets"
308    };
309    option (google.api.method_signature) = "parent";
310  }
311
312  // Returns the transitive closure of FileSets. This might be limited by user
313  // or server, in which case a continuation token is provided.
314  // The order in which results are returned is undefined, and unstable.
315  //
316  // An error will be reported in the following cases:
317  // - If page_token is too large to continue the calculation.
318  // - If the resource is not found.
319  // - If the given resource name is badly formatted.
320  // - If no field mask was given.
321  rpc TraverseFileSets(TraverseFileSetsRequest)
322      returns (TraverseFileSetsResponse) {
323    option (google.api.http) = {
324      get: "/v2/{name=invocations/*/fileSets/*}:traverseFileSets"
325      additional_bindings {
326        get: "/v2/{name=invocations/*/targets/*/configuredTargets/*/actions/*}:traverseFileSets"
327      }
328    };
329  }
330}
331
332// Request passed into GetInvocation
333message GetInvocationRequest {
334  // Required. The name of the invocation to retrieve. It must match this
335  // format: invocations/${INVOCATION_ID} where INVOCATION_ID must be an RFC
336  // 4122-compliant UUID.
337  string name = 1 [
338    (google.api.field_behavior) = REQUIRED,
339    (google.api.resource_reference) = {
340      type: "resultstore.googleapis.com/Invocation"
341    }
342  ];
343}
344
345// Request passed into SearchInvocations
346message SearchInvocationsRequest {
347  // The maximum number of items to return. Zero means all, but may be capped by
348  // the server.
349  int32 page_size = 1;
350
351  // Options for pagination.
352  oneof page_start {
353    // The next_page_token value returned from a previous Search request, if
354    // any.
355    string page_token = 2;
356
357    // Absolute number of results to skip. May be rejected if too high.
358    int64 offset = 3;
359  }
360
361  // A filtering query string.
362  //
363  // Only a limited number of fields and operators are supported. Not every
364  // field supports every operator.
365  //
366  // Fields that support equals ("=") restrictions:
367  //
368  // id.invocation_id
369  // name
370  // status_attributes.status
371  // workspace_info.hostname
372  // download_metadata.upload_status
373  //
374  // Fields that support contains (":") restrictions:
375  //
376  // invocation_attributes.users
377  // invocation_attributes.labels
378  //
379  // Fields that support comparison ("<", "<=", ">", ">=") restrictions;
380  //
381  // timing.start_time
382  //
383  // Supported custom function global restrictions:
384  //
385  // propertyEquals("key", "value")
386  string query = 4;
387
388  // The project id to search under.
389  string project_id = 5;
390
391  // If true, all equals or contains restrictions on string fields in query will
392  // require exact match. Otherwise, a string field restriction may ignore case
393  // and punctuation.
394  bool exact_match = 7;
395}
396
397// Response from calling SearchInvocations
398message SearchInvocationsResponse {
399  // Invocations matching the search, possibly capped at request.page_size or a
400  // server limit.
401  repeated Invocation invocations = 1;
402
403  // Token to retrieve the next page of results, or empty if there are no
404  // more results.
405  string next_page_token = 2;
406}
407
408// Request passed into ExportInvocationRequest
409message ExportInvocationRequest {
410  // Required. The name of the invocation to retrieve. It must match this
411  // format: invocations/${INVOCATION_ID} where INVOCATION_ID must be an RFC
412  // 4122-compliant UUID.
413  string name = 1 [
414    (google.api.field_behavior) = REQUIRED,
415    (google.api.resource_reference) = {
416      type: "resultstore.googleapis.com/Invocation"
417    }
418  ];
419
420  // The maximum number of items to return. Zero means all, but may be capped by
421  // the server.
422  int32 page_size = 2;
423
424  // Options for pagination.
425  oneof page_start {
426    // The next_page_token value returned from a previous export request, if
427    // any.
428    string page_token = 3;
429
430    // Absolute number of results to skip.
431    int64 offset = 4;
432  }
433
434  // Filters Targets, ConfiguredTargets, and Actions returned
435  //
436  // Only id.target_id field with single equals ("=") restriction supported
437  string targets_filter = 6;
438
439  // Requires targets_filter to be populated
440  // Filters ConfiguredTargets and Actions returned
441  //
442  // Only id.configuration_id field with single equals ("=") restriction
443  // supported
444  string configured_targets_filter = 7;
445
446  // Requires both targets_filter and configured_targets_filter to be populated
447  // Filters Actions returned
448  //
449  // Only id.action_id field with single equals ("=") restriction supported
450  string actions_filter = 8;
451}
452
453// Response from calling ExportInvocationResponse.
454// Possibly capped at request.page_size or a server limit.
455message ExportInvocationResponse {
456  // Parent Invocation resource.
457  Invocation invocation = 1;
458
459  // download metadata of request invocation
460  // download_metadata and invocation count towards page_size once.
461  DownloadMetadata download_metadata = 8;
462
463  // Targets matching the request invocation.
464  repeated Target targets = 2;
465
466  // Configurations matching the request invocation.
467  repeated Configuration configurations = 3;
468
469  // ConfiguredTargets matching the request invocation.
470  repeated ConfiguredTarget configured_targets = 4;
471
472  // Actions matching the request invocation.
473  repeated Action actions = 5;
474
475  // FileSets matching the request invocation.
476  repeated FileSet file_sets = 6;
477
478  // Token to retrieve the next page of results, or empty if there are no
479  // more results in the list.
480  string next_page_token = 7;
481}
482
483// Request passed into GetInvocationDownloadMetadata
484message GetInvocationDownloadMetadataRequest {
485  // Required. The name of the download metadata to retrieve. It must match this
486  // format: invocations/${INVOCATION_ID}/downloadMetadata where INVOCATION_ID
487  // must be an RFC 4122-compliant UUID.
488  string name = 1 [
489    (google.api.field_behavior) = REQUIRED,
490    (google.api.resource_reference) = {
491      type: "resultstore.googleapis.com/DownloadMetadata"
492    }
493  ];
494}
495
496// Request passed into GetConfiguration
497message GetConfigurationRequest {
498  // Required. The name of the configuration to retrieve. It must match this
499  // format: invocations/${INVOCATION_ID}/configs/${CONFIGURATION_ID}
500  string name = 1 [
501    (google.api.field_behavior) = REQUIRED,
502    (google.api.resource_reference) = {
503      type: "resultstore.googleapis.com/Configuration"
504    }
505  ];
506}
507
508// Request passed into ListConfigurations
509message ListConfigurationsRequest {
510  // Required. The invocation name of the configurations to retrieve.
511  // It must match this format: invocations/${INVOCATION_ID}
512  string parent = 1 [
513    (google.api.field_behavior) = REQUIRED,
514    (google.api.resource_reference) = {
515      type: "resultstore.googleapis.com/Invocation"
516    }
517  ];
518
519  // The maximum number of items to return.
520  // Zero means all, but may be capped by the server.
521  int32 page_size = 2;
522
523  // Options for pagination.
524  oneof page_start {
525    // The next_page_token value returned from a previous List request, if any.
526    string page_token = 3;
527
528    // Absolute number of results to skip.
529    int64 offset = 4;
530  }
531
532  // A filter to return only resources that match it.
533  // Any fields used in the filter must be also specified in the field mask.
534  // May cause pages with 0 results and a next_page_token to be returned.
535  string filter = 5;
536}
537
538// Response from calling ListConfigurations
539message ListConfigurationsResponse {
540  // Configurations matching the request invocation,
541  // possibly capped at request.page_size or a server limit.
542  repeated Configuration configurations = 1;
543
544  // Token to retrieve the next page of results, or empty if there are no
545  // more results in the list.
546  string next_page_token = 2;
547}
548
549// Request passed into GetTarget
550message GetTargetRequest {
551  // Required. The name of the target to retrieve. It must match this format:
552  // invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
553  string name = 1 [
554    (google.api.field_behavior) = REQUIRED,
555    (google.api.resource_reference) = {
556      type: "resultstore.googleapis.com/Target"
557    }
558  ];
559}
560
561// Request passed into ListTargets
562message ListTargetsRequest {
563  // Required. The invocation name of the targets to retrieve. It must match
564  // this format: invocations/${INVOCATION_ID}
565  string parent = 1 [
566    (google.api.field_behavior) = REQUIRED,
567    (google.api.resource_reference) = {
568      type: "resultstore.googleapis.com/Invocation"
569    }
570  ];
571
572  // The maximum number of items to return.
573  // Zero means all, but may be capped by the server.
574  int32 page_size = 2;
575
576  // Options for pagination.
577  oneof page_start {
578    // The next_page_token value returned from a previous List request, if any.
579    string page_token = 3;
580
581    // Absolute number of results to skip.
582    int64 offset = 4;
583  }
584
585  // A filter to return only resources that match it.
586  // Any fields used in the filter must be also specified in the field mask.
587  // May cause pages with 0 results and a next_page_token to be returned.
588  string filter = 5;
589}
590
591// Response from calling ListTargetsResponse
592message ListTargetsResponse {
593  // Targets matching the request invocation,
594  // possibly capped at request.page_size or a server limit.
595  repeated Target targets = 1;
596
597  // Token to retrieve the next page of results, or empty if there are no
598  // more results in the list.
599  string next_page_token = 2;
600}
601
602// Request passed into GetConfiguredTarget
603message GetConfiguredTargetRequest {
604  // Required. The name of the configured target to retrieve. It must match this
605  // format:
606  // invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${CONFIGURATION_ID}
607  string name = 1 [
608    (google.api.field_behavior) = REQUIRED,
609    (google.api.resource_reference) = {
610      type: "resultstore.googleapis.com/ConfiguredTarget"
611    }
612  ];
613}
614
615// Request passed into ListConfiguredTargets
616message ListConfiguredTargetsRequest {
617  // Required. The invocation and target name of the configured targets to
618  // retrieve. It must match this format:
619  // invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
620  // Supports '-' for ${TARGET_ID} meaning all targets.
621  string parent = 1 [
622    (google.api.field_behavior) = REQUIRED,
623    (google.api.resource_reference) = {
624      type: "resultstore.googleapis.com/Target"
625    }
626  ];
627
628  // The maximum number of items to return.
629  // Zero means all, but may be capped by the server.
630  int32 page_size = 2;
631
632  // Options for pagination.
633  oneof page_start {
634    // The next_page_token value returned from a previous List request, if any.
635    string page_token = 3;
636
637    // Absolute number of results to skip.
638    int64 offset = 4;
639  }
640
641  // A filter to return only resources that match it.
642  // Any fields used in the filter must be also specified in the field mask.
643  // May cause pages with 0 results and a next_page_token to be returned.
644  string filter = 5;
645}
646
647// Response from calling ListConfiguredTargets
648message ListConfiguredTargetsResponse {
649  // ConfiguredTargets matching the request,
650  // possibly capped at request.page_size or a server limit.
651  repeated ConfiguredTarget configured_targets = 1;
652
653  // Token to retrieve the next page of results, or empty if there are no
654  // more results in the list.
655  string next_page_token = 2;
656}
657
658// Request passed into SearchConfiguredTargets
659message SearchConfiguredTargetsRequest {
660  // Required. Must be set to invocations/-/targets/-
661  // This only supports searching all ConfiguredTargets across all Invocations.
662  string parent = 1 [
663    (google.api.field_behavior) = REQUIRED,
664    (google.api.resource_reference) = {
665      type: "resultstore.googleapis.com/Target"
666    }
667  ];
668
669  // The maximum number of items to return. Zero means all, but may be capped by
670  // the server.
671  int32 page_size = 2;
672
673  // Options for pagination.
674  oneof page_start {
675    // The next_page_token value returned from a previous Search request, if
676    // any.
677    string page_token = 3;
678
679    // Absolute number of results to skip. May be rejected if too high.
680    int64 offset = 4;
681  }
682
683  // A filtering query string.
684  //
685  // Only a limited number of fields and operators are supported. Not every
686  // field supports every operator. Access to parent resources is provided
687  // via synthetic fields ‘invocation’, ‘configuration’, and ‘target’.
688  //
689  // Any search must contain an equals restriction on id.target_id.
690  //
691  // Fields that support equals ("=") restrictions:
692  //
693  // id.target_id
694  // status_attributes.status
695  //
696  // target.target_attributes.type
697  // target.target_attributes.language
698  // target.test_attributes.size
699  //
700  // configuration.configuration_attributes.cpu
701  //
702  // invocation.workspace_info.hostname
703  //
704  // Fields that support contains (":") restrictions:
705  //
706  // target.target_attributes.tags
707  //
708  // invocation.invocation_attributes.users
709  // invocation.invocation_attributes.labels
710  //
711  // Fields that support comparison ("<", "<=", ">", ">=") restrictions;
712  //
713  // timing.start_time
714  // coalesced_start_time
715  // Supported custom function global restrictions:
716  //
717  // invocationPropertyEquals("key", "value")
718  // targetPropertyEquals("key", "value")
719  // configurationPropertyEquals("key", "value")
720  // configuredTargetPropertyEquals("key", "value")
721  string query = 5;
722
723  // The project id to search under.
724  string project_id = 6;
725
726  // Unimplemented
727  bool exact_match = 7;
728}
729
730// Response from calling SearchConfiguredTargets
731message SearchConfiguredTargetsResponse {
732  // ConfiguredTargets matching the search, possibly capped at request.page_size
733  // or a server limit.
734  repeated ConfiguredTarget configured_targets = 1;
735
736  // Token to retrieve the next page of results, or empty if there are no
737  // more results.
738  string next_page_token = 2;
739}
740
741// Request passed into GetAction
742message GetActionRequest {
743  // Required. The name of the action to retrieve. It must match this format:
744  // invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${CONFIGURATION_ID}/actions/${ACTION_ID}
745  string name = 1 [
746    (google.api.field_behavior) = REQUIRED,
747    (google.api.resource_reference) = {
748      type: "resultstore.googleapis.com/Action"
749    }
750  ];
751}
752
753// Request passed into ListActions
754message ListActionsRequest {
755  // Required. The invocation, target, and configuration name of the action to
756  // retrieve. It must match this format:
757  // invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${CONFIGURATION_ID}
758  // Supports '-' for ${CONFIGURATION_ID} to mean all Actions for all
759  // Configurations for a Target, or '-' for ${TARGET_ID} and
760  // ${CONFIGURATION_ID} to mean all Actions for all Configurations and all
761  // Targets. Does not support ${TARGET_ID} '-' with a specified configuration.
762  string parent = 1 [
763    (google.api.field_behavior) = REQUIRED,
764    (google.api.resource_reference) = {
765      type: "resultstore.googleapis.com/ConfiguredTarget"
766    }
767  ];
768
769  // The maximum number of items to return.
770  // Zero means all, but may be capped by the server.
771  int32 page_size = 2;
772
773  // Options for pagination.
774  oneof page_start {
775    // The next_page_token value returned from a previous List request, if any.
776    string page_token = 3;
777
778    // Absolute number of results to skip.
779    int64 offset = 4;
780  }
781
782  // A filter to return only resources that match it.
783  // Any fields used in the filter must be also specified in the field mask.
784  // May cause pages with 0 results and a next_page_token to be returned.
785  string filter = 5;
786}
787
788// Response from calling ListActions
789message ListActionsResponse {
790  // Actions matching the request,
791  // possibly capped at request.page_size or a server limit.
792  repeated Action actions = 1;
793
794  // Token to retrieve the next page of results, or empty if there are no
795  // more results in the list.
796  string next_page_token = 2;
797}
798
799// Request passed into BatchListActionsRequest
800message BatchListActionsRequest {
801  // Required. The invocation name of the actions to retrieve. It must match
802  // this format: invocations/${INVOCATION_ID}
803  string parent = 1 [
804    (google.api.field_behavior) = REQUIRED,
805    (google.api.resource_reference) = {
806      type: "resultstore.googleapis.com/Invocation"
807    }
808  ];
809
810  // The names of the configured targets to retrieve.
811  // It must match this format:
812  // invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${CONFIGURATION_ID}
813  repeated string configured_targets = 2;
814
815  // The maximum number of items to return.
816  // Zero means all, but may be capped by the server.
817  int32 page_size = 3;
818
819  // Options for pagination.
820  oneof page_start {
821    // The next_page_token value returned from a previous List request, if any.
822    // Page tokens will become larger with every page returned, and if a page
823    // token becomes too large, it will no longer be possible to continue to
824    // calculate the transitive dependencies. The API will return a 400
825    // Bad request (HTTPS), or a INVALID_ARGUMENT (gRPC ) when
826    // this happens.
827    string page_token = 4;
828
829    // Absolute number of results to skip.
830    // Not yet implemented. 0 for default.
831    int64 offset = 5;
832  }
833
834  // A filter to return only resources that match it.
835  // Any fields used in the filter must be also specified in the field mask.
836  // May cause pages with 0 results and a next_page_token to be returned.
837  string filter = 6;
838}
839
840// Response from calling BatchListActionsResponse
841message BatchListActionsResponse {
842  // Actions matching the request,
843  // possibly capped at request.page_size or a server limit.
844  repeated Action actions = 1;
845
846  // Token to retrieve the next page of results, or empty if there are no
847  // more results in the list.
848  string next_page_token = 2;
849
850  // Not found configured target names.
851  repeated string not_found = 3;
852}
853
854// Request passed into GetFileSet
855message GetFileSetRequest {
856  // Required. The name of the file set to retrieve. It must match this format:
857  // invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
858  string name = 1 [
859    (google.api.field_behavior) = REQUIRED,
860    (google.api.resource_reference) = {
861      type: "resultstore.googleapis.com/FileSet"
862    }
863  ];
864}
865
866// Request passed into ListFileSets
867message ListFileSetsRequest {
868  // Required. The invocation name of the file sets to retrieve.
869  // It must match this format: invocations/${INVOCATION_ID}
870  string parent = 1 [
871    (google.api.field_behavior) = REQUIRED,
872    (google.api.resource_reference) = {
873      type: "resultstore.googleapis.com/Invocation"
874    }
875  ];
876
877  // The maximum number of items to return.
878  // Zero means all, but may be capped by the server.
879  int32 page_size = 2;
880
881  // Options for pagination.
882  oneof page_start {
883    // The next_page_token value returned from a previous List request, if any.
884    string page_token = 3;
885
886    // Absolute number of results to skip.
887    int64 offset = 4;
888  }
889
890  // A filter to return only resources that match it.
891  // Any fields used in the filter must be also specified in the field mask.
892  // May cause pages with 0 results and a next_page_token to be returned.
893  string filter = 5;
894}
895
896// Response from calling ListFileSets
897message ListFileSetsResponse {
898  // File sets matching the request,
899  // possibly capped at request.page_size or a server limit.
900  repeated FileSet file_sets = 1;
901
902  // Token to retrieve the next page of results, or empty if there are no
903  // more results in the list.
904  string next_page_token = 2;
905}
906
907// Request passed into TraverseFileSets
908message TraverseFileSetsRequest {
909  // Required. The name of the resource to traverse.
910  // It must match one of the following formats:
911  //
912  // invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
913  // This returns the transitive closure of FileSets referenced by the given
914  // FileSet, including itself.
915  //
916  // invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${CONFIGURATION_ID}/actions/${ACTION_ID}
917  // This returns the transitive closure of FileSets referenced by the given
918  // Action. If ${ACTION_ID} is "-", this returns the transitive closure of
919  // FileSets referenced by all Actions under the given ConfiguredTarget.
920  string name = 1 [
921    (google.api.field_behavior) = REQUIRED,
922    (google.api.resource_reference) = { type: "*" }
923  ];
924
925  // The maximum number of items to return.
926  // Zero means all, but may be capped by the server.
927  int32 page_size = 2;
928
929  // Options for pagination.
930  oneof page_start {
931    // The next_page_token value returned from a previous List request, if any.
932    // Page tokens will become larger with every page returned, and if a page
933    // token becomes too large, it will no longer be possible to continue to
934    // calculate the transitive dependencies. The API will return a 400
935    // Bad request (HTTPS), or a INVALID_ARGUMENT (gRPC ) when
936    // this happens.
937    string page_token = 3;
938
939    // Absolute number of results to skip.
940    // Not yet implemented. 0 for default.
941    int64 offset = 4;
942  }
943}
944
945// Response from calling TraverseFileSets
946message TraverseFileSetsResponse {
947  // File sets matching the request.
948  // The order in which results are returned is undefined, but stable.
949  repeated FileSet file_sets = 1;
950
951  // Token to retrieve the next page of results, or empty if there are no
952  // more results in the list.
953  string next_page_token = 2;
954}
955