Skip to content

Commit

Permalink
Release 1.9.3
Browse files Browse the repository at this point in the history
  • Loading branch information
kciesielski committed Nov 30, 2023
1 parent 9ca2968 commit dfe4a17
Show file tree
Hide file tree
Showing 30 changed files with 176 additions and 123 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ tapir documentation is available at [tapir.softwaremill.com](http://tapir.softwa
Add the following dependency:

```sbt
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.9.3"
```

Then, import:
Expand Down
2 changes: 1 addition & 1 deletion 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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-http4s-client" % "1.9.3"
```

To interpret an endpoint definition as an `org.http4s.Request[F]`, import:
Expand Down
27 changes: 19 additions & 8 deletions generated-doc/out/client/play.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,30 @@
# Using as a Play client

Add the dependency:
Tapir supports both Play 2.9, which still ships with Akka, and Play 3.0, which replaces Akka with Pekko.
See the [Play framework documentation](https://www.playframework.com/documentation/2.9.x/General#How-Play-Deals-with-Akkas-License-Change) for differences between these versions.

For **Play 3.0**, add the dependency:

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

For **Play 2.9**, add

```scala
"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "1.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-play29-client" % "1.9.3"
```

instead. Furthermore, replace all uses of `sttp.capabilities.pekko.PekkoStreams` in the following code snippets with `sttp.capabilities.akka.AkkaStreams`.

To make requests using an endpoint definition using the [play client](https://github.com/playframework/play-ws), import:

```scala
import sttp.tapir.client.play.PlayClientInterpreter
```

This objects contains four methods:
- `toRequestThrowDecodeFailures(PublicEndpoint, String)` and `toSecureRequestThrowDecodeErrors(Endpoint, String)`: given
- `toRequestThrowDecodeFailures(PublicEndpoint, String)` and `toSecureRequestThrowDecodeErrors(Endpoint, String)`: given
the base URI returns a function, which will generate a request and a response parser which might throw
an exception when decoding of the result fails
```scala
Expand All @@ -26,8 +37,8 @@ This objects contains four methods:
I => (StandaloneWSRequest, StandaloneWSResponse => DecodeResult[Either[E, O]])
```

Note that the returned functions have one argument each: first the security inputs (if any), and regular input values of the endpoint. This might be a
single type, a tuple, or a case class, depending on the endpoint description.
Note that the returned functions have one argument each: first the security inputs (if any), and regular input values of the endpoint. This might be a
single type, a tuple, or a case class, depending on the endpoint description.

After providing the input parameters, the two following are returned:
- a description of the request to be made, with the input value
Expand All @@ -52,11 +63,11 @@ import play.api.libs.ws.StandaloneWSClient
def example[I, E, O, R >: PekkoStreams](implicit wsClient: StandaloneWSClient) {
val e: PublicEndpoint[I, E, O, R] = ???
val inputArgs: I = ???

val (req, responseParser) = PlayClientInterpreter()
.toRequestThrowDecodeFailures(e, s"http://localhost:9000")
.apply(inputArgs)

val result: Future[Either[E, O]] = req
.execute()
.map(responseParser)
Expand All @@ -68,4 +79,4 @@ def example[I, E, O, R >: PekkoStreams](implicit wsClient: StandaloneWSClient) {
Multipart requests are not supported.

Streaming capabilities:
- only `PekkoStreams` is supported
- only `PekkoStreams` is supported (resp. `AkkaStreams` for Play 2.9)
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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "1.9.3"
```

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.9.2"
"com.softwaremill.sttp.tapir" %%% "tapir-sttp-client" % "1.9.3"
"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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-docs" % "1.9.3"
"com.softwaremill.sttp.apispec" %% "asyncapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec
```

Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/docs/json-schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
You can conveniently generate JSON schema from Tapir schema, which can be derived from your Scala types. Use `TapirSchemaToJsonSchema`:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-apispec-docs" % "1.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-apispec-docs" % "1.9.3"
```

Schema generation can now be performed like in the following example:
Expand Down
12 changes: 6 additions & 6 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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.9.3"
```

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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.9.3"
```

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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.9.3"
"com.softwaremill.sttp.apispec" %% "openapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec
```

Expand Down Expand Up @@ -133,7 +133,7 @@ For example, generating the OpenAPI 3.0.3 YAML string can be achieved by perform

Firstly add dependencies:
```scala
"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.9.3"
"com.softwaremill.sttp.apispec" %% "openapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec
```

Expand Down Expand Up @@ -163,12 +163,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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui" % "1.9.3"
```

or `tapir-redoc`:
```scala
"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.9.3"
```

Then, you'll need to pass the server endpoints to your server interpreter. For example, using akka-http:
Expand Down
10 changes: 10 additions & 0 deletions generated-doc/out/endpoint/enumerations.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,16 @@ query[CommaSeparated[Features.Feature]]("features")
Additionally, the schema for such an input/output will have the `explode` parameter set to `false`, so that it is
properly represented in [OpenAPI](../docs/openapi.md) documentation.

You can take a look at a runnable example [here](https://github.com/softwaremill/tapir/tree/master/examples/src/main/scala/sttp/tapir/examples/custom_types).

```eval_rst
.. warning::
``Delimited`` and ``CommaSeparated`` rely on literal types, which are only available in Scala 2.13+.
If you're using an older version of Scala, a workaround is creating a comma-separated codec locally.
```

## Using enumerations as part of bodies

When an enumeration is used as part of a body, on the tapir side you'll have to provide a [schema](schemas.md) for
Expand Down
18 changes: 9 additions & 9 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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-cats" % "1.9.3"
```

- `import sttp.tapir.integ.cats.codec._` - brings schema, validator and codec instances
Expand All @@ -24,7 +24,7 @@ Additionally, the `tapir-cats-effect` module contains an implementation of the `
between the sttp-internal `MonadError` and the cats-effect `Sync` typeclass:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-cats-effect" % "1.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-cats-effect" % "1.9.3"
```

## Refined integration
Expand All @@ -33,7 +33,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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-refined" % "1.9.3"
```

You'll need to extend the `sttp.tapir.codec.refined.TapirCodecRefined`
Expand All @@ -54,7 +54,7 @@ If you use [iron](https://github.com/Iltotore/iron), the `tapir-iron` module wil
validators for `T :| P` as long as a codec for `T` already exists:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-iron" % "1.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-iron" % "1.9.3"
```

The module is only available for Scala 3 since iron is not designed to work with Scala 2.
Expand All @@ -72,7 +72,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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-enumeratum" % "1.9.3"
```

Then, `import sttp.tapir.codec.enumeratum._`, or extends the `sttp.tapir.codec.enumeratum.TapirCodecEnumeratum` trait.
Expand All @@ -85,7 +85,7 @@ If you use [scala-newtype](https://github.com/estatico/scala-newtype), the `tapi
schemas for 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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-newtype" % "1.9.3"
```

Then, `import sttp.tapir.codec.newtype._`, or extend the `sttp.tapir.codec.newtype.TapirCodecNewType` trait to bring the implicit values into scope.
Expand All @@ -96,7 +96,7 @@ If you use [monix newtypes](https://github.com/monix/newtypes), the `tapir-monix
schemas for types which extend `NewtypeWrapped` and `NewsubtypeWrapped` annotations as long as a codec and schema for its underlying value already exists:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-monix-newtype" % "1.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-monix-newtype" % "1.9.3"
```

Then, `import sttp.tapir.codec.monix.newtype._`, or extend the `sttp.tapir.codec.monix.newtype.TapirCodecMonixNewType` trait to bring the implicit values into scope.
Expand All @@ -107,7 +107,7 @@ If you use [ZIO Prelude Newtypes](https://zio.github.io/zio-prelude/docs/newtype
schemas for types defined using `Newtype` and `Subtype` as long as a codec and a schema for the underlying type already exists:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-zio-prelude" % "1.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-zio-prelude" % "1.9.3"
```

Then, mix in `sttp.tapir.codec.zio.prelude.newtype.TapirNewtypeSupport` into your newtype to bring the implicit values into scope:
Expand Down Expand Up @@ -146,7 +146,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.9.2"
"com.softwaremill.sttp.tapir" %% "tapir-derevo" % "1.9.3"
```

Then you can derive schema for your ADT along with other typeclasses besides ADT declaration itself:
Expand Down
Loading

0 comments on commit dfe4a17

Please sign in to comment.