Code refactoring for bpa operator
[icn.git] / cmd / bpa-operator / vendor / github.com / googleapis / gnostic / OpenAPIv2 / OpenAPIv2.proto
1 // Copyright 2017 Google Inc. All Rights Reserved.
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
15 // THIS FILE IS AUTOMATICALLY GENERATED.
16
17 syntax = "proto3";
18
19 package openapi.v2;
20
21 import "google/protobuf/any.proto";
22
23 // This option lets the proto compiler generate Java code inside the package
24 // name (see below) instead of inside an outer class. It creates a simpler
25 // developer experience by reducing one-level of name nesting and be
26 // consistent with most programming languages that don't support outer classes.
27 option java_multiple_files = true;
28
29 // The Java outer classname should be the filename in UpperCamelCase. This
30 // class is only used to hold proto descriptor, so developers don't need to
31 // work with it directly.
32 option java_outer_classname = "OpenAPIProto";
33
34 // The Java package name must be proto package name with proper prefix.
35 option java_package = "org.openapi_v2";
36
37 // A reasonable prefix for the Objective-C symbols generated from the package.
38 // It should at a minimum be 3 characters long, all uppercase, and convention
39 // is to use an abbreviation of the package name. Something short, but
40 // hopefully unique enough to not conflict with things that may come along in
41 // the future. 'GPB' is reserved for the protocol buffer implementation itself.
42 option objc_class_prefix = "OAS";
43
44 message AdditionalPropertiesItem {
45   oneof oneof {
46     Schema schema = 1;
47     bool boolean = 2;
48   }
49 }
50
51 message Any {
52   google.protobuf.Any value = 1;
53   string yaml = 2;
54 }
55
56 message ApiKeySecurity {
57   string type = 1;
58   string name = 2;
59   string in = 3;
60   string description = 4;
61   repeated NamedAny vendor_extension = 5;
62 }
63
64 message BasicAuthenticationSecurity {
65   string type = 1;
66   string description = 2;
67   repeated NamedAny vendor_extension = 3;
68 }
69
70 message BodyParameter {
71   // A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed.
72   string description = 1;
73   // The name of the parameter.
74   string name = 2;
75   // Determines the location of the parameter.
76   string in = 3;
77   // Determines whether or not this parameter is required or optional.
78   bool required = 4;
79   Schema schema = 5;
80   repeated NamedAny vendor_extension = 6;
81 }
82
83 // Contact information for the owners of the API.
84 message Contact {
85   // The identifying name of the contact person/organization.
86   string name = 1;
87   // The URL pointing to the contact information.
88   string url = 2;
89   // The email address of the contact person/organization.
90   string email = 3;
91   repeated NamedAny vendor_extension = 4;
92 }
93
94 message Default {
95   repeated NamedAny additional_properties = 1;
96 }
97
98 // One or more JSON objects describing the schemas being consumed and produced by the API.
99 message Definitions {
100   repeated NamedSchema additional_properties = 1;
101 }
102
103 message Document {
104   // The Swagger version of this document.
105   string swagger = 1;
106   Info info = 2;
107   // The host (name or ip) of the API. Example: 'swagger.io'
108   string host = 3;
109   // The base path to the API. Example: '/api'.
110   string base_path = 4;
111   // The transfer protocol of the API.
112   repeated string schemes = 5;
113   // A list of MIME types accepted by the API.
114   repeated string consumes = 6;
115   // A list of MIME types the API can produce.
116   repeated string produces = 7;
117   Paths paths = 8;
118   Definitions definitions = 9;
119   ParameterDefinitions parameters = 10;
120   ResponseDefinitions responses = 11;
121   repeated SecurityRequirement security = 12;
122   SecurityDefinitions security_definitions = 13;
123   repeated Tag tags = 14;
124   ExternalDocs external_docs = 15;
125   repeated NamedAny vendor_extension = 16;
126 }
127
128 message Examples {
129   repeated NamedAny additional_properties = 1;
130 }
131
132 // information about external documentation
133 message ExternalDocs {
134   string description = 1;
135   string url = 2;
136   repeated NamedAny vendor_extension = 3;
137 }
138
139 // A deterministic version of a JSON Schema object.
140 message FileSchema {
141   string format = 1;
142   string title = 2;
143   string description = 3;
144   Any default = 4;
145   repeated string required = 5;
146   string type = 6;
147   bool read_only = 7;
148   ExternalDocs external_docs = 8;
149   Any example = 9;
150   repeated NamedAny vendor_extension = 10;
151 }
152
153 message FormDataParameterSubSchema {
154   // Determines whether or not this parameter is required or optional.
155   bool required = 1;
156   // Determines the location of the parameter.
157   string in = 2;
158   // A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed.
159   string description = 3;
160   // The name of the parameter.
161   string name = 4;
162   // allows sending a parameter by name only or with an empty value.
163   bool allow_empty_value = 5;
164   string type = 6;
165   string format = 7;
166   PrimitivesItems items = 8;
167   string collection_format = 9;
168   Any default = 10;
169   double maximum = 11;
170   bool exclusive_maximum = 12;
171   double minimum = 13;
172   bool exclusive_minimum = 14;
173   int64 max_length = 15;
174   int64 min_length = 16;
175   string pattern = 17;
176   int64 max_items = 18;
177   int64 min_items = 19;
178   bool unique_items = 20;
179   repeated Any enum = 21;
180   double multiple_of = 22;
181   repeated NamedAny vendor_extension = 23;
182 }
183
184 message Header {
185   string type = 1;
186   string format = 2;
187   PrimitivesItems items = 3;
188   string collection_format = 4;
189   Any default = 5;
190   double maximum = 6;
191   bool exclusive_maximum = 7;
192   double minimum = 8;
193   bool exclusive_minimum = 9;
194   int64 max_length = 10;
195   int64 min_length = 11;
196   string pattern = 12;
197   int64 max_items = 13;
198   int64 min_items = 14;
199   bool unique_items = 15;
200   repeated Any enum = 16;
201   double multiple_of = 17;
202   string description = 18;
203   repeated NamedAny vendor_extension = 19;
204 }
205
206 message HeaderParameterSubSchema {
207   // Determines whether or not this parameter is required or optional.
208   bool required = 1;
209   // Determines the location of the parameter.
210   string in = 2;
211   // A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed.
212   string description = 3;
213   // The name of the parameter.
214   string name = 4;
215   string type = 5;
216   string format = 6;
217   PrimitivesItems items = 7;
218   string collection_format = 8;
219   Any default = 9;
220   double maximum = 10;
221   bool exclusive_maximum = 11;
222   double minimum = 12;
223   bool exclusive_minimum = 13;
224   int64 max_length = 14;
225   int64 min_length = 15;
226   string pattern = 16;
227   int64 max_items = 17;
228   int64 min_items = 18;
229   bool unique_items = 19;
230   repeated Any enum = 20;
231   double multiple_of = 21;
232   repeated NamedAny vendor_extension = 22;
233 }
234
235 message Headers {
236   repeated NamedHeader additional_properties = 1;
237 }
238
239 // General information about the API.
240 message Info {
241   // A unique and precise title of the API.
242   string title = 1;
243   // A semantic version number of the API.
244   string version = 2;
245   // A longer description of the API. Should be different from the title.  GitHub Flavored Markdown is allowed.
246   string description = 3;
247   // The terms of service for the API.
248   string terms_of_service = 4;
249   Contact contact = 5;
250   License license = 6;
251   repeated NamedAny vendor_extension = 7;
252 }
253
254 message ItemsItem {
255   repeated Schema schema = 1;
256 }
257
258 message JsonReference {
259   string _ref = 1;
260   string description = 2;
261 }
262
263 message License {
264   // The name of the license type. It's encouraged to use an OSI compatible license.
265   string name = 1;
266   // The URL pointing to the license.
267   string url = 2;
268   repeated NamedAny vendor_extension = 3;
269 }
270
271 // Automatically-generated message used to represent maps of Any as ordered (name,value) pairs.
272 message NamedAny {
273   // Map key
274   string name = 1;
275   // Mapped value
276   Any value = 2;
277 }
278
279 // Automatically-generated message used to represent maps of Header as ordered (name,value) pairs.
280 message NamedHeader {
281   // Map key
282   string name = 1;
283   // Mapped value
284   Header value = 2;
285 }
286
287 // Automatically-generated message used to represent maps of Parameter as ordered (name,value) pairs.
288 message NamedParameter {
289   // Map key
290   string name = 1;
291   // Mapped value
292   Parameter value = 2;
293 }
294
295 // Automatically-generated message used to represent maps of PathItem as ordered (name,value) pairs.
296 message NamedPathItem {
297   // Map key
298   string name = 1;
299   // Mapped value
300   PathItem value = 2;
301 }
302
303 // Automatically-generated message used to represent maps of Response as ordered (name,value) pairs.
304 message NamedResponse {
305   // Map key
306   string name = 1;
307   // Mapped value
308   Response value = 2;
309 }
310
311 // Automatically-generated message used to represent maps of ResponseValue as ordered (name,value) pairs.
312 message NamedResponseValue {
313   // Map key
314   string name = 1;
315   // Mapped value
316   ResponseValue value = 2;
317 }
318
319 // Automatically-generated message used to represent maps of Schema as ordered (name,value) pairs.
320 message NamedSchema {
321   // Map key
322   string name = 1;
323   // Mapped value
324   Schema value = 2;
325 }
326
327 // Automatically-generated message used to represent maps of SecurityDefinitionsItem as ordered (name,value) pairs.
328 message NamedSecurityDefinitionsItem {
329   // Map key
330   string name = 1;
331   // Mapped value
332   SecurityDefinitionsItem value = 2;
333 }
334
335 // Automatically-generated message used to represent maps of string as ordered (name,value) pairs.
336 message NamedString {
337   // Map key
338   string name = 1;
339   // Mapped value
340   string value = 2;
341 }
342
343 // Automatically-generated message used to represent maps of StringArray as ordered (name,value) pairs.
344 message NamedStringArray {
345   // Map key
346   string name = 1;
347   // Mapped value
348   StringArray value = 2;
349 }
350
351 message NonBodyParameter {
352   oneof oneof {
353     HeaderParameterSubSchema header_parameter_sub_schema = 1;
354     FormDataParameterSubSchema form_data_parameter_sub_schema = 2;
355     QueryParameterSubSchema query_parameter_sub_schema = 3;
356     PathParameterSubSchema path_parameter_sub_schema = 4;
357   }
358 }
359
360 message Oauth2AccessCodeSecurity {
361   string type = 1;
362   string flow = 2;
363   Oauth2Scopes scopes = 3;
364   string authorization_url = 4;
365   string token_url = 5;
366   string description = 6;
367   repeated NamedAny vendor_extension = 7;
368 }
369
370 message Oauth2ApplicationSecurity {
371   string type = 1;
372   string flow = 2;
373   Oauth2Scopes scopes = 3;
374   string token_url = 4;
375   string description = 5;
376   repeated NamedAny vendor_extension = 6;
377 }
378
379 message Oauth2ImplicitSecurity {
380   string type = 1;
381   string flow = 2;
382   Oauth2Scopes scopes = 3;
383   string authorization_url = 4;
384   string description = 5;
385   repeated NamedAny vendor_extension = 6;
386 }
387
388 message Oauth2PasswordSecurity {
389   string type = 1;
390   string flow = 2;
391   Oauth2Scopes scopes = 3;
392   string token_url = 4;
393   string description = 5;
394   repeated NamedAny vendor_extension = 6;
395 }
396
397 message Oauth2Scopes {
398   repeated NamedString additional_properties = 1;
399 }
400
401 message Operation {
402   repeated string tags = 1;
403   // A brief summary of the operation.
404   string summary = 2;
405   // A longer description of the operation, GitHub Flavored Markdown is allowed.
406   string description = 3;
407   ExternalDocs external_docs = 4;
408   // A unique identifier of the operation.
409   string operation_id = 5;
410   // A list of MIME types the API can produce.
411   repeated string produces = 6;
412   // A list of MIME types the API can consume.
413   repeated string consumes = 7;
414   // The parameters needed to send a valid API call.
415   repeated ParametersItem parameters = 8;
416   Responses responses = 9;
417   // The transfer protocol of the API.
418   repeated string schemes = 10;
419   bool deprecated = 11;
420   repeated SecurityRequirement security = 12;
421   repeated NamedAny vendor_extension = 13;
422 }
423
424 message Parameter {
425   oneof oneof {
426     BodyParameter body_parameter = 1;
427     NonBodyParameter non_body_parameter = 2;
428   }
429 }
430
431 // One or more JSON representations for parameters
432 message ParameterDefinitions {
433   repeated NamedParameter additional_properties = 1;
434 }
435
436 message ParametersItem {
437   oneof oneof {
438     Parameter parameter = 1;
439     JsonReference json_reference = 2;
440   }
441 }
442
443 message PathItem {
444   string _ref = 1;
445   Operation get = 2;
446   Operation put = 3;
447   Operation post = 4;
448   Operation delete = 5;
449   Operation options = 6;
450   Operation head = 7;
451   Operation patch = 8;
452   // The parameters needed to send a valid API call.
453   repeated ParametersItem parameters = 9;
454   repeated NamedAny vendor_extension = 10;
455 }
456
457 message PathParameterSubSchema {
458   // Determines whether or not this parameter is required or optional.
459   bool required = 1;
460   // Determines the location of the parameter.
461   string in = 2;
462   // A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed.
463   string description = 3;
464   // The name of the parameter.
465   string name = 4;
466   string type = 5;
467   string format = 6;
468   PrimitivesItems items = 7;
469   string collection_format = 8;
470   Any default = 9;
471   double maximum = 10;
472   bool exclusive_maximum = 11;
473   double minimum = 12;
474   bool exclusive_minimum = 13;
475   int64 max_length = 14;
476   int64 min_length = 15;
477   string pattern = 16;
478   int64 max_items = 17;
479   int64 min_items = 18;
480   bool unique_items = 19;
481   repeated Any enum = 20;
482   double multiple_of = 21;
483   repeated NamedAny vendor_extension = 22;
484 }
485
486 // Relative paths to the individual endpoints. They must be relative to the 'basePath'.
487 message Paths {
488   repeated NamedAny vendor_extension = 1;
489   repeated NamedPathItem path = 2;
490 }
491
492 message PrimitivesItems {
493   string type = 1;
494   string format = 2;
495   PrimitivesItems items = 3;
496   string collection_format = 4;
497   Any default = 5;
498   double maximum = 6;
499   bool exclusive_maximum = 7;
500   double minimum = 8;
501   bool exclusive_minimum = 9;
502   int64 max_length = 10;
503   int64 min_length = 11;
504   string pattern = 12;
505   int64 max_items = 13;
506   int64 min_items = 14;
507   bool unique_items = 15;
508   repeated Any enum = 16;
509   double multiple_of = 17;
510   repeated NamedAny vendor_extension = 18;
511 }
512
513 message Properties {
514   repeated NamedSchema additional_properties = 1;
515 }
516
517 message QueryParameterSubSchema {
518   // Determines whether or not this parameter is required or optional.
519   bool required = 1;
520   // Determines the location of the parameter.
521   string in = 2;
522   // A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed.
523   string description = 3;
524   // The name of the parameter.
525   string name = 4;
526   // allows sending a parameter by name only or with an empty value.
527   bool allow_empty_value = 5;
528   string type = 6;
529   string format = 7;
530   PrimitivesItems items = 8;
531   string collection_format = 9;
532   Any default = 10;
533   double maximum = 11;
534   bool exclusive_maximum = 12;
535   double minimum = 13;
536   bool exclusive_minimum = 14;
537   int64 max_length = 15;
538   int64 min_length = 16;
539   string pattern = 17;
540   int64 max_items = 18;
541   int64 min_items = 19;
542   bool unique_items = 20;
543   repeated Any enum = 21;
544   double multiple_of = 22;
545   repeated NamedAny vendor_extension = 23;
546 }
547
548 message Response {
549   string description = 1;
550   SchemaItem schema = 2;
551   Headers headers = 3;
552   Examples examples = 4;
553   repeated NamedAny vendor_extension = 5;
554 }
555
556 // One or more JSON representations for parameters
557 message ResponseDefinitions {
558   repeated NamedResponse additional_properties = 1;
559 }
560
561 message ResponseValue {
562   oneof oneof {
563     Response response = 1;
564     JsonReference json_reference = 2;
565   }
566 }
567
568 // Response objects names can either be any valid HTTP status code or 'default'.
569 message Responses {
570   repeated NamedResponseValue response_code = 1;
571   repeated NamedAny vendor_extension = 2;
572 }
573
574 // A deterministic version of a JSON Schema object.
575 message Schema {
576   string _ref = 1;
577   string format = 2;
578   string title = 3;
579   string description = 4;
580   Any default = 5;
581   double multiple_of = 6;
582   double maximum = 7;
583   bool exclusive_maximum = 8;
584   double minimum = 9;
585   bool exclusive_minimum = 10;
586   int64 max_length = 11;
587   int64 min_length = 12;
588   string pattern = 13;
589   int64 max_items = 14;
590   int64 min_items = 15;
591   bool unique_items = 16;
592   int64 max_properties = 17;
593   int64 min_properties = 18;
594   repeated string required = 19;
595   repeated Any enum = 20;
596   AdditionalPropertiesItem additional_properties = 21;
597   TypeItem type = 22;
598   ItemsItem items = 23;
599   repeated Schema all_of = 24;
600   Properties properties = 25;
601   string discriminator = 26;
602   bool read_only = 27;
603   Xml xml = 28;
604   ExternalDocs external_docs = 29;
605   Any example = 30;
606   repeated NamedAny vendor_extension = 31;
607 }
608
609 message SchemaItem {
610   oneof oneof {
611     Schema schema = 1;
612     FileSchema file_schema = 2;
613   }
614 }
615
616 message SecurityDefinitions {
617   repeated NamedSecurityDefinitionsItem additional_properties = 1;
618 }
619
620 message SecurityDefinitionsItem {
621   oneof oneof {
622     BasicAuthenticationSecurity basic_authentication_security = 1;
623     ApiKeySecurity api_key_security = 2;
624     Oauth2ImplicitSecurity oauth2_implicit_security = 3;
625     Oauth2PasswordSecurity oauth2_password_security = 4;
626     Oauth2ApplicationSecurity oauth2_application_security = 5;
627     Oauth2AccessCodeSecurity oauth2_access_code_security = 6;
628   }
629 }
630
631 message SecurityRequirement {
632   repeated NamedStringArray additional_properties = 1;
633 }
634
635 message StringArray {
636   repeated string value = 1;
637 }
638
639 message Tag {
640   string name = 1;
641   string description = 2;
642   ExternalDocs external_docs = 3;
643   repeated NamedAny vendor_extension = 4;
644 }
645
646 message TypeItem {
647   repeated string value = 1;
648 }
649
650 // Any property starting with x- is valid.
651 message VendorExtension {
652   repeated NamedAny additional_properties = 1;
653 }
654
655 message Xml {
656   string name = 1;
657   string namespace = 2;
658   string prefix = 3;
659   bool attribute = 4;
660   bool wrapped = 5;
661   repeated NamedAny vendor_extension = 6;
662 }
663