Skip to content

Commit

Permalink
Release 0.17.0
Browse files Browse the repository at this point in the history
  • Loading branch information
adamw committed Dec 16, 2020
1 parent 0490f0e commit d0ebe98
Show file tree
Hide file tree
Showing 17 changed files with 59 additions and 50 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ tapir documentation is available at [tapir.softwaremill.com](http://tapir.softwa
Add the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-core" % "0.17.0-M11"
"com.softwaremill.sttp.tapir" %% "tapir-core" % "0.17.0"
```

You'll need partial unification enabled in the compiler (alternatively, you'll need to manually provide type arguments in some cases):
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/client/play.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "0.17.0"
```

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

```scala
"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "0.17.0"
```

To make requests using an endpoint definition using the [sttp client](https://github.com/softwaremill/sttp), import:
Expand Down
4 changes: 2 additions & 2 deletions generated-doc/out/docs/asyncapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
To use, add the following dependencies:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-docs" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-circe-yaml" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-docs" % "0.17.0"
"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-circe-yaml" % "0.17.0"
```

Tapir contains a case class-based model of the asyncapi data structures in the `asyncapi/asyncapi-model` subproject (the
Expand Down
20 changes: 10 additions & 10 deletions generated-doc/out/docs/openapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
To use, add the following dependencies:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-openapi-circe-yaml" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "0.17.0"
"com.softwaremill.sttp.tapir" %% "tapir-openapi-circe-yaml" % "0.17.0"
```

Tapir contains a case class-based model of the openapi data structures in the `openapi/openapi-model` subproject (the
Expand Down Expand Up @@ -70,26 +70,26 @@ akka-http/http4s routes for exposing documentation using [Swagger UI](https://sw

```scala
// Akka HTTP
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-akka-http" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-redoc-akka-http" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-akka-http" % "0.17.0"
"com.softwaremill.sttp.tapir" %% "tapir-redoc-akka-http" % "0.17.0"

// Finatra
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-finatra" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-finatra" % "0.17.0"

// HTTP4S
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-http4s" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-redoc-http4s" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-http4s" % "0.17.0"
"com.softwaremill.sttp.tapir" %% "tapir-redoc-http4s" % "0.17.0"

// Play
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-play" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-redoc-play" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-play" % "0.17.0"
"com.softwaremill.sttp.tapir" %% "tapir-redoc-play" % "0.17.0"
```

Note: `tapir-swagger-ui-akka-http` transitively pulls 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-swagger-ui-akka-http" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT" exclude("com.typesafe.akka", "akka-stream_2.12")
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-akka-http" % "0.17.0" exclude("com.typesafe.akka", "akka-stream_2.12")
```

Usage example for akka-http:
Expand Down
6 changes: 3 additions & 3 deletions generated-doc/out/endpoint/integrations.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,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" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-cats" % "0.17.0"
```

- `import sttp.tapir.integ.cats.codec._` - brings schema, validator and codec instances
Expand All @@ -19,7 +19,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" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-refined" % "0.17.0"
```

You'll need to extend the `sttp.tapir.codec.refined.TapirCodecRefined`
Expand All @@ -40,7 +40,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" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-enumeratum" % "0.17.0"
```

Then, `import sttp.tapir.codec.enumeratum`, or extends the `sttp.tapir.codec.enumeratum.TapirCodecEnumeratum` trait.
Expand Down
37 changes: 23 additions & 14 deletions generated-doc/out/endpoint/ios.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,9 @@ val paging: EndpointInput[Paging] =
Mapping methods can also be called on an endpoint (which is useful if inputs/outputs are accumulated, for example).
The `Endpoint.mapIn`, `Endpoint.mapInTo` etc. have the same signatures are the ones above.

## Describing input values using annotations
## Describing input/output values using annotations

Inputs can also be built for case classes using annotations. For example, for the case class `User`
Inputs and outputs can also be built for case classes using annotations. For example, for the case class `User`
```scala
import sttp.tapir.annotations._

Expand All @@ -151,17 +151,23 @@ val userInput: EndpointInput[User] =
query[String]("user").and(cookie[Long]("sessionId")).mapTo(User)
```

Following annotations are available in package `sttp.tapir.annotations` for describing input values:
* `@query` captures a query parameter with the same name as name of annotated field in a case class. This annotation
can also be used with optional parameter `@query("paramName")` in order to capture a query parameter with name `"paramName"`
if a name of query parameter is different from name of annotated field in a case class
* `@params` captures all query parameters. Can only be applied to fields represented as `QueryParams`
* `@header` captures a header with the same name as name of annotated field in a case class. The same as annotation
`@query` it has optional parameter to specify alternative name for header
Following annotations are available in package `sttp.tapir.annotations` for describing both input and output values:
* `@header` captures a header with the same name as name of annotated field in a case class. This annotation
can also be used with optional parameter `@header("headerName")` in order to capture a header with name `"headerName"`
if a name of header is different from name of annotated field in a case class
* `@headers` captures all headers. Can only be applied to fields represented as `List[Header]`
* `@cookie` captures a cookie with the same name as name of annotated field in a case class. The same as annotation
`@query` it has optional parameter to specify alternative name for cookie
* `@cookies` captures all cookies. Can only be applied to fields represented as `List[Cookie]`
* `@jsonbody` captures JSON body of request or response. Can only be applied to field if there is implicit JSON `Codec`
instance from `String` to target type
* `@xmlbody` captures XML body of request or response. Also requires implicit XML `Codec` instance from `String` to
target type

Following annotations are only available for describing input values:
* `@query` captures a query parameter with the same name as name of annotated field in a case class. The same as
annotation `@header` it has optional parameter to specify alternative name for query parameter
* `@params` captures all query parameters. Can only be applied to fields represented as `QueryParams`
* `@cookie` captures a cookie with the same name as name of annotated field in a case class. The same as annotation
`@header` it has optional parameter to specify alternative name for cookie
* `@path` captures a path segment. Can only be applied to field of a case class if this case class is annotated
by annotation `@endpointInput`. For example,
```scala
Expand All @@ -179,13 +185,16 @@ case class Book(
```
Annotation `@endpointInput` specifies endpoint path. In order to capture one segment of this path it must be surrounded
in curly braces
* `@jsonbody` captures JSON body of request. Can only be applied to field if there is implicit JSON `Codec` instance
from `String` to target type
* `@xmlbody` captures XML body of request. Also requires implicit XML `Codec` instance from `String` to target type
* `@apikey` wraps any other input and designates it as an API key. Can only be used with another annotations
* `@basic` extracts data from the `Authorization` header. Can only be applied for field represented as `UsernamePassword`
* `@bearer` extracts data from the `Authorization` header removing the `Bearer` prefix.

Following annotations are only available for describing output values:
* `@setCookie` sends value in header `Set-Cookie`. The same as annotation `@header` it has optional parameter to specify
alternative name for cookie. Can only be applied for field represented as `CookieValueWithMeta`
* `@setCookies` sends several `Set-Cookie` headers. Can only be applied for field represented as `List[Cookie]`
* `@statusCode` sets status code for response. Can only be applied for field represented as `StatusCode`

## Path matching

By default (as with all other types of inputs), if no path input/path segments are defined, any path will match.
Expand Down
12 changes: 6 additions & 6 deletions generated-doc/out/endpoint/json.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ the json codec that is in scope.
To use Circe add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-circe" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-json-circe" % "0.17.0"
```

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

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-upickle" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-json-upickle" % "0.17.0"
```

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

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-play" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-json-play" % "0.17.0"
```

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

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-spray" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-json-spray" % "0.17.0"
```

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

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-tethys" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-json-tethys" % "0.17.0"
```

Next, import the package (or extend the `TapirJsonTethys` trait, see [MyTapir](../mytapir.md) and add `TapirJsonTethys` not `TapirCirceJson`):
Expand All @@ -176,7 +176,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" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-jsoniter-scala" % "0.17.0"
```

Next, import the package (or extend the `TapirJsonJsoniter` trait, see [MyTapir](../mytapir.md) and add `TapirJsonJsoniter` not `TapirCirceJson`):
Expand Down
4 changes: 2 additions & 2 deletions generated-doc/out/endpoint/zio.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ exposing the endpoints using the [http4s](https://http4s.org) server.
You'll need the following dependencies:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-zio" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-zio-http4s-server" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-zio" % "0.17.0"
"com.softwaremill.sttp.tapir" %% "tapir-zio-http4s-server" % "0.17.0"
```

Next, instead of the usual `import sttp.tapir._`, you should import:
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/generator/sbt-openapi-codegen.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
Add the sbt plugin to the `project/plugins.sbt`:

```scala
addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT")
addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "0.17.0")
```

Enable the plugin for your project in the `build.sbt`:
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
To use tapir, add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-core" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-core" % "0.17.0"
```

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

```scala
"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "0.17.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" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT" exclude("com.typesafe.akka", "akka-stream_2.12")
"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "0.17.0" exclude("com.typesafe.akka", "akka-stream_2.12")
```

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

```scala
"com.softwaremill.sttp.tapir" %% "tapir-finatra-server" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-finatra-server" % "0.17.0"
```

and import the package:
Expand All @@ -16,7 +16,7 @@ import sttp.tapir.server.finatra._
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" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-finatra-server-cats" % "0.17.0"
```

and import the packate:
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/server/http4s.md
Original file line number Diff line number Diff line change
Expand Up @@ -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" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-http4s-server" % "0.17.0"
```

and import the package:
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/server/play.md
Original file line number Diff line number Diff line change
Expand Up @@ -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" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-play-server" % "0.17.0"
```

and (if you don't already depend on Play)
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/server/vertx.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Endpoints can be mounted as Vert.x `Route`s on top of a Vert.x `Router`.

Use the following dependency
```scala
"com.softwaremill.sttp.tapir" %% "tapir-vertx-server" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-vertx-server" % "0.17.0"
```

Then import the package:
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ details on how the stub works).
Add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-sttp-stub-server" % "0.17.0-M11+25-8d0263ff+20201216-0826-SNAPSHOT"
"com.softwaremill.sttp.tapir" %% "tapir-sttp-stub-server" % "0.17.0"
```

And the following imports:
Expand Down

0 comments on commit d0ebe98

Please sign in to comment.