Skip to content

A contracts broker that provides a declarative way of sharing, validating & discovering contracts between multiple projects.

License

Notifications You must be signed in to change notification settings

notaryio/notary

Repository files navigation


notary

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.

What is a Contract?

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..

How does the provider/consumer validation work?

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:

  1. Syntactic validation
  2. Check if all of the project's promises satisfy its consumers
  3. Check if all of the project's expectations are honored by its upstream providers

What integration patterns does the project support so far?

  1. REST APIs: Define contracts for RESTful API endpoints using the Swagger spec
  2. Frontend LocalStorage: Define contracts for shared objects in the end-customer's browser LocalStorage using a specified JSON schema