https://github.com/ahrefs/atd
Static types for JSON APIs
https://github.com/ahrefs/atd
Last synced: 10 months ago
JSON representation
Static types for JSON APIs
- Host: GitHub
- URL: https://github.com/ahrefs/atd
- Owner: ahrefs
- License: other
- Created: 2013-03-10T06:43:15.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2025-04-19T08:20:48.000Z (11 months ago)
- Last Synced: 2025-05-15T23:01:55.950Z (10 months ago)
- Language: OCaml
- Homepage:
- Size: 5.12 MB
- Stars: 326
- Watchers: 11
- Forks: 57
- Open Issues: 89
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Codeowners: CODEOWNERS
Awesome Lists containing this project
- awesome-list - atd
- awesome-reasonml - atd - Static types for JSON APIs (Reason / Libraries)
- awesome-ocaml - atdgen
README
ATD project - Static Types for Json APIs
==
[](https://circleci.com/gh/ahrefs/atd/tree/master)
ATD stands for Adaptable Type Definitions. It is a syntax for defining
cross-language data types. It is used as input to generate efficient
and type-safe serializers, deserializers and validators.
Target programming languages currently supported:
* C++: [atdcpp](atdcpp)
* DLang: [atdd](atdd)
* Java: [atdj](atdj)
* OCaml, Melange: [atdgen](atdgen)
* Python: [atdpy](atdpy)
* Scala: [atds](atds)
* TypeScript: [atdts](atdts)
Export to other interface description languages (IDLs):
* JSON Schema: [`atdcat -jsonschema`](atdcat)
Tools to work with ATD files:
* [atdcat](atdcat): check syntax, reformat, expand inherited definitions,
export to JSON Schema, ...
* [atddiff](atddiff): compare two revisions of a given ATD interface and
report incompatibilities.
All can installed with opam e.g.
```
$ opam install atdgen
```
Documentation
--
[here](http://atd.readthedocs.io/)
Contributing
--
The ATD suite of tools is developed and maintained by
volunteers—users like you.
[Various issues](https://github.com/ahrefs/atd/issues) are in need
of attention. If you'd like to contribute, please leave a comment on the
issue you're interested in, or create a new issue. Experienced
contributors will guide you as needed.
There are many simple ways of making a positive impact. For example,
you can...
* Use the software in your project.
* Give a demo to your colleagues.
* Share the passion on your blog.
* Tweet about what you're doing with atd.
* Report difficulties by creating new issues. We'll triage them.
* Ask questions on StackOverflow.
* Answer questions on
[StackOverflow](https://stackoverflow.com/search?q=atdgen).
* Discuss usage on the [OCaml forums](https://discuss.ocaml.org/).
* Pick a [task](https://github.com/ahrefs/atd/issues) that's easy for you.
Check out in particular
[good first time issues](https://github.com/ahrefs/atd/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+time+issue%22)
and other issues with which
[we could use some
help](https://github.com/ahrefs/atd/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22).
For guidelines on how to contribute code, consult
[CONTRIBUTING.md](CONTRIBUTING.md).
Authors
--
The ATD project started in 2010. Contributors include:
* Martin Jambon
* Rudi Grinberg
* Alexandre Bourquelot
* Ivan Jager
* oleksiy
* Gregoire Lionnet
* David Sheets
* Rytis Jonynas
* Jeff Meister
* Carmelo Piccione
* Louis
* Louis Roché
* Raman Varabets
* Daniel Weil
* Egor Chemokhonenko
* Gabriel Scherer
* Louis Roché (Ahrefs)
* Matthew McQuaid
* koonwen
* tzm
* Mathieu Baudet
* Oleksiy Golovko
* Rauan Mayemir
* Hyeseong Kim
* John Billings
* Marek Kubica
* Zach Yannes
* Antonin Décimo
* Brendan Long
* Caio Wakamatsu
* Chris Yocum
* Pierre Boutillier
* Shon Feder
* metanivek
* sebastiantoh
* Anurag Soni
* Arjun Ravi Narayan
* Asya-kawai
* Christophe Troestler
* Damien Doligez
* Daniel M
* Enrico Tassi
* François Pottier
* Javier Chavarri
* Jonas Bergler
* Kate
* Stephane Legrand
* Vincent Bernardoff
* Zach
* haoyang
* pmundkur
* ygrek
We distribute the source code under the terms of a [BSD license](LICENSE.md).