feat: supports enum schema

This commit is contained in:
zhuyasen 2025-05-13 19:50:37 +08:00
parent 117692ae81
commit a83769808e
2 changed files with 47 additions and 1 deletions

View File

@ -28,6 +28,13 @@ extend google.protobuf.MessageOptions {
// different descriptor messages.
Schema openapiv2_schema = 1042;
}
extend google.protobuf.EnumOptions {
// ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project.
//
// All IDs are the same, as assigned. It is okay that they are the same, as they extend
// different descriptor messages.
EnumSchema openapiv2_enum = 1042;
}
extend google.protobuf.ServiceOptions {
// ID assigned by protobuf-global-extension-registry@google.com for gRPC-Gateway project.
//

View File

@ -195,7 +195,7 @@ message Parameters {
// `HeaderParameter` a HTTP header parameter.
// See: https://swagger.io/specification/v2/#parameter-object
message HeaderParameter {
// `Type` is a a supported HTTP header type.
// `Type` is a supported HTTP header type.
// See https://swagger.io/specification/v2/#parameterType.
enum Type {
UNKNOWN = 0;
@ -443,6 +443,45 @@ message Schema {
string example = 6;
}
// `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;
// ...
// };
//
message EnumSchema {
// A short description of the schema.
string description = 1;
string default = 2;
// The title of the schema.
string title = 3;
bool required = 4;
bool read_only = 5;
// Additional external documentation for this schema.
ExternalDocumentation external_docs = 6;
string example = 7;
// 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"`.
string ref = 8;
// 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/
map<string, google.protobuf.Value> extensions = 9;
}
// `JSONSchema` represents properties from JSON Schema taken, and as used, in
// the OpenAPI v2 spec.
//