# PB v0.2.0 - Table of Contents Data-driven protobuf toolkit for Elixir. ## Pages - [PB](readme.md) - [Changelog](changelog.md) - Tutorials - [Getting started](getting-started.md) - How-to guides - [Generating a descriptor set](descriptor-sets.md) - [Embedding a schema at compile time](schema-modules.md) - [Decoding into structs and sum types](structs-and-representation.md) - [Adapters and well-known types](adapters-and-well-known-types.md) - [Encoding and decoding JSON](json.md) - [Extensions and unknown fields](extensions-and-unknown-fields.md) - [Introspecting a schema](introspection.md) - Reference - [Data representation](data-representation.md) - [Options reference](options.md) - [Conformance status](conformance.md) - [Benchmarks](benchmarks.md) - Explanation - [Why data-driven (no code generation)](why-data-driven.md) - [Encoding and decoding semantics](encoding-semantics.md) - [Representation vs adapters](representation-vs-adapters.md) ## Modules - [PB.Schema.Info.Enum](PB.Schema.Info.Enum.md): Public projection of a compiled protobuf enum. - [PB.Schema.Info.EnumValue](PB.Schema.Info.EnumValue.md): Public projection of a single enum value. - [PB.Schema.Info.ExtensionRange](PB.Schema.Info.ExtensionRange.md): Public projection of a single extension range declaration. - [PB.Schema.Info.Field](PB.Schema.Info.Field.md): Public projection of a compiled protobuf field or extension. - [PB.Schema.Info.Message](PB.Schema.Info.Message.md): Public projection of a compiled protobuf message. - [PB.Schema.Info.Method](PB.Schema.Info.Method.md): Public projection of a single service method. - [PB.Schema.Info.Oneof](PB.Schema.Info.Oneof.md): Public projection of a compiled oneof declaration. - [PB.Schema.Info.Service](PB.Schema.Info.Service.md): Public projection of a compiled protobuf service. - Core - [PB](PB.md): Data-driven protobuf toolkit for Elixir. Runtime usage needs no code generation or build step. A schema is a plain Elixir data structure produced by `compile/1`. - [PB.JSON](PB.JSON.md): ProtoJSON encoder/decoder for PB. - [PB.TextFormat](PB.TextFormat.md): Protobuf text format for PB. - [PB.UnknownField](PB.UnknownField.md): Preserved protobuf wire field that is not represented by the compiled schema. - Schema & introspection - [PB.Schema](PB.Schema.md): Embeds a compiled PB schema into a module at compile time. - [PB.Schema.Info](PB.Schema.Info.md): Public introspection structs returned by `PB.Schema.fetch_message/2` and friends. - [PB.Schema.Plugin](PB.Schema.Plugin.md): Behaviour for libraries that compile their own data into a PB schema, such as the protovalidate rules of [pb_validate](https://hexdocs.pm/pb_validate). - [PB.Schema.Projection](PB.Schema.Projection.md): Compiled projection metadata attached to a message in the schema. - Representation & adapters - [PB.Adapter](PB.Adapter.md): Message-level app/proto conversion spec. - [PB.WellKnownTypes](PB.WellKnownTypes.md): Native adapters for protobuf well-known types. - Errors - [PB.AdapterError](PB.AdapterError.md): An adapter `to_proto`/`from_proto` callback returned `{:error, reason}`, returned a non-tagged value, or raised. `:fqn` names the message, `:direction` is `:to_proto` or `:from_proto`, and `:reason` carries the callback's reason. See `PB.Error`. - [PB.DecodeError](PB.DecodeError.md): Structurally invalid serialized input: protobuf wire bytes that are truncated or malformed, or JSON or text format input that is not well-formed for the target. The `:format` field discriminates `:wire`, `:json` and `:text`. - [PB.Error](PB.Error.md): Shared toolkit and umbrella type for PB's structured errors. - [PB.OptionError](PB.OptionError.md): Option failure: the caller passed options the API does not accept, a known option carried an invalid value, or options were not a keyword list. See `PB.Error` for the error model. - [PB.SchemaError](PB.SchemaError.md): Schema-resolution and introspection failure. - [PB.ValueError](PB.ValueError.md): Input value or shape failure: a caller-supplied term does not fit the field's declared type, presence, or message structure.