From d541ebae9f62577ea1e504eed707f28102543717 Mon Sep 17 00:00:00 2001 From: adamw Date: Tue, 14 Jun 2022 09:59:22 +0200 Subject: [PATCH] Release 1.0.0 --- README.md | 2 +- doc/docs/openapi.md | 4 +- generated-doc/out/client/http4s.md | 2 +- generated-doc/out/client/play.md | 2 +- generated-doc/out/client/sttp.md | 4 +- generated-doc/out/contributing.md | 2 + generated-doc/out/docs/asyncapi.md | 2 +- generated-doc/out/docs/openapi.md | 10 ++-- generated-doc/out/endpoint/integrations.md | 10 ++-- generated-doc/out/endpoint/json.md | 16 +++---- generated-doc/out/endpoint/schemas.md | 46 +++++++++++++++++-- generated-doc/out/endpoint/security.md | 4 +- .../out/generator/sbt-openapi-codegen.md | 2 +- generated-doc/out/index.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 | 6 +-- generated-doc/out/server/finatra.md | 4 +- generated-doc/out/server/http4s.md | 2 +- generated-doc/out/server/netty.md | 4 +- generated-doc/out/server/observability.md | 4 +- generated-doc/out/server/play.md | 6 +-- 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/stability.md | 6 +-- generated-doc/out/testing.md | 8 ++-- 28 files changed, 112 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index 6e8bb9a04f..9b54753ba5 100644 --- a/README.md +++ b/README.md @@ -127,7 +127,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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.0.0" ``` Then, import: diff --git a/doc/docs/openapi.md b/doc/docs/openapi.md index 0de2f0be46..ddc797f74b 100644 --- a/doc/docs/openapi.md +++ b/doc/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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.0.0" ``` 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.0.0" ``` And the server endpoints can be generated using the `sttp.tapir.redoc.bundle.RedocInterpreter` class. diff --git a/generated-doc/out/client/http4s.md b/generated-doc/out/client/http4s.md index 23cc75b914..54aa5d4405 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-http4s-client" % "1.0.0" ``` 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 3c3db869af..c920443e62 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "1.0.0" ``` 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 8d7b8498cf..1e9a489e34 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "1.0.0" ``` 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %%% "tapir-sttp-client" % "1.0.0" "io.github.cquiroz" %%% "scala-java-time" % "2.2.0" // implementations of java.time classes for Scala.JS ``` diff --git a/generated-doc/out/contributing.md b/generated-doc/out/contributing.md index 521b9a29cf..a3c61b94eb 100644 --- a/generated-doc/out/contributing.md +++ b/generated-doc/out/contributing.md @@ -14,3 +14,5 @@ code is unclear and can be improved for the benefit of all. Tuple-concatenating code is copied from [akka-http](https://github.com/akka/akka-http/blob/master/akka-http/src/main/scala/akka/http/scaladsl/server/util/TupleOps.scala) Parts of generic derivation configuration is copied from [circe](https://github.com/circe/circe/blob/master/modules/generic-extras/src/main/scala/io/circe/generic/extras/Configuration.scala) + +Tapir logo & stickers have been drawn by [impurepics](https://twitter.com/impurepics). \ No newline at end of file diff --git a/generated-doc/out/docs/asyncapi.md b/generated-doc/out/docs/asyncapi.md index d0cd54892e..d3df0bb4e4 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-docs" % "1.0.0" "com.softwaremill.sttp.apispec" %% "asyncapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec ``` diff --git a/generated-doc/out/docs/openapi.md b/generated-doc/out/docs/openapi.md index edb1dce0ba..dc4c5948be 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.0.0" ``` 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.0.0" ``` 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.0.0" "com.softwaremill.sttp.apispec" %% "openapi-circe-yaml" % "..." // see https://github.com/softwaremill/sttp-apispec ``` @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui" % "1.0.0" ``` or `tapir-redoc`: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.0.0" ``` Then, you'll need to pass the server endpoints to your server interpreter. For example, using akka-http: diff --git a/generated-doc/out/endpoint/integrations.md b/generated-doc/out/endpoint/integrations.md index 236f0915ac..d3589c2666 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-cats" % "1.0.0" ``` - `import sttp.tapir.integ.cats.codec._` - brings schema, validator and codec instances @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-refined" % "1.0.0" ``` You'll need to extend the `sttp.tapir.codec.refined.TapirCodecRefined` @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-enumeratum" % "1.0.0" ``` Then, `import sttp.tapir.codec.enumeratum`, or extends the `sttp.tapir.codec.enumeratum.TapirCodecEnumeratum` trait. @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-newtype" % "1.0.0" ``` Then, `import sttp.tapir.codec.newtype._`, or extend the `sttp.tapir.codec.enumeratum.TapirCodecNewType` trait to bring the implicit values into scope. @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-derevo" % "1.0.0" ``` 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 305b0f605e..a363716bc0 100644 --- a/generated-doc/out/endpoint/json.md +++ b/generated-doc/out/endpoint/json.md @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-json-circe" % "1.0.0" ``` Next, import the package (or extend the `TapirJsonCirce` trait, see [MyTapir](../mytapir.md)): @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-json-upickle" % "1.0.0" ``` Next, import the package (or extend the `TapirJsonuPickle` trait, see [MyTapir](../mytapir.md) and add `TapirJsonuPickle` not `TapirCirceJson`): @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-json-play" % "1.0.0" ``` Next, import the package (or extend the `TapirJsonPlay` trait, see [MyTapir](../mytapir.md) and add `TapirJsonPlay` not `TapirCirceJson`): @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-json-spray" % "1.0.0" ``` Next, import the package (or extend the `TapirJsonSpray` trait, see [MyTapir](../mytapir.md) and add `TapirJsonSpray` not `TapirCirceJson`): @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-json-tethys" % "1.0.0" ``` Next, import the package (or extend the `TapirJsonTethys` trait, see [MyTapir](../mytapir.md) and add `TapirJsonTethys` not `TapirCirceJson`): @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-jsoniter-scala" % "1.0.0" ``` Next, import the package (or extend the `TapirJsonJsoniter` trait, see [MyTapir](../mytapir.md) and add `TapirJsonJsoniter` not `TapirCirceJson`): @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-json-json4s" % "1.0.0" ``` And one of the implementations: @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-json-zio" % "1.0.0" ``` 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/schemas.md b/generated-doc/out/endpoint/schemas.md index 5b3fee8d01..08b2b20f74 100644 --- a/generated-doc/out/endpoint/schemas.md +++ b/generated-doc/out/endpoint/schemas.md @@ -124,12 +124,43 @@ implicit val customConfiguration: Configuration = Configuration.default.withDiscriminator("who_am_i") ``` +The discriminator will be added as a field to all coproduct child schemas, if it's not yet present. The schema of +the added field will always be a `Schema.string`. Finally, the mapping between the discriminator field values and +the child schemas will be generated using `Configuration.toDiscriminatorValue(childSchemaName)`. + Alternatively, derived schemas can be customised (see below), and a discriminator can be added by calling -the `SchemaType.SCoproduct.addDiscriminatorField(name, schema, maping)` method. +the `SchemaType.SCoproduct.addDiscriminatorField(name, schema, maping)` method. This method is useful when using +semi-automatic or automatic derivation; in both cases a custom implicit has to be defined, basing on the derived +one: + +```scala +import sttp.tapir._ +import sttp.tapir.generic.Derived +import sttp.tapir.generic.auto._ + +sealed trait MyCoproduct +case class Child1(s: String) extends MyCoproduct +// ... implementations of MyCoproduct ... + +implicit val myCoproductSchema: Schema[MyCoproduct] = { + val derived = implicitly[Derived[Schema[MyCoproduct]]].value + derived.schemaType match { + case s: SchemaType.SCoproduct[_] => derived.copy(schemaType = s.addDiscriminatorField( + FieldName("myField"), + Schema.string, + Map( + "value1" -> SchemaType.SRef(Schema.SName("com.myproject.Child1")), + // ... other mappings ... + ) + )) + case _ => ??? + } +} +``` Finally, if the discriminator is a field that's defined on the base trait (and hence in each implementation), the -schemas can be specified using `Schema.oneOfUsingField`, for example (this will also generate the appropriate -mappings): +schemas can be specified as a custom implicit value using the `Schema.oneOfUsingField` macro, +for example (this will also generate the appropriate mappings): ```scala sealed trait Entity { @@ -150,6 +181,15 @@ implicit val sEntity: Schema[Entity] = Schema.oneOfUsingField[Entity, String](_.kind, _.toString)("person" -> sPerson, "org" -> sOrganization) ``` +```eval_rst +.. note:: + + Note that whichever approach you choose to define the coproduct schema, it has to match the way the value is + encoded and decoded by the codec. E.g. when the schema is for a json body, the discriminator must be separately + configured in the json library, matching the configuration of the schema. +``` + + ## Customising derived schemas ### Using annotations diff --git a/generated-doc/out/endpoint/security.md b/generated-doc/out/endpoint/security.md index 5478a170fa..7ddb59cb37 100644 --- a/generated-doc/out/endpoint/security.md +++ b/generated-doc/out/endpoint/security.md @@ -29,8 +29,8 @@ Currently, the following authentication inputs are available (assuming `import s cookie or a query parameter * `auth.basic[T]`: reads data from the `Authorization` header, removing the `Basic ` prefix. To parse the data as a base64-encoded username/password combination, use: `basic[UsernamePassword]`. -* `auth.bearer[T]`: reads data from the `Authorization` header, removing the `Bearer ` prefix. To get the string -as a token, use: `bearer[String]`. +* `auth.bearer[T]`: reads data from the `Authorization` header, removing the `Bearer ` prefix. To get the token +as a string, use: `bearer[String]`. * `auth.oauth2.authorizationCode(authorizationUrl, tokenUrl, scopes, refreshUrl): EndpointInput[String]`: creates an OAuth2 authorization using authorization code - sign in using an auth service (for documentation, requires defining also the `oauth2-redirect.html`, see [Generating OpenAPI documentation](../openapi.md)) diff --git a/generated-doc/out/generator/sbt-openapi-codegen.md b/generated-doc/out/generator/sbt-openapi-codegen.md index 30b44caaba..df74368167 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.0.0-RC3") +addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "1.0.0") ``` Enable the plugin for your project in the `build.sbt`: diff --git a/generated-doc/out/index.md b/generated-doc/out/index.md index 528c1bfd8d..3417fcb3aa 100644 --- a/generated-doc/out/index.md +++ b/generated-doc/out/index.md @@ -43,8 +43,8 @@ for a more detailed description of how tapir works! Tapir is available: -* all modules - Scala 2.12 and 2.13 on the JVM -* selected modules - Scala 3 on the JVM +* all modules - Scala 2.12 and 2.13 on the JVM (Java 11+) +* selected modules - Scala 3 on the JVM (Java 11+) * selected modules - Scala 2.12, 2.13 and 3 using Scala.JS * selected modules - Scala 2.12, 2.13 and 3 using Scala Native diff --git a/generated-doc/out/quickstart.md b/generated-doc/out/quickstart.md index 55fac966f5..6666eb59cb 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.0.0" ``` 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 5628265648..e51753c795 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.0.0" ``` 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-RC3" exclude("com.typesafe.akka", "akka-stream_2.12") +"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.0.0" 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 e6759d4ff3..d20494134f 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-armeria-server" % "1.0.0" ``` 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-cats" % "1.0.0" ``` 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio" % "1.0.0" // for zio 1: -"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio1" % "1.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio1" % "1.0.0" ``` to use this interpreter with ZIO. diff --git a/generated-doc/out/server/aws.md b/generated-doc/out/server/aws.md index b75e101c12..d2d45ba3ad 100644 --- a/generated-doc/out/server/aws.md +++ b/generated-doc/out/server/aws.md @@ -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-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-aws-lambda" % "1.0.0" ``` To configure API Gateway and the Lambda function, you can use: @@ -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-RC3" -"com.softwaremill.sttp.tapir" %% "tapir-aws-terraform" % "1.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-aws-sam" % "1.0.0" +"com.softwaremill.sttp.tapir" %% "tapir-aws-terraform" % "1.0.0" ``` ## Examples diff --git a/generated-doc/out/server/finatra.md b/generated-doc/out/server/finatra.md index 82678ac036..685c1c4577 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-finatra-server" % "1.0.0" ``` 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-finatra-server-cats" % "1.0.0" ``` and import the object: diff --git a/generated-doc/out/server/http4s.md b/generated-doc/out/server/http4s.md index 1700b76118..f45b655e2c 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-http4s-server" % "1.0.0" ``` and import the object: diff --git a/generated-doc/out/server/netty.md b/generated-doc/out/server/netty.md index 7ecdd8ec21..9f7d9d581d 100644 --- a/generated-doc/out/server/netty.md +++ b/generated-doc/out/server/netty.md @@ -5,7 +5,7 @@ To expose an endpoint using a [Netty](https://netty.io)-based server, first add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-netty-server" % "1.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-netty-server" % "1.0.0" ``` Then, use: @@ -75,5 +75,5 @@ can be passed using the `NettyFutureServer(options)` methods. Options may also b Add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-netty-server-cats" % "1.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-netty-server-cats" % "1.0.0" ``` \ No newline at end of file diff --git a/generated-doc/out/server/observability.md b/generated-doc/out/server/observability.md index b62d938a31..1d62beba27 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-prometheus-metrics" % "1.0.0" ``` `PrometheusMetrics` encapsulates `CollectorReqistry` and `Metric` instances. It provides several ready to use metrics as @@ -130,7 +130,7 @@ val prometheusMetrics = PrometheusMetrics[Future]("tapir", CollectorRegistry.def Add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-opentelemetry-metrics" % "1.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-opentelemetry-metrics" % "1.0.0" ``` OpenTelemetry metrics are vendor-agnostic and can be exported using one diff --git a/generated-doc/out/server/play.md b/generated-doc/out/server/play.md index 4fed3d4a59..dbf90fd84a 100644 --- a/generated-doc/out/server/play.md +++ b/generated-doc/out/server/play.md @@ -3,19 +3,19 @@ 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-play-server" % "1.0.0" ``` and (if you don't already depend on Play) ```scala -"com.typesafe.play" %% "play-akka-http-server" % "2.8.15" +"com.typesafe.play" %% "play-akka-http-server" % "2.8.16" ``` or ```scala -"com.typesafe.play" %% "play-netty-server" % "2.8.15" +"com.typesafe.play" %% "play-netty-server" % "2.8.16" ``` depending on whether you want to use netty or akka based http-server under the hood. diff --git a/generated-doc/out/server/vertx.md b/generated-doc/out/server/vertx.md index e0cf2046a7..1b8a329bd4 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-vertx-server" % "1.0.0" ``` 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-cats" % "1.0.0" ``` 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-zio" % "1.0.0" // for zio1: -"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-zio1" % "1.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-vertx-server-zio1" % "1.0.0" ``` 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 2a4c5394e4..ad61109e3b 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-zio" % "1.0.0" ``` 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-http4s-server-zio" % "1.0.0" // for zio 1: -"com.softwaremill.sttp.tapir" %% "tapir-http4s-server-zio1" % "1.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-http4s-server-zio1" % "1.0.0" ``` 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 82362b3d5c..9d186b87f1 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-zio" % "1.0.0" ``` or just add the zio-http integration which already depends on `tapir-zio`: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-zio-http-server" % "1.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-zio-http-server" % "1.0.0" ``` 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/stability.md b/generated-doc/out/stability.md index 4e735def70..ffaf9903ea 100644 --- a/generated-doc/out/stability.md +++ b/generated-doc/out/stability.md @@ -2,15 +2,15 @@ The modules are categorised using the following levels: -* **stable**: binary compatibility is guaranteed across major versions; adheres to semantic versioning +* **stable**: binary compatibility is guaranteed within a major version; adheres to semantic versioning * **stabilising**: the API is mostly stable, with rare binary-incompatible changes possible in minor releases (only if necessary) * **experimental**: API can change significantly even in patch releases -## Main modules +## Main modules | Module | Level | |----------------|-------------| -| core (Scala 2) | stabilising | +| core (Scala 2) | stable | | core (Scala 3) | stabilising | | server-core | stabilising | | client-core | stabilising | diff --git a/generated-doc/out/testing.md b/generated-doc/out/testing.md index 8c425ef7ba..f2ff1ae249 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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-sttp-stub-server" % "1.0.0" ``` Let's assume you are using the [akka http](server/akkahttp.md) interpreter. Given the following server endpoint: @@ -140,7 +140,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.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-sttp-stub-server" % "1.0.0" ``` And the following imports: @@ -195,7 +195,7 @@ with [mock-server](https://www.mock-server.com/) Add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-sttp-mock-server" % "1.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-sttp-mock-server" % "1.0.0" ``` Imports: @@ -266,7 +266,7 @@ result == out To use, add the following dependency: ```scala -"com.softwaremill.sttp.tapir" %% "tapir-testing" % "1.0.0-RC3" +"com.softwaremill.sttp.tapir" %% "tapir-testing" % "1.0.0" ``` ### Shadowed endpoints