aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/googleapis-common-protos/google/cloud/extended_operations.proto
blob: 2f86c3745d64eeae4cb5355d5140246ee84fd30a (plain) (blame)
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
// Copyright 2024 Google LLC
//
// 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.

// This file contains custom annotations that are used by GAPIC generators to
// handle Long Running Operation methods (LRO) that are NOT compliant with
// https://google.aip.dev/151. These annotations are public for technical
// reasons only. Please DO NOT USE them in your protos.
syntax = "proto3";

package google.cloud;

import "google/protobuf/descriptor.proto";

option go_package = "google.golang.org/genproto/googleapis/cloud/extendedops;extendedops";
option java_multiple_files = true;
option java_outer_classname = "ExtendedOperationsProto";
option java_package = "com.google.cloud";
option objc_class_prefix = "GAPI";

// FieldOptions to match corresponding fields in the initial request,
// polling request and operation response messages.
//
// Example:
//
// In an API-specific operation message:
//
//     message MyOperation {
//       string http_error_message = 1 [(operation_field) = ERROR_MESSAGE];
//       int32 http_error_status_code = 2 [(operation_field) = ERROR_CODE];
//       string id = 3 [(operation_field) = NAME];
//       Status status = 4 [(operation_field) = STATUS];
//     }
//
// In a polling request message (the one which is used to poll for an LRO
// status):
//
//     message MyPollingRequest {
//       string operation = 1 [(operation_response_field) = "id"];
//       string project = 2;
//       string region = 3;
//     }
//
// In an initial request message (the one which starts an LRO):
//
//    message MyInitialRequest {
//      string my_project = 2 [(operation_request_field) = "project"];
//      string my_region = 3 [(operation_request_field) = "region"];
//    }
//
extend google.protobuf.FieldOptions {
  // A field annotation that maps fields in an API-specific Operation object to
  // their standard counterparts in google.longrunning.Operation. See
  // OperationResponseMapping enum definition.
  OperationResponseMapping operation_field = 1149;

  // A field annotation that maps fields in the initial request message
  // (the one which started the LRO) to their counterparts in the polling
  // request message. For non-standard LRO, the polling response may be missing
  // some of the information needed to make a subsequent polling request. The
  // missing information (for example, project or region ID) is contained in the
  // fields of the initial request message that this annotation must be applied
  // to. The string value of the annotation corresponds to the name of the
  // counterpart field in the polling request message that the annotated field's
  // value will be copied to.
  string operation_request_field = 1150;

  // A field annotation that maps fields in the polling request message to their
  // counterparts in the initial and/or polling response message. The initial
  // and the polling methods return an API-specific Operation object. Some of
  // the fields from that response object must be reused in the subsequent
  // request (like operation name/ID) to fully identify the polled operation.
  // This annotation must be applied to the fields in the polling request
  // message, the string value of the annotation must correspond to the name of
  // the counterpart field in the Operation response object whose value will be
  // copied to the annotated field.
  string operation_response_field = 1151;
}

// MethodOptions to identify the actual service and method used for operation
// status polling.
//
// Example:
//
// In a method, which starts an LRO:
//
//     service MyService {
//       rpc Foo(MyInitialRequest) returns (MyOperation) {
//         option (operation_service) = "MyPollingService";
//       }
//     }
//
// In a polling method:
//
//     service MyPollingService {
//       rpc Get(MyPollingRequest) returns (MyOperation) {
//         option (operation_polling_method) = true;
//       }
//     }
extend google.protobuf.MethodOptions {
  // A method annotation that maps an LRO method (the one which starts an LRO)
  // to the service, which will be used to poll for the operation status. The
  // annotation must be applied to the method which starts an LRO, the string
  // value of the annotation must correspond to the name of the service used to
  // poll for the operation status.
  string operation_service = 1249;

  // A method annotation that marks methods that can be used for polling
  // operation status (e.g. the MyPollingService.Get(MyPollingRequest) method).
  bool operation_polling_method = 1250;
}

// An enum to be used to mark the essential (for polling) fields in an
// API-specific Operation object. A custom Operation object may contain many
// different fields, but only few of them are essential to conduct a successful
// polling process.
enum OperationResponseMapping {
  // Do not use.
  UNDEFINED = 0;

  // A field in an API-specific (custom) Operation object which carries the same
  // meaning as google.longrunning.Operation.name.
  NAME = 1;

  // A field in an API-specific (custom) Operation object which carries the same
  // meaning as google.longrunning.Operation.done. If the annotated field is of
  // an enum type, `annotated_field_name == EnumType.DONE` semantics should be
  // equivalent to `Operation.done == true`. If the annotated field is of type
  // boolean, then it should follow the same semantics as Operation.done.
  // Otherwise, a non-empty value should be treated as `Operation.done == true`.
  STATUS = 2;

  // A field in an API-specific (custom) Operation object which carries the same
  // meaning as google.longrunning.Operation.error.code.
  ERROR_CODE = 3;

  // A field in an API-specific (custom) Operation object which carries the same
  // meaning as google.longrunning.Operation.error.message.
  ERROR_MESSAGE = 4;
}