grpc-rest 0.1.18 → 0.1.20

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,720 @@
1
+ syntax = "proto3";
2
+
3
+ package grpc.gateway.protoc_gen_openapiv2.options;
4
+
5
+ import "google/protobuf/struct.proto";
6
+
7
+ option go_package = "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options";
8
+
9
+ // Scheme describes the schemes supported by the OpenAPI Swagger
10
+ // and Operation objects.
11
+ enum Scheme {
12
+ UNKNOWN = 0;
13
+ HTTP = 1;
14
+ HTTPS = 2;
15
+ WS = 3;
16
+ WSS = 4;
17
+ }
18
+
19
+ // `Swagger` is a representation of OpenAPI v2 specification's Swagger object.
20
+ //
21
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#swaggerObject
22
+ //
23
+ // Example:
24
+ //
25
+ // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
26
+ // info: {
27
+ // title: "Echo API";
28
+ // version: "1.0";
29
+ // description: "";
30
+ // contact: {
31
+ // name: "gRPC-Gateway project";
32
+ // url: "https://github.com/grpc-ecosystem/grpc-gateway";
33
+ // email: "none@example.com";
34
+ // };
35
+ // license: {
36
+ // name: "BSD 3-Clause License";
37
+ // url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE";
38
+ // };
39
+ // };
40
+ // schemes: HTTPS;
41
+ // consumes: "application/json";
42
+ // produces: "application/json";
43
+ // };
44
+ //
45
+ message Swagger {
46
+ // Specifies the OpenAPI Specification version being used. It can be
47
+ // used by the OpenAPI UI and other clients to interpret the API listing. The
48
+ // value MUST be "2.0".
49
+ string swagger = 1;
50
+ // Provides metadata about the API. The metadata can be used by the
51
+ // clients if needed.
52
+ Info info = 2;
53
+ // The host (name or ip) serving the API. This MUST be the host only and does
54
+ // not include the scheme nor sub-paths. It MAY include a port. If the host is
55
+ // not included, the host serving the documentation is to be used (including
56
+ // the port). The host does not support path templating.
57
+ string host = 3;
58
+ // The base path on which the API is served, which is relative to the host. If
59
+ // it is not included, the API is served directly under the host. The value
60
+ // MUST start with a leading slash (/). The basePath does not support path
61
+ // templating.
62
+ // Note that using `base_path` does not change the endpoint paths that are
63
+ // generated in the resulting OpenAPI file. If you wish to use `base_path`
64
+ // with relatively generated OpenAPI paths, the `base_path` prefix must be
65
+ // manually removed from your `google.api.http` paths and your code changed to
66
+ // serve the API from the `base_path`.
67
+ string base_path = 4;
68
+ // The transfer protocol of the API. Values MUST be from the list: "http",
69
+ // "https", "ws", "wss". If the schemes is not included, the default scheme to
70
+ // be used is the one used to access the OpenAPI definition itself.
71
+ repeated Scheme schemes = 5;
72
+ // A list of MIME types the APIs can consume. This is global to all APIs but
73
+ // can be overridden on specific API calls. Value MUST be as described under
74
+ // Mime Types.
75
+ repeated string consumes = 6;
76
+ // A list of MIME types the APIs can produce. This is global to all APIs but
77
+ // can be overridden on specific API calls. Value MUST be as described under
78
+ // Mime Types.
79
+ repeated string produces = 7;
80
+ // field 8 is reserved for 'paths'.
81
+ reserved 8;
82
+ // field 9 is reserved for 'definitions', which at this time are already
83
+ // exposed as and customizable as proto messages.
84
+ reserved 9;
85
+ // An object to hold responses that can be used across operations. This
86
+ // property does not define global responses for all operations.
87
+ map<string, Response> responses = 10;
88
+ // Security scheme definitions that can be used across the specification.
89
+ SecurityDefinitions security_definitions = 11;
90
+ // A declaration of which security schemes are applied for the API as a whole.
91
+ // The list of values describes alternative security schemes that can be used
92
+ // (that is, there is a logical OR between the security requirements).
93
+ // Individual operations can override this definition.
94
+ repeated SecurityRequirement security = 12;
95
+ // A list of tags for API documentation control. Tags can be used for logical
96
+ // grouping of operations by resources or any other qualifier.
97
+ repeated Tag tags = 13;
98
+ // Additional external documentation.
99
+ ExternalDocumentation external_docs = 14;
100
+ // Custom properties that start with "x-" such as "x-foo" used to describe
101
+ // extra functionality that is not covered by the standard OpenAPI Specification.
102
+ // See: https://swagger.io/docs/specification/2-0/swagger-extensions/
103
+ map<string, google.protobuf.Value> extensions = 15;
104
+ }
105
+
106
+ // `Operation` is a representation of OpenAPI v2 specification's Operation object.
107
+ //
108
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#operationObject
109
+ //
110
+ // Example:
111
+ //
112
+ // service EchoService {
113
+ // rpc Echo(SimpleMessage) returns (SimpleMessage) {
114
+ // option (google.api.http) = {
115
+ // get: "/v1/example/echo/{id}"
116
+ // };
117
+ //
118
+ // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
119
+ // summary: "Get a message.";
120
+ // operation_id: "getMessage";
121
+ // tags: "echo";
122
+ // responses: {
123
+ // key: "200"
124
+ // value: {
125
+ // description: "OK";
126
+ // }
127
+ // }
128
+ // };
129
+ // }
130
+ // }
131
+ message Operation {
132
+ // A list of tags for API documentation control. Tags can be used for logical
133
+ // grouping of operations by resources or any other qualifier.
134
+ repeated string tags = 1;
135
+ // A short summary of what the operation does. For maximum readability in the
136
+ // swagger-ui, this field SHOULD be less than 120 characters.
137
+ string summary = 2;
138
+ // A verbose explanation of the operation behavior. GFM syntax can be used for
139
+ // rich text representation.
140
+ string description = 3;
141
+ // Additional external documentation for this operation.
142
+ ExternalDocumentation external_docs = 4;
143
+ // Unique string used to identify the operation. The id MUST be unique among
144
+ // all operations described in the API. Tools and libraries MAY use the
145
+ // operationId to uniquely identify an operation, therefore, it is recommended
146
+ // to follow common programming naming conventions.
147
+ string operation_id = 5;
148
+ // A list of MIME types the operation can consume. This overrides the consumes
149
+ // definition at the OpenAPI Object. An empty value MAY be used to clear the
150
+ // global definition. Value MUST be as described under Mime Types.
151
+ repeated string consumes = 6;
152
+ // A list of MIME types the operation can produce. This overrides the produces
153
+ // definition at the OpenAPI Object. An empty value MAY be used to clear the
154
+ // global definition. Value MUST be as described under Mime Types.
155
+ repeated string produces = 7;
156
+ // field 8 is reserved for 'parameters'.
157
+ reserved 8;
158
+ // The list of possible responses as they are returned from executing this
159
+ // operation.
160
+ map<string, Response> responses = 9;
161
+ // The transfer protocol for the operation. Values MUST be from the list:
162
+ // "http", "https", "ws", "wss". The value overrides the OpenAPI Object
163
+ // schemes definition.
164
+ repeated Scheme schemes = 10;
165
+ // Declares this operation to be deprecated. Usage of the declared operation
166
+ // should be refrained. Default value is false.
167
+ bool deprecated = 11;
168
+ // A declaration of which security schemes are applied for this operation. The
169
+ // list of values describes alternative security schemes that can be used
170
+ // (that is, there is a logical OR between the security requirements). This
171
+ // definition overrides any declared top-level security. To remove a top-level
172
+ // security declaration, an empty array can be used.
173
+ repeated SecurityRequirement security = 12;
174
+ // Custom properties that start with "x-" such as "x-foo" used to describe
175
+ // extra functionality that is not covered by the standard OpenAPI Specification.
176
+ // See: https://swagger.io/docs/specification/2-0/swagger-extensions/
177
+ map<string, google.protobuf.Value> extensions = 13;
178
+ // Custom parameters such as HTTP request headers.
179
+ // See: https://swagger.io/docs/specification/2-0/describing-parameters/
180
+ // and https://swagger.io/specification/v2/#parameter-object.
181
+ Parameters parameters = 14;
182
+ }
183
+
184
+ // `Parameters` is a representation of OpenAPI v2 specification's parameters object.
185
+ // Note: This technically breaks compatibility with the OpenAPI 2 definition structure as we only
186
+ // allow header parameters to be set here since we do not want users specifying custom non-header
187
+ // parameters beyond those inferred from the Protobuf schema.
188
+ // See: https://swagger.io/specification/v2/#parameter-object
189
+ message Parameters {
190
+ // `Headers` is one or more HTTP header parameter.
191
+ // See: https://swagger.io/docs/specification/2-0/describing-parameters/#header-parameters
192
+ repeated HeaderParameter headers = 1;
193
+ }
194
+
195
+ // `HeaderParameter` a HTTP header parameter.
196
+ // See: https://swagger.io/specification/v2/#parameter-object
197
+ message HeaderParameter {
198
+ // `Type` is a supported HTTP header type.
199
+ // See https://swagger.io/specification/v2/#parameterType.
200
+ enum Type {
201
+ UNKNOWN = 0;
202
+ STRING = 1;
203
+ NUMBER = 2;
204
+ INTEGER = 3;
205
+ BOOLEAN = 4;
206
+ }
207
+
208
+ // `Name` is the header name.
209
+ string name = 1;
210
+ // `Description` is a short description of the header.
211
+ string description = 2;
212
+ // `Type` is the type of the object. The value MUST be one of "string", "number", "integer", or "boolean". The "array" type is not supported.
213
+ // See: https://swagger.io/specification/v2/#parameterType.
214
+ Type type = 3;
215
+ // `Format` The extending format for the previously mentioned type.
216
+ string format = 4;
217
+ // `Required` indicates if the header is optional
218
+ bool required = 5;
219
+ // field 6 is reserved for 'items', but in OpenAPI-specific way.
220
+ reserved 6;
221
+ // field 7 is reserved `Collection Format`. Determines the format of the array if type array is used.
222
+ reserved 7;
223
+ }
224
+
225
+ // `Header` is a representation of OpenAPI v2 specification's Header object.
226
+ //
227
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#headerObject
228
+ //
229
+ message Header {
230
+ // `Description` is a short description of the header.
231
+ string description = 1;
232
+ // The type of the object. The value MUST be one of "string", "number", "integer", or "boolean". The "array" type is not supported.
233
+ string type = 2;
234
+ // `Format` The extending format for the previously mentioned type.
235
+ string format = 3;
236
+ // field 4 is reserved for 'items', but in OpenAPI-specific way.
237
+ reserved 4;
238
+ // field 5 is reserved `Collection Format` Determines the format of the array if type array is used.
239
+ reserved 5;
240
+ // `Default` Declares the value of the header that the server will use if none is provided.
241
+ // See: https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2.
242
+ // Unlike JSON Schema this value MUST conform to the defined type for the header.
243
+ string default = 6;
244
+ // field 7 is reserved for 'maximum'.
245
+ reserved 7;
246
+ // field 8 is reserved for 'exclusiveMaximum'.
247
+ reserved 8;
248
+ // field 9 is reserved for 'minimum'.
249
+ reserved 9;
250
+ // field 10 is reserved for 'exclusiveMinimum'.
251
+ reserved 10;
252
+ // field 11 is reserved for 'maxLength'.
253
+ reserved 11;
254
+ // field 12 is reserved for 'minLength'.
255
+ reserved 12;
256
+ // 'Pattern' See https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.3.
257
+ string pattern = 13;
258
+ // field 14 is reserved for 'maxItems'.
259
+ reserved 14;
260
+ // field 15 is reserved for 'minItems'.
261
+ reserved 15;
262
+ // field 16 is reserved for 'uniqueItems'.
263
+ reserved 16;
264
+ // field 17 is reserved for 'enum'.
265
+ reserved 17;
266
+ // field 18 is reserved for 'multipleOf'.
267
+ reserved 18;
268
+ }
269
+
270
+ // `Response` is a representation of OpenAPI v2 specification's Response object.
271
+ //
272
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#responseObject
273
+ //
274
+ message Response {
275
+ // `Description` is a short description of the response.
276
+ // GFM syntax can be used for rich text representation.
277
+ string description = 1;
278
+ // `Schema` optionally defines the structure of the response.
279
+ // If `Schema` is not provided, it means there is no content to the response.
280
+ Schema schema = 2;
281
+ // `Headers` A list of headers that are sent with the response.
282
+ // `Header` name is expected to be a string in the canonical format of the MIME header key
283
+ // See: https://golang.org/pkg/net/textproto/#CanonicalMIMEHeaderKey
284
+ map<string, Header> headers = 3;
285
+ // `Examples` gives per-mimetype response examples.
286
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#example-object
287
+ map<string, string> examples = 4;
288
+ // Custom properties that start with "x-" such as "x-foo" used to describe
289
+ // extra functionality that is not covered by the standard OpenAPI Specification.
290
+ // See: https://swagger.io/docs/specification/2-0/swagger-extensions/
291
+ map<string, google.protobuf.Value> extensions = 5;
292
+ }
293
+
294
+ // `Info` is a representation of OpenAPI v2 specification's Info object.
295
+ //
296
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#infoObject
297
+ //
298
+ // Example:
299
+ //
300
+ // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
301
+ // info: {
302
+ // title: "Echo API";
303
+ // version: "1.0";
304
+ // description: "";
305
+ // contact: {
306
+ // name: "gRPC-Gateway project";
307
+ // url: "https://github.com/grpc-ecosystem/grpc-gateway";
308
+ // email: "none@example.com";
309
+ // };
310
+ // license: {
311
+ // name: "BSD 3-Clause License";
312
+ // url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE";
313
+ // };
314
+ // };
315
+ // ...
316
+ // };
317
+ //
318
+ message Info {
319
+ // The title of the application.
320
+ string title = 1;
321
+ // A short description of the application. GFM syntax can be used for rich
322
+ // text representation.
323
+ string description = 2;
324
+ // The Terms of Service for the API.
325
+ string terms_of_service = 3;
326
+ // The contact information for the exposed API.
327
+ Contact contact = 4;
328
+ // The license information for the exposed API.
329
+ License license = 5;
330
+ // Provides the version of the application API (not to be confused
331
+ // with the specification version).
332
+ string version = 6;
333
+ // Custom properties that start with "x-" such as "x-foo" used to describe
334
+ // extra functionality that is not covered by the standard OpenAPI Specification.
335
+ // See: https://swagger.io/docs/specification/2-0/swagger-extensions/
336
+ map<string, google.protobuf.Value> extensions = 7;
337
+ }
338
+
339
+ // `Contact` is a representation of OpenAPI v2 specification's Contact object.
340
+ //
341
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#contactObject
342
+ //
343
+ // Example:
344
+ //
345
+ // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
346
+ // info: {
347
+ // ...
348
+ // contact: {
349
+ // name: "gRPC-Gateway project";
350
+ // url: "https://github.com/grpc-ecosystem/grpc-gateway";
351
+ // email: "none@example.com";
352
+ // };
353
+ // ...
354
+ // };
355
+ // ...
356
+ // };
357
+ //
358
+ message Contact {
359
+ // The identifying name of the contact person/organization.
360
+ string name = 1;
361
+ // The URL pointing to the contact information. MUST be in the format of a
362
+ // URL.
363
+ string url = 2;
364
+ // The email address of the contact person/organization. MUST be in the format
365
+ // of an email address.
366
+ string email = 3;
367
+ }
368
+
369
+ // `License` is a representation of OpenAPI v2 specification's License object.
370
+ //
371
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#licenseObject
372
+ //
373
+ // Example:
374
+ //
375
+ // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
376
+ // info: {
377
+ // ...
378
+ // license: {
379
+ // name: "BSD 3-Clause License";
380
+ // url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE";
381
+ // };
382
+ // ...
383
+ // };
384
+ // ...
385
+ // };
386
+ //
387
+ message License {
388
+ // The license name used for the API.
389
+ string name = 1;
390
+ // A URL to the license used for the API. MUST be in the format of a URL.
391
+ string url = 2;
392
+ }
393
+
394
+ // `ExternalDocumentation` is a representation of OpenAPI v2 specification's
395
+ // ExternalDocumentation object.
396
+ //
397
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#externalDocumentationObject
398
+ //
399
+ // Example:
400
+ //
401
+ // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
402
+ // ...
403
+ // external_docs: {
404
+ // description: "More about gRPC-Gateway";
405
+ // url: "https://github.com/grpc-ecosystem/grpc-gateway";
406
+ // }
407
+ // ...
408
+ // };
409
+ //
410
+ message ExternalDocumentation {
411
+ // A short description of the target documentation. GFM syntax can be used for
412
+ // rich text representation.
413
+ string description = 1;
414
+ // The URL for the target documentation. Value MUST be in the format
415
+ // of a URL.
416
+ string url = 2;
417
+ }
418
+
419
+ // `Schema` is a representation of OpenAPI v2 specification's Schema object.
420
+ //
421
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject
422
+ //
423
+ message Schema {
424
+ JSONSchema json_schema = 1;
425
+ // Adds support for polymorphism. The discriminator is the schema property
426
+ // name that is used to differentiate between other schema that inherit this
427
+ // schema. The property name used MUST be defined at this schema and it MUST
428
+ // be in the required property list. When used, the value MUST be the name of
429
+ // this schema or any schema that inherits it.
430
+ string discriminator = 2;
431
+ // Relevant only for Schema "properties" definitions. Declares the property as
432
+ // "read only". This means that it MAY be sent as part of a response but MUST
433
+ // NOT be sent as part of the request. Properties marked as readOnly being
434
+ // true SHOULD NOT be in the required list of the defined schema. Default
435
+ // value is false.
436
+ bool read_only = 3;
437
+ // field 4 is reserved for 'xml'.
438
+ reserved 4;
439
+ // Additional external documentation for this schema.
440
+ ExternalDocumentation external_docs = 5;
441
+ // A free-form property to include an example of an instance for this schema in JSON.
442
+ // This is copied verbatim to the output.
443
+ string example = 6;
444
+ }
445
+
446
+ // `JSONSchema` represents properties from JSON Schema taken, and as used, in
447
+ // the OpenAPI v2 spec.
448
+ //
449
+ // This includes changes made by OpenAPI v2.
450
+ //
451
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject
452
+ //
453
+ // See also: https://cswr.github.io/JsonSchema/spec/basic_types/,
454
+ // https://github.com/json-schema-org/json-schema-spec/blob/master/schema.json
455
+ //
456
+ // Example:
457
+ //
458
+ // message SimpleMessage {
459
+ // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = {
460
+ // json_schema: {
461
+ // title: "SimpleMessage"
462
+ // description: "A simple message."
463
+ // required: ["id"]
464
+ // }
465
+ // };
466
+ //
467
+ // // Id represents the message identifier.
468
+ // string id = 1; [
469
+ // (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
470
+ // description: "The unique identifier of the simple message."
471
+ // }];
472
+ // }
473
+ //
474
+ message JSONSchema {
475
+ // field 1 is reserved for '$id', omitted from OpenAPI v2.
476
+ reserved 1;
477
+ // field 2 is reserved for '$schema', omitted from OpenAPI v2.
478
+ reserved 2;
479
+ // Ref is used to define an external reference to include in the message.
480
+ // This could be a fully qualified proto message reference, and that type must
481
+ // be imported into the protofile. If no message is identified, the Ref will
482
+ // be used verbatim in the output.
483
+ // For example:
484
+ // `ref: ".google.protobuf.Timestamp"`.
485
+ string ref = 3;
486
+ // field 4 is reserved for '$comment', omitted from OpenAPI v2.
487
+ reserved 4;
488
+ // The title of the schema.
489
+ string title = 5;
490
+ // A short description of the schema.
491
+ string description = 6;
492
+ string default = 7;
493
+ bool read_only = 8;
494
+ // A free-form property to include a JSON example of this field. This is copied
495
+ // verbatim to the output swagger.json. Quotes must be escaped.
496
+ // This property is the same for 2.0 and 3.0.0 https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/3.0.0.md#schemaObject https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject
497
+ string example = 9;
498
+ double multiple_of = 10;
499
+ // Maximum represents an inclusive upper limit for a numeric instance. The
500
+ // value of MUST be a number,
501
+ double maximum = 11;
502
+ bool exclusive_maximum = 12;
503
+ // minimum represents an inclusive lower limit for a numeric instance. The
504
+ // value of MUST be a number,
505
+ double minimum = 13;
506
+ bool exclusive_minimum = 14;
507
+ uint64 max_length = 15;
508
+ uint64 min_length = 16;
509
+ string pattern = 17;
510
+ // field 18 is reserved for 'additionalItems', omitted from OpenAPI v2.
511
+ reserved 18;
512
+ // field 19 is reserved for 'items', but in OpenAPI-specific way.
513
+ // TODO(ivucica): add 'items'?
514
+ reserved 19;
515
+ uint64 max_items = 20;
516
+ uint64 min_items = 21;
517
+ bool unique_items = 22;
518
+ // field 23 is reserved for 'contains', omitted from OpenAPI v2.
519
+ reserved 23;
520
+ uint64 max_properties = 24;
521
+ uint64 min_properties = 25;
522
+ repeated string required = 26;
523
+ // field 27 is reserved for 'additionalProperties', but in OpenAPI-specific
524
+ // way. TODO(ivucica): add 'additionalProperties'?
525
+ reserved 27;
526
+ // field 28 is reserved for 'definitions', omitted from OpenAPI v2.
527
+ reserved 28;
528
+ // field 29 is reserved for 'properties', but in OpenAPI-specific way.
529
+ // TODO(ivucica): add 'additionalProperties'?
530
+ reserved 29;
531
+ // following fields are reserved, as the properties have been omitted from
532
+ // OpenAPI v2:
533
+ // patternProperties, dependencies, propertyNames, const
534
+ reserved 30 to 33;
535
+ // Items in 'array' must be unique.
536
+ repeated string array = 34;
537
+
538
+ enum JSONSchemaSimpleTypes {
539
+ UNKNOWN = 0;
540
+ ARRAY = 1;
541
+ BOOLEAN = 2;
542
+ INTEGER = 3;
543
+ NULL = 4;
544
+ NUMBER = 5;
545
+ OBJECT = 6;
546
+ STRING = 7;
547
+ }
548
+
549
+ repeated JSONSchemaSimpleTypes type = 35;
550
+ // `Format`
551
+ string format = 36;
552
+ // following fields are reserved, as the properties have been omitted from
553
+ // OpenAPI v2: contentMediaType, contentEncoding, if, then, else
554
+ reserved 37 to 41;
555
+ // field 42 is reserved for 'allOf', but in OpenAPI-specific way.
556
+ // TODO(ivucica): add 'allOf'?
557
+ reserved 42;
558
+ // following fields are reserved, as the properties have been omitted from
559
+ // OpenAPI v2:
560
+ // anyOf, oneOf, not
561
+ reserved 43 to 45;
562
+ // Items in `enum` must be unique https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.1
563
+ repeated string enum = 46;
564
+
565
+ // Additional field level properties used when generating the OpenAPI v2 file.
566
+ FieldConfiguration field_configuration = 1001;
567
+
568
+ // 'FieldConfiguration' provides additional field level properties used when generating the OpenAPI v2 file.
569
+ // These properties are not defined by OpenAPIv2, but they are used to control the generation.
570
+ message FieldConfiguration {
571
+ // Alternative parameter name when used as path parameter. If set, this will
572
+ // be used as the complete parameter name when this field is used as a path
573
+ // parameter. Use this to avoid having auto generated path parameter names
574
+ // for overlapping paths.
575
+ string path_param_name = 47;
576
+ }
577
+ // Custom properties that start with "x-" such as "x-foo" used to describe
578
+ // extra functionality that is not covered by the standard OpenAPI Specification.
579
+ // See: https://swagger.io/docs/specification/2-0/swagger-extensions/
580
+ map<string, google.protobuf.Value> extensions = 48;
581
+ }
582
+
583
+ // `Tag` is a representation of OpenAPI v2 specification's Tag object.
584
+ //
585
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#tagObject
586
+ //
587
+ message Tag {
588
+ // The name of the tag. Use it to allow override of the name of a
589
+ // global Tag object, then use that name to reference the tag throughout the
590
+ // OpenAPI file.
591
+ string name = 1;
592
+ // A short description for the tag. GFM syntax can be used for rich text
593
+ // representation.
594
+ string description = 2;
595
+ // Additional external documentation for this tag.
596
+ ExternalDocumentation external_docs = 3;
597
+ // Custom properties that start with "x-" such as "x-foo" used to describe
598
+ // extra functionality that is not covered by the standard OpenAPI Specification.
599
+ // See: https://swagger.io/docs/specification/2-0/swagger-extensions/
600
+ map<string, google.protobuf.Value> extensions = 4;
601
+ }
602
+
603
+ // `SecurityDefinitions` is a representation of OpenAPI v2 specification's
604
+ // Security Definitions object.
605
+ //
606
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securityDefinitionsObject
607
+ //
608
+ // A declaration of the security schemes available to be used in the
609
+ // specification. This does not enforce the security schemes on the operations
610
+ // and only serves to provide the relevant details for each scheme.
611
+ message SecurityDefinitions {
612
+ // A single security scheme definition, mapping a "name" to the scheme it
613
+ // defines.
614
+ map<string, SecurityScheme> security = 1;
615
+ }
616
+
617
+ // `SecurityScheme` is a representation of OpenAPI v2 specification's
618
+ // Security Scheme object.
619
+ //
620
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securitySchemeObject
621
+ //
622
+ // Allows the definition of a security scheme that can be used by the
623
+ // operations. Supported schemes are basic authentication, an API key (either as
624
+ // a header or as a query parameter) and OAuth2's common flows (implicit,
625
+ // password, application and access code).
626
+ message SecurityScheme {
627
+ // The type of the security scheme. Valid values are "basic",
628
+ // "apiKey" or "oauth2".
629
+ enum Type {
630
+ TYPE_INVALID = 0;
631
+ TYPE_BASIC = 1;
632
+ TYPE_API_KEY = 2;
633
+ TYPE_OAUTH2 = 3;
634
+ }
635
+
636
+ // The location of the API key. Valid values are "query" or "header".
637
+ enum In {
638
+ IN_INVALID = 0;
639
+ IN_QUERY = 1;
640
+ IN_HEADER = 2;
641
+ }
642
+
643
+ // The flow used by the OAuth2 security scheme. Valid values are
644
+ // "implicit", "password", "application" or "accessCode".
645
+ enum Flow {
646
+ FLOW_INVALID = 0;
647
+ FLOW_IMPLICIT = 1;
648
+ FLOW_PASSWORD = 2;
649
+ FLOW_APPLICATION = 3;
650
+ FLOW_ACCESS_CODE = 4;
651
+ }
652
+
653
+ // The type of the security scheme. Valid values are "basic",
654
+ // "apiKey" or "oauth2".
655
+ Type type = 1;
656
+ // A short description for security scheme.
657
+ string description = 2;
658
+ // The name of the header or query parameter to be used.
659
+ // Valid for apiKey.
660
+ string name = 3;
661
+ // The location of the API key. Valid values are "query" or
662
+ // "header".
663
+ // Valid for apiKey.
664
+ In in = 4;
665
+ // The flow used by the OAuth2 security scheme. Valid values are
666
+ // "implicit", "password", "application" or "accessCode".
667
+ // Valid for oauth2.
668
+ Flow flow = 5;
669
+ // The authorization URL to be used for this flow. This SHOULD be in
670
+ // the form of a URL.
671
+ // Valid for oauth2/implicit and oauth2/accessCode.
672
+ string authorization_url = 6;
673
+ // The token URL to be used for this flow. This SHOULD be in the
674
+ // form of a URL.
675
+ // Valid for oauth2/password, oauth2/application and oauth2/accessCode.
676
+ string token_url = 7;
677
+ // The available scopes for the OAuth2 security scheme.
678
+ // Valid for oauth2.
679
+ Scopes scopes = 8;
680
+ // Custom properties that start with "x-" such as "x-foo" used to describe
681
+ // extra functionality that is not covered by the standard OpenAPI Specification.
682
+ // See: https://swagger.io/docs/specification/2-0/swagger-extensions/
683
+ map<string, google.protobuf.Value> extensions = 9;
684
+ }
685
+
686
+ // `SecurityRequirement` is a representation of OpenAPI v2 specification's
687
+ // Security Requirement object.
688
+ //
689
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securityRequirementObject
690
+ //
691
+ // Lists the required security schemes to execute this operation. The object can
692
+ // have multiple security schemes declared in it which are all required (that
693
+ // is, there is a logical AND between the schemes).
694
+ //
695
+ // The name used for each property MUST correspond to a security scheme
696
+ // declared in the Security Definitions.
697
+ message SecurityRequirement {
698
+ // If the security scheme is of type "oauth2", then the value is a list of
699
+ // scope names required for the execution. For other security scheme types,
700
+ // the array MUST be empty.
701
+ message SecurityRequirementValue {
702
+ repeated string scope = 1;
703
+ }
704
+ // Each name must correspond to a security scheme which is declared in
705
+ // the Security Definitions. If the security scheme is of type "oauth2",
706
+ // then the value is a list of scope names required for the execution.
707
+ // For other security scheme types, the array MUST be empty.
708
+ map<string, SecurityRequirementValue> security_requirement = 1;
709
+ }
710
+
711
+ // `Scopes` is a representation of OpenAPI v2 specification's Scopes object.
712
+ //
713
+ // See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#scopesObject
714
+ //
715
+ // Lists the available scopes for an OAuth2 security scheme.
716
+ message Scopes {
717
+ // Maps between a name of a scope to a short description of it (as the value
718
+ // of the property).
719
+ map<string, string> scope = 1;
720
+ }