Skip to content

Commit

Permalink
Release 1.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
adamw committed Jun 22, 2022
1 parent 64b73e5 commit 689bd80
Show file tree
Hide file tree
Showing 26 changed files with 98 additions and 60 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ tapir documentation is available at [tapir.softwaremill.com](http://tapir.softwa
Add the following dependency:

```sbt
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.0.1"
```

Then, import:
Expand Down
4 changes: 2 additions & 2 deletions doc/docs/openapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ these steps can be done separately, giving you complete control over the process
To generate OpenAPI documentation and expose it using the Swagger UI in a single step, first add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.0.1"
```

Then, you can interpret a list of endpoints using `SwaggerInterpreter`. The result will be a list of file-serving
Expand Down Expand Up @@ -55,7 +55,7 @@ for details.
Similarly as above, you'll need the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.0.1"
```

And the server endpoints can be generated using the `sttp.tapir.redoc.bundle.RedocInterpreter` class.
Expand Down
Binary file added generated-doc/out/adopters/broad.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions generated-doc/out/client/http4s.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-http4s-client" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-http4s-client" % "1.0.1"
```

To interpret an endpoint definition as an `org.http4s.Request[F]`, import:
Expand Down Expand Up @@ -37,7 +37,7 @@ After providing the input parameters, the following values are returned:
The result will then contain the decoded error or success values
(note that this can be the body enriched with data from headers/status code).

See the [runnable example](https://github.com/softwaremill/tapir/blob/master/examples/src/main/scala/sttp/tapir/examples/Http4sClientExample.scala)
See the [runnable example](https://github.com/softwaremill/tapir/blob/master/examples/src/main/scala/sttp/tapir/examples/client/Http4sClientExample.scala)
for example usage.

## Limitations
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/client/play.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "1.0.1"
```

To make requests using an endpoint definition using the [play client](https://github.com/playframework/play-ws), import:
Expand Down
4 changes: 2 additions & 2 deletions generated-doc/out/client/sttp.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "1.0.1"
```

To make requests using an endpoint definition using the [sttp client](https://github.com/softwaremill/sttp), import:
Expand Down Expand Up @@ -102,7 +102,7 @@ In this case add the following dependencies (note the [`%%%`](https://www.scala-
instead of the usual `%%`):

```scala
"com.softwaremill.sttp.tapir" %%% "tapir-sttp-client" % "1.0.0"
"com.softwaremill.sttp.tapir" %%% "tapir-sttp-client" % "1.0.1"
"io.github.cquiroz" %%% "scala-java-time" % "2.2.0" // implementations of java.time classes for Scala.JS
```

Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/docs/asyncapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
To use, add the following dependencies:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-docs" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-docs" % "1.0.1"
"com.softwaremill.sttp.apispec" %% "asyncapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec
```

Expand Down
10 changes: 5 additions & 5 deletions generated-doc/out/docs/openapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ these steps can be done separately, giving you complete control over the process
To generate OpenAPI documentation and expose it using the Swagger UI in a single step, first add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.0.1"
```

Then, you can interpret a list of endpoints using `SwaggerInterpreter`. The result will be a list of file-serving
Expand Down Expand Up @@ -55,7 +55,7 @@ for details.
Similarly as above, you'll need the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.0.1"
```

And the server endpoints can be generated using the `sttp.tapir.redoc.bundle.RedocInterpreter` class.
Expand All @@ -65,7 +65,7 @@ And the server endpoints can be generated using the `sttp.tapir.redoc.bundle.Red
To generate the docs in the OpenAPI yaml format, add the following dependencies:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.0.1"
"com.softwaremill.sttp.apispec" %% "openapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec
```

Expand Down Expand Up @@ -136,12 +136,12 @@ The modules `tapir-swagger-ui` and `tapir-redoc` contain server endpoint definit
yaml format, will expose it using the given context path. To use, add as a dependency either
`tapir-swagger-ui`:
```scala
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui" % "1.0.1"
```

or `tapir-redoc`:
```scala
"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.0.1"
```

Then, you'll need to pass the server endpoints to your server interpreter. For example, using akka-http:
Expand Down
10 changes: 5 additions & 5 deletions generated-doc/out/endpoint/integrations.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The `tapir-cats` module contains additional instances for some [cats](https://ty
datatypes as well as additional syntax:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-cats" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-cats" % "1.0.1"
```

- `import sttp.tapir.integ.cats.codec._` - brings schema, validator and codec instances
Expand All @@ -26,7 +26,7 @@ If you use [refined](https://github.com/fthomas/refined), the `tapir-refined` mo
validators for `T Refined P` as long as a codec for `T` already exists:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-refined" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-refined" % "1.0.1"
```

You'll need to extend the `sttp.tapir.codec.refined.TapirCodecRefined`
Expand All @@ -47,7 +47,7 @@ The `tapir-enumeratum` module provides schemas, validators and codecs for [Enume
enumerations. To use, add the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-enumeratum" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-enumeratum" % "1.0.1"
```

Then, `import sttp.tapir.codec.enumeratum`, or extends the `sttp.tapir.codec.enumeratum.TapirCodecEnumeratum` trait.
Expand Down Expand Up @@ -87,7 +87,7 @@ If you use [scala-newtype](https://github.com/estatico/scala-newtype), the `tapi
schemas for a types with a `@newtype` and `@newsubtype` annotations as long as a codec and schema for its underlying value already exists:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-newtype" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-newtype" % "1.0.1"
```

Then, `import sttp.tapir.codec.newtype._`, or extend the `sttp.tapir.codec.enumeratum.TapirCodecNewType` trait to bring the implicit values into scope.
Expand All @@ -99,7 +99,7 @@ For details refer to [derevo documentation](https://github.com/tofu-tf/derevo#in
To use, add the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-derevo" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-derevo" % "1.0.1"
```

Then you can derive schema for your ADT along with other typeclasses besides ADT declaration itself:
Expand Down
16 changes: 8 additions & 8 deletions generated-doc/out/endpoint/json.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ the json codec that is in scope.
To use [Circe](https://github.com/circe/circe), add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-circe" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-json-circe" % "1.0.1"
```

Next, import the package (or extend the `TapirJsonCirce` trait, see [MyTapir](../mytapir.md)):
Expand Down Expand Up @@ -103,7 +103,7 @@ Now the above JSON object will render as
To use [µPickle](http://www.lihaoyi.com/upickle/) add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-upickle" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-json-upickle" % "1.0.1"
```

Next, import the package (or extend the `TapirJsonuPickle` trait, see [MyTapir](../mytapir.md) and add `TapirJsonuPickle` not `TapirCirceJson`):
Expand Down Expand Up @@ -138,7 +138,7 @@ For more examples, including making a custom encoder/decoder, see [TapirJsonuPic
To use [Play JSON](https://github.com/playframework/play-json) add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-play" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-json-play" % "1.0.1"
```

Next, import the package (or extend the `TapirJsonPlay` trait, see [MyTapir](../mytapir.md) and add `TapirJsonPlay` not `TapirCirceJson`):
Expand All @@ -154,7 +154,7 @@ Play JSON requires `Reads` and `Writes` implicit values in scope for each type y
To use [Spray JSON](https://github.com/spray/spray-json) add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-spray" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-json-spray" % "1.0.1"
```

Next, import the package (or extend the `TapirJsonSpray` trait, see [MyTapir](../mytapir.md) and add `TapirJsonSpray` not `TapirCirceJson`):
Expand All @@ -170,7 +170,7 @@ Spray JSON requires a `JsonFormat` implicit value in scope for each type you wan
To use [Tethys JSON](https://github.com/tethys-json/tethys) add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-tethys" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-json-tethys" % "1.0.1"
```

Next, import the package (or extend the `TapirJsonTethys` trait, see [MyTapir](../mytapir.md) and add `TapirJsonTethys` not `TapirCirceJson`):
Expand All @@ -186,7 +186,7 @@ Tethys JSON requires `JsonReader` and `JsonWriter` implicit values in scope for
To use [Jsoniter-scala](https://github.com/plokhotnyuk/jsoniter-scala) add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-jsoniter-scala" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-jsoniter-scala" % "1.0.1"
```

Next, import the package (or extend the `TapirJsonJsoniter` trait, see [MyTapir](../mytapir.md) and add `TapirJsonJsoniter` not `TapirCirceJson`):
Expand All @@ -202,7 +202,7 @@ Jsoniter Scala requires `JsonValueCodec` implicit value in scope for each type y
To use [json4s](https://github.com/json4s/json4s) add the following dependencies to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-json4s" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-json-json4s" % "1.0.1"
```

And one of the implementations:
Expand Down Expand Up @@ -233,7 +233,7 @@ implicit val formats: Formats = org.json4s.jackson.Serialization.formats(NoTypeH
To use [zio-json](https://github.com/zio/zio-json), add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-zio" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-json-zio" % "1.0.1"
```
Next, import the package (or extend the `TapirJsonZio` trait, see [MyTapir](../mytapir.md) and add `TapirJsonZio` instead of `TapirCirceJson`):

Expand Down
5 changes: 5 additions & 0 deletions generated-doc/out/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

The [examples](https://github.com/softwaremill/tapir/tree/master/examples/src/main/scala/sttp/tapir/examples) and [examples3](https://github.com/softwaremill/tapir/tree/master/examples3/src/main/scala/sttp/tapir/examples3) sub-projects (the latter containing Scala 3-only code) contains a number of runnable tapir usage examples, using various interpreters and showcasing different features.

## Generate a tapir project

You can generate a simple project using tapir using [adopt-tapir](https://adopt-tapir.softwaremill.com).

## Third-party examples

To see an example project using tapir, [check out this Todo-Backend](https://github.com/hejfelix/tapir-http4s-todo-mvc)
Expand All @@ -12,6 +16,7 @@ A new project can be created using: `sbt new https://codeberg.org/wegtam/http4s-

## Blogs, articles

* [Tapir 1.0 released](https://softwaremill.com/tapir-1-0-released/)
* [Security improvements in tapir 0.19](https://softwaremill.com/security-improvements-in-tapir-0-19/)
* [Tapir serverless: a proof of concept](https://blog.softwaremill.com/tapir-serverless-a-proof-of-concept-6b8c9de4d396)
* [Designing tapir's WebSockets support](https://blog.softwaremill.com/designing-tapirs-websockets-support-ff1573166368)
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/generator/sbt-openapi-codegen.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
Add the sbt plugin to the `project/plugins.sbt`:

```scala
addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "1.0.0")
addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "1.0.1")
```

Enable the plugin for your project in the `build.sbt`:
Expand Down
33 changes: 33 additions & 0 deletions generated-doc/out/press/tapir-1-0-released.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# SoftwareMill launches stable release of tapir, making it easier than ever for HTTP API developers to benefit from Scala's expressivity

**Warsaw, Poland – June, 2022 – SoftwareMill S.A.**

After almost 4 years of development and multiple 0.x releases, SoftwareMill is happy to announce the release of tapir 1.0! The goal of the [tapir library](https://tapir.softwaremill.com/) is to provide a programmer-friendly, reasonably type-safe API to expose, consume and document HTTP endpoints, using the Scala language.

> “With tapir, you can describe an endpoint as an immutable Scala value. This description and its parts can be arbitrarily extended and reused, making it possible to leverage the abstraction capabilities given by the Scala language.” says Adam Warski, CTO at SoftwareMill. “This is in contrast to the more "traditional" annotation-driven HTTP frameworks, which are severely constrained when it comes to even simple refactorings, such as extracting common code.”
Such a description - capturing the complete metadata of the endpoint - can be then interpreted in three basic ways: as a server, a client, or as documentation.

## Fitted into Scala ecosystem

Any of the leading Scala programming styles, that is `Future`-based, using cats-effect or ZIO can be used. Tapir integrates with a number of existing server implementations, such as akka-http, http4s, vertx or the Play framework.

When generating documentation, tapir can generate “raw” OpenAPI yaml files, and expose them using the SwaggerUI or Redoc. AsyncAPI is supported out-of-the-box as well. Further integrations include observability tools, which take advantage of the tapir-provided metadata, to enrich metrics, logs or traces.

## Ready to facilitate smooth collaboration

Compile-time verification combined with type-driven auto-complete in the IDE allows shortening of feedback loop cycles during development. On the other hand, leveraging the rich endpoint metadata, which is available as an ordinary Scala value, allows smooth collaboration with other teams who want to consume the API being developed, or provide other APIs for consumption.

## Get started now

If you’d like to try tapir, check out our [documentation](https://tapir.softwaremill.com/en/latest/) or the [adopt-tapir page](https://adopt-tapir.softwaremill.com), where you can generate a customised bare-bones tapir project. Looking forward to learning about your impressions of the library!

## Additional Resources

* [scala.page](https://softwaremill.com/scala/)
* [SoftwareMill Tech Blog](https://softwaremill.com/blog/)
* [Scala Times](https://scalatimes.com/)

## About SoftwareMill

We help clients scale their business through software, conduct digital transformation, implement event sourcing and create data processing pipelines. We specialise in Scala, Kafka, Akka and Cassandra, among other technologies. Our areas of expertise include distributed systems, big data, blockchain, machine learning and data analytics. Project in trouble? We'll help your team.
2 changes: 1 addition & 1 deletion generated-doc/out/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
To use tapir, add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.0.1"
```

This will import only the core classes needed to create endpoint descriptions. To generate a server or a client, you
Expand Down
4 changes: 2 additions & 2 deletions generated-doc/out/server/akkahttp.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ To expose an endpoint as an [akka-http](https://doc.akka.io/docs/akka-http/curre
dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.0.1"
```

This will transitively pull some Akka modules in version 2.6. If you want to force
your own Akka version (for example 2.5), use sbt exclusion. Mind the Scala version in artifact name:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.0.0" exclude("com.typesafe.akka", "akka-stream_2.12")
"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.0.1" exclude("com.typesafe.akka", "akka-stream_2.12")
```

Now import the object:
Expand Down
8 changes: 4 additions & 4 deletions generated-doc/out/server/armeria.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Armeria interpreter can be used with different effect systems (cats-effect, ZIO)

Add the following dependency
```scala
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server" % "1.0.1"
```

and import the object:
Expand Down Expand Up @@ -75,7 +75,7 @@ Note that Armeria automatically injects an `ExecutionContext` on top of Armeria'

Add the following dependency
```scala
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-cats" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-cats" % "1.0.1"
```
to use this interpreter with Cats Effect typeclasses.

Expand Down Expand Up @@ -155,9 +155,9 @@ Add the following dependency

```scala
// for zio 2:
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio" % "1.0.1"
// for zio 1:
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio1" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio1" % "1.0.1"
```

to use this interpreter with ZIO.
Expand Down
6 changes: 3 additions & 3 deletions generated-doc/out/server/aws.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ To implement the Lambda function, a server interpreter is available, which takes
Currently, only an interpreter integrating with cats-effect is available (`AwsCatsEffectServerInterpreter`). To use, add the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-aws-lambda" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-aws-lambda" % "1.0.1"
```

To configure API Gateway and the Lambda function, you can use:
Expand All @@ -24,8 +24,8 @@ To configure API Gateway and the Lambda function, you can use:
Add one of the following dependencies:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-aws-sam" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-aws-terraform" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-aws-sam" % "1.0.1"
"com.softwaremill.sttp.tapir" %% "tapir-aws-terraform" % "1.0.1"
```

## Examples
Expand Down
4 changes: 2 additions & 2 deletions generated-doc/out/server/finatra.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ To expose an endpoint as an [finatra](https://twitter.github.io/finatra/) server
dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-finatra-server" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-finatra-server" % "1.0.1"
```

and import the object:
Expand All @@ -17,7 +17,7 @@ This interpreter supports the twitter `Future`.
Or, if you would like to use cats-effect project, you can add the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-finatra-server-cats" % "1.0.0"
"com.softwaremill.sttp.tapir" %% "tapir-finatra-server-cats" % "1.0.1"
```

and import the object:
Expand Down
Loading

0 comments on commit 689bd80

Please sign in to comment.