Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
6b5a7b3
feat(client): add `HttpRequest#url()` method
stainless-app[bot] Jan 5, 2026
dc0fc24
feat(api): api update
stainless-app[bot] Jan 6, 2026
960cc19
feat(client): allow configuring dispatcher executor service
stainless-app[bot] Jan 9, 2026
74b758c
feat(api): api update
stainless-app[bot] Jan 9, 2026
141a5d6
chore(internal): support uploading Maven repo artifacts to stainless …
stainless-app[bot] Jan 12, 2026
88364fc
chore(internal): clean up maven repo artifact script and add html doc…
stainless-app[bot] Jan 15, 2026
b53df43
chore: test on Jackson 2.14.0 to avoid encountering FasterXML/jackson…
stainless-app[bot] Jan 16, 2026
aabe63c
feat(api): api update
stainless-app[bot] Jan 16, 2026
d891959
chore(internal): improve maven repo docs
stainless-app[bot] Jan 16, 2026
a498a2f
fix(client): disallow coercion from float to int
stainless-app[bot] Jan 16, 2026
bcb84ae
chore(internal): update `actions/checkout` version
stainless-app[bot] Jan 16, 2026
db20e56
fix(client): fully respect max retries
stainless-app[bot] Jan 16, 2026
e3a09ff
chore(ci): upgrade `actions/setup-java`
stainless-app[bot] Jan 16, 2026
95ce4a8
chore(internal): update maven repo doc to include authentication
stainless-app[bot] Jan 21, 2026
32f4d72
feat(client): send `X-Stainless-Kotlin-Version` header
stainless-app[bot] Jan 21, 2026
27772a9
chore(internal): correct cache invalidation for `SKIP_MOCK_TESTS`
stainless-app[bot] Jan 22, 2026
62d4ba4
fix(client): preserve time zone in lenient date-time parsing
stainless-app[bot] Jan 23, 2026
47e61f7
chore(ci): upgrade `actions/github-script`
stainless-app[bot] Jan 23, 2026
7b287a1
feat(api): api update
stainless-app[bot] Jan 26, 2026
53cbdac
feat(api): api update
stainless-app[bot] Jan 26, 2026
01e0e53
feat(api): api update
stainless-app[bot] Jan 29, 2026
68d4da0
chore(internal): allow passing args to `./scripts/test`
stainless-app[bot] Jan 30, 2026
626ff7d
chore(internal): upgrade AssertJ
stainless-app[bot] Feb 6, 2026
d683d44
feat(api): api update
stainless-app[bot] Feb 13, 2026
8b61d59
codegen metadata
stainless-app[bot] Feb 17, 2026
3bc120d
codegen metadata
stainless-app[bot] Feb 17, 2026
56f1914
codegen metadata
stainless-app[bot] Feb 17, 2026
f6c16fa
codegen metadata
stainless-app[bot] Feb 17, 2026
2f1209d
chore(internal): update `TestServerExtension` comment
stainless-app[bot] Feb 17, 2026
4d0d7a8
chore(internal): make `OkHttp` constructor internal
stainless-app[bot] Feb 18, 2026
dabf164
feat(client): add connection pooling option
stainless-app[bot] Feb 18, 2026
9ab611b
chore: update mock server docs
stainless-app[bot] Feb 19, 2026
7e517d6
chore: make `Properties` more resilient to `null`
stainless-app[bot] Feb 23, 2026
ea51709
chore: drop apache dependency
stainless-app[bot] Feb 23, 2026
ee924bd
chore(internal): expand imports
stainless-app[bot] Feb 24, 2026
edc87cc
chore(docs): add missing descriptions
stainless-app[bot] Feb 27, 2026
ca9ee11
feat(api): api update
stainless-app[bot] Mar 3, 2026
249bfd4
fix: fix request delays for retrying to be more respectful of high re…
stainless-app[bot] Mar 5, 2026
4460207
chore(internal): bump palantir-java-format
stainless-app[bot] Mar 5, 2026
d631a4b
chore(test): do not count install time for mock server timeout
stainless-app[bot] Mar 5, 2026
2737021
chore(ci): skip uploading artifacts on stainless-internal branches
stainless-app[bot] Mar 7, 2026
0c3b728
release: 0.11.0
stainless-app[bot] Mar 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 28 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ jobs:
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Set up Java
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: |
Expand All @@ -40,14 +40,17 @@ jobs:
build:
timeout-minutes: 15
name: build
permissions:
contents: read
id-token: write
runs-on: ${{ github.repository == 'stainless-sdks/prelude-java' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Set up Java
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: |
Expand All @@ -61,16 +64,35 @@ jobs:
- name: Build SDK
run: ./scripts/build

- name: Get GitHub OIDC Token
if: |-
github.repository == 'stainless-sdks/prelude-java' &&
!startsWith(github.ref, 'refs/heads/stl/')
id: github-oidc
uses: actions/github-script@v8
with:
script: core.setOutput('github_token', await core.getIDToken());

- name: Build and upload Maven artifacts
if: |-
github.repository == 'stainless-sdks/prelude-java' &&
!startsWith(github.ref, 'refs/heads/stl/')
env:
URL: https://pkg.stainless.com/s
AUTH: ${{ steps.github-oidc.outputs.github_token }}
SHA: ${{ github.sha }}
PROJECT: prelude-java
run: ./scripts/upload-artifacts
test:
timeout-minutes: 15
name: test
runs-on: ${{ github.repository == 'stainless-sdks/prelude-java' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Set up Java
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/publish-sonatype.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Set up Java
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-doctor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
if: github.repository == 'prelude-so/java-sdk' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next')

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Check release environment
run: |
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.10.0"
".": "0.11.0"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 19
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude%2Fprelude-fe14bed3c1b6245444e1a53e7b0b172301c207ef9500dc68f4d8e58a7bfec436.yml
openapi_spec_hash: 4acdc9dd487011b2391f6fe02812a6bd
config_hash: 55380048fe5cf686421acf7eeaae21be
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude%2Fprelude-c9124c257dd54dd0728cb57306b9082007439bfefac11642542605edb3e7606d.yml
openapi_spec_hash: 61dc64cc814d10975a8825ec88fd9c1c
config_hash: 107ae5754168e80c4ad2cd779a75bc36
55 changes: 55 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,60 @@
# Changelog

## 0.11.0 (2026-03-07)

Full Changelog: [v0.10.0...v0.11.0](https://github.com/prelude-so/java-sdk/compare/v0.10.0...v0.11.0)

### Features

* **api:** api update ([ca9ee11](https://github.com/prelude-so/java-sdk/commit/ca9ee118f3800cfde6765103742c06a015f47111))
* **api:** api update ([d683d44](https://github.com/prelude-so/java-sdk/commit/d683d441c3d8d89015ee9ab971ad883fc8f81b32))
* **api:** api update ([01e0e53](https://github.com/prelude-so/java-sdk/commit/01e0e5369605017ae1ef44d473d593584ef07a71))
* **api:** api update ([53cbdac](https://github.com/prelude-so/java-sdk/commit/53cbdac9a2e4b4cffaab963be9edeb77f4a07cf3))
* **api:** api update ([7b287a1](https://github.com/prelude-so/java-sdk/commit/7b287a1a1f2bae3f1185bb8650a49169947bbeb0))
* **api:** api update ([aabe63c](https://github.com/prelude-so/java-sdk/commit/aabe63c8899e9177d6d053cdd998806302c9c111))
* **api:** api update ([74b758c](https://github.com/prelude-so/java-sdk/commit/74b758c2e80672f942000e1201edd081d67b0d18))
* **api:** api update ([dc0fc24](https://github.com/prelude-so/java-sdk/commit/dc0fc245ce976922680aaa766216f76b039f3d46))
* **client:** add `HttpRequest#url()` method ([6b5a7b3](https://github.com/prelude-so/java-sdk/commit/6b5a7b3018b374bfc0c8337b82d9ae2cc8ca20ac))
* **client:** add connection pooling option ([dabf164](https://github.com/prelude-so/java-sdk/commit/dabf164c493a424cd9542d1355af0113cc16c6be))
* **client:** allow configuring dispatcher executor service ([960cc19](https://github.com/prelude-so/java-sdk/commit/960cc193330b9e3b9fb29d48283430029846c3aa))
* **client:** send `X-Stainless-Kotlin-Version` header ([32f4d72](https://github.com/prelude-so/java-sdk/commit/32f4d72f068581e4257c5934d3c58b75128f0289))


### Bug Fixes

* **client:** disallow coercion from float to int ([a498a2f](https://github.com/prelude-so/java-sdk/commit/a498a2f53afeaef5b2dc34b4ade246af2fec6167))
* **client:** fully respect max retries ([db20e56](https://github.com/prelude-so/java-sdk/commit/db20e56fa9a8b373305bff3ae10afea7bbd0ff53))
* **client:** preserve time zone in lenient date-time parsing ([62d4ba4](https://github.com/prelude-so/java-sdk/commit/62d4ba43268ead94f6f1ab811138bea8053a906e))
* **client:** send retry count header for max retries 0 ([db20e56](https://github.com/prelude-so/java-sdk/commit/db20e56fa9a8b373305bff3ae10afea7bbd0ff53))
* date time deserialization leniency ([b53df43](https://github.com/prelude-so/java-sdk/commit/b53df4388bfd39591bc9952d8039ea5e76bc6a99))
* fix request delays for retrying to be more respectful of high requested delays ([249bfd4](https://github.com/prelude-so/java-sdk/commit/249bfd4b8dc6f64ff54c9cab37a66ab27ca258b5))


### Chores

* **ci:** skip uploading artifacts on stainless-internal branches ([2737021](https://github.com/prelude-so/java-sdk/commit/27370217d777fa1ebf591100e2be408388575241))
* **ci:** upgrade `actions/github-script` ([47e61f7](https://github.com/prelude-so/java-sdk/commit/47e61f7b26522ad8336e16e76149d6aeb34ad4e5))
* **ci:** upgrade `actions/setup-java` ([e3a09ff](https://github.com/prelude-so/java-sdk/commit/e3a09ffbe9d651ef627986ab8665898ddbdaf089))
* **docs:** add missing descriptions ([edc87cc](https://github.com/prelude-so/java-sdk/commit/edc87cc96ccd7f8788b4394d4d6f8274f501ad91))
* drop apache dependency ([ea51709](https://github.com/prelude-so/java-sdk/commit/ea517099a868cfbc5692b303c02f3f26078442b3))
* **internal:** allow passing args to `./scripts/test` ([68d4da0](https://github.com/prelude-so/java-sdk/commit/68d4da01ab6ef8c673849405051b98d5d876841c))
* **internal:** bump palantir-java-format ([4460207](https://github.com/prelude-so/java-sdk/commit/4460207c304c03b09598c8a2b1cfa7c86a4a6190))
* **internal:** clean up maven repo artifact script and add html documentation to repo root ([88364fc](https://github.com/prelude-so/java-sdk/commit/88364fca4159730830a8d2a41b93d7684c04c01f))
* **internal:** correct cache invalidation for `SKIP_MOCK_TESTS` ([27772a9](https://github.com/prelude-so/java-sdk/commit/27772a95464ad4ca072493d67655fb09cfb0ab14))
* **internal:** depend on packages directly in example ([db20e56](https://github.com/prelude-so/java-sdk/commit/db20e56fa9a8b373305bff3ae10afea7bbd0ff53))
* **internal:** expand imports ([ee924bd](https://github.com/prelude-so/java-sdk/commit/ee924bd9b90bfd9454c4622c6ba891fb21a0fd5c))
* **internal:** improve maven repo docs ([d891959](https://github.com/prelude-so/java-sdk/commit/d8919592a63c3c766cc07a682294c0918a896aea))
* **internal:** make `OkHttp` constructor internal ([4d0d7a8](https://github.com/prelude-so/java-sdk/commit/4d0d7a8469d9a062be145775327227919a816340))
* **internal:** support uploading Maven repo artifacts to stainless package server ([141a5d6](https://github.com/prelude-so/java-sdk/commit/141a5d618305ea5cb1d17eb2da4f3b578727fd02))
* **internal:** update `actions/checkout` version ([bcb84ae](https://github.com/prelude-so/java-sdk/commit/bcb84ae66e0256dc8509d802e905bb73610f85cb))
* **internal:** update `TestServerExtension` comment ([2f1209d](https://github.com/prelude-so/java-sdk/commit/2f1209d3d5703a3565f11f4d3b08b09da524335b))
* **internal:** update maven repo doc to include authentication ([95ce4a8](https://github.com/prelude-so/java-sdk/commit/95ce4a8a1c321fe80673d83ce10289ece6dc1895))
* **internal:** upgrade AssertJ ([626ff7d](https://github.com/prelude-so/java-sdk/commit/626ff7d2113f7346c428e92a824ec50c38aec643))
* make `Properties` more resilient to `null` ([7e517d6](https://github.com/prelude-so/java-sdk/commit/7e517d6ca2f9ed57d2263b98cd0c7ac8cd1b60b9))
* test on Jackson 2.14.0 to avoid encountering FasterXML/jackson-databind[#3240](https://github.com/prelude-so/java-sdk/issues/3240) in tests ([b53df43](https://github.com/prelude-so/java-sdk/commit/b53df4388bfd39591bc9952d8039ea5e76bc6a99))
* **test:** do not count install time for mock server timeout ([d631a4b](https://github.com/prelude-so/java-sdk/commit/d631a4b7a630579d45fa2330c9c2a87c22d34b2c))
* update mock server docs ([9ab611b](https://github.com/prelude-so/java-sdk/commit/9ab611b92520a6f17ad9c8ad4017bfe34ddf1c5e))

## 0.10.0 (2025-12-05)

Full Changelog: [v0.9.0...v0.10.0](https://github.com/prelude-so/java-sdk/compare/v0.9.0...v0.10.0)
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright 2025 Prelude
Copyright 2026 Prelude

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
31 changes: 26 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

<!-- x-release-please-start-version -->

[![Maven Central](https://img.shields.io/maven-central/v/so.prelude.sdk/prelude-java)](https://central.sonatype.com/artifact/so.prelude.sdk/prelude-java/0.10.0)
[![javadoc](https://javadoc.io/badge2/so.prelude.sdk/prelude-java/0.10.0/javadoc.svg)](https://javadoc.io/doc/so.prelude.sdk/prelude-java/0.10.0)
[![Maven Central](https://img.shields.io/maven-central/v/so.prelude.sdk/prelude-java)](https://central.sonatype.com/artifact/so.prelude.sdk/prelude-java/0.11.0)
[![javadoc](https://javadoc.io/badge2/so.prelude.sdk/prelude-java/0.11.0/javadoc.svg)](https://javadoc.io/doc/so.prelude.sdk/prelude-java/0.11.0)

<!-- x-release-please-end -->

Expand All @@ -13,7 +13,7 @@ It is generated with [Stainless](https://www.stainless.com/).

<!-- x-release-please-start-version -->

The REST API documentation can be found on [docs.prelude.so](https://docs.prelude.so). Javadocs are available on [javadoc.io](https://javadoc.io/doc/so.prelude.sdk/prelude-java/0.10.0).
The REST API documentation can be found on [docs.prelude.so](https://docs.prelude.so). Javadocs are available on [javadoc.io](https://javadoc.io/doc/so.prelude.sdk/prelude-java/0.11.0).

<!-- x-release-please-end -->

Expand All @@ -24,7 +24,7 @@ The REST API documentation can be found on [docs.prelude.so](https://docs.prelud
### Gradle

```kotlin
implementation("so.prelude.sdk:prelude-java:0.10.0")
implementation("so.prelude.sdk:prelude-java:0.11.0")
```

### Maven
Expand All @@ -33,7 +33,7 @@ implementation("so.prelude.sdk:prelude-java:0.10.0")
<dependency>
<groupId>so.prelude.sdk</groupId>
<artifactId>prelude-java</artifactId>
<version>0.10.0</version>
<version>0.11.0</version>
</dependency>
```

Expand Down Expand Up @@ -282,6 +282,8 @@ If the SDK threw an exception, but you're _certain_ the version is compatible, t
> [!CAUTION]
> We make no guarantee that the SDK works correctly when the Jackson version check is disabled.

Also note that there are bugs in older Jackson versions that can affect the SDK. We don't work around all Jackson bugs ([example](https://github.com/FasterXML/jackson-databind/issues/3240)) and expect users to upgrade Jackson for those instead.

## Network options

### Retries
Expand Down Expand Up @@ -357,6 +359,25 @@ PreludeClient client = PreludeOkHttpClient.builder()
.build();
```

### Connection pooling

To customize the underlying OkHttp connection pool, configure the client using the `maxIdleConnections` and `keepAliveDuration` methods:

```java
import java.time.Duration;
import so.prelude.sdk.client.PreludeClient;
import so.prelude.sdk.client.okhttp.PreludeOkHttpClient;

PreludeClient client = PreludeOkHttpClient.builder()
.fromEnv()
// If `maxIdleConnections` is set, then `keepAliveDuration` must be set, and vice versa.
.maxIdleConnections(10)
.keepAliveDuration(Duration.ofMinutes(2))
.build();
```

If both options are unset, OkHttp's default connection pool settings are used.

### HTTPS

> [!NOTE]
Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ repositories {

allprojects {
group = "so.prelude.sdk"
version = "0.10.0" // x-release-please-version
version = "0.11.0" // x-release-please-version
}

subprojects {
Expand Down
2 changes: 1 addition & 1 deletion buildSrc/src/main/kotlin/prelude.java.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ tasks.withType<Test>().configureEach {

val palantir by configurations.creating
dependencies {
palantir("com.palantir.javaformat:palantir-java-format:2.73.0")
palantir("com.palantir.javaformat:palantir-java-format:2.89.0")
}

fun registerPalantir(
Expand Down
3 changes: 3 additions & 0 deletions buildSrc/src/main/kotlin/prelude.kotlin.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ kotlin {
tasks.withType<Test>().configureEach {
systemProperty("junit.jupiter.execution.parallel.enabled", true)
systemProperty("junit.jupiter.execution.parallel.mode.default", "concurrent")

// `SKIP_MOCK_TESTS` affects which tests run so it must be added as input for proper cache invalidation.
inputs.property("skipMockTests", System.getenv("SKIP_MOCK_TESTS")).optional(true)
}

val ktfmt by configurations.creating
Expand Down
17 changes: 15 additions & 2 deletions buildSrc/src/main/kotlin/prelude.publish.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@ plugins {
id("com.vanniktech.maven.publish")
}

publishing {
repositories {
if (project.hasProperty("publishLocal")) {
maven {
name = "LocalFileSystem"
url = uri("${rootProject.layout.buildDirectory.get()}/local-maven-repo")
}
}
}
}

repositories {
gradlePluginPortal()
mavenCentral()
Expand All @@ -17,8 +28,10 @@ extra["signingInMemoryKeyId"] = System.getenv("GPG_SIGNING_KEY_ID")
extra["signingInMemoryKeyPassword"] = System.getenv("GPG_SIGNING_PASSWORD")

configure<MavenPublishBaseExtension> {
signAllPublications()
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
if (!project.hasProperty("publishLocal")) {
signAllPublications()
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
}

coordinates(project.group.toString(), project.name, project.version.toString())
configure(
Expand Down
2 changes: 1 addition & 1 deletion prelude-java-client-okhttp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ dependencies {
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")

testImplementation(kotlin("test"))
testImplementation("org.assertj:assertj-core:3.25.3")
testImplementation("org.assertj:assertj-core:3.27.7")
testImplementation("com.github.tomakehurst:wiremock-jre8:2.35.2")
}
Loading