Endpoints is a Scala library for defining communication protocols over HTTP between applications. It allows to describe API endpoints as first-class Scala values and interpret them in multiple ways: as server, client or documentation making sure documentation is always consistent with server implementation.