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