MCPcopy Index your code
hub / github.com/bufbuild/protovalidate

github.com/bufbuild/protovalidate @v1.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.2.0 ↗ · + Follow
7,627 symbols 9,482 edges 106 files 997 documented · 13% 27 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

The Buf logo

Protovalidate

CI Slack BSR

Protovalidate is the semantic validation library for Protobuf. It provides standard annotations to validate common rules on messages and fields, as well as the ability to use CEL to write custom rules. It's the next generation of protoc-gen-validate.

With Protovalidate, you can annotate your Protobuf messages with both standard and custom validation rules:

syntax = "proto3";

package acme.user.v1;

import "buf/validate/validate.proto";

message User {
  string id = 1 [(buf.validate.field).string.uuid = true];
  uint32 age = 2 [(buf.validate.field).uint32.lte = 150]; // We can only hope.
  string email = 3 [(buf.validate.field).string.email = true];
  string first_name = 4 [(buf.validate.field).string.max_len = 64];
  string last_name = 5 [(buf.validate.field).string.max_len = 64];

  option (buf.validate.message).cel = {
    id: "first_name_requires_last_name"
    message: "last_name must be present if first_name is present"
    expression: "!has(this.first_name) || has(this.last_name)"
  };
}

Supported languages

To start using Protovalidate in your projects, see the developer quickstart, Protovalidate overview, or go directly to the repository for your language of choice:

Documentation

Comprehensive documentation for Protovalidate is available at protovalidate.com.

Highlights include:

Contributing

We genuinely appreciate any help! If you'd like to contribute, check out these resources:

Legal

Offered under the Apache 2 license.

Extension points exported contracts — how you extend this code

Result (Interface)
(no doc)
tools/protovalidate-conformance/internal/results/result.go

Core symbols most depended-on inside this repo

String
called by 1775
tools/protovalidate-conformance/internal/results/result.go
fail
called by 26
tools/internal/protovalidate-check/checker.go
PrintNodes
called by 21
tools/protovalidate-migrate/internal/migrator/printer.go
replaceNode
called by 13
tools/protovalidate-migrate/internal/migrator/printer.go
wrapResult
called by 6
tools/protovalidate-conformance/internal/results/result.go
Range
called by 5
tools/protovalidate-conformance/internal/suites/suite.go
ShouldPrintOriginal
called by 4
tools/protovalidate-migrate/internal/migrator/printer.go
ShouldPrintReplacement
called by 4
tools/protovalidate-migrate/internal/migrator/printer.go

Shape

Method 6,206
Struct 1,137
Function 194
Interface 71
TypeAlias 19

Languages

Go100%

Modules by API surface

tools/internal/gen/buf/validate/conformance/cases/numbers.pb.go1,317 symbols
tools/internal/gen/buf/validate/validate.pb.go765 symbols
tools/internal/gen/buf/validate/conformance/cases/ignore_proto_editions.pb.go496 symbols
tools/internal/gen/buf/validate/conformance/cases/strings.pb.go471 symbols
tools/internal/gen/buf/validate/conformance/cases/ignore_proto2.pb.go349 symbols
tools/internal/gen/buf/validate/conformance/cases/predefined_rules_proto3.pb.go307 symbols
tools/internal/gen/buf/validate/conformance/cases/predefined_rules_proto_editions.pb.go299 symbols
tools/internal/gen/buf/validate/conformance/cases/predefined_rules_proto2.pb.go293 symbols
tools/internal/gen/buf/validate/conformance/cases/custom_rules/custom_rules.pb.go290 symbols
tools/internal/gen/buf/validate/conformance/cases/ignore_proto3.pb.go257 symbols
tools/internal/gen/buf/validate/conformance/cases/required_field_proto_editions.pb.go209 symbols
tools/internal/gen/buf/validate/conformance/cases/repeated.pb.go208 symbols

For agents

$ claude mcp add protovalidate \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact