syntax = "proto2";

package google.protobuf.compiler;
option java_package = "com.google.protobuf.compiler";
option java_outer_classname = "PluginProtos";

import "google/protobuf/descriptor.proto";

option csharp_namespace = "Google.Protobuf.Compiler";
option go_package = "google.golang.org/protobuf/types/pluginpb";

message Version {
  optional int32 major = 1;
  optional int32 minor = 2;
  optional int32 patch = 3;
  optional string suffix = 4;
}

message CodeGeneratorRequest {
  repeated string file_to_generate = 1;
  optional string parameter = 2;
  repeated FileDescriptorProto proto_file = 15;
  repeated FileDescriptorProto source_file_descriptors = 17;
  optional Version compiler_version = 3;
}

message CodeGeneratorResponse {
  optional string error = 1;
  optional uint64 supported_features = 2;

  enum Feature {
    FEATURE_NONE = 0;
    FEATURE_PROTO3_OPTIONAL = 1;
    FEATURE_SUPPORTS_EDITIONS = 2;
  }

  optional int32 minimum_edition = 3;
  optional int32 maximum_edition = 4;

  message File {
    optional string name = 1;
    optional string insertion_point = 2;
    optional string content = 15;
    optional GeneratedCodeInfo generated_code_info = 16;
  }
  repeated File file = 15;
}
