A syntax for defining cross-language data types to generate type-safe serializers, deserializers, and validators for JSON APIs.
ATD (Adaptable Type Definitions) is a syntax and toolset for defining cross-language data types, used to generate type-safe serializers, deserializers, and validators for JSON APIs. It solves the problem of maintaining consistent data structures across different programming languages in a service-oriented architecture.
Developers and teams building multi-language systems or JSON APIs who need to ensure type safety and consistency across services written in different programming languages.
ATD provides a single source of truth for data definitions, reducing bugs and boilerplate code by automatically generating type-safe serialization and validation code for multiple languages from one schema.
Static types for JSON APIs
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Define types once in ATD syntax and generate code for C++, Java, Python, TypeScript, and other languages, ensuring consistent data structures across services, as listed in the README.
Generates serializers and deserializers that enforce data integrity when converting between JSON and native types, reducing bugs in API handling.
Produces validators from type definitions to enforce constraints automatically, minimizing manual error-checking boilerplate.
Includes utilities like atdcat for syntax checking and atddiff for comparing interface revisions, aiding in API maintenance and versioning, as highlighted in the README.
Installation requires opam and familiarity with OCaml tooling, which can be a barrier for teams not using OCaml, as noted in the installation instructions.
Some target languages have legacy implementations (e.g., OCaml) or are marked as 'coming soon', limiting readiness for certain tech stacks, per the README's language list.
Integrating ATD into multi-language build processes demands custom scripting and maintenance, adding initial overhead compared to language-native solutions.