diff --git a/README.md b/README.md index bd0ea1ca0a..f606b343ef 100644 --- a/README.md +++ b/README.md @@ -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.6" +"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.9.7" ``` Then, import: diff --git a/generated-doc/out/client/http4s.md b/generated-doc/out/client/http4s.md index df59a147fa..3239dc72c7 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-http4s-client" % "1.9.7" ``` 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 9d42052b72..d4d6bd85a0 100644 --- a/generated-doc/out/client/play.md +++ b/generated-doc/out/client/play.md @@ -6,13 +6,13 @@ See the [Play framework documentation](https://www.playframework.com/documentati For **Play 3.0**, add the dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "1.9.7" ``` For **Play 2.9**, add ```scala -"com.softwaremill.sttp.tapir" %% "tapir-play29-client" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-play29-client" % "1.9.7" ``` instead. Furthermore, replace all uses of `sttp.capabilities.pekko.PekkoStreams` in the following code snippets with `sttp.capabilities.akka.AkkaStreams`. diff --git a/generated-doc/out/client/sttp.md b/generated-doc/out/client/sttp.md index 14fb96cdc0..1f5d94d3b5 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "1.9.7" ``` To make requests using an endpoint definition using the [sttp client](https://github.com/softwaremill/sttp), import: @@ -100,7 +100,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.6" +"com.softwaremill.sttp.tapir" %%% "tapir-sttp-client" % "1.9.7" "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 ee69b48316..9f8b97be7a 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-docs" % "1.9.7" "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 10dce09951..53f2673bc8 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-apispec-docs" % "1.9.7" ``` Schema generation can now be performed like in the following example: @@ -18,7 +18,7 @@ import sttp.tapir.generic.auto._ case class Child(age: Int, height: Option[Int]) } case class Parent(innerChildField: Child, childDetails: Childhood.Child) - case class Child(childName: String) // to illustrate unique name generation // to illustrate unique name generation + case class Child(childName: String) // to illustrate unique name generation val tSchema = implicitly[Schema[Parent]] val jsonSchema: ASchema = TapirSchemaToJsonSchema( diff --git a/generated-doc/out/docs/openapi.md b/generated-doc/out/docs/openapi.md index 5049b9cab4..b80bd10e25 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.9.7" ``` 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.9.7" ``` 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.9.7" "com.softwaremill.sttp.apispec" %% "openapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec ``` @@ -133,14 +133,14 @@ 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.6" +"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.9.7" "com.softwaremill.sttp.apispec" %% "openapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec ``` and generate the documentation by importing valid extension methods and explicitly specifying the "3.0.3" version in the OpenAPI model: ```scala import sttp.apispec.openapi.OpenAPI -import sttp.apispec.openapi.circe.yaml._ // for `toYaml` extension method // for `toYaml` extension method +import sttp.apispec.openapi.circe.yaml._ // for `toYaml` extension method import sttp.tapir._ import sttp.tapir.docs.openapi.OpenAPIDocsInterpreter @@ -148,7 +148,7 @@ case class Book(id: Option[Long], title: Option[String]) val booksListing = endpoint.in(path[String]("bookId")) -val docs: OpenAPI = OpenAPIDocsInterpreter().toOpenAPI(booksListing, "My Bookshop", "1.0").openapi("3.0.3") // "3.0.3" version explicitly specified // "3.0.3" version explicitly specified +val docs: OpenAPI = OpenAPIDocsInterpreter().toOpenAPI(booksListing, "My Bookshop", "1.0").openapi("3.0.3") // "3.0.3" version explicitly specified println(docs.toYaml3_0_3) // OpenApi 3.0.3 YAML string would be printed to the console ``` @@ -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.6" +"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui" % "1.9.7" ``` or `tapir-redoc`: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.9.7" ``` Then, you'll need to pass the server endpoints to your server interpreter. For example, using akka-http: @@ -264,7 +264,7 @@ val alternativeAuthEndpoint = endpoint.securityIn( case Left(oldToken) => (Some(oldToken), None) case Right(newToken) => (None, Some(newToken)) } - ) + ) val alternativeOptionalAuthEndpoint = alternativeAuthEndpoint.securityIn(emptyAuth) ``` diff --git a/generated-doc/out/endpoint/integrations.md b/generated-doc/out/endpoint/integrations.md index f9e77e9b26..c863b08aaf 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-cats" % "1.9.7" ``` - `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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-cats-effect" % "1.9.7" ``` ## 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-refined" % "1.9.7" ``` 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-iron" % "1.9.7" ``` The module is only available for Scala 3 since iron is not designed to work with Scala 2. @@ -146,7 +146,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.6" +"com.softwaremill.sttp.tapir" %% "tapir-enumeratum" % "1.9.7" ``` Then, `import sttp.tapir.codec.enumeratum._`, or extends the `sttp.tapir.codec.enumeratum.TapirCodecEnumeratum` trait. @@ -159,7 +159,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.6" +"com.softwaremill.sttp.tapir" %% "tapir-newtype" % "1.9.7" ``` Then, `import sttp.tapir.codec.newtype._`, or extend the `sttp.tapir.codec.newtype.TapirCodecNewType` trait to bring the implicit values into scope. @@ -170,7 +170,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.6" +"com.softwaremill.sttp.tapir" %% "tapir-monix-newtype" % "1.9.7" ``` Then, `import sttp.tapir.codec.monix.newtype._`, or extend the `sttp.tapir.codec.monix.newtype.TapirCodecMonixNewType` trait to bring the implicit values into scope. @@ -181,7 +181,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.6" +"com.softwaremill.sttp.tapir" %% "tapir-zio-prelude" % "1.9.7" ``` Then, mix in `sttp.tapir.codec.zio.prelude.newtype.TapirNewtypeSupport` into your newtype to bring the implicit values into scope: @@ -220,7 +220,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.6" +"com.softwaremill.sttp.tapir" %% "tapir-derevo" % "1.9.7" ``` 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 f390adc090..64501249ad 100644 --- a/generated-doc/out/endpoint/json.md +++ b/generated-doc/out/endpoint/json.md @@ -52,7 +52,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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-json-circe" % "1.9.7" ``` Next, import the package (or extend the `TapirJsonCirce` trait, see [MyTapir](../mytapir.md)): @@ -125,7 +125,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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-json-upickle" % "1.9.7" ``` Next, import the package (or extend the `TapirJsonuPickle` trait, see [MyTapir](../mytapir.md) and add `TapirJsonuPickle` not `TapirCirceJson`): @@ -160,13 +160,13 @@ For more examples, including making a custom encoder/decoder, see [TapirJsonuPic To use [Play JSON](https://github.com/playframework/play-json) for **Play 3.0**, add the following dependency to your project: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-json-play" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-json-play" % "1.9.7" ``` For **Play 2.9** use: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-json-play29" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-json-play29" % "1.9.7" ``` Next, import the package (or extend the `TapirJsonPlay` trait, see [MyTapir](../mytapir.md) and add `TapirJsonPlay` not `TapirCirceJson`): @@ -182,7 +182,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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-json-spray" % "1.9.7" ``` Next, import the package (or extend the `TapirJsonSpray` trait, see [MyTapir](../mytapir.md) and add `TapirJsonSpray` not `TapirCirceJson`): @@ -198,7 +198,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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-json-tethys" % "1.9.7" ``` Next, import the package (or extend the `TapirJsonTethys` trait, see [MyTapir](../mytapir.md) and add `TapirJsonTethys` not `TapirCirceJson`): @@ -214,7 +214,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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-jsoniter-scala" % "1.9.7" ``` Next, import the package (or extend the `TapirJsonJsoniter` trait, see [MyTapir](../mytapir.md) and add `TapirJsonJsoniter` not `TapirCirceJson`): @@ -230,7 +230,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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-json-json4s" % "1.9.7" ``` And one of the implementations: @@ -261,7 +261,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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-json-zio" % "1.9.7" ``` 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/oneof.md b/generated-doc/out/endpoint/oneof.md index 02d741e382..f7e279e3b3 100644 --- a/generated-doc/out/endpoint/oneof.md +++ b/generated-doc/out/endpoint/oneof.md @@ -197,7 +197,7 @@ implicit val userXmlCodec: Codec[String, User, CodecFormat.Xml] = .mapDecode { xml => DecodeResult.fromOption("""(.*?)""".r.findFirstMatchIn(xml).map(_.group(1)).map(User)) }(user => s"${user.name}") - .schema(implicitly[Schema[User]]) + .schema(implicitly[Schema[User]]) oneOfBody( jsonBody[User], diff --git a/generated-doc/out/endpoint/pickler.md b/generated-doc/out/endpoint/pickler.md index 7b6ca2803a..2cd7e34204 100644 --- a/generated-doc/out/endpoint/pickler.md +++ b/generated-doc/out/endpoint/pickler.md @@ -9,7 +9,7 @@ In [other](json.md) tapir-JSON integrations, you have to keep the `Schema` (whic To use pickler, add the following dependency to your project: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-json-pickler" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-json-pickler" % "1.9.7" ``` Please note that it is available only for Scala 3 and Scala.JS 3. diff --git a/generated-doc/out/endpoint/schemas.md b/generated-doc/out/endpoint/schemas.md index e40b37798e..4157175f78 100644 --- a/generated-doc/out/endpoint/schemas.md +++ b/generated-doc/out/endpoint/schemas.md @@ -81,7 +81,9 @@ integration layer. This method may be used both with automatic and semi-automatic derivation. -## Derivation for recursive types in Scala3 +## Scala3-specific derivation + +### Derivation for recursive types In Scala3, any schemas for recursive types need to be provided as typed `implicit def` (not a `given`)! For example: @@ -96,6 +98,25 @@ object RecursiveTest { The implicit doesn't have to be defined in the companion object, just anywhere in scope. This applies to cases where the schema is looked up implicitly, e.g. for `jsonBody`. +### Derivation for union types + +Schemas for union types must be declared by hand, using the `Schema.derivedUnion[T]` method. Schemas for all components +of the union type must be available in the implicit scope at the point of invocation. For example: + +```scala +val s: Schema[String | Int] = Schema.derivedUnion +``` + +If the union type is a named alias, the type needs to be provided explicitly, e.g.: + +```scala +type StringOrInt = String | Int +val s: Schema[StringOrInt] = Schema.derivedUnion[StringOrInt] +``` + +If any of the components of the union type is a generic type, any of its validations will be skipped when validating +the union type, as it's not possible to generate a runtime check for the generic type. + ## Configuring derivation It is possible to configure Magnolia's automatic derivation to use `snake_case`, `kebab-case` or a custom field naming diff --git a/generated-doc/out/endpoint/static.md b/generated-doc/out/endpoint/static.md index d1375e5fb8..bba1b86d4f 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-files" % "1.9.7" ``` ## Files diff --git a/generated-doc/out/generator/sbt-openapi-codegen.md b/generated-doc/out/generator/sbt-openapi-codegen.md index 959fb572ec..4064666937 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.9.6") +addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "1.9.7") ``` Enable the plugin for your project in the `build.sbt`: diff --git a/generated-doc/out/quickstart.md b/generated-doc/out/quickstart.md index 12b715346f..58803dc0c3 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.9.7" ``` 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 12e7311124..9a0eef7671 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.9.7" ``` 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.9.6" exclude("com.typesafe.akka", "akka-stream_2.12") +"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.9.7" 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 cea4c6de85..8e0d90768c 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-armeria-server" % "1.9.7" ``` 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-cats" % "1.9.7" ``` to use this interpreter with Cats Effect typeclasses. @@ -154,7 +154,7 @@ val tapirService = ArmeriaCatsServerInterpreter(dispatcher).toService(streamingR Add the following dependency ```scala -"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio" % "1.9.7" ``` to use this interpreter with ZIO. diff --git a/generated-doc/out/server/aws.md b/generated-doc/out/server/aws.md index 057ae5a60b..28c14ba5ae 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-aws-lambda" % "1.9.7" ``` ## 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.9.6" -"com.softwaremill.sttp.tapir" %% "tapir-aws-terraform" % "1.9.6" -"com.softwaremill.sttp.tapir" %% "tapir-aws-cdk" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-aws-sam" % "1.9.7" +"com.softwaremill.sttp.tapir" %% "tapir-aws-terraform" % "1.9.7" +"com.softwaremill.sttp.tapir" %% "tapir-aws-cdk" % "1.9.7" ``` ### Examples diff --git a/generated-doc/out/server/finatra.md b/generated-doc/out/server/finatra.md index a8aa150af6..0f2e075632 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-finatra-server" % "1.9.7" ``` 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-finatra-server-cats" % "1.9.7" ``` and import the object: diff --git a/generated-doc/out/server/http4s.md b/generated-doc/out/server/http4s.md index 7fe0e5471a..9a63d47a49 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-http4s-server" % "1.9.7" ``` and import the object: @@ -128,7 +128,7 @@ 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 +case class SomeCtx(actionAllowed: Boolean) // the context expected from http4s middleware def countCharacters(in: (String, SomeCtx)): IO[Either[Unit, Int]] = IO.pure( diff --git a/generated-doc/out/server/jdkhttp.md b/generated-doc/out/server/jdkhttp.md index 464e4fdeb7..06c61f21f7 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-jdkhttp-server" % "1.9.7" ``` Then, import the package: diff --git a/generated-doc/out/server/logic.md b/generated-doc/out/server/logic.md index 1fbd11f9ac..2c95bfa0bc 100644 --- a/generated-doc/out/server/logic.md +++ b/generated-doc/out/server/logic.md @@ -46,7 +46,7 @@ val echoEndpoint = endpoint // using .tupled: def logic(s: String, i: Int): Future[Either[Unit, String]] = ??? -val anEndpoint: PublicEndpoint[(String, Int), Unit, String, Any] = ??? +val anEndpoint: PublicEndpoint[(String, Int), Unit, String, Any] = ??? val aServerEndpoint: ServerEndpoint[Any, Future] = anEndpoint.serverLogic((logic _).tupled) ``` diff --git a/generated-doc/out/server/netty.md b/generated-doc/out/server/netty.md index f1b795de7f..74376a0532 100644 --- a/generated-doc/out/server/netty.md +++ b/generated-doc/out/server/netty.md @@ -4,16 +4,16 @@ 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-netty-server" % "1.9.7" // if you want to use Java 21 Loom virtual threads in direct style: -"com.softwaremill.sttp.tapir" %% "tapir-netty-server-loom" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-netty-server-loom" % "1.9.7" // if you are using cats-effect: -"com.softwaremill.sttp.tapir" %% "tapir-netty-server-cats" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-netty-server-cats" % "1.9.7" // if you are using zio: -"com.softwaremill.sttp.tapir" %% "tapir-netty-server-zio" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-netty-server-zio" % "1.9.7" ``` Then, use: diff --git a/generated-doc/out/server/nima.md b/generated-doc/out/server/nima.md index b2b47e7283..793be8c0c0 100644 --- a/generated-doc/out/server/nima.md +++ b/generated-doc/out/server/nima.md @@ -9,7 +9,7 @@ To expose an endpoint as a [Helidon Níma](https://helidon.io/nima) server, firs dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-nima-server" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-nima-server" % "1.9.7" ``` Loom-managed concurrency uses direct style instead of effect wrappers like `Future[T]` or `IO[T]`. Because of this, diff --git a/generated-doc/out/server/observability.md b/generated-doc/out/server/observability.md index a0817d37c1..e0047e1e0c 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-prometheus-metrics" % "1.9.7" ``` `PrometheusMetrics` encapsulates `PrometheusReqistry` and `Metric` instances. It provides several ready to use metrics as @@ -128,7 +128,7 @@ val prometheusMetrics = PrometheusMetrics[Future]("tapir", PrometheusRegistry.de Add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-opentelemetry-metrics" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-opentelemetry-metrics" % "1.9.7" ``` 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-datadog-metrics" % "1.9.7" ``` 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-zio-metrics" % "1.9.7" ``` 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 859ac260ac..fd90efda1c 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-pekko-http-server" % "1.9.7" ``` 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.9.6" exclude("org.apache.pekko", "pekko-stream_2.12") +"com.softwaremill.sttp.tapir" %% "tapir-pekko-http-server" % "1.9.7" 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 e4edc1d9d3..4975ee26a1 100644 --- a/generated-doc/out/server/play.md +++ b/generated-doc/out/server/play.md @@ -6,7 +6,7 @@ See the [Play framework documentation](https://www.playframework.com/documentati To expose an endpoint as a [play-server](https://www.playframework.com/), using **Play 2.9 with Akka**, add the following dependencies: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-play29-server" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-play29-server" % "1.9.7" ``` and (if you don't already depend on Play) @@ -26,19 +26,19 @@ depending on whether you want to use netty or Akka based http-server under the h To expose an endpoint as a [play-server](https://www.playframework.com/), using **Play 3.0 with Pekko**, add the following dependencies: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-play-server" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-play-server" % "1.9.7" ``` and (if you don't already depend on Play) ```scala -"org.playframework" %% "play-pekko-http-server" % "3.0.0" +"org.playframework" %% "play-pekko-http-server" % "3.0.1" ``` or ```scala -"org.playframework" %% "play-netty-server" % "3.0.0" +"org.playframework" %% "play-netty-server" % "3.0.1" ``` depending on whether you want to use netty or Pekko based http-server under the hood. diff --git a/generated-doc/out/server/vertx.md b/generated-doc/out/server/vertx.md index f8bcc8a6ff..f73cba2ed1 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-vertx-server" % "1.9.7" ``` 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-cats" % "1.9.7" ``` to use this interpreter with Cats Effect typeclasses. @@ -145,7 +145,7 @@ val attach = VertxCatsServerInterpreter(dispatcher).route(streamedResponse.serve Add the following dependency ```scala -"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-zio" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-zio" % "1.9.7" ``` 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 1ce4adf478..8c9d37bf64 100644 --- a/generated-doc/out/server/zio-http4s.md +++ b/generated-doc/out/server/zio-http4s.md @@ -8,13 +8,13 @@ The `*-zio` modules depend on ZIO 2.x. You'll need the following dependency for the `ZServerEndpoint` type alias and helper classes: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-zio" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-zio" % "1.9.7" ``` or just add the zio-http4s integration which already depends on `tapir-zio`: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-http4s-server-zio" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-http4s-server-zio" % "1.9.7" ``` Next, instead of the usual `import sttp.tapir._`, you should import (or extend the `ZTapir` trait, see [MyTapir](../mytapir.md)): @@ -81,7 +81,7 @@ trait Component2 type Service1 = Component1 type Service2 = Component2 -val serverEndpoint1: ZServerEndpoint[Service1, Any] = ??? +val serverEndpoint1: ZServerEndpoint[Service1, Any] = ??? val serverEndpoint2: ZServerEndpoint[Service2, Any] = ??? type Env = Service1 with Service2 @@ -133,7 +133,7 @@ import zio.{Task, Runtime, ZIO} import zio.interop.catz._ import zio.stream.Stream -def runtime: Runtime[Any] = ??? // provided by ZIOAppDefault // provided by ZIOAppDefault +def runtime: Runtime[Any] = ??? // provided by ZIOAppDefault implicit val ec: ExecutionContext = scala.concurrent.ExecutionContext.Implicits.global diff --git a/generated-doc/out/server/ziohttp.md b/generated-doc/out/server/ziohttp.md index 3442f2455d..46ac0af398 100644 --- a/generated-doc/out/server/ziohttp.md +++ b/generated-doc/out/server/ziohttp.md @@ -8,13 +8,13 @@ The `*-zio` modules depend on ZIO 2.x. You'll need the following dependency for the `ZServerEndpoint` type alias and helper classes: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-zio" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-zio" % "1.9.7" ``` or just add the zio-http integration which already depends on `tapir-zio`: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-zio-http-server" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-zio-http-server" % "1.9.7" ``` 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 ca1825526d..246f8d413e 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-sttp-stub-server" % "1.9.7" ``` 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.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-sttp-stub-server" % "1.9.7" ``` 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.9.6" +"com.softwaremill.sttp.tapir" %% "sttp-mock-server" % "1.9.7" ``` Imports: @@ -268,7 +268,7 @@ result == out To use, add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-testing" % "1.9.6" +"com.softwaremill.sttp.tapir" %% "tapir-testing" % "1.9.7" ``` ### 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: