...

Text file src/github.com/google/gnostic-models/openapiv2/OpenAPIv2.proto

Documentation: github.com/google/gnostic-models/openapiv2

     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