From 23cc7c9db788beb0f78596a5e8dc353d2565642b Mon Sep 17 00:00:00 2001 From: adamw Date: Fri, 18 Aug 2023 12:26:28 +0200 Subject: [PATCH] Release 1.7.2 --- README.md | 2 +- generated-doc/out/client/http4s.md | 2 +- generated-doc/out/client/play.md | 2 +- generated-doc/out/client/sttp.md | 4 +-- generated-doc/out/docs/asyncapi.md | 2 +- generated-doc/out/docs/json-schema.md | 2 +- generated-doc/out/docs/openapi.md | 14 ++++---- generated-doc/out/endpoint/integrations.md | 18 +++++----- generated-doc/out/endpoint/json.md | 16 ++++----- generated-doc/out/endpoint/static.md | 2 +- .../out/generator/sbt-openapi-codegen.md | 2 +- generated-doc/out/other_interpreters.md | 4 +++ generated-doc/out/quickstart.md | 2 +- generated-doc/out/server/akkahttp.md | 4 +-- generated-doc/out/server/armeria.md | 8 ++--- generated-doc/out/server/aws.md | 8 ++--- generated-doc/out/server/finatra.md | 4 +-- generated-doc/out/server/http4s.md | 33 ++++++++++++++++++- generated-doc/out/server/jdkhttp.md | 2 +- generated-doc/out/server/netty.md | 6 ++-- generated-doc/out/server/observability.md | 8 ++--- generated-doc/out/server/pekkohttp.md | 4 +-- generated-doc/out/server/play.md | 2 +- generated-doc/out/server/vertx.md | 8 ++--- generated-doc/out/server/zio-http4s.md | 6 ++-- generated-doc/out/server/ziohttp.md | 4 +-- generated-doc/out/testing.md | 10 +++--- 27 files changed, 108 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index 3db4cd830b..9dfe837e72 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ tapir documentation is available at [tapir.softwaremill.com](http://tapir.softwa Add the following dependency: ```sbt -"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.7.2" ``` Then, import: diff --git a/generated-doc/out/client/http4s.md b/generated-doc/out/client/http4s.md index ed64868cff..4db57fb967 100644 --- a/generated-doc/out/client/http4s.md +++ b/generated-doc/out/client/http4s.md @@ -3,7 +3,7 @@ Add the dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-http4s-client" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-http4s-client" % "1.7.2" ``` To interpret an endpoint definition as an `org.http4s.Request[F]`, import: diff --git a/generated-doc/out/client/play.md b/generated-doc/out/client/play.md index 1ce09fdf32..8541e7442b 100644 --- a/generated-doc/out/client/play.md +++ b/generated-doc/out/client/play.md @@ -3,7 +3,7 @@ Add the dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "1.7.2" ``` To make requests using an endpoint definition using the [play client](https://github.com/playframework/play-ws), import: diff --git a/generated-doc/out/client/sttp.md b/generated-doc/out/client/sttp.md index 1f95b0078a..11f83e1bc8 100644 --- a/generated-doc/out/client/sttp.md +++ b/generated-doc/out/client/sttp.md @@ -3,7 +3,7 @@ Add the dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "1.7.2" ``` To make requests using an endpoint definition using the [sttp client](https://github.com/softwaremill/sttp), import: @@ -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.7.1" +"com.softwaremill.sttp.tapir" %%% "tapir-sttp-client" % "1.7.2" "io.github.cquiroz" %%% "scala-java-time" % "2.2.0" // implementations of java.time classes for Scala.JS ``` diff --git a/generated-doc/out/docs/asyncapi.md b/generated-doc/out/docs/asyncapi.md index dca8b2822a..36e94d1a75 100644 --- a/generated-doc/out/docs/asyncapi.md +++ b/generated-doc/out/docs/asyncapi.md @@ -3,7 +3,7 @@ To use, add the following dependencies: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-docs" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-docs" % "1.7.2" "com.softwaremill.sttp.apispec" %% "asyncapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec ``` diff --git a/generated-doc/out/docs/json-schema.md b/generated-doc/out/docs/json-schema.md index ef47f184ba..250eac53fd 100644 --- a/generated-doc/out/docs/json-schema.md +++ b/generated-doc/out/docs/json-schema.md @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-apispec-docs" % "1.7.2" ``` Schema generation can now be performed like in the following example: diff --git a/generated-doc/out/docs/openapi.md b/generated-doc/out/docs/openapi.md index b8269868c6..f9d815872b 100644 --- a/generated-doc/out/docs/openapi.md +++ b/generated-doc/out/docs/openapi.md @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.7.2" ``` Then, you can interpret a list of endpoints using `SwaggerInterpreter`. The result will be a list of file-serving @@ -55,7 +55,7 @@ for details. Similarly as above, you'll need the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.7.2" ``` And the server endpoints can be generated using the `sttp.tapir.redoc.bundle.RedocInterpreter` class. @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.7.2" "com.softwaremill.sttp.apispec" %% "openapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec ``` @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.7.2" "com.softwaremill.sttp.apispec" %% "openapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec ``` @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui" % "1.7.2" ``` or `tapir-redoc`: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.7.2" ``` Then, you'll need to pass the server endpoints to your server interpreter. For example, using akka-http: @@ -324,6 +324,8 @@ val openAPIYaml = OpenAPIDocsInterpreter().toOpenAPI(sampleEndpoint, Info("title However, to add extensions to other unusual places (like, `License` or `Server`, etc.) you should modify the `OpenAPI` object manually or using a tool such as [quicklens](https://github.com/softwaremill/quicklens). +If you are using `tapir-swagger-ui` you need to set `withShowExtensions` option for `SwaggerUIOptions`. + ## Hiding inputs/outputs It's possible to hide an input/output from the OpenAPI description using following syntax: diff --git a/generated-doc/out/endpoint/integrations.md b/generated-doc/out/endpoint/integrations.md index a4092ccb87..f07f7aaf2a 100644 --- a/generated-doc/out/endpoint/integrations.md +++ b/generated-doc/out/endpoint/integrations.md @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-cats" % "1.7.2" ``` - `import sttp.tapir.integ.cats.codec._` - brings schema, validator and codec instances @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-cats-effect" % "1.7.2" ``` ## Refined integration @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-refined" % "1.7.2" ``` You'll need to extend the `sttp.tapir.codec.refined.TapirCodecRefined` @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-iron" % "1.7.2" ``` The module is only available for Scala 3 since iron is not designed to work with Scala 2. @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-enumeratum" % "1.7.2" ``` Then, `import sttp.tapir.codec.enumeratum._`, or extends the `sttp.tapir.codec.enumeratum.TapirCodecEnumeratum` trait. @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-newtype" % "1.7.2" ``` Then, `import sttp.tapir.codec.newtype._`, or extend the `sttp.tapir.codec.newtype.TapirCodecNewType` trait to bring the implicit values into scope. @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-monix-newtype" % "1.7.2" ``` Then, `import sttp.tapir.codec.monix.newtype._`, or extend the `sttp.tapir.codec.monix.newtype.TapirCodecMonixNewType` trait to bring the implicit values into scope. @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-zio-prelude" % "1.7.2" ``` Then, mix in `sttp.tapir.codec.zio.prelude.newtype.TapirNewtypeSupport` into your newtype to bring the implicit values into scope: @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-derevo" % "1.7.2" ``` Then you can derive schema for your ADT along with other typeclasses besides ADT declaration itself: diff --git a/generated-doc/out/endpoint/json.md b/generated-doc/out/endpoint/json.md index 42b7a0b8b6..7c4d14c481 100644 --- a/generated-doc/out/endpoint/json.md +++ b/generated-doc/out/endpoint/json.md @@ -45,7 +45,7 @@ stringJsonBody.schema(implicitly[Schema[MyBody]].as[String]) To use [Circe](https://github.com/circe/circe), add the following dependency to your project: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-json-circe" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-json-circe" % "1.7.2" ``` Next, import the package (or extend the `TapirJsonCirce` trait, see [MyTapir](../mytapir.md)): @@ -118,7 +118,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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-json-upickle" % "1.7.2" ``` Next, import the package (or extend the `TapirJsonuPickle` trait, see [MyTapir](../mytapir.md) and add `TapirJsonuPickle` not `TapirCirceJson`): @@ -153,7 +153,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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-json-play" % "1.7.2" ``` Next, import the package (or extend the `TapirJsonPlay` trait, see [MyTapir](../mytapir.md) and add `TapirJsonPlay` not `TapirCirceJson`): @@ -169,7 +169,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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-json-spray" % "1.7.2" ``` Next, import the package (or extend the `TapirJsonSpray` trait, see [MyTapir](../mytapir.md) and add `TapirJsonSpray` not `TapirCirceJson`): @@ -185,7 +185,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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-json-tethys" % "1.7.2" ``` Next, import the package (or extend the `TapirJsonTethys` trait, see [MyTapir](../mytapir.md) and add `TapirJsonTethys` not `TapirCirceJson`): @@ -201,7 +201,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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-jsoniter-scala" % "1.7.2" ``` Next, import the package (or extend the `TapirJsonJsoniter` trait, see [MyTapir](../mytapir.md) and add `TapirJsonJsoniter` not `TapirCirceJson`): @@ -217,7 +217,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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-json-json4s" % "1.7.2" ``` And one of the implementations: @@ -248,7 +248,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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-json-zio" % "1.7.2" ``` Next, import the package (or extend the `TapirJsonZio` trait, see [MyTapir](../mytapir.md) and add `TapirJsonZio` instead of `TapirCirceJson`): diff --git a/generated-doc/out/endpoint/static.md b/generated-doc/out/endpoint/static.md index a5a32d658d..0204d056a8 100644 --- a/generated-doc/out/endpoint/static.md +++ b/generated-doc/out/endpoint/static.md @@ -12,7 +12,7 @@ from local files or application resources. These endpoints respect etags, byte r In order to use static content endpoints, add the module to your dependencies: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-files" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-files" % "1.7.2" ``` ## Files diff --git a/generated-doc/out/generator/sbt-openapi-codegen.md b/generated-doc/out/generator/sbt-openapi-codegen.md index 4efc7c4d20..c4bbe38fa5 100644 --- a/generated-doc/out/generator/sbt-openapi-codegen.md +++ b/generated-doc/out/generator/sbt-openapi-codegen.md @@ -11,7 +11,7 @@ Add the sbt plugin to the `project/plugins.sbt`: ```scala -addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "1.7.1") +addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "1.7.2") ``` Enable the plugin for your project in the `build.sbt`: diff --git a/generated-doc/out/other_interpreters.md b/generated-doc/out/other_interpreters.md index c8662d41b4..40ee9dc7fb 100644 --- a/generated-doc/out/other_interpreters.md +++ b/generated-doc/out/other_interpreters.md @@ -22,3 +22,7 @@ layer that allows you to create traced http endpoints from tapir Endpoint defini ## SNUnit [SNUnit](https://github.com/lolgab/snunit) is a Scala Native HTTP Server library based on [NGINX Unit](https://unit.nginx.org/). It provides first-class support for Tapir. + +## tapir-http-session + +[tapir-http-session](https://github.com/SOFTNETWORK-APP/tapir-http-session) provides integration with functionality of [akka-http-session](https://github.com/softwaremill/akka-http-session), which includes client-side session management in web and mobile applications. \ No newline at end of file diff --git a/generated-doc/out/quickstart.md b/generated-doc/out/quickstart.md index 739216e50f..5446d30e38 100644 --- a/generated-doc/out/quickstart.md +++ b/generated-doc/out/quickstart.md @@ -3,7 +3,7 @@ To use tapir, add the following dependency to your project: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.7.2" ``` This will import only the core classes needed to create endpoint descriptions. To generate a server or a client, you diff --git a/generated-doc/out/server/akkahttp.md b/generated-doc/out/server/akkahttp.md index 8e6243e27e..6d1d637e33 100644 --- a/generated-doc/out/server/akkahttp.md +++ b/generated-doc/out/server/akkahttp.md @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.7.2" ``` 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.7.1" exclude("com.typesafe.akka", "akka-stream_2.12") +"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.7.2" exclude("com.typesafe.akka", "akka-stream_2.12") ``` Now import the object: diff --git a/generated-doc/out/server/armeria.md b/generated-doc/out/server/armeria.md index 3d5fe7b196..2704b9ab9d 100644 --- a/generated-doc/out/server/armeria.md +++ b/generated-doc/out/server/armeria.md @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-armeria-server" % "1.7.2" ``` and import the object: @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-cats" % "1.7.2" ``` to use this interpreter with Cats Effect typeclasses. @@ -155,9 +155,9 @@ Add the following dependency ```scala // for zio 2: -"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio" % "1.7.2" // for zio 1: -"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio1" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio1" % "1.7.2" ``` to use this interpreter with ZIO. diff --git a/generated-doc/out/server/aws.md b/generated-doc/out/server/aws.md index b954912a48..ab10f985f8 100644 --- a/generated-doc/out/server/aws.md +++ b/generated-doc/out/server/aws.md @@ -33,7 +33,7 @@ These are corresponding classes for each of the supported runtime: To start using any of the above add the following dependency: ```sbt -"com.softwaremill.sttp.tapir" %% "tapir-aws-lambda" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-aws-lambda" % "1.7.2" ``` ## Deployment @@ -44,9 +44,9 @@ Tapir leverages ways of doing it provided by AWS, you can choose from: AWS SAM t You can start by adding one of the following dependencies to your project, and then follow examples: ```sbt -"com.softwaremill.sttp.tapir" %% "tapir-aws-sam" % "1.7.1" -"com.softwaremill.sttp.tapir" %% "tapir-aws-terraform" % "1.7.1" -"com.softwaremill.sttp.tapir" %% "tapir-aws-cdk" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-aws-sam" % "1.7.2" +"com.softwaremill.sttp.tapir" %% "tapir-aws-terraform" % "1.7.2" +"com.softwaremill.sttp.tapir" %% "tapir-aws-cdk" % "1.7.2" ``` ### Examples diff --git a/generated-doc/out/server/finatra.md b/generated-doc/out/server/finatra.md index f2e0ccb56c..823610c186 100644 --- a/generated-doc/out/server/finatra.md +++ b/generated-doc/out/server/finatra.md @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-finatra-server" % "1.7.2" ``` and import the object: @@ -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.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-finatra-server-cats" % "1.7.2" ``` and import the object: diff --git a/generated-doc/out/server/http4s.md b/generated-doc/out/server/http4s.md index b9e958ccd4..c2b12b439d 100644 --- a/generated-doc/out/server/http4s.md +++ b/generated-doc/out/server/http4s.md @@ -4,7 +4,7 @@ To expose an endpoint as an [http4s](https://http4s.org) server, first add the f dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-http4s-server" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-http4s-server" % "1.7.2" ``` and import the object: @@ -114,6 +114,37 @@ val routes = Http4sServerInterpreter[IO]().toRoutes(sseEndpoint.serverLogicSucce )) ``` +## Accessing http4s context + +If you'd like to access context provided by an http4s middleware, e.g. with authentication data, this can be done +with a dedicated context-extracting input, `.contextIn`. Endpoints using such input need then to be interpreted to +`org.http4s.ContextRoutes` (also known by its type alias `AuthedRoutes`) using the `.toContextRoutes` method. + +For example: + +```scala +import sttp.tapir._ +import sttp.tapir.server.http4s._ +import cats.effect.IO +import org.http4s.ContextRoutes + +case class SomeCtx(actionAllowed: Boolean) // the context expected from http4s middleware // the context expected from http4s middleware + +def countCharacters(in: (String, SomeCtx)): IO[Either[Unit, Int]] = + IO.pure( + if(in._2.actionAllowed) Right[Unit, Int](in._1.length) else Left[Unit, Int](()) + ) + +// the .contextIn extension method is imported from the sttp.tapir.server.http4s package +// the Context[SomeCtx] capability requirement requires interpretation to be done using .toContextRoutes +val countCharactersEndpoint: PublicEndpoint[(String, SomeCtx), Unit, Int, Context[SomeCtx]] = + endpoint.in(stringBody).contextIn[SomeCtx]().out(plainBody[Int]) + +val countCharactersRoutes: ContextRoutes[SomeCtx, IO] = + Http4sServerInterpreter[IO]() + .toContextRoutes(countCharactersEndpoint.serverLogic(countCharacters _)) +``` + ## Configuration The interpreter can be configured by providing an `Http4sServerOptions` value, see diff --git a/generated-doc/out/server/jdkhttp.md b/generated-doc/out/server/jdkhttp.md index 0c429dfad6..81cbb23be0 100644 --- a/generated-doc/out/server/jdkhttp.md +++ b/generated-doc/out/server/jdkhttp.md @@ -5,7 +5,7 @@ To expose endpoints using the (`com.sun.net.httpserver`), first add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-jdkhttp-server" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-jdkhttp-server" % "1.7.2" ``` Then, import the package: diff --git a/generated-doc/out/server/netty.md b/generated-doc/out/server/netty.md index 51d18cbf56..5aeb62f701 100644 --- a/generated-doc/out/server/netty.md +++ b/generated-doc/out/server/netty.md @@ -4,13 +4,13 @@ To expose an endpoint using a [Netty](https://netty.io)-based server, first add ```scala // if you are using Future or just exploring -"com.softwaremill.sttp.tapir" %% "tapir-netty-server" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-netty-server" % "1.7.2" // if you are using cats-effect: -"com.softwaremill.sttp.tapir" %% "tapir-netty-server-cats" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-netty-server-cats" % "1.7.2" // if you are using zio: -"com.softwaremill.sttp.tapir" %% "tapir-netty-server-zio" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-netty-server-zio" % "1.7.2" ``` Then, use: diff --git a/generated-doc/out/server/observability.md b/generated-doc/out/server/observability.md index 301f3f1a18..aa846961b3 100644 --- a/generated-doc/out/server/observability.md +++ b/generated-doc/out/server/observability.md @@ -49,7 +49,7 @@ val labels = MetricLabels( Add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-prometheus-metrics" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-prometheus-metrics" % "1.7.2" ``` `PrometheusMetrics` encapsulates `CollectorReqistry` and `Metric` instances. It provides several ready to use metrics as @@ -128,7 +128,7 @@ val prometheusMetrics = PrometheusMetrics[Future]("tapir", CollectorRegistry.def Add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-opentelemetry-metrics" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-opentelemetry-metrics" % "1.7.2" ``` OpenTelemetry metrics are vendor-agnostic and can be exported using one @@ -155,7 +155,7 @@ val metricsInterceptor = metrics.metricsInterceptor() // add to your server opti Add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-datadog-metrics" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-datadog-metrics" % "1.7.2" ``` Datadog metrics are sent as Datadog custom metrics through @@ -222,7 +222,7 @@ val datadogMetrics = DatadogMetrics.default[Future](statsdClient) Add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-zio-metrics" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-zio-metrics" % "1.7.2" ``` Metrics have been integrated into ZIO core in ZIO2. diff --git a/generated-doc/out/server/pekkohttp.md b/generated-doc/out/server/pekkohttp.md index 1360a71ddf..f42f2bb76e 100644 --- a/generated-doc/out/server/pekkohttp.md +++ b/generated-doc/out/server/pekkohttp.md @@ -4,14 +4,14 @@ To expose an endpoint as a [pekko-http](https://pekko.apache.org/docs/pekko-http dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-pekko-http-server" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-pekko-http-server" % "1.7.2" ``` This will transitively pull some Pekko modules. If you want to force your own Pekko version, use sbt exclusion. Mind the Scala version in artifact name: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-pekko-http-server" % "1.7.1" exclude("org.apache.pekko", "pekko-stream_2.12") +"com.softwaremill.sttp.tapir" %% "tapir-pekko-http-server" % "1.7.2" exclude("org.apache.pekko", "pekko-stream_2.12") ``` Now import the object: diff --git a/generated-doc/out/server/play.md b/generated-doc/out/server/play.md index 829e2d3c4a..9eca9fb1b3 100644 --- a/generated-doc/out/server/play.md +++ b/generated-doc/out/server/play.md @@ -3,7 +3,7 @@ To expose endpoint as a [play-server](https://www.playframework.com/) first add the following dependencies: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-play-server" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-play-server" % "1.7.2" ``` and (if you don't already depend on Play) diff --git a/generated-doc/out/server/vertx.md b/generated-doc/out/server/vertx.md index ca8f78299a..f88749dfb2 100644 --- a/generated-doc/out/server/vertx.md +++ b/generated-doc/out/server/vertx.md @@ -8,7 +8,7 @@ Vert.x interpreter can be used with different effect systems (cats-effect, ZIO) Add the following dependency ```scala -"com.softwaremill.sttp.tapir" %% "tapir-vertx-server" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-vertx-server" % "1.7.2" ``` to use this interpreter with `Future`. @@ -63,7 +63,7 @@ It's also possible to define an endpoint together with the server logic in a sin Add the following dependency ```scala -"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-cats" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-cats" % "1.7.2" ``` to use this interpreter with Cats Effect typeclasses. @@ -146,9 +146,9 @@ Add the following dependency ```scala // for zio2: -"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-zio" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-zio" % "1.7.2" // for zio1: -"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-zio1" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-zio1" % "1.7.2" ``` to use this interpreter with ZIO. diff --git a/generated-doc/out/server/zio-http4s.md b/generated-doc/out/server/zio-http4s.md index 74ba634ffd..3346b2ec68 100644 --- a/generated-doc/out/server/zio-http4s.md +++ b/generated-doc/out/server/zio-http4s.md @@ -9,16 +9,16 @@ The `*-zio` modules depend on ZIO 2.x. For ZIO 1.x support, use modules with the You'll need the following dependency for the `ZServerEndpoint` type alias and helper classes: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-zio" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-zio" % "1.7.2" ``` or just add the zio-http4s integration which already depends on `tapir-zio`: ```scala // for zio 2: -"com.softwaremill.sttp.tapir" %% "tapir-http4s-server-zio" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-http4s-server-zio" % "1.7.2" // for zio 1: -"com.softwaremill.sttp.tapir" %% "tapir-http4s-server-zio1" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-http4s-server-zio1" % "1.7.2" ``` Next, instead of the usual `import sttp.tapir._`, you should import (or extend the `ZTapir` trait, see [MyTapir](../mytapir.md)): diff --git a/generated-doc/out/server/ziohttp.md b/generated-doc/out/server/ziohttp.md index 8fc1407a8e..4462f35590 100644 --- a/generated-doc/out/server/ziohttp.md +++ b/generated-doc/out/server/ziohttp.md @@ -9,13 +9,13 @@ The `*-zio` modules depend on ZIO 2.x. For ZIO 1.x support, use modules with the You'll need the following dependency for the `ZServerEndpoint` type alias and helper classes: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-zio" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-zio" % "1.7.2" ``` or just add the zio-http integration which already depends on `tapir-zio`: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-zio-http-server" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-zio-http-server" % "1.7.2" ``` Next, instead of the usual `import sttp.tapir._`, you should import (or extend the `ZTapir` trait, see [MyTapir](../mytapir.md)): diff --git a/generated-doc/out/testing.md b/generated-doc/out/testing.md index 787bd28c6e..95b89963c9 100644 --- a/generated-doc/out/testing.md +++ b/generated-doc/out/testing.md @@ -23,7 +23,7 @@ Tapir builds upon the `SttpBackendStub` to enable stubbing using `Endpoint`s or dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-sttp-stub-server" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-sttp-stub-server" % "1.7.2" ``` Let's assume you are using the [akka http](server/akkahttp.md) interpreter. Given the following server endpoint: @@ -142,7 +142,7 @@ requests matching an endpoint, you can use the tapir `SttpBackendStub` extension Similarly as when testing server interpreters, add the dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-sttp-stub-server" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-sttp-stub-server" % "1.7.2" ``` And the following imports: @@ -197,7 +197,7 @@ with [mock-server](https://www.mock-server.com/) Add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "sttp-mock-server" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "sttp-mock-server" % "1.7.2" ``` Imports: @@ -268,7 +268,7 @@ result == out To use, add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-testing" % "1.7.1" +"com.softwaremill.sttp.tapir" %% "tapir-testing" % "1.7.2" ``` ### Shadowed endpoints @@ -294,7 +294,7 @@ Results in: ```scala res.toString -// res2: String = "Set(GET /x, is shadowed by: GET /x/*, GET /x/y/x, is shadowed by: GET /x/*)" +// res2: String = "Set(GET /x/y/x, is shadowed by: GET /x/*, GET /x, is shadowed by: GET /x/*)" ``` Example 2: