Skip to content

Commit cfb0224

Browse files
committed
Merge remote-tracking branch 'tapir/master' into http4s-migrate-to-ember
2 parents 54e990f + b0bed91 commit cfb0224

File tree

145 files changed

+708
-481
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

145 files changed

+708
-481
lines changed

.github/dependabot.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Set update schedule for GitHub Actions
2+
3+
version: 2
4+
updates:
5+
6+
- package-ecosystem: "github-actions"
7+
directory: "/"
8+
schedule:
9+
# Check for updates to GitHub Actions every week
10+
interval: "weekly"
11+
# Raise all pull requests with labels
12+
labels:
13+
- "dependency"
14+
- "automerge"

.github/workflows/ci.yml

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
github.event_name == 'push' ||
1616
github.event.pull_request.head.repo.full_name != github.repository ||
1717
github.event.pull_request.user.login == 'softwaremill-ci'
18-
runs-on: ubuntu-22.04
18+
runs-on: ubuntu-24.04
1919
strategy:
2020
fail-fast: false
2121
matrix:
@@ -34,6 +34,7 @@ jobs:
3434
steps:
3535
- name: Checkout
3636
uses: actions/checkout@v4
37+
- uses: sbt/setup-sbt@v1
3738
- name: Set up JDK
3839
uses: actions/setup-java@v4
3940
with:
@@ -81,19 +82,15 @@ jobs:
8182
if: matrix.target-platform == 'JVM' && matrix.java == '21' && matrix.scala-version == '3'
8283
run: sbt $SBT_JAVA_OPTS -v "project examples3" verifyExamplesCompileUsingScalaCli
8384
- name: Test
84-
if: matrix.target-platform == 'JVM' && matrix.scala-version == '2.12'
85-
uses: nick-fields/retry@v2
86-
with:
87-
timeout_minutes: 15
88-
max_attempts: 4
89-
command: sbt $SBT_JAVA_OPTS -v "testScoped ${{ matrix.scala-version }} ${{ matrix.target-platform }}; openapiCodegenSbt2_12/scripted"
90-
- name: Test
91-
if: matrix.target-platform != 'JS' && !(matrix.target-platform == 'JVM' && matrix.scala-version == '2.12')
92-
uses: nick-fields/retry@v2
85+
if: matrix.target-platform != 'JS'
86+
uses: nick-fields/retry@v3
9387
with:
94-
timeout_minutes: 15
88+
timeout_minutes: 8
9589
max_attempts: 4
9690
command: sbt $SBT_JAVA_OPTS -v "testScoped ${{ matrix.scala-version }} ${{ matrix.target-platform }}"
91+
- name: Test OpenAPI codegen
92+
if: matrix.target-platform == 'JVM' && matrix.scala-version == '2.12'
93+
run: sbt $SBT_JAVA_OPTS -v "openapiCodegenSbt2_12/scripted"
9794
# The finatra tests take a really long time (1/3 of the build duration); hence, they are disabled and need to be run separately
9895
#- name: Test finatra
9996
# if: matrix.target-platform != 'JS'
@@ -109,7 +106,7 @@ jobs:
109106
- name: Test
110107
if: matrix.target-platform == 'JS' && matrix.scala-version == '3'
111108
run: sbt $SBT_JAVA_OPTS catsJS3/test circeJsonJS3/test clientCoreJS3/test clientTestsJS3/test coreJS3/test jsoniterScalaJS3/test openapiDocsJS3/test redocJS3/test serverCoreJS3/test sttpClientJS3/test testingJS3/test testsJS3/test uPickleJsonJS3/test zioJsonJS3/test
112-
- uses: actions/upload-artifact@v3 # upload test results
109+
- uses: actions/upload-artifact@v4 # upload test results
113110
if: success() || failure() # run this step even if previous step failed
114111
with:
115112
name: 'tests-results-${{ matrix.scala-version }}-${{ matrix.target-platform }}-${{ matrix.java }}'
@@ -129,12 +126,13 @@ jobs:
129126
github.event_name == 'push' ||
130127
github.event.pull_request.head.repo.full_name != github.repository ||
131128
github.event.pull_request.user.login == 'softwaremill-ci'
132-
runs-on: ubuntu-22.04
129+
runs-on: ubuntu-24.04
133130
steps:
134131
- name: Checkout
135132
uses: actions/checkout@v4
136133
with:
137134
fetch-depth: 0 # checkout tags so that dynver works properly (we need the version for MiMa)
135+
- uses: sbt/setup-sbt@v1
138136
- name: Set up JDK 21
139137
uses: actions/setup-java@v4
140138
with:
@@ -148,13 +146,14 @@ jobs:
148146
name: Publish release
149147
needs: [ci]
150148
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v'))
151-
runs-on: ubuntu-22.04
149+
runs-on: ubuntu-24.04
152150
strategy:
153151
matrix:
154152
java: [ "11", "21" ]
155153
steps:
156154
- name: Checkout
157155
uses: actions/checkout@v4
156+
- uses: sbt/setup-sbt@v1
158157
- name: Set up JDK
159158
uses: actions/setup-java@v4
160159
with:
@@ -207,7 +206,7 @@ jobs:
207206
name: Attach automerge label
208207
# only for PRs by softwaremill-ci
209208
if: github.event.pull_request.user.login == 'softwaremill-ci'
210-
runs-on: ubuntu-22.04
209+
runs-on: ubuntu-24.04
211210
steps:
212211
- uses: actions/checkout@v4
213212
with:
@@ -219,14 +218,15 @@ jobs:
219218

220219
auto-merge:
221220
name: Auto merge
222-
# only for PRs by softwaremill-ci
223-
if: github.event.pull_request.user.login == 'softwaremill-ci'
221+
# only for PRs by softwaremill-ci and dependabot
222+
if: github.event.pull_request.user.login == 'softwaremill-ci' ||
223+
github.event.pull_request.user.login == 'dependabot[bot]'
224224
needs: [ ci, mima, label ]
225-
runs-on: ubuntu-22.04
225+
runs-on: ubuntu-24.04
226226
steps:
227227
- id: automerge
228228
name: automerge
229-
uses: "pascalgn/automerge-action@v0.15.6"
229+
uses: "pascalgn/automerge-action@v0.16.4"
230230
env:
231231
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
232232
MERGE_METHOD: "squash"

.github/workflows/dependency-graph.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ on:
99
jobs:
1010
update-graph:
1111
name: Update Dependency Graph
12-
runs-on: ubuntu-latest
12+
runs-on: ubuntu-24.04
1313
steps:
1414
- uses: actions/checkout@v4
15-
- uses: scalacenter/sbt-dependency-submission@v2
15+
- uses: sbt/setup-sbt@v1
16+
- uses: scalacenter/sbt-dependency-submission@v3

.github/workflows/rebase-cmd-dispatch.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
slashCommandDispatch:
99
# to fast-skip for typical, non-rebase comments
1010
if: contains(github.event.comment.body, '/rebase')
11-
runs-on: ubuntu-latest
11+
runs-on: ubuntu-24.04
1212
steps:
1313
- name: Slash Command Dispatch
1414
uses: peter-evans/slash-command-dispatch@v4

.github/workflows/rebase-cmd.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
types: [rebase-command]
55
jobs:
66
rebase:
7-
runs-on: ubuntu-latest
7+
runs-on: ubuntu-24.04
88
steps:
99
- uses: peter-evans/rebase@v3
1010
id: rebase
@@ -13,7 +13,7 @@ jobs:
1313
head: ${{ github.event.client_payload.pull_request.head.label }}
1414
- name: Add reaction
1515
if: steps.rebase.outputs.rebased-count == 1
16-
uses: peter-evans/create-or-update-comment@v1
16+
uses: peter-evans/create-or-update-comment@v4
1717
with:
1818
token: ${{ secrets.GITHUB_TOKEN }}
1919
repository: ${{ github.event.client_payload.github.payload.repository.full_name }}

.github/workflows/scala-steward.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88

99
jobs:
1010
scala-steward:
11-
runs-on: ubuntu-22.04
11+
runs-on: ubuntu-24.04
1212
steps:
1313
- name: Checkout
1414
uses: actions/checkout@v4

.github/workflows/test-report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ permissions:
1212

1313
jobs:
1414
report:
15-
runs-on: ubuntu-latest
15+
runs-on: ubuntu-24.04
1616
# If the workflow run was skipped or cancelled this action would fail, generating a test report is unnecessary.
1717
if: ${{ github.event.workflow_run.conclusion == 'success' || github.event.workflow_run.conclusion == 'failure' }}
1818
steps:

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ val booksListingRequest: Request[DecodeResult[Either[String, List[Book]]], Any]
139139
Add the following dependency:
140140

141141
```sbt
142-
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.11.11"
142+
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.11.12"
143143
```
144144

145145
Then, import:

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,7 @@ lazy val refined: ProjectMatrix = (projectMatrix in file("integrations/refined")
650650
libraryDependencies ++= Seq(
651651
"eu.timepit" %%% "refined" % Versions.refined,
652652
scalaTest.value % Test,
653-
"io.circe" %%% "circe-refined" % Versions.circe % Test
653+
"io.circe" %%% "circe-refined" % Versions.circeRefined % Test
654654
)
655655
)
656656
.jvmPlatform(scalaVersions = scala2And3Versions, settings = commonJvmSettings)

core/src/main/scala-3/sttp/tapir/internal/ComplietimeErrors.scala renamed to core/src/main/scala-3/sttp/tapir/internal/CompileTimeErrors.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package sttp.tapir.internal
22

33
import scala.quoted.*
44

5-
private[tapir] object ComplietimeErrors {
5+
private[tapir] object CompileTimeErrors {
66
inline def reportIncorrectMapping[SOURCE, TARGET] = ${ reportIncorrectMappingImpl[SOURCE, TARGET] }
77

88
private def reportIncorrectMappingImpl[SOURCE: Type, TARGET: Type](using Quotes): Expr[Unit] = {

core/src/main/scala-3/sttp/tapir/internal/MappingMacros.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ private[tapir] object MappingMacros {
2727
case _: (EmptyTuple, Unit) => ()
2828
case _: (B *: EmptyTuple, B) => ()
2929
case _: (B, B) => ()
30-
case e => ComplietimeErrors.reportIncorrectMapping[B, A]
30+
case e => CompileTimeErrors.reportIncorrectMapping[B, A]
3131
}
3232
}

doc/endpoint/websockets.md

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ When creating a `webSocketBody`, we need to provide the following parameters:
3232
* the `Streams` implementation, which determines the pipe type
3333

3434
By default, ping-pong frames are handled automatically, fragmented frames are combined, and close frames aren't
35-
decoded, but this can be customised through methods on `webSocketBody`.
35+
decoded, but this can be customized through methods on `webSocketBody`.
3636

3737
## Close frames
3838

@@ -50,9 +50,25 @@ webSocketBody[Option[String], CodecFormat.TextPlain, Option[Response], CodecForm
5050
the websocket-processing pipe will receive a `None: Option[String]` when the client closes the web socket. Moreover,
5151
if the pipe emits a `None: Option[Response]`, the web socket will be closed by the server.
5252

53+
Alternatively, if the codec for your high-level type already handles close frames (but its schema is not derived as
54+
optional), you can request that the close frames are decoded by the codec as well. Here's an example which does this
55+
on the server side:
56+
57+
```scala
58+
webSocketBody[...](...).decodeCloseRequests(true)
59+
```
60+
61+
If you'd like to decode close frames when the endpoint is interpreted as a client, you should use the
62+
`decodeCloseResponses` method.
63+
64+
```{note}
65+
Not all server interpreters expose control frames (such as close frames) to user (and Tapir) code. Refer to the
66+
documentation of individual interpreters for more details.
67+
```
68+
5369
## Raw web sockets
5470

55-
Alternatively, it's possible to obtain a raw pipe transforming `WebSocketFrame`s:
71+
The second web socket handling variant is to obtain a raw pipe transforming `WebSocketFrame`s:
5672

5773
```scala mdoc:silent
5874
import org.apache.pekko.stream.scaladsl.Flow
@@ -69,11 +85,11 @@ endpoint.out(webSocketBodyRaw(PekkoStreams)): PublicEndpoint[
6985
```
7086

7187
Such a pipe by default doesn't handle ping-pong frames automatically, doesn't concatenate fragmented flames, and
72-
passes close frames to the pipe as well. As before, this can be customised by methods on the returned output.
88+
passes close frames to the pipe as well. As before, this can be customized by methods on the returned output.
7389

74-
Request/response schemas can be customised through `.requestsSchema` and `.responsesSchema`.
90+
Request/response schemas can be customized through `.requestsSchema` and `.responsesSchema`.
7591

76-
## Interpreting as a sever
92+
## Interpreting as a server
7793

7894
When interpreting a web socket endpoint as a server, the [server logic](../server/logic.md) needs to provide a
7995
streaming-specific pipe from requests to responses. E.g. in Pekko's case, this will be `Flow[REQ, RESP, Any]`.

doc/server/http4s.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,13 @@ EmberServerBuilder
9292
.withHttpWebSocketApp(wsb => Router("/" -> wsRoutes(wsb)).orNotFound)
9393
```
9494

95+
```{note}
96+
When a close frame is received by http4s, the server seems to cancel the stream that is processing the web socket frames.
97+
This means that the `.decodeCloseRequests(true)` setting (also effective when the decoded type is optional, e.g. `Option`)
98+
is not reliable: values corresponding to close frames will not always be processed by the stream. Hence, it's recommended
99+
to avoid using this option with the http4s interpreter.
100+
```
101+
95102
## Server Sent Events
96103

97104
The interpreter supports [SSE (Server Sent Events)](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events).

examples/src/main/scala/sttp/tapir/examples/HelloWorldHttp4sServer.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// {cat=Hello, World!; effects=cats-effect; server=http4s}: Exposing an endpoint using the http4s server
22

3-
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.11
4-
//> using dep com.softwaremill.sttp.tapir::tapir-http4s-server:1.11.11
3+
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.12
4+
//> using dep com.softwaremill.sttp.tapir::tapir-http4s-server:1.11.12
55
//> using dep com.softwaremill.sttp.client3::core:3.9.8
66
//> using dep org.http4s::http4s-ember-server:0.23.30
77

examples/src/main/scala/sttp/tapir/examples/HelloWorldNettyCatsServer.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// {cat=Hello, World!; effects=cats-effect; server=Netty}: Exposing an endpoint using the Netty server (cats-effect variant)
22

3-
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.11
4-
//> using dep com.softwaremill.sttp.tapir::tapir-netty-server-cats:1.11.11
3+
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.12
4+
//> using dep com.softwaremill.sttp.tapir::tapir-netty-server-cats:1.11.12
55
//> using dep com.softwaremill.sttp.client3::core:3.9.8
66
//> using dep ch.qos.logback:logback-classic:1.5.8
77

examples/src/main/scala/sttp/tapir/examples/HelloWorldZioHttpServer.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// {cat=Hello, World!; effects=ZIO; server=ZIO HTTP; json=ZIO JSON}: Exposing an endpoint using the ZIO HTTP server
22

3-
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.11
4-
//> using dep com.softwaremill.sttp.tapir::tapir-json-zio:1.11.11
5-
//> using dep com.softwaremill.sttp.tapir::tapir-zio-http-server:1.11.11
3+
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.12
4+
//> using dep com.softwaremill.sttp.tapir::tapir-json-zio:1.11.12
5+
//> using dep com.softwaremill.sttp.tapir::tapir-zio-http-server:1.11.12
66

77
package sttp.tapir.examples
88

examples/src/main/scala/sttp/tapir/examples/ZioEnvExampleHttp4sServer.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
// {cat=Hello, World!; effects=ZIO; server=http4s; json=circe; docs=Swagger UI}: Exposing an endpoint, defined with ZIO and depending on services in the environment, using the http4s server
22

33
//> using option -Ykind-projector
4-
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.11
5-
//> using dep com.softwaremill.sttp.tapir::tapir-json-circe:1.11.11
6-
//> using dep com.softwaremill.sttp.tapir::tapir-http4s-server-zio:1.11.11
7-
//> using dep com.softwaremill.sttp.tapir::tapir-swagger-ui-bundle:1.11.11
8-
//> using dep com.softwaremill.sttp.tapir::tapir-zio:1.11.11
4+
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.12
5+
//> using dep com.softwaremill.sttp.tapir::tapir-json-circe:1.11.12
6+
//> using dep com.softwaremill.sttp.tapir::tapir-http4s-server-zio:1.11.12
7+
//> using dep com.softwaremill.sttp.tapir::tapir-swagger-ui-bundle:1.11.12
8+
//> using dep com.softwaremill.sttp.tapir::tapir-zio:1.11.12
99
//> using dep org.http4s::http4s-ember-server:0.23.30
1010
//> using dep dev.zio::zio-interop-cats:23.1.0.3
1111

examples/src/main/scala/sttp/tapir/examples/ZioExampleHttp4sServer.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// {cat=Hello, World!; effects=ZIO; server=http4s; json=circe; docs=Swagger UI}: Exposing an endpoint using the http4s server
22

3-
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.11
4-
//> using dep com.softwaremill.sttp.tapir::tapir-json-circe:1.11.11
5-
//> using dep com.softwaremill.sttp.tapir::tapir-http4s-server-zio:1.11.11
6-
//> using dep com.softwaremill.sttp.tapir::tapir-swagger-ui-bundle:1.11.11
7-
//> using dep com.softwaremill.sttp.tapir::tapir-zio:1.11.11
3+
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.12
4+
//> using dep com.softwaremill.sttp.tapir::tapir-json-circe:1.11.12
5+
//> using dep com.softwaremill.sttp.tapir::tapir-http4s-server-zio:1.11.12
6+
//> using dep com.softwaremill.sttp.tapir::tapir-swagger-ui-bundle:1.11.12
7+
//> using dep com.softwaremill.sttp.tapir::tapir-zio:1.11.12
88
//> using dep org.http4s::http4s-ember-server:0.23.30
99
//> using dep dev.zio::zio-interop-cats:23.1.0.3
1010

examples/src/main/scala/sttp/tapir/examples/ZioExampleZioHttpServer.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
// {cat=Hello, World!; effects=ZIO; server=zio-http; json=circe; docs=Swagger UI}: Exposing an endpoint using the ZIO HTTP server
22

33
//> using option -Ykind-projector
4-
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.11
5-
//> using dep com.softwaremill.sttp.tapir::tapir-json-circe:1.11.11
6-
//> using dep com.softwaremill.sttp.tapir::tapir-zio-http-server:1.11.11
7-
//> using dep com.softwaremill.sttp.tapir::tapir-swagger-ui-bundle:1.11.11
8-
//> using dep com.softwaremill.sttp.tapir::tapir-zio:1.11.11
4+
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.12
5+
//> using dep com.softwaremill.sttp.tapir::tapir-json-circe:1.11.12
6+
//> using dep com.softwaremill.sttp.tapir::tapir-zio-http-server:1.11.12
7+
//> using dep com.softwaremill.sttp.tapir::tapir-swagger-ui-bundle:1.11.12
8+
//> using dep com.softwaremill.sttp.tapir::tapir-zio:1.11.12
99

1010
package sttp.tapir.examples
1111

examples/src/main/scala/sttp/tapir/examples/ZioPartialServerLogicHttp4s.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// {cat=Hello, World!; effects=ZIO; server=http4s}: Extending a base endpoint (which has the security logic provided), with server logic
22

33
//> using option -Ykind-projector
4-
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.11
5-
//> using dep com.softwaremill.sttp.tapir::tapir-http4s-server-zio:1.11.11
6-
//> using dep com.softwaremill.sttp.tapir::tapir-zio:1.11.11
4+
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.12
5+
//> using dep com.softwaremill.sttp.tapir::tapir-http4s-server-zio:1.11.12
6+
//> using dep com.softwaremill.sttp.tapir::tapir-zio:1.11.12
77
//> using dep org.http4s::http4s-ember-server:0.23.30
88
//> using dep com.softwaremill.sttp.client3::async-http-client-backend-zio:3.10.2
99

examples/src/main/scala/sttp/tapir/examples/booksExample.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// {cat=Hello, World!; effects=Future; server=Pekko HTTP; client=sttp3; JSON=circe; docs=Swagger UI}: A demo of Tapir's capabilities
22

3-
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.11
4-
//> using dep com.softwaremill.sttp.tapir::tapir-pekko-http-server:1.11.11
5-
//> using dep com.softwaremill.sttp.tapir::tapir-json-circe:1.11.11
6-
//> using dep com.softwaremill.sttp.tapir::tapir-swagger-ui-bundle:1.11.11
7-
//> using dep com.softwaremill.sttp.tapir::tapir-sttp-client:1.11.11
3+
//> using dep com.softwaremill.sttp.tapir::tapir-core:1.11.12
4+
//> using dep com.softwaremill.sttp.tapir::tapir-pekko-http-server:1.11.12
5+
//> using dep com.softwaremill.sttp.tapir::tapir-json-circe:1.11.12
6+
//> using dep com.softwaremill.sttp.tapir::tapir-swagger-ui-bundle:1.11.12
7+
//> using dep com.softwaremill.sttp.tapir::tapir-sttp-client:1.11.12
88
//> using dep org.apache.pekko::pekko-http:1.0.1
99
//> using dep org.apache.pekko::pekko-stream:1.0.3
1010
//> using dep ch.qos.logback:logback-classic:1.5.6

0 commit comments

Comments
 (0)