Open Collective
Open Collective

endpoints Scala library

Scala library to define remote communication protocols


Become a financial contributor.

Financial Contributions

Recurring contribution

Become a backer for $5.00 per month and support us

Starts at$5 USD / month

Recurring contribution

Become a sponsor for $100.00 per month and support us

Starts at$100 USD / month

Custom contribution
Make a custom one-time or recurring contribution.

Latest activity by

endpoints Scala library is all of us

Our contributors 3

Thank you for supporting endpoints Scala library.

Wojtek Pituła

Core Contributor



Transparent and open finances.

View all transactions
Refund of "Financial contribution to endpoints Scala libr...

Debit from endpoints Scala library to Guest

Contribution #396806
Financial contribution to endpoints Scala library

Credit from Guest to endpoints Scala library

Contribution #396806
Today’s balance

--.-- USD

Total raised

--.-- USD

Total disbursed

--.-- USD

Estimated annual budget

--.-- USD


endpoints ensures that HTTP servers, clients, and documentation always agree on a same protocol. Server, clients and documentation are all derived from a single source of truth defining the underlying protocol details (e.g., which verb, path, query parameters, headers, etc. to use). The result is a net benefice in productivity and maintenance. You will never forget to update your documentation or your client implementation to match the last changes you applied to your server. From the client perspective, calling an HTTP endpoint is as simple as calling a function. The endpoints library takes care of constructing the HTTP request and decoding the server response according to the endpoint definition. Conversely, from the server perspective implementing an HTTP endpoint is as simple as implementing a function.

One specificity of the endpoints library is that endpoint descriptions are plain Scala values. HTTP endpoints are described by combining values describing simple parts of the protocol, which can be reused and abstracted over, like any other Scala value. Another benefit of this approach is that it integrates seamlessly with your codebase because no code generation step is required to turn your endpoint descriptions into a working client.

Another specificity is that the library is designed to be extensible. If your application requires a very specific feature, you can easily implement it and integrate it with the existing building blocks provided by the library.

Currently, the library can produce servers on the JVM (using either Akka-Http or Play framework), clients on the JVM (using Akka-Http, Play framework, Sttp or scalaj-http) and on Web browsers, as well as OpenAPI documentation.

Our team

Wojtek Pituła

Core Contributor