Constant TINC_ANNOTATIONS

Source
pub const TINC_ANNOTATIONS: &str = "syntax = \"proto3\";\n\npackage tinc;\n\nimport \"google/protobuf/descriptor.proto\";\n\nextend google.protobuf.MessageOptions {\n    // See `MessageOptions` for what options can be added onto messages.\n    MessageOptions message = 15501;\n}\n\nextend google.protobuf.FieldOptions {\n    // See `FieldOptions` for all the options that can be applied to fields.\n    FieldOptions field = 15502;\n    // Predefined is used to construct custom field cel expression templates.\n    // For more information refer to the see the `PredefinedConstraint`\n    optional PredefinedConstraints predefined = 15508;\n}\n\nextend google.protobuf.EnumOptions {\n    // See `EnumOptions` for all the options that can be applied to enums.\n    EnumOptions enum = 15503;\n}\n\nextend google.protobuf.EnumValueOptions {\n    // See `EnumVariantOptions` for all the options that can be applied to enum variants.\n    EnumVariantOptions variant = 15504;\n}\n\nextend google.protobuf.MethodOptions {\n    // See `MethodOptions` for all the options that can be applied to methods.\n    MethodOptions method = 15505;\n}\n\nextend google.protobuf.ServiceOptions {\n    // See `ServiceOptions` for all the options that can be applied to services.\n    ServiceOptions service = 15506;\n}\n\nextend google.protobuf.OneofOptions {\n    // See `OneofOptions` for all the options that can be applied to oneofs.\n    OneofOptions oneof = 15507;\n}\n\nmessage ServiceOptions {\n    // By default service routes are defined in the method, however if you want\n    // all routes in this service to be prefixed this is\n    // how you would apply such a prefix.\n    optional string prefix = 1;\n}\n\n\n// Enum to define how to rename fields or enum variants.\nenum RenameAll {\n    // protolint:disable ENUM_FIELD_NAMES_PREFIX\n    RENAME_ALL_UNSPECIFIED = 0;\n    // Rename to lowercase.\n    LOWER_CASE = 1;\n    // Rename to UPPERCASE.\n    UPPER_CASE = 2;\n    // Rename to PascalCase.\n    PASCAL_CASE = 3;\n    // Rename to camelCase.\n    CAMEL_CASE = 4;\n    // Rename to snake_case.\n    SNAKE_CASE = 5;\n    // Rename to SCREAMING_SNAKE_CASE.\n    SCREAMING_SNAKE_CASE = 6;\n    // Rename to kebab-case.\n    KEBAB_CASE = 7;\n    // Rename to SCREAMING-KEBAB-CASE.\n    SCREAMING_KEBAB_CASE = 8;\n}\n\nmessage MethodOptions {\n    // A list of endpoints to be built from this method.\n    repeated HttpEndpointOptions endpoint = 1;\n    // A list of cel expressions to apply to the input of this message.\n    repeated CelExpression cel = 2;\n}\n\nmessage MessageOptions {\n    // If false, this message will not be generated even if its depended on by a method.\n    // If true, this message will always be generated.\n    // By default: this message is only generated if its depended on by a method.\n    optional bool generate = 1;\n    // Rename all fields in the message.\n    optional RenameAll rename_all = 2;\n    // Disable cel-validation generation.\n    optional bool skip_validation = 101;\n\n    // A list of custom cel expressions that apply to the message in its entirety\n    // You can use this to create expressions that depend on multiple field values.\n    repeated CelExpression cel = 100;\n}\n\n// Change the visibility of a field or enum variant\nenum Visibility {\n    VISIBILITY_UNSPECIFIED = 0;\n    // Skipped fields will not be deserialized or serialized.\n    SKIP = 1;\n    // Fields marked as input only will only be deserialized and will not be\n    // serialized.\n    INPUT_ONLY = 2;\n    // Fields marked as output only will not be deserialized and only will be\n    // serialized.\n    OUTPUT_ONLY = 3;\n}\n\n// Predefined constraints allow us to extend the validation system\n// by defining our own custom message extensions with validation\n// constraints.\nmessage PredefinedConstraints {\n    // The set of constraints that should be applied.\n    repeated CelExpression cel = 1;\n\n    // The type of the target of the expression\n    enum Type {\n        TYPE_UNSPECIFIED = 0;\n        // Only apply all sub items to repeated items\n        WRAPPER_REPEATED_ITEM = 1;\n        // Only apply all sub items to map keys\n        WRAPPER_MAP_KEY = 2;\n        // Only apply all sub items to map values\n        WRAPPER_MAP_VALUE = 3;\n        // Unlike the others, this can only be applied\n        // to lists of `CelExpression`\n        CUSTOM_EXPRESSION = 4;\n    }\n    Type type = 2;\n}\n\n// JsonOmittable is the notion of leaving out fields, and\n// how we behave when a field is missing.\nenum JsonOmittable {\n    JSON_OMITTABLE_UNSPECIFIED = 0;\n    // If true the field will just be defaulted if not provided.\n    // The field will also not be serialized if its the default value.\n    TRUE = 1;\n    // If false we will raise an error when the field is not provided.\n    FALSE = 2;\n    // Same as true, except always serialize the field even if its a default value.\n    TRUE_BUT_STILL_SERIALIZE = 3;\n}\n\nmessage FieldOptions {\n    // Rename this specific field to another name.\n    optional string rename = 1;\n\n    // Deserialization:\n    // This flag dictates how we handle fields which are\n    // not provided in the json representation of the message.\n    // If this is true, then no error will be returned\n    // if the field is not provided.\n    // If this is false then not providing a value for this field\n    // will result in an error.\n    //\n    // Serialization:\n    // This flag dictates if we should skip serializing the field\n    // in the json representation of the message if the field\n    // is equal to the default value for its type.\n    //\n    // By default if the value depends on the type of field.\n    // If the field is an option then the default value is\n    // `TRUE_BUT_SERIALIZE` which means that the option does not\n    // need to be provided but a `null` value will always be serialized.\n    // If the field is not an option then it will be required so `FALSE`.\n    JsonOmittable json_omittable = 200;\n\n    // Flatten this field into the parent message.\n    // This only works on messages.\n    optional bool flatten = 205;\n    // Change the visibility of the field. By Default all fields are visible.\n    optional Visibility visibility = 202;\n\n    // Add some constraints to the field.\n    optional FieldConstraints constraint = 101;\n}\n\nmessage FloatConstraints {\n    oneof greater {\n        // Requires the input value is greater than the value provided.\n        float gt = 1 [(predefined).cel = {\n            message: \"value must be greater than `{this}`\"\n            expression: \"input > this\"\n            jsonschemas: \'{ \"exclusiveMinimum\": this }\'\n        }];\n        // Requires the input value is greater than or equal to the value provided.\n        float gte = 2 [(predefined).cel = {\n            message: \"value must be greater than or equal to `{this}`\"\n            expression: \"input >= this\"\n            jsonschemas: \'{ \"minimum\": this }\'\n        }];\n    }\n\n    oneof less {\n        // Requires the input value is less than the value provided.\n        float lt = 3 [(predefined).cel = {\n            message: \"value must be less than `{this}`\"\n            expression: \"input < this\"\n            jsonschemas: \'{ \"exclusiveMaximum\": this }\'\n        }];\n        // Requires the input value is less than or equal to the value provided.\n        float lte = 4 [(predefined).cel = {\n            message: \"value must be less than or equal to {this}\"\n            expression: \"input <= this\"\n            jsonschemas: \'{ \"maximum\": this }\'\n        }];\n    }\n\n    // Requires the input value be one of the values in the list\n    repeated float in = 5 [(predefined).cel = {\n        message: \"value must be one of `{this}`\"\n        expression: \"this.contains(input)\"\n        jsonschemas: \'{ \"enum\": this }\'\n    }];\n    // Requires the input value not be one of the values in the list.\n    repeated float not_in = 6 [(predefined).cel = {\n        message: \"value must not be one of `{this}`\"\n        expression: \"!this.contains(input)\"\n        jsonschemas: \'{ \"not\": { \"enum\": this }}\'\n    }];\n    // Requires the input value be exactly equal to the value provided.\n    optional float const = 8 [(predefined).cel = {\n        message: \"value must be equal to `{this}`\"\n        expression: \"input == this\"\n        jsonschemas: \'{ \"const\": this }\'\n    }];\n}\n\nmessage DoubleConstraints {\n    oneof greater {\n        // Requires the input value is greater than the value provided.\n        double gt = 1 [(predefined).cel = {\n            message: \"value must be greater than `{this}`\"\n            expression: \"input > this\"\n            jsonschemas: \'{ \"exclusiveMinimum\": this }\'\n        }];\n        // Requires the input value is greater than or equal to the value provided.\n        double gte = 2 [(predefined).cel = {\n            message: \"value must be greater than or equal to `{this}`\"\n            expression: \"input >= this\"\n            jsonschemas: \'{ \"minimum\": this }\'\n        }];\n    }\n\n    oneof less {\n        // Requires the input value is less than the value provided.\n        double lt = 3 [(predefined).cel = {\n            message: \"value must be less than `{this}`\"\n            expression: \"input < this\"\n            jsonschemas: \'{ \"exclusiveMaximum\": this }\'\n        }];\n        // Requires the input value is less than or equal to the value provided.\n        double lte = 4 [(predefined).cel = {\n            message: \"value must be less than or equal to `{this}`\"\n            expression: \"input <= this\"\n            jsonschemas: \'{ \"maximum\": this }\'\n        }];\n    }\n\n    // Requires the input value be one of the values in the list\n    repeated double in = 5 [(predefined).cel = {\n        message: \"value must be one of `{this}`\"\n        expression: \"this.contains(input)\"\n        jsonschemas: \'{ \"enum\": this }\'\n    }];\n    // Requires the input value not be one of the values in the list.\n    repeated double not_in = 6 [(predefined).cel = {\n        message: \"value must not be one of `{this}`\"\n        expression: \"!this.contains(input)\"\n        jsonschemas: \'{ \"not\": { \"enum\": this }}\'\n    }];\n    // Requires the input value be exactly equal to the value provided.\n    optional double const = 8 [(predefined).cel = {\n        message: \"value must be equal to `{this}`\"\n        expression: \"input == this\"\n        jsonschemas: \'{ \"const\": this }\'\n    }];\n}\n\nmessage Int32Constraints {\n    oneof greater {\n        // Requires the input value is greater than the value provided.\n        int32 gt = 1 [(predefined).cel = {\n            message: \"value must be greater than `{this}`\"\n            expression: \"input > this\"\n            jsonschemas: \'{ \"exclusiveMinimum\": this }\'\n        }];\n        // Requires the input value is greater than or equal to the value provided.\n        int32 gte = 2 [(predefined).cel = {\n            message: \"value must be greater than or equal to `{this}`\"\n            expression: \"input >= this\"\n            jsonschemas: \'{ \"minimum\": this }\'\n        }];\n    }\n\n    oneof less {\n        // Requires the input value is less than the value provided.\n        int32 lt = 3 [(predefined).cel = {\n            message: \"value must be less than `{this}`\"\n            expression: \"input < this\"\n            jsonschemas: \'{ \"exclusiveMaximum\": this }\'\n        }];\n        // Requires the input value is less than or equal to the value provided.\n        int32 lte = 4 [(predefined).cel = {\n            message: \"value must be less than or equal to `{this}`\"\n            expression: \"input <= this\"\n            jsonschemas: \'{ \"maximum\": this }\'\n        }];\n    }\n    // Requires the input value be one of the values in the list\n    repeated int32 in = 5 [(predefined).cel = {\n        message: \"value must be one of `{this}`\"\n        expression: \"this.contains(input)\"\n        jsonschemas: \'{ \"enum\": this }\'\n    }];\n    // Requires the input value not be one of the values in the list.\n    repeated int32 not_in = 6 [(predefined).cel = {\n        message: \"value must not be one of `{this}`\"\n        expression: \"!this.contains(input)\"\n        jsonschemas: \'{ \"not\": { \"enum\": this }}\'\n    }];\n    // Requires the input value be exactly equal to the value provided.\n    optional int32 const = 8 [(predefined).cel = {\n        message: \"value must be equal to `{this}`\"\n        expression: \"input == this\"\n        jsonschemas: \'{ \"const\": this }\'\n    }];\n}\n\nmessage Int64Constraints {\n    oneof greater {\n        // Requires the input value is greater than the value provided.\n        int64 gt = 1 [(predefined).cel = {\n            message: \"value must be greater than `{this}`\"\n            expression: \"input > this\"\n            jsonschemas: \'{ \"exclusiveMinimum\": this }\'\n        }];\n        // Requires the input value is greater than or equal to the value provided.\n        int64 gte = 2 [(predefined).cel = {\n            message: \"value must be greater than or equal to `{this}`\"\n            expression: \"input >= this\"\n            jsonschemas: \'{ \"minimum\": this }\'\n        }];\n    }\n\n    oneof less {\n        // Requires the input value is less than the value provided.\n        int64 lt = 3 [(predefined).cel = {\n            message: \"value must be less than `{this}`\"\n            expression: \"input < this\"\n            jsonschemas: \'{ \"exclusiveMaximum\": this }\'\n        }];\n        // Requires the input value is less than or equal to the value provided.\n        int64 lte = 4 [(predefined).cel = {\n            message: \"value must be less than or equal to `{this}`\"\n            expression: \"input <= this\"\n            jsonschemas: \'{ \"maximum\": this }\'\n        }];\n    }\n    // Requires the input value be one of the values in the list\n    repeated int64 in = 5 [(predefined).cel = {\n        message: \"value must be one of `{this}`\"\n        expression: \"this.contains(input)\"\n        jsonschemas: \'{ \"enum\": this }\'\n    }];\n    // Requires the input value not be one of the values in the list.\n    repeated int64 not_in = 6 [(predefined).cel = {\n        message: \"value must not be one of `{this}`\"\n        expression: \"!this.contains(input)\"\n        jsonschemas: \'{ \"not\": { \"enum\": this }}\'\n    }];\n    // Requires the input value be exactly equal to the value provided.\n    optional int64 const = 8 [(predefined).cel = {\n        message: \"value must be equal to `{this}`\"\n        expression: \"input == this\"\n        jsonschemas: \'{ \"const\": this }\'\n    }];\n}\n\nmessage UInt32Constraints {\n    oneof greater {\n        // Requires the input value is greater than the value provided.\n        uint32 gt = 1 [(predefined).cel = {\n            message: \"value must be greater than `{this}`\"\n            expression: \"input > this\"\n            jsonschemas: \'{ \"exclusiveMinimum\": this }\'\n        }];\n        // Requires the input value is greater than or equal to the value provided.\n        uint32 gte = 2 [(predefined).cel = {\n            message: \"value must be greater than or equal to `{this}`\"\n            expression: \"input >= this\"\n            jsonschemas: \'{ \"minimum\": this }\'\n        }];\n    }\n\n    oneof less {\n        // Requires the input value is less than the value provided.\n        uint32 lt = 3 [(predefined).cel = {\n            message: \"value must be less than `{this}`\"\n            expression: \"input < this\"\n            jsonschemas: \'{ \"exclusiveMaximum\": this }\'\n        }];\n        // Requires the input value is less than or equal to the value provided.\n        uint32 lte = 4 [(predefined).cel = {\n            message: \"value must be less than or equal to `{this}`\"\n            expression: \"input <= this\"\n            jsonschemas: \'{ \"maximum\": this }\'\n        }];\n    }\n    // Requires the input value be one of the values in the list\n    repeated uint32 in = 5 [(predefined).cel = {\n        message: \"value must be one of `{this}`\"\n        expression: \"this.contains(input)\"\n        jsonschemas: \'{ \"enum\": this }\'\n    }];\n    // Requires the input value not be one of the values in the list.\n    repeated uint32 not_in = 6 [(predefined).cel = {\n        message: \"value must not be one of `{this}`\"\n        expression: \"!this.contains(input)\"\n        jsonschemas: \'{ \"not\": { \"enum\": this }}\'\n    }];\n    // Requires the input value be exactly equal to the value provided.\n    optional uint32 const = 8 [(predefined).cel = {\n        message: \"value must be equal to `{this}`\"\n        expression: \"input == this\"\n        jsonschemas: \'{ \"const\": this }\'\n    }];\n}\n\nmessage UInt64Constraints {\n    oneof greater {\n        // Requires the input value is greater than the value provided.\n        int64 gt = 1 [(predefined).cel = {\n            message: \"value must be greater than `{this}`\"\n            expression: \"input > this\"\n            jsonschemas: \'{ \"exclusiveMinimum\": this }\'\n        }];\n        // Requires the input value is greater than or equal to the value provided.\n        uint64 gte = 2 [(predefined).cel = {\n            message: \"value must be greater than or equal to `{this}`\"\n            expression: \"input >= this\"\n            jsonschemas: \'{ \"minimum\": this }\'\n        }];\n    }\n\n    oneof less {\n        // Requires the input value is less than the value provided.\n        uint64 lt = 3 [(predefined).cel = {\n            message: \"value must be less than `{this}`\"\n            expression: \"input < this\"\n            jsonschemas: \'{ \"exclusiveMaximum\": this }\'\n        }];\n        // Requires the input value is less than or equal to the value provided.\n        uint64 lte = 4 [(predefined).cel = {\n            message: \"value must be less than or equal to `{this}`\"\n            expression: \"input <= this\"\n            jsonschemas: \'{ \"maximum\": this }\'\n        }];\n    }\n    // Requires the input value be one of the values in the list\n    repeated uint64 in = 5 [(predefined).cel = {\n        message: \"value must be one of `{this}`\"\n        expression: \"this.contains(input)\"\n        jsonschemas: \'{ \"enum\": this }\'\n    }];\n    // Requires the input value not be one of the values in the list.\n    repeated uint64 not_in = 6 [(predefined).cel = {\n        message: \"value must not be one of `{this}`\"\n        expression: \"!this.contains(input)\"\n        jsonschemas: \'{ \"not\": { \"enum\": this }}\'\n    }];\n    // Requires the input value be exactly equal to the value provided.\n    optional uint64 const = 8 [(predefined).cel = {\n        message: \"value must be equal to `{this}`\"\n        expression: \"input == this\"\n        jsonschemas: \'{ \"const\": this }\'\n    }];\n}\n\nmessage StringConstraints {\n    // Requires the input value be exactly equal to the value provided.\n    optional string const = 1 [(predefined).cel = {\n        message: \"value must equal `{this}`\"\n        expression: \"input == this\"\n        jsonschemas: \'{\"const\": this }\'\n    }];\n    // Requires the input value length be exactly equal to the value provided.\n    optional uint64 len = 2 [(predefined).cel = {\n        message: \"value must be exactly `{this}` characters long\"\n        expression: \"input.size() == this\"\n        jsonschemas: \'{ \"maxLength\": this }\'\n        jsonschemas: \'{ \"minLength\": this }\'\n    }];\n    // Requires the input value length be greater then or equal to the value provided.\n    optional uint64 min_len = 3 [(predefined).cel = {\n        message: \"value must be at least `{this}` characters long\"\n        expression: \"input.size() >= this\"\n        jsonschemas: \'{ \"minLength\": this }\'\n    }];\n    // Requires the input value length be less then or equal to the value provided.\n    optional uint64 max_len = 4 [(predefined).cel = {\n        message: \"value must be at most `{this}` characters long\"\n        expression: \"input.size() <= this\"\n        jsonschemas: \'{ \"maxLength\": this }\'\n    }];\n    // Requires the input value to match against regex provided.\n    optional string match = 5 [(predefined).cel = {\n        message: \"value must match the pattern `{this}`\"\n        expression: \"input.matches(this)\"\n        jsonschemas: \'{ \"pattern\": this }\'\n    }];\n    // Requires the input value not match against the regex provided.\n    optional string not_match = 6 [(predefined).cel = {\n        message: \"value must not match the pattern `{this}`\"\n        expression: \"!(input.matches(this))\"\n        jsonschemas: \'{ \"not\": { \"pattern\": this }}\'\n    }];\n    // Requires the input value to start with the value provided.\n    optional string prefix = 7 [(predefined).cel = {\n        message: \"value must start with `{this}`\"\n        expression: \"input.startsWith(this)\"\n        jsonschemas: \'{ \"pattern\": \"^\" + this }\'\n    }];\n    // Requires the input value to end with the value provided.\n    optional string suffix = 8 [(predefined).cel = {\n        message: \"value must end with `{this}`\"\n        expression: \"input.endsWith(this)\"\n        jsonschemas: \'{ \"pattern\": this + \"$\" }\'\n    }];\n    // Requires the input value to contain this sub string.\n    optional string contains = 9 [(predefined).cel = {\n        message: \"value must contain `{this}`\"\n        expression: \"input.contains(this)\"\n        jsonschemas: \'{ \"pattern\": this }\'\n    }];\n    // Requires the input value to not contain this sub string.\n    optional string not_contains = 10 [(predefined).cel = {\n        message: \"value must not contain `{this}`\"\n        expression: \"!input.contains(this)\"\n        jsonschemas: \'{ \"not\": { \"pattern\": this }}\'\n    }];\n    // Requires the input value to be one of the values in the list.\n    repeated string in = 11 [(predefined).cel = {\n        message: \"value must be one of `{this}`\"\n        expression: \"this.contains(input)\"\n        jsonschemas: \'{ \"enum\": this }\'\n    }];\n    // Requires the input value to not be in the list.\n    repeated string not_in = 12 [(predefined).cel = {\n        message: \"value must not be one of `{this}`\"\n        expression: \"!this.contains(input)\"\n        jsonschemas: \'{ \"not\": { \"enum\": this }}\'\n    }];\n    oneof well_known {\n        // Ensure the value is a valid email address format\n        bool email = 13 [(predefined).cel = {\n            message: \"value must be a valid email address\"\n            expression: \"!this || input.isEmail()\"\n            jsonschemas: \'this ? { \"format\": \"email\" } : {}\'\n        }];\n        // Requires the input value to be a valid ipv4 or ipv6 address.\n        bool ip = 14 [(predefined).cel = {\n            message: \"value must be a valid ipv4 or ipv6 address\"\n            expression: \"!this || input.isIpv4() || input.isIpv6()\"\n            jsonschemas: \'this ? { \"anyOf\": [ { \"format\": \"ipv4\" }, { \"format\": \"ipv6\" } ] } : {}\'\n        }];\n        // Requires the input value to be a valid ipv4 address.\n        bool ipv4 = 15 [(predefined).cel = {\n            message: \"value must be a valid ipv4 address\"\n            expression: \"!this || input.isIpv4()\"\n            jsonschemas: \'this ? { \"format\": \"ipv4\" } : {}\'\n        }];\n        // Requires the input value to be a valid ipv6 address.\n        bool ipv6 = 16 [(predefined).cel = {\n            message: \"value must be a valid ipv6 address\"\n            expression: \"!this || input.isIpv6()\"\n            jsonschemas: \'this ? { \"format\": \"ipv6\" } : {}\'\n        }];\n        // Requires the input value to be a valid uuid.\n        bool uuid = 17 [(predefined).cel = {\n            message: \"value must be a valid uuid\"\n            expression: \"!this || input.isUuid()\"\n            jsonschemas: \'this ? { \"format\": \"uuid\" } : {}\'\n        }];\n        // Requires the input value to be a valid hostname.\n        bool hostname = 18 [(predefined).cel = {\n            message: \"value must be a valid hostname\"\n            expression: \"!this || input.isHostname()\"\n            jsonschemas: \'this ? { \"format\": \"hostname\" } : {}\'\n        }];\n        // Requires the input value to be a valid uri.\n        bool uri = 19 [(predefined).cel = {\n            message: \"value must be a valid uri\"\n            expression: \"!this || input.isUri()\"\n            jsonschemas: \'this ? { \"format\": \"uri\" } : {}\'\n        }];\n    }\n}\n\nmessage BytesConstraints {\n    // Requires the input value be exactly equal to the value provided.\n    optional bytes const = 1 [(predefined).cel = {\n        message: \"value must equal `{this}`\"\n        expression: \"input == this\"\n        jsonschemas: \'{\"const\": this }\'\n    }];\n    // Requires the input value length be exactly equal to the value provided.\n    optional uint64 len = 2 [(predefined).cel = {\n        message: \"value must be exactly `{this}` bytes long\"\n        expression: \"input.size() == this\"\n        jsonschemas: \'{ \"minLength\": this }\'\n        jsonschemas: \'{ \"maxLength\": this }\'\n    }];\n    // Requires the input value length be greater then or equal to the value provided.\n    optional uint64 min_len = 3 [(predefined).cel = {\n        message: \"value must be at least `{this}` bytes long\"\n        expression: \"input.size() >= this\"\n        jsonschemas: \'{ \"minLength\": this }\'\n    }];\n    // Requires the input value length be less then or equal to the value provided.\n    optional uint64 max_len = 4 [(predefined).cel = {\n        message: \"value must be at most `{this}` bytes long\"\n        expression: \"input.size() <= this\"\n        jsonschemas: \'{ \"maxLength\": this }\'\n    }];\n}\n\nmessage EnumConstraints {\n    // Requires the input value to be equal to the enum value where the tag is the value provided.\n    optional int32 const = 1 [(predefined).cel = {\n        message: \"value must be equal to `{this.enum()}`\"\n        expression: \"input == this\"\n        jsonschemas: \'{ \"const\": this.enum() }\'\n    }];\n    // Requires the input to be a valid value for this enum.\n    optional bool defined = 2 [(predefined).cel = {\n        message: \"value must be defined in the enum\"\n        expression: \"!this || input.enum()\"\n    }];\n    // Requires the input to be one of the enum\'s provided.\n    repeated int32 in = 3 [(predefined).cel = {\n        message: \"value must be one of `{this.map(e, e.enum())}`\"\n        expression: \"this.contains(input)\"\n        jsonschemas: \'{ \"enum\": this.map(e, e.enum()) }\'\n    }];\n    // Requires the input to not be one of the enums provided.\n    repeated int32 not_in = 4 [(predefined).cel = {\n        message: \"value must not be one of `{this.map(e, e.enum())}`\"\n        expression: \"!this.contains(input)\"\n        jsonschemas: \'{ \"not\": { \"enum\": this.map(e, e.enum()) }}\'\n    }];\n}\n\nmessage RepeatedConstraints {\n    // Requires the length of the list be greater than or equal to the value provided.\n    optional uint64 min_len = 1 [(predefined).cel = {\n        message: \"value must have at least `{this}` elements\"\n        expression: \"input.size() >= this\"\n        jsonschemas: \'{ \"minItems\": this }\'\n    }];\n    // Requires the length of the list be less than or equal to the value provided.\n    optional uint64 max_len = 2 [(predefined).cel = {\n        message: \"value must have at most `{this}` elements\"\n        expression: \"input.size() <= this\"\n        jsonschemas: \'{ \"maxItems\": this }\'\n    }];\n    // Requires the length of the list be equal to the value provided.\n    optional uint64 len = 3 [(predefined).cel = {\n        message: \"value must have exactly `{this}` elements\"\n        expression: \"input.size() == this\"\n        jsonschemas: \'{ \"maxItems\": this }\'\n        jsonschemas: \'{ \"minItems\": this }\'\n    }];\n\n    // Requires all items in the list are unique\n    // optional bool unique = 4 [(predefined).cel = {\n    //     message: \"value must be unique\"\n    //     expression: \"!this || input.isUnique()\"\n    //     jsonschemas: \'this ? { \"uniqueItems\": this } : {}\'\n    // }];\n\n    // Apply a constraints to the items in the list.\n    optional PrimitiveConstraints item = 5 [\n        (predefined).type = WRAPPER_REPEATED_ITEM\n    ];\n}\n\nmessage MapConstraints {\n    // Requires the length of the map be greater than or equal to the value provided.\n    optional uint64 min_len = 1 [(predefined).cel = {\n        message: \"value must have at least `{this}` elements\"\n        expression: \"input.size() >= this\"\n        jsonschemas: \'{ \"minProperties\": this }\'\n    }];\n    // Requires the length of the map be less than or equal to the value provided.\n    optional uint64 max_len = 2 [(predefined).cel = {\n        message: \"value must have at most `{this}` elements\"\n        expression: \"input.size() <= this\"\n        jsonschemas: \'{ \"maxProperties\": this }\'\n    }];\n    // Requires the length of the map be equal to the value provided.\n    optional uint64 len = 3 [(predefined).cel = {\n        message: \"value must have exactly `{this}` elements\"\n        expression: \"input.size() == this\"\n        jsonschemas: \'{ \"minProperties\": this }\'\n        jsonschemas: \'{ \"maxProperties\": this }\'\n    }];\n\n    message MapKeyConstraints {\n        oneof constraint {\n            // for int32 keys\n            Int32Constraints int32 = 1;\n            // for int64 keys\n            Int64Constraints int64 = 2;\n            // for uint32 keys\n            UInt32Constraints uint32 = 3;\n            // for uint64 keys\n            UInt64Constraints uint64 = 4;\n            // for string keys\n            StringConstraints string = 5;\n        }\n\n        // A list of custom expressions to apply to map keys.\n        repeated CelExpression cel = 8 [\n            (predefined).type = CUSTOM_EXPRESSION\n        ];\n    }\n\n    // Apply a constraints to the keys in the list.\n    optional MapKeyConstraints key = 4 [\n        (predefined).type = WRAPPER_MAP_KEY\n    ];\n\n    // Apply a constraints to the values in the list.\n    optional PrimitiveConstraints value = 5 [\n        (predefined).type = WRAPPER_MAP_VALUE\n    ];\n}\n\nmessage PrimitiveConstraints {\n    oneof constraint {\n        // for float values\n        FloatConstraints float = 1;\n        // for double values\n        DoubleConstraints double = 2;\n        // for int32 values\n        Int32Constraints int32 = 3;\n        // for int64 values\n        Int64Constraints int64 = 4;\n        // for uint32 values\n        UInt32Constraints uint32 = 5;\n        // for uint64 values\n        UInt64Constraints uint64 = 6;\n        // for string values\n        StringConstraints string = 7;\n        // for bytes values\n        BytesConstraints bytes = 8;\n        // for enum values\n        EnumConstraints enum = 9;\n    }\n\n    // A list of custom expressions to apply to the value\n    repeated CelExpression cel = 11 [\n            (predefined).type = CUSTOM_EXPRESSION\n        ];\n}\n\nmessage FieldConstraints {\n    oneof constraint {\n        // for float fields.\n        FloatConstraints float = 1;\n        // for double fields.\n        DoubleConstraints double = 2;\n        // for int32 fields.\n        Int32Constraints int32 = 3;\n        // for int64 fields.\n        Int64Constraints int64 = 4;\n        // for uint32 fields.\n        UInt32Constraints uint32 = 5;\n        // for uint64 fields.\n        UInt64Constraints uint64 = 6;\n        // for string fields.\n        StringConstraints string = 7;\n        // for bytes fields.\n        BytesConstraints bytes = 8;\n        // for enum fields.\n        EnumConstraints enum = 9;\n        // for repeated fields.\n        RepeatedConstraints repeated = 10;\n        // for map fields.\n        MapConstraints map = 11;\n    }\n\n    // A list of custom expressions to apply to the field.\n    repeated CelExpression cel = 13 [\n        (predefined).type = CUSTOM_EXPRESSION\n    ];\n}\n\nmessage CelExpression {\n    // The message to use when the validation fails.\n    // You can template cel expressions using the `{<cel-expr>}` syntax\n    string message = 2;\n    // The expression itself.\n    // Note: This expression\'s result will be converted into a bool.\n    string expression = 3;\n    // Json Scheamas that should be used when this expression is applied.\n    // This is also a cel-expression which is evaluated at compile time\n    // and should return a map object in the json schema format.\n    repeated string jsonschemas = 5;\n}\n\nmessage EnumOptions {\n    // Treat this enum as a number enum instead of string\n    optional bool repr_enum = 2;\n    // Rename all the fields on the enum\n    optional RenameAll rename_all = 3;\n}\n\nmessage EnumVariantOptions {\n    // Rename this variant\n    optional string rename = 1;\n    // Change the visibility for this variant.\n    optional Visibility visibility = 2;\n}\n\nmessage HttpEndpointOptions {\n    // HTTP method - Path parameters can be specified using `{param}` syntax.\n    oneof method {\n        // GET method\n        string get = 1;\n        // POST method\n        string post = 2;\n        // PUT method\n        string put = 3;\n        // DELETE method\n        string delete = 4;\n        // PATCH method\n        string patch = 5;\n    }\n\n\n    // The default input for `GET` and `DELETE` methods is `query`\n    // Otherwise the default is `body`.\n    message Request {\n        message JsonBody {\n            optional string field = 1;\n        }\n\n        message TextBody {\n            optional string field = 1;\n        }\n\n        message BinaryBody {\n            optional string field = 1;\n            // Specify the field to take the content-type from.\n            optional string content_type_field = 2;\n            // This field is purely used by the openapi spec to denote the set of valid output formats.\n            optional string content_type_accepts = 3;\n\n        }\n\n        message QueryParams {\n            // The field to parse the query parameters into.\n            // By Default this is empty and therefore its parsed into the root message.\n            optional string field = 1;\n        }\n\n        oneof mode {\n            JsonBody json = 1;\n            TextBody text = 2;\n            BinaryBody binary = 3;\n            QueryParams query = 4;\n        }\n    }\n\n    Request request = 8;\n\n    message Response {\n        message Json {\n            // Specify a sub field to return as the response\n            // If this field is bytes or string it will be returned as is\n            // without decoding.\n            optional string field = 1;\n        }\n\n        message Text {\n            // Specify a sub field to return as the response\n            // If this field is bytes or string it will be returned as is\n            // without decoding.\n            optional string field = 1;\n        }\n\n        message Binary {\n            // Specify a sub field to return as the response\n            // If this field is bytes or string it will be returned as is\n            // without decoding.\n            optional string field = 1;\n            // Specify the field to take the content-type from.\n            optional string content_type_field = 2;\n            // This field is purely used by the openapi spec to denote the set of valid output formats.\n            optional string content_type_accepts = 3;\n        }\n\n        oneof mode {\n            Json json = 1;\n            Text text = 2;\n            Binary binary = 3;\n        }\n    }\n\n    // Response options,\n    // by default the entire message will be sent as a response with the content type\n    // being `application/json`\n    Response response = 9;\n}\n\nmessage OneofOptions {\n    // Rename this oneof\'s name\n    optional string rename = 1;\n    // Rename all the fields in the oneof.\n    optional RenameAll rename_all = 4;\n\n    // Deserialization:\n    // This flag dictates how we handle fields which are\n    // not provided in the json representation of the message.\n    // If this is true, then no error will be returned\n    // if the field is not provided.\n    // If this is false then not providing a value for this field\n    // will result in an error.\n    //\n    // Serialization:\n    // This flag dictates if we should skip serializing the field\n    // in the json representation of the message if the field\n    // is equal to the default value for its type.\n    //\n    // By default if the value depends on the type of field.\n    // If the field is an option then the default value is\n    // `TRUE_BUT_SERIALIZE` which means that the option does not\n    // need to be provided but a `null` value will always be serialized.\n    // If the field is not an option then it will be required so `FALSE`.\n    JsonOmittable json_omittable = 200;\n\n    // This specifies the visibility for oneof fields.\n    optional Visibility visibility = 202;\n\n    // Tagging a oneof causes the ser/de to represent it like such\n    // {\n    //        \"tag\": \"tag\",\n    //        \"content\": content\n    // }\n    message Tagged {\n        string tag = 1;\n        string content = 2;\n    }\n\n    // If you want to use tagged notation this allows you to configure that.\n    optional Tagged tagged = 100;\n    // You can also flatten the oneof directly into the containing message.\n    optional bool flatten = 101;\n}\n";
Expand description

The raw protobuf file