https://github.com/tofu-tf/typed-schema
Typelevel http service definition DSL
https://github.com/tofu-tf/typed-schema
akka-http http-server open-api-v3 scala swagger typelevel-programming
Last synced: 25 days ago
JSON representation
Typelevel http service definition DSL
- Host: GitHub
- URL: https://github.com/tofu-tf/typed-schema
- Owner: tofu-tf
- License: apache-2.0
- Created: 2018-07-30T09:57:24.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-08-19T21:16:00.000Z (9 months ago)
- Last Synced: 2025-04-09T18:17:20.726Z (25 days ago)
- Topics: akka-http, http-server, open-api-v3, scala, swagger, typelevel-programming
- Language: Scala
- Homepage:
- Size: 3.34 MB
- Stars: 150
- Watchers: 16
- Forks: 28
- Open Issues: 51
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
| CI | Release |
| --- | --- |
|  | [](https://search.maven.org/search?q=ru.tinkoff.typed-schema-typedsl) |# Welcome to Typed Schema
Typed schema is an http service definition DSL, currently translating to [akka-http Routes](https://doc.akka.io/docs/akka-http/current/routing-dsl/overview.html) and [OpenApi 3.0 definition](https://swagger.io/specification/) inspired by the [haskell-servant](http://haskell-servant.readthedocs.io/en/stable/) library.## Getting started
Typed Schema is published to Maven Central and cross-built for Scala `2.12` and `2.13` so you can just add the following to your build:```scala
libraryDependencies ++= List(
"ru.tinkoff" %% "typed-schema-swagger" % "latest version in badge",
"ru.tinkoff" %% "typed-schema-finagle-zio" % "latest version in badge",
"ru.tinkoff" %% "typed-schema-finagle-custom" % "latest version in badge",
)
```or
```scala
libraryDependencies ++= List(
"ru.tinkoff" %% "typed-schema-swagger" % "latest version in badge",
"ru.tinkoff" %% "typed-schema-finagle-env" % "latest version in badge",
"ru.tinkoff" %% "typed-schema-finagle-custom" % "latest version in badge",
)
```
or```scala
libraryDependencies ++= List(
"ru.tinkoff" %% "typed-schema-swagger" % "latest version in badge",
"ru.tinkoff" %% "typed-schema-akka-http" % "latest version in badge",
)
```## Motivation
We the People building services using modern scala often struggling to satisfy following requirements
* Service implementation should be checked to be compatible with OpenApi 3.0 specifications at the compile time
* Service definition should be detachable from the implementation and exportable as mere specification
* There should be an easy way to migrate all the services to different effect\future\task implementation
without changing any definition
* There should be some way to migrate all the service to another framework without reimplementing them# [Learn More on the TypedSchema Microsite](https://tofu-tf.github.io/typed-schema/)