// Protocol Buffers - Google's data interchange format // Copyright 2023 Google Inc. All rights reserved. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file or at // https://developers.google.com/open-source/licenses/bsd syntax = "proto2"; package pb; import "google/protobuf/descriptor.proto"; option go_package = "google.golang.org/protobuf/types/gofeaturespb"; extend google.protobuf.FeatureSet { optional GoFeatures go = 1002; } message GoFeatures { // Whether or not to generate the deprecated UnmarshalJSON method for enums. optional bool legacy_unmarshal_json_enum = 1 [ retention = RETENTION_RUNTIME, targets = TARGET_TYPE_ENUM, targets = TARGET_TYPE_FILE, feature_support = { edition_introduced: EDITION_2023, edition_deprecated: EDITION_2023, deprecation_warning: "The legacy UnmarshalJSON API is deprecated and " "will be removed in a future edition.", }, edition_defaults = { edition: EDITION_LEGACY, value: "true" }, edition_defaults = { edition: EDITION_PROTO3, value: "false" } ]; enum APILevel { // API_LEVEL_UNSPECIFIED results in selecting the OPEN API, // but needs to be a separate value to distinguish between // an explicitly set api level or a missing api level. API_LEVEL_UNSPECIFIED = 0; API_OPEN = 1; API_HYBRID = 2; API_OPAQUE = 3; } // One of OPEN, HYBRID or OPAQUE. optional APILevel api_level = 2 [ retention = RETENTION_RUNTIME, targets = TARGET_TYPE_MESSAGE, targets = TARGET_TYPE_FILE, feature_support = { edition_introduced: EDITION_2023, }, edition_defaults = { edition: EDITION_LEGACY, value: "API_LEVEL_UNSPECIFIED" }, edition_defaults = { edition: EDITION_2024, value: "API_OPAQUE" } ]; enum StripEnumPrefix { STRIP_ENUM_PREFIX_UNSPECIFIED = 0; STRIP_ENUM_PREFIX_KEEP = 1; STRIP_ENUM_PREFIX_GENERATE_BOTH = 2; STRIP_ENUM_PREFIX_STRIP = 3; } optional StripEnumPrefix strip_enum_prefix = 3 [ retention = RETENTION_RUNTIME, targets = TARGET_TYPE_ENUM, targets = TARGET_TYPE_ENUM_ENTRY, targets = TARGET_TYPE_FILE, feature_support = { edition_introduced: EDITION_2024, }, // TODO: change the default to STRIP_ENUM_PREFIX_STRIP for edition 2025. edition_defaults = { edition: EDITION_LEGACY, value: "STRIP_ENUM_PREFIX_KEEP" } ]; }