Protorip

grpc.gateway.protoc_gen_openapiv2.options

Messages

Swagger is a representation of OpenAPI v2 specification's Swagger object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#swaggerObject

Example:

option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { info: { title: "Echo API"; version: "1.0"; description: ""; contact: { name: "gRPC-Gateway project"; url: "https://github.com/grpc-ecosystem/grpc-gateway"; email: "none@example.com"; }; license: { name: "BSD 3-Clause License"; url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE"; }; }; schemes: HTTPS; consumes: "application/json"; produces: "application/json"; };

NameTagTypeLabelDescription
swagger1stringoptional

Specifies the OpenAPI Specification version being used. It can be used by the OpenAPI UI and other clients to interpret the API listing. The value MUST be "2.0".

info2Infooptional

Provides metadata about the API. The metadata can be used by the clients if needed.

host3stringoptional

The host (name or ip) serving the API. This MUST be the host only and does not include the scheme nor sub-paths. It MAY include a port. If the host is not included, the host serving the documentation is to be used (including the port). The host does not support path templating.

base_path4stringoptional

The base path on which the API is served, which is relative to the host. If it is not included, the API is served directly under the host. The value MUST start with a leading slash (/). The basePath does not support path templating. Note that using base_path does not change the endpoint paths that are generated in the resulting OpenAPI file. If you wish to use base_path with relatively generated OpenAPI paths, the base_path prefix must be manually removed from your google.api.http paths and your code changed to serve the API from the base_path.

schemes5Schemerepeated

The transfer protocol of the API. Values MUST be from the list: "http", "https", "ws", "wss". If the schemes is not included, the default scheme to be used is the one used to access the OpenAPI definition itself.

consumes6stringrepeated

A list of MIME types the APIs can consume. This is global to all APIs but can be overridden on specific API calls. Value MUST be as described under Mime Types.

produces7stringrepeated

A list of MIME types the APIs can produce. This is global to all APIs but can be overridden on specific API calls. Value MUST be as described under Mime Types.

responses10map<string, Response>map

An object to hold responses that can be used across operations. This property does not define global responses for all operations.

security_definitions11SecurityDefinitionsoptional

Security scheme definitions that can be used across the specification.

security12SecurityRequirementrepeated

A declaration of which security schemes are applied for the API as a whole. The list of values describes alternative security schemes that can be used (that is, there is a logical OR between the security requirements). Individual operations can override this definition.

tags13Tagrepeated

A list of tags for API documentation control. Tags can be used for logical grouping of operations by resources or any other qualifier.

external_docs14ExternalDocumentationoptional

Additional external documentation.

extensions15map<string, google.protobuf.Value>map

Custom properties that start with "x-" such as "x-foo" used to describe extra functionality that is not covered by the standard OpenAPI Specification. See: https://swagger.io/docs/specification/2-0/swagger-extensions/

Operation is a representation of OpenAPI v2 specification's Operation object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#operationObject

Example:

service EchoService { rpc Echo(SimpleMessage) returns (SimpleMessage) { option (google.api.http) = { get: "/v1/example/echo/{id}" };

option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "Get a message."; operation_id: "getMessage"; tags: "echo"; responses: { key: "200" value: { description: "OK"; } } }; } }

NameTagTypeLabelDescription
tags1stringrepeated

A list of tags for API documentation control. Tags can be used for logical grouping of operations by resources or any other qualifier.

summary2stringoptional

A short summary of what the operation does. For maximum readability in the swagger-ui, this field SHOULD be less than 120 characters.

description3stringoptional

A verbose explanation of the operation behavior. GFM syntax can be used for rich text representation.

external_docs4ExternalDocumentationoptional

Additional external documentation for this operation.

operation_id5stringoptional

Unique string used to identify the operation. The id MUST be unique among all operations described in the API. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is recommended to follow common programming naming conventions.

consumes6stringrepeated

A list of MIME types the operation can consume. This overrides the consumes definition at the OpenAPI Object. An empty value MAY be used to clear the global definition. Value MUST be as described under Mime Types.

produces7stringrepeated

A list of MIME types the operation can produce. This overrides the produces definition at the OpenAPI Object. An empty value MAY be used to clear the global definition. Value MUST be as described under Mime Types.

responses9map<string, Response>map

The list of possible responses as they are returned from executing this operation.

schemes10Schemerepeated

The transfer protocol for the operation. Values MUST be from the list: "http", "https", "ws", "wss". The value overrides the OpenAPI Object schemes definition.

deprecated11booloptional

Declares this operation to be deprecated. Usage of the declared operation should be refrained. Default value is false.

security12SecurityRequirementrepeated

A declaration of which security schemes are applied for this operation. The list of values describes alternative security schemes that can be used (that is, there is a logical OR between the security requirements). This definition overrides any declared top-level security. To remove a top-level security declaration, an empty array can be used.

extensions13map<string, google.protobuf.Value>map

Custom properties that start with "x-" such as "x-foo" used to describe extra functionality that is not covered by the standard OpenAPI Specification. See: https://swagger.io/docs/specification/2-0/swagger-extensions/

parameters14Parametersoptional

Parameters is a representation of OpenAPI v2 specification's parameters object. Note: This technically breaks compatibility with the OpenAPI 2 definition structure as we only allow header parameters to be set here since we do not want users specifying custom non-header parameters beyond those inferred from the Protobuf schema. See: https://swagger.io/specification/v2/#parameter-object

NameTagTypeLabelDescription
headers1HeaderParameterrepeated

HeaderParameter a HTTP header parameter. See: https://swagger.io/specification/v2/#parameter-object

NameTagTypeLabelDescription
name1stringoptional

Name is the header name.

description2stringoptional

Description is a short description of the header.

type3HeaderParameter.Typeoptional

Type is the type of the object. The value MUST be one of "string", "number", "integer", or "boolean". The "array" type is not supported. See: https://swagger.io/specification/v2/#parameterType.

format4stringoptional

Format The extending format for the previously mentioned type.

required5booloptional

Required indicates if the header is optional

Header is a representation of OpenAPI v2 specification's Header object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#headerObject

NameTagTypeLabelDescription
description1stringoptional

Description is a short description of the header.

type2stringoptional

The type of the object. The value MUST be one of "string", "number", "integer", or "boolean". The "array" type is not supported.

format3stringoptional

Format The extending format for the previously mentioned type.

default6stringoptional

Default Declares the value of the header that the server will use if none is provided. See: https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-6.2. Unlike JSON Schema this value MUST conform to the defined type for the header.

pattern13stringoptional

Response is a representation of OpenAPI v2 specification's Response object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#responseObject

NameTagTypeLabelDescription
description1stringoptional

Description is a short description of the response. GFM syntax can be used for rich text representation.

schema2Schemaoptional

Schema optionally defines the structure of the response. If Schema is not provided, it means there is no content to the response.

headers3map<string, Header>map

Headers A list of headers that are sent with the response. Header name is expected to be a string in the canonical format of the MIME header key See: https://golang.org/pkg/net/textproto/#CanonicalMIMEHeaderKey

examples4map<string, string>map
extensions5map<string, google.protobuf.Value>map

Custom properties that start with "x-" such as "x-foo" used to describe extra functionality that is not covered by the standard OpenAPI Specification. See: https://swagger.io/docs/specification/2-0/swagger-extensions/

Info is a representation of OpenAPI v2 specification's Info object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#infoObject

Example:

option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { info: { title: "Echo API"; version: "1.0"; description: ""; contact: { name: "gRPC-Gateway project"; url: "https://github.com/grpc-ecosystem/grpc-gateway"; email: "none@example.com"; }; license: { name: "BSD 3-Clause License"; url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE"; }; }; ... };

NameTagTypeLabelDescription
title1stringoptional

The title of the application.

description2stringoptional

A short description of the application. GFM syntax can be used for rich text representation.

terms_of_service3stringoptional

The Terms of Service for the API.

contact4Contactoptional

The contact information for the exposed API.

license5Licenseoptional

The license information for the exposed API.

version6stringoptional

Provides the version of the application API (not to be confused with the specification version).

extensions7map<string, google.protobuf.Value>map

Custom properties that start with "x-" such as "x-foo" used to describe extra functionality that is not covered by the standard OpenAPI Specification. See: https://swagger.io/docs/specification/2-0/swagger-extensions/

Contact is a representation of OpenAPI v2 specification's Contact object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#contactObject

Example:

option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { info: { ... contact: { name: "gRPC-Gateway project"; url: "https://github.com/grpc-ecosystem/grpc-gateway"; email: "none@example.com"; }; ... }; ... };

NameTagTypeLabelDescription
name1stringoptional

The identifying name of the contact person/organization.

url2stringoptional

The URL pointing to the contact information. MUST be in the format of a URL.

email3stringoptional

The email address of the contact person/organization. MUST be in the format of an email address.

License is a representation of OpenAPI v2 specification's License object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#licenseObject

Example:

option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { info: { ... license: { name: "BSD 3-Clause License"; url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE"; }; ... }; ... };

NameTagTypeLabelDescription
name1stringoptional

The license name used for the API.

url2stringoptional

A URL to the license used for the API. MUST be in the format of a URL.

ExternalDocumentation is a representation of OpenAPI v2 specification's ExternalDocumentation object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#externalDocumentationObject

Example:

option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { ... external_docs: { description: "More about gRPC-Gateway"; url: "https://github.com/grpc-ecosystem/grpc-gateway"; } ... };

NameTagTypeLabelDescription
description1stringoptional

A short description of the target documentation. GFM syntax can be used for rich text representation.

url2stringoptional

The URL for the target documentation. Value MUST be in the format of a URL.

Schema is a representation of OpenAPI v2 specification's Schema object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject

NameTagTypeLabelDescription
json_schema1JSONSchemaoptional
discriminator2stringoptional

Adds support for polymorphism. The discriminator is the schema property name that is used to differentiate between other schema that inherit this schema. The property name used MUST be defined at this schema and it MUST be in the required property list. When used, the value MUST be the name of this schema or any schema that inherits it.

read_only3booloptional

Relevant only for Schema "properties" definitions. Declares the property as "read only". This means that it MAY be sent as part of a response but MUST NOT be sent as part of the request. Properties marked as readOnly being true SHOULD NOT be in the required list of the defined schema. Default value is false.

external_docs5ExternalDocumentationoptional

Additional external documentation for this schema.

example6stringoptional

A free-form property to include an example of an instance for this schema in JSON. This is copied verbatim to the output.

EnumSchema is subset of fields from the OpenAPI v2 specification's Schema object. Only fields that are applicable to Enums are included See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject

Example:

option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_enum) = { ... title: "MyEnum"; description:"This is my nice enum"; example: "ZERO"; required: true; ... };

NameTagTypeLabelDescription
description1stringoptional

A short description of the schema.

default2stringoptional
title3stringoptional

The title of the schema.

required4booloptional
read_only5booloptional
external_docs6ExternalDocumentationoptional

Additional external documentation for this schema.

example7stringoptional
ref8stringoptional

Ref is used to define an external reference to include in the message. This could be a fully qualified proto message reference, and that type must be imported into the protofile. If no message is identified, the Ref will be used verbatim in the output. For example: ref: ".google.protobuf.Timestamp".

extensions9map<string, google.protobuf.Value>map

Custom properties that start with "x-" such as "x-foo" used to describe extra functionality that is not covered by the standard OpenAPI Specification. See: https://swagger.io/docs/specification/2-0/swagger-extensions/

JSONSchema represents properties from JSON Schema taken, and as used, in the OpenAPI v2 spec.

This includes changes made by OpenAPI v2.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject

See also: https://cswr.github.io/JsonSchema/spec/basic_types/, https://github.com/json-schema-org/json-schema-spec/blob/master/schema.json

Example:

message SimpleMessage { option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { json_schema: { title: "SimpleMessage" description: "A simple message." required: ["id"] } };

// Id represents the message identifier. string id = 1; [ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "The unique identifier of the simple message." }]; }

NameTagTypeLabelDescription
ref3stringoptional

Ref is used to define an external reference to include in the message. This could be a fully qualified proto message reference, and that type must be imported into the protofile. If no message is identified, the Ref will be used verbatim in the output. For example: ref: ".google.protobuf.Timestamp".

title5stringoptional

The title of the schema.

description6stringoptional

A short description of the schema.

default7stringoptional
read_only8booloptional
example9stringoptional

A free-form property to include a JSON example of this field. This is copied verbatim to the output swagger.json. Quotes must be escaped. 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

multiple_of10doubleoptional
maximum11doubleoptional

Maximum represents an inclusive upper limit for a numeric instance. The value of MUST be a number,

exclusive_maximum12booloptional
minimum13doubleoptional

minimum represents an inclusive lower limit for a numeric instance. The value of MUST be a number,

exclusive_minimum14booloptional
max_length15uint64optional
min_length16uint64optional
pattern17stringoptional
max_items20uint64optional
min_items21uint64optional
unique_items22booloptional
max_properties24uint64optional
min_properties25uint64optional
required26stringrepeated
array34stringrepeated

Items in 'array' must be unique.

type35JSONSchema.JSONSchemaSimpleTypesrepeated
format36stringoptional

Format

enum46stringrepeated
field_configuration1001JSONSchema.FieldConfigurationoptional

Additional field level properties used when generating the OpenAPI v2 file.

extensions48map<string, google.protobuf.Value>map

Custom properties that start with "x-" such as "x-foo" used to describe extra functionality that is not covered by the standard OpenAPI Specification. See: https://swagger.io/docs/specification/2-0/swagger-extensions/

'FieldConfiguration' provides additional field level properties used when generating the OpenAPI v2 file. These properties are not defined by OpenAPIv2, but they are used to control the generation.

NameTagTypeLabelDescription
path_param_name47stringoptional

Alternative parameter name when used as path parameter. If set, this will be used as the complete parameter name when this field is used as a path parameter. Use this to avoid having auto generated path parameter names for overlapping paths.

deprecated49booloptional

Declares this field to be deprecated. Allows for the generated OpenAPI parameter to be marked as deprecated without affecting the proto field.

Tag is a representation of OpenAPI v2 specification's Tag object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#tagObject

NameTagTypeLabelDescription
name1stringoptional

The name of the tag. Use it to allow override of the name of a global Tag object, then use that name to reference the tag throughout the OpenAPI file.

description2stringoptional

A short description for the tag. GFM syntax can be used for rich text representation.

external_docs3ExternalDocumentationoptional

Additional external documentation for this tag.

extensions4map<string, google.protobuf.Value>map

Custom properties that start with "x-" such as "x-foo" used to describe extra functionality that is not covered by the standard OpenAPI Specification. See: https://swagger.io/docs/specification/2-0/swagger-extensions/

SecurityDefinitions is a representation of OpenAPI v2 specification's Security Definitions object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securityDefinitionsObject

A declaration of the security schemes available to be used in the specification. This does not enforce the security schemes on the operations and only serves to provide the relevant details for each scheme.

NameTagTypeLabelDescription
security1map<string, SecurityScheme>map

A single security scheme definition, mapping a "name" to the scheme it defines.

SecurityScheme is a representation of OpenAPI v2 specification's Security Scheme object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securitySchemeObject

Allows the definition of a security scheme that can be used by the operations. Supported schemes are basic authentication, an API key (either as a header or as a query parameter) and OAuth2's common flows (implicit, password, application and access code).

NameTagTypeLabelDescription
type1SecurityScheme.Typeoptional

The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".

description2stringoptional

A short description for security scheme.

name3stringoptional

The name of the header or query parameter to be used. Valid for apiKey.

in4SecurityScheme.Inoptional

The location of the API key. Valid values are "query" or "header". Valid for apiKey.

flow5SecurityScheme.Flowoptional

The flow used by the OAuth2 security scheme. Valid values are "implicit", "password", "application" or "accessCode". Valid for oauth2.

authorization_url6stringoptional

The authorization URL to be used for this flow. This SHOULD be in the form of a URL. Valid for oauth2/implicit and oauth2/accessCode.

token_url7stringoptional

The token URL to be used for this flow. This SHOULD be in the form of a URL. Valid for oauth2/password, oauth2/application and oauth2/accessCode.

scopes8Scopesoptional

The available scopes for the OAuth2 security scheme. Valid for oauth2.

extensions9map<string, google.protobuf.Value>map

Custom properties that start with "x-" such as "x-foo" used to describe extra functionality that is not covered by the standard OpenAPI Specification. See: https://swagger.io/docs/specification/2-0/swagger-extensions/

SecurityRequirement is a representation of OpenAPI v2 specification's Security Requirement object.

See: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#securityRequirementObject

Lists the required security schemes to execute this operation. The object can have multiple security schemes declared in it which are all required (that is, there is a logical AND between the schemes).

The name used for each property MUST correspond to a security scheme declared in the Security Definitions.

NameTagTypeLabelDescription
security_requirement1map<string, SecurityRequirement.SecurityRequirementValue>map

Each name must correspond to a security scheme which is declared in the Security Definitions. If the security scheme is of type "oauth2", then the value is a list of scope names required for the execution. For other security scheme types, the array MUST be empty.

Enums

The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".

NameValueDescription
TYPE_INVALID0
TYPE_BASIC1
TYPE_API_KEY2
TYPE_OAUTH23

The flow used by the OAuth2 security scheme. Valid values are "implicit", "password", "application" or "accessCode".

NameValueDescription
FLOW_INVALID0
FLOW_IMPLICIT1
FLOW_PASSWORD2
FLOW_APPLICATION3
FLOW_ACCESS_CODE4

Scheme describes the schemes supported by the OpenAPI Swagger and Operation objects.

NameValueDescription
UNKNOWN0
HTTP1
HTTPS2
WS3
WSS4

Extensions