A contracts broker that provides a declarative way of sharing, validating & discovering contracts between multiple projects.
Beside contracts validation, sharing & discovery, notary also allows you to generate all sort of extra artifacts out of those contracts like Client libraries, Stubbed endpoints, Dependency Graphs & much more.
Support for multiple popular integration patterns like REST APIs will be shipped out of the box, plus the ability to easily extend the project with "Integrations plugins" to support even more patterns.
A contract is either a Producer Promise or a Consumer Expectation. In notary, it's a meta-data describing how to use a specific shared integration point, e.g.: a Swagger file describing exposed REST API endpoint including API versioning, paths, supported methods, response entities, etc..
To validate your contracts you need to issue a request to the [validation endpoint]. Ideally, this will be done automatically in your CI pipeline.
The validation process includes:
- Syntactic validation
- Check if all of the project's promises satisfy its consumers
- Check if all of the project's expectations are honored by its upstream providers
- REST APIs: Define contracts for RESTful API endpoints using the Swagger spec
- Frontend LocalStorage: Define contracts for shared objects in the end-customer's browser LocalStorage using a specified JSON schema