blob: 871e90885a6199009c0d251745a08da656b1c1b2 [file] [log] [blame]
Thomas Van Lenten56c48ae2020-01-22 15:50:52 -05001// Generated by the protocol buffer compiler. DO NOT EDIT!
2// source: google/protobuf/api.proto
3
Thomas Van Lenten020e4e32022-03-01 14:16:50 -05004#import "GPBDescriptor.h"
5#import "GPBMessage.h"
6#import "GPBRootObject.h"
Thomas Van Lentenbb4302e2022-02-28 16:32:04 -05007#import "GPBSourceContext.pbobjc.h"
8#import "GPBType.pbobjc.h"
Thomas Van Lenten56c48ae2020-01-22 15:50:52 -05009
Thomas Van Lentenb0e27922020-04-13 13:36:56 -040010#if GOOGLE_PROTOBUF_OBJC_VERSION < 30004
Thomas Van Lenten56c48ae2020-01-22 15:50:52 -050011#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources.
12#endif
Thomas Van Lentenb0e27922020-04-13 13:36:56 -040013#if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION
Thomas Van Lenten56c48ae2020-01-22 15:50:52 -050014#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources.
15#endif
16
17// @@protoc_insertion_point(imports)
18
19#pragma clang diagnostic push
20#pragma clang diagnostic ignored "-Wdeprecated-declarations"
21
22CF_EXTERN_C_BEGIN
23
24@class GPBMethod;
25@class GPBMixin;
Thomas Van Lenten56c48ae2020-01-22 15:50:52 -050026
27NS_ASSUME_NONNULL_BEGIN
28
29#pragma mark - GPBApiRoot
30
31/**
32 * Exposes the extension registry for this file.
33 *
34 * The base class provides:
35 * @code
36 * + (GPBExtensionRegistry *)extensionRegistry;
37 * @endcode
38 * which is a @c GPBExtensionRegistry that includes all the extensions defined by
39 * this file and all files that it depends on.
40 **/
41GPB_FINAL @interface GPBApiRoot : GPBRootObject
42@end
43
44#pragma mark - GPBApi
45
46typedef GPB_ENUM(GPBApi_FieldNumber) {
47 GPBApi_FieldNumber_Name = 1,
48 GPBApi_FieldNumber_MethodsArray = 2,
49 GPBApi_FieldNumber_OptionsArray = 3,
50 GPBApi_FieldNumber_Version = 4,
51 GPBApi_FieldNumber_SourceContext = 5,
52 GPBApi_FieldNumber_MixinsArray = 6,
53 GPBApi_FieldNumber_Syntax = 7,
54};
55
56/**
57 * Api is a light-weight descriptor for an API Interface.
58 *
59 * Interfaces are also described as "protocol buffer services" in some contexts,
60 * such as by the "service" keyword in a .proto file, but they are different
61 * from API Services, which represent a concrete implementation of an interface
62 * as opposed to simply a description of methods and bindings. They are also
63 * sometimes simply referred to as "APIs" in other contexts, such as the name of
64 * this message itself. See https://cloud.google.com/apis/design/glossary for
65 * detailed terminology.
66 **/
67GPB_FINAL @interface GPBApi : GPBMessage
68
69/**
70 * The fully qualified name of this interface, including package name
71 * followed by the interface's simple name.
72 **/
73@property(nonatomic, readwrite, copy, null_resettable) NSString *name;
74
75/** The methods of this interface, in unspecified order. */
76@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<GPBMethod*> *methodsArray;
77/** The number of items in @c methodsArray without causing the array to be created. */
78@property(nonatomic, readonly) NSUInteger methodsArray_Count;
79
80/** Any metadata attached to the interface. */
81@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<GPBOption*> *optionsArray;
82/** The number of items in @c optionsArray without causing the array to be created. */
83@property(nonatomic, readonly) NSUInteger optionsArray_Count;
84
85/**
86 * A version string for this interface. If specified, must have the form
87 * `major-version.minor-version`, as in `1.10`. If the minor version is
88 * omitted, it defaults to zero. If the entire version field is empty, the
89 * major version is derived from the package name, as outlined below. If the
90 * field is not empty, the version in the package name will be verified to be
91 * consistent with what is provided here.
92 *
93 * The versioning schema uses [semantic
94 * versioning](http://semver.org) where the major version number
95 * indicates a breaking change and the minor version an additive,
96 * non-breaking change. Both version numbers are signals to users
97 * what to expect from different versions, and should be carefully
98 * chosen based on the product plan.
99 *
100 * The major version is also reflected in the package name of the
101 * interface, which must end in `v<major-version>`, as in
102 * `google.feature.v1`. For major versions 0 and 1, the suffix can
103 * be omitted. Zero major versions must only be used for
104 * experimental, non-GA interfaces.
105 **/
106@property(nonatomic, readwrite, copy, null_resettable) NSString *version;
107
108/**
109 * Source context for the protocol buffer service represented by this
110 * message.
111 **/
112@property(nonatomic, readwrite, strong, null_resettable) GPBSourceContext *sourceContext;
113/** Test to see if @c sourceContext has been set. */
114@property(nonatomic, readwrite) BOOL hasSourceContext;
115
116/** Included interfaces. See [Mixin][]. */
117@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<GPBMixin*> *mixinsArray;
118/** The number of items in @c mixinsArray without causing the array to be created. */
119@property(nonatomic, readonly) NSUInteger mixinsArray_Count;
120
121/** The source syntax of the service. */
122@property(nonatomic, readwrite) enum GPBSyntax syntax;
123
124@end
125
126/**
127 * Fetches the raw value of a @c GPBApi's @c syntax property, even
128 * if the value was not defined by the enum at the time the code was generated.
129 **/
130int32_t GPBApi_Syntax_RawValue(GPBApi *message);
131/**
132 * Sets the raw value of an @c GPBApi's @c syntax property, allowing
133 * it to be set to a value that was not defined by the enum at the time the code
134 * was generated.
135 **/
136void SetGPBApi_Syntax_RawValue(GPBApi *message, int32_t value);
137
138#pragma mark - GPBMethod
139
140typedef GPB_ENUM(GPBMethod_FieldNumber) {
141 GPBMethod_FieldNumber_Name = 1,
142 GPBMethod_FieldNumber_RequestTypeURL = 2,
143 GPBMethod_FieldNumber_RequestStreaming = 3,
144 GPBMethod_FieldNumber_ResponseTypeURL = 4,
145 GPBMethod_FieldNumber_ResponseStreaming = 5,
146 GPBMethod_FieldNumber_OptionsArray = 6,
147 GPBMethod_FieldNumber_Syntax = 7,
148};
149
150/**
151 * Method represents a method of an API interface.
152 **/
153GPB_FINAL @interface GPBMethod : GPBMessage
154
155/** The simple name of this method. */
156@property(nonatomic, readwrite, copy, null_resettable) NSString *name;
157
158/** A URL of the input message type. */
159@property(nonatomic, readwrite, copy, null_resettable) NSString *requestTypeURL;
160
161/** If true, the request is streamed. */
162@property(nonatomic, readwrite) BOOL requestStreaming;
163
164/** The URL of the output message type. */
165@property(nonatomic, readwrite, copy, null_resettable) NSString *responseTypeURL;
166
167/** If true, the response is streamed. */
168@property(nonatomic, readwrite) BOOL responseStreaming;
169
170/** Any metadata attached to the method. */
171@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<GPBOption*> *optionsArray;
172/** The number of items in @c optionsArray without causing the array to be created. */
173@property(nonatomic, readonly) NSUInteger optionsArray_Count;
174
175/** The source syntax of this method. */
176@property(nonatomic, readwrite) enum GPBSyntax syntax;
177
178@end
179
180/**
181 * Fetches the raw value of a @c GPBMethod's @c syntax property, even
182 * if the value was not defined by the enum at the time the code was generated.
183 **/
184int32_t GPBMethod_Syntax_RawValue(GPBMethod *message);
185/**
186 * Sets the raw value of an @c GPBMethod's @c syntax property, allowing
187 * it to be set to a value that was not defined by the enum at the time the code
188 * was generated.
189 **/
190void SetGPBMethod_Syntax_RawValue(GPBMethod *message, int32_t value);
191
192#pragma mark - GPBMixin
193
194typedef GPB_ENUM(GPBMixin_FieldNumber) {
195 GPBMixin_FieldNumber_Name = 1,
196 GPBMixin_FieldNumber_Root = 2,
197};
198
199/**
200 * Declares an API Interface to be included in this interface. The including
201 * interface must redeclare all the methods from the included interface, but
202 * documentation and options are inherited as follows:
203 *
204 * - If after comment and whitespace stripping, the documentation
205 * string of the redeclared method is empty, it will be inherited
206 * from the original method.
207 *
208 * - Each annotation belonging to the service config (http,
209 * visibility) which is not set in the redeclared method will be
210 * inherited.
211 *
212 * - If an http annotation is inherited, the path pattern will be
213 * modified as follows. Any version prefix will be replaced by the
214 * version of the including interface plus the [root][] path if
215 * specified.
216 *
217 * Example of a simple mixin:
218 *
219 * package google.acl.v1;
220 * service AccessControl {
221 * // Get the underlying ACL object.
222 * rpc GetAcl(GetAclRequest) returns (Acl) {
223 * option (google.api.http).get = "/v1/{resource=**}:getAcl";
224 * }
225 * }
226 *
227 * package google.storage.v2;
228 * service Storage {
229 * rpc GetAcl(GetAclRequest) returns (Acl);
230 *
231 * // Get a data record.
232 * rpc GetData(GetDataRequest) returns (Data) {
233 * option (google.api.http).get = "/v2/{resource=**}";
234 * }
235 * }
236 *
237 * Example of a mixin configuration:
238 *
239 * apis:
240 * - name: google.storage.v2.Storage
241 * mixins:
242 * - name: google.acl.v1.AccessControl
243 *
244 * The mixin construct implies that all methods in `AccessControl` are
245 * also declared with same name and request/response types in
246 * `Storage`. A documentation generator or annotation processor will
Peter Newmane2cc2de2020-08-10 19:08:25 +0100247 * see the effective `Storage.GetAcl` method after inheriting
Thomas Van Lenten56c48ae2020-01-22 15:50:52 -0500248 * documentation and annotations as follows:
249 *
250 * service Storage {
251 * // Get the underlying ACL object.
252 * rpc GetAcl(GetAclRequest) returns (Acl) {
253 * option (google.api.http).get = "/v2/{resource=**}:getAcl";
254 * }
255 * ...
256 * }
257 *
258 * Note how the version in the path pattern changed from `v1` to `v2`.
259 *
260 * If the `root` field in the mixin is specified, it should be a
261 * relative path under which inherited HTTP paths are placed. Example:
262 *
263 * apis:
264 * - name: google.storage.v2.Storage
265 * mixins:
266 * - name: google.acl.v1.AccessControl
267 * root: acls
268 *
269 * This implies the following inherited HTTP annotation:
270 *
271 * service Storage {
272 * // Get the underlying ACL object.
273 * rpc GetAcl(GetAclRequest) returns (Acl) {
274 * option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
275 * }
276 * ...
277 * }
278 **/
279GPB_FINAL @interface GPBMixin : GPBMessage
280
281/** The fully qualified name of the interface which is included. */
282@property(nonatomic, readwrite, copy, null_resettable) NSString *name;
283
284/**
285 * If non-empty specifies a path under which inherited HTTP paths
286 * are rooted.
287 **/
288@property(nonatomic, readwrite, copy, null_resettable) NSString *root;
289
290@end
291
292NS_ASSUME_NONNULL_END
293
294CF_EXTERN_C_END
295
296#pragma clang diagnostic pop
297
298// @@protoc_insertion_point(global_scope)