Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
46abca4
chore(internal): codegen related update
stainless-app[bot] Jan 20, 2026
eaca79d
feat(api): api update
stainless-app[bot] Jan 21, 2026
9aa3e27
chore(internal): update maven repo doc to include authentication
stainless-app[bot] Jan 21, 2026
10357a9
feat(client): send `X-Stainless-Kotlin-Version` header
stainless-app[bot] Jan 21, 2026
e2f42d1
docs: add comment for arbitrary value fields
stainless-app[bot] Jan 22, 2026
4a49c05
chore(internal): correct cache invalidation for `SKIP_MOCK_TESTS`
stainless-app[bot] Jan 22, 2026
928bfae
fix(client): preserve time zone in lenient date-time parsing
stainless-app[bot] Jan 23, 2026
7850067
chore(ci): upgrade `actions/github-script`
stainless-app[bot] Jan 23, 2026
1e5f897
feat(api): api update
stainless-app[bot] Jan 23, 2026
b8b2251
chore(internal): codegen related update
stainless-app[bot] Jan 27, 2026
ffbc747
chore(internal): allow passing args to `./scripts/test`
stainless-app[bot] Jan 30, 2026
49d56e2
feat(api): api update
stainless-app[bot] Feb 3, 2026
719f036
chore(internal): upgrade AssertJ
stainless-app[bot] Feb 6, 2026
69429b9
feat(api): api update
stainless-app[bot] Feb 10, 2026
acb4297
codegen metadata
stainless-app[bot] Feb 11, 2026
489bdd6
chore(internal): codegen related update
stainless-app[bot] Feb 11, 2026
a80ec0b
feat(api): api update
stainless-app[bot] Feb 12, 2026
5ba9c33
feat(api): manual updates
stainless-app[bot] Feb 12, 2026
c310e36
feat(api): api update
stainless-app[bot] Feb 16, 2026
1f83575
release: 1.11.0
stainless-app[bot] Feb 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:
- name: Get GitHub OIDC Token
if: github.repository == 'stainless-sdks/orb-java'
id: github-oidc
uses: actions/github-script@v6
uses: actions/github-script@v8
with:
script: core.setOutput('github_token', await core.getIDToken());

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 @@
{
".": "1.10.0"
".": "1.11.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 126
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/orb%2Forb-c131de17773b450eb1ec03ca001f94d3777e35347234869a7efee083003e1513.yml
openapi_spec_hash: 5d2d4a3a9ada1c381efb318b6897994d
config_hash: bcf82bddb691f6be773ac6cae8c03b9a
configured_endpoints: 139
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/orb%2Forb-77e112caf7b2a2c7b0248b7245b5730bc72ab0ea84ba5d0777e7d0604ae04d26.yml
openapi_spec_hash: 966568dd08f34db64ba0ebace678268a
config_hash: 3279841440b02d4e8303c961d6983492
37 changes: 37 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,42 @@
# Changelog

## 1.11.0 (2026-02-16)

Full Changelog: [v1.10.0...v1.11.0](https://github.com/orbcorp/orb-java/compare/v1.10.0...v1.11.0)

### Features

* **api:** api update ([c310e36](https://github.com/orbcorp/orb-java/commit/c310e36ffe22fafdd5ba9a00728e7816a8d0e1e6))
* **api:** api update ([a80ec0b](https://github.com/orbcorp/orb-java/commit/a80ec0b34dabf9595dbae9dfc4b4ed6c914cf5d2))
* **api:** api update ([69429b9](https://github.com/orbcorp/orb-java/commit/69429b99a2aa15ce52ebd45f7a2a531395f3dc94))
* **api:** api update ([49d56e2](https://github.com/orbcorp/orb-java/commit/49d56e2d1ef966ebf6ad4508c81b43a19e7cf9c5))
* **api:** api update ([1e5f897](https://github.com/orbcorp/orb-java/commit/1e5f8972d4dd8c4c955e8980b0c83901a2594bd6))
* **api:** api update ([eaca79d](https://github.com/orbcorp/orb-java/commit/eaca79da23a8cad0430abcb0319c8a37a5bbfc2a))
* **api:** manual updates ([5ba9c33](https://github.com/orbcorp/orb-java/commit/5ba9c33bba4f76344046e7cd93946fe96befaf34))
* **client:** send `X-Stainless-Kotlin-Version` header ([10357a9](https://github.com/orbcorp/orb-java/commit/10357a946d98ffd0cb26409f81af477b4c4638b2))


### Bug Fixes

* **client:** preserve time zone in lenient date-time parsing ([928bfae](https://github.com/orbcorp/orb-java/commit/928bfae14d9e8353f052404bf80873f1bd60d167))


### Chores

* **ci:** upgrade `actions/github-script` ([7850067](https://github.com/orbcorp/orb-java/commit/7850067ac12719de79ff00ada02962f035782791))
* **internal:** allow passing args to `./scripts/test` ([ffbc747](https://github.com/orbcorp/orb-java/commit/ffbc7473823b4ea0ccd27b9cfb85f8a5c165bb47))
* **internal:** codegen related update ([489bdd6](https://github.com/orbcorp/orb-java/commit/489bdd632da69ee3bafce9d5364861821f235c2b))
* **internal:** codegen related update ([b8b2251](https://github.com/orbcorp/orb-java/commit/b8b2251ef940a4d3a5276a9287bfc628fcc7fa2b))
* **internal:** codegen related update ([46abca4](https://github.com/orbcorp/orb-java/commit/46abca478b99884a07ac874f56f5ab7f615d9162))
* **internal:** correct cache invalidation for `SKIP_MOCK_TESTS` ([4a49c05](https://github.com/orbcorp/orb-java/commit/4a49c05fd112adb44adebff7481d4076ede46058))
* **internal:** update maven repo doc to include authentication ([9aa3e27](https://github.com/orbcorp/orb-java/commit/9aa3e2745cf3794784ee229af579142c6d560182))
* **internal:** upgrade AssertJ ([719f036](https://github.com/orbcorp/orb-java/commit/719f036e81d72bf5c80a3e53de1e6fcdee49f15e))


### Documentation

* add comment for arbitrary value fields ([e2f42d1](https://github.com/orbcorp/orb-java/commit/e2f42d1f5d5b951c50798e943a64e14ff134b4f2))

## 1.10.0 (2026-01-17)

Full Changelog: [v1.9.0...v1.10.0](https://github.com/orbcorp/orb-java/compare/v1.9.0...v1.10.0)
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

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

[![Maven Central](https://img.shields.io/maven-central/v/com.withorb.api/orb-java)](https://central.sonatype.com/artifact/com.withorb.api/orb-java/1.10.0)
[![Maven Central](https://img.shields.io/maven-central/v/com.withorb.api/orb-java)](https://central.sonatype.com/artifact/com.withorb.api/orb-java/1.11.0)

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

Expand All @@ -19,7 +19,7 @@ The REST API documentation can be found on [docs.withorb.com](https://docs.witho
### Gradle

```kotlin
implementation("com.withorb.api:orb-java:1.10.0")
implementation("com.withorb.api:orb-java:1.11.0")
```

### Maven
Expand All @@ -28,7 +28,7 @@ implementation("com.withorb.api:orb-java:1.10.0")
<dependency>
<groupId>com.withorb.api</groupId>
<artifactId>orb-java</artifactId>
<version>1.10.0</version>
<version>1.11.0</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
allprojects {
group = "com.withorb.api"
version = "1.10.0" // x-release-please-version
version = "1.11.0" // x-release-please-version
}

subprojects {
Expand Down
3 changes: 3 additions & 0 deletions buildSrc/src/main/kotlin/orb.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
4 changes: 0 additions & 4 deletions examples/.keep

This file was deleted.

2 changes: 1 addition & 1 deletion orb-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")
}
2 changes: 1 addition & 1 deletion orb-java-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ dependencies {
testImplementation(kotlin("test"))
testImplementation(project(":orb-java-client-okhttp"))
testImplementation("com.github.tomakehurst:wiremock-jre8:2.35.2")
testImplementation("org.assertj:assertj-core:3.25.3")
testImplementation("org.assertj:assertj-core:3.27.7")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.3")
testImplementation("org.junit.jupiter:junit-jupiter-params:5.9.3")
testImplementation("org.junit-pioneer:junit-pioneer:1.9.1")
Expand Down
10 changes: 10 additions & 0 deletions orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import com.withorb.api.services.blocking.EventService
import com.withorb.api.services.blocking.InvoiceLineItemService
import com.withorb.api.services.blocking.InvoiceService
import com.withorb.api.services.blocking.ItemService
import com.withorb.api.services.blocking.LicenseService
import com.withorb.api.services.blocking.LicenseTypeService
import com.withorb.api.services.blocking.MetricService
import com.withorb.api.services.blocking.PlanService
import com.withorb.api.services.blocking.PriceService
Expand Down Expand Up @@ -95,6 +97,10 @@ interface OrbClient {

fun creditBlocks(): CreditBlockService

fun licenseTypes(): LicenseTypeService

fun licenses(): LicenseService

/**
* Closes this client, relinquishing any underlying resources.
*
Expand Down Expand Up @@ -151,5 +157,9 @@ interface OrbClient {
fun subscriptionChanges(): SubscriptionChangeService.WithRawResponse

fun creditBlocks(): CreditBlockService.WithRawResponse

fun licenseTypes(): LicenseTypeService.WithRawResponse

fun licenses(): LicenseService.WithRawResponse
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import com.withorb.api.services.async.EventServiceAsync
import com.withorb.api.services.async.InvoiceLineItemServiceAsync
import com.withorb.api.services.async.InvoiceServiceAsync
import com.withorb.api.services.async.ItemServiceAsync
import com.withorb.api.services.async.LicenseServiceAsync
import com.withorb.api.services.async.LicenseTypeServiceAsync
import com.withorb.api.services.async.MetricServiceAsync
import com.withorb.api.services.async.PlanServiceAsync
import com.withorb.api.services.async.PriceServiceAsync
Expand Down Expand Up @@ -92,6 +94,10 @@ interface OrbClientAsync {

fun creditBlocks(): CreditBlockServiceAsync

fun licenseTypes(): LicenseTypeServiceAsync

fun licenses(): LicenseServiceAsync

/**
* Closes this client, relinquishing any underlying resources.
*
Expand Down Expand Up @@ -148,5 +154,9 @@ interface OrbClientAsync {
fun subscriptionChanges(): SubscriptionChangeServiceAsync.WithRawResponse

fun creditBlocks(): CreditBlockServiceAsync.WithRawResponse

fun licenseTypes(): LicenseTypeServiceAsync.WithRawResponse

fun licenses(): LicenseServiceAsync.WithRawResponse
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ import com.withorb.api.services.async.InvoiceServiceAsync
import com.withorb.api.services.async.InvoiceServiceAsyncImpl
import com.withorb.api.services.async.ItemServiceAsync
import com.withorb.api.services.async.ItemServiceAsyncImpl
import com.withorb.api.services.async.LicenseServiceAsync
import com.withorb.api.services.async.LicenseServiceAsyncImpl
import com.withorb.api.services.async.LicenseTypeServiceAsync
import com.withorb.api.services.async.LicenseTypeServiceAsyncImpl
import com.withorb.api.services.async.MetricServiceAsync
import com.withorb.api.services.async.MetricServiceAsyncImpl
import com.withorb.api.services.async.PlanServiceAsync
Expand Down Expand Up @@ -119,6 +123,14 @@ class OrbClientAsyncImpl(private val clientOptions: ClientOptions) : OrbClientAs
CreditBlockServiceAsyncImpl(clientOptionsWithUserAgent)
}

private val licenseTypes: LicenseTypeServiceAsync by lazy {
LicenseTypeServiceAsyncImpl(clientOptionsWithUserAgent)
}

private val licenses: LicenseServiceAsync by lazy {
LicenseServiceAsyncImpl(clientOptionsWithUserAgent)
}

override fun sync(): OrbClient = sync

override fun withRawResponse(): OrbClientAsync.WithRawResponse = withRawResponse
Expand Down Expand Up @@ -161,6 +173,10 @@ class OrbClientAsyncImpl(private val clientOptions: ClientOptions) : OrbClientAs

override fun creditBlocks(): CreditBlockServiceAsync = creditBlocks

override fun licenseTypes(): LicenseTypeServiceAsync = licenseTypes

override fun licenses(): LicenseServiceAsync = licenses

override fun close() = clientOptions.close()

class WithRawResponseImpl internal constructor(private val clientOptions: ClientOptions) :
Expand Down Expand Up @@ -235,6 +251,14 @@ class OrbClientAsyncImpl(private val clientOptions: ClientOptions) : OrbClientAs
CreditBlockServiceAsyncImpl.WithRawResponseImpl(clientOptions)
}

private val licenseTypes: LicenseTypeServiceAsync.WithRawResponse by lazy {
LicenseTypeServiceAsyncImpl.WithRawResponseImpl(clientOptions)
}

private val licenses: LicenseServiceAsync.WithRawResponse by lazy {
LicenseServiceAsyncImpl.WithRawResponseImpl(clientOptions)
}

override fun withOptions(
modifier: Consumer<ClientOptions.Builder>
): OrbClientAsync.WithRawResponse =
Expand Down Expand Up @@ -278,5 +302,9 @@ class OrbClientAsyncImpl(private val clientOptions: ClientOptions) : OrbClientAs
subscriptionChanges

override fun creditBlocks(): CreditBlockServiceAsync.WithRawResponse = creditBlocks

override fun licenseTypes(): LicenseTypeServiceAsync.WithRawResponse = licenseTypes

override fun licenses(): LicenseServiceAsync.WithRawResponse = licenses
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ import com.withorb.api.services.blocking.InvoiceService
import com.withorb.api.services.blocking.InvoiceServiceImpl
import com.withorb.api.services.blocking.ItemService
import com.withorb.api.services.blocking.ItemServiceImpl
import com.withorb.api.services.blocking.LicenseService
import com.withorb.api.services.blocking.LicenseServiceImpl
import com.withorb.api.services.blocking.LicenseTypeService
import com.withorb.api.services.blocking.LicenseTypeServiceImpl
import com.withorb.api.services.blocking.MetricService
import com.withorb.api.services.blocking.MetricServiceImpl
import com.withorb.api.services.blocking.PlanService
Expand Down Expand Up @@ -111,6 +115,12 @@ class OrbClientImpl(private val clientOptions: ClientOptions) : OrbClient {
CreditBlockServiceImpl(clientOptionsWithUserAgent)
}

private val licenseTypes: LicenseTypeService by lazy {
LicenseTypeServiceImpl(clientOptionsWithUserAgent)
}

private val licenses: LicenseService by lazy { LicenseServiceImpl(clientOptionsWithUserAgent) }

override fun async(): OrbClientAsync = async

override fun withRawResponse(): OrbClient.WithRawResponse = withRawResponse
Expand Down Expand Up @@ -154,6 +164,10 @@ class OrbClientImpl(private val clientOptions: ClientOptions) : OrbClient {

override fun creditBlocks(): CreditBlockService = creditBlocks

override fun licenseTypes(): LicenseTypeService = licenseTypes

override fun licenses(): LicenseService = licenses

override fun close() = clientOptions.close()

class WithRawResponseImpl internal constructor(private val clientOptions: ClientOptions) :
Expand Down Expand Up @@ -227,6 +241,14 @@ class OrbClientImpl(private val clientOptions: ClientOptions) : OrbClient {
CreditBlockServiceImpl.WithRawResponseImpl(clientOptions)
}

private val licenseTypes: LicenseTypeService.WithRawResponse by lazy {
LicenseTypeServiceImpl.WithRawResponseImpl(clientOptions)
}

private val licenses: LicenseService.WithRawResponse by lazy {
LicenseServiceImpl.WithRawResponseImpl(clientOptions)
}

override fun withOptions(
modifier: Consumer<ClientOptions.Builder>
): OrbClient.WithRawResponse =
Expand Down Expand Up @@ -269,5 +291,9 @@ class OrbClientImpl(private val clientOptions: ClientOptions) : OrbClient {
subscriptionChanges

override fun creditBlocks(): CreditBlockService.WithRawResponse = creditBlocks

override fun licenseTypes(): LicenseTypeService.WithRawResponse = licenseTypes

override fun licenses(): LicenseService.WithRawResponse = licenses
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -463,6 +463,7 @@ private constructor(
headers.put("X-Stainless-Package-Version", getPackageVersion())
headers.put("X-Stainless-Runtime", "JRE")
headers.put("X-Stainless-Runtime-Version", getJavaVersion())
headers.put("X-Stainless-Kotlin-Version", KotlinVersion.CURRENT.toString())
apiKey.let {
if (!it.isEmpty()) {
headers.put("Authorization", "Bearer $it")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import java.time.DateTimeException
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.OffsetDateTime
import java.time.ZonedDateTime
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoField

Expand Down Expand Up @@ -157,14 +157,15 @@ private class LenientOffsetDateTimeDeserializer :
val temporal = formatter.parse(p.text)

return when {
!temporal.isSupported(ChronoField.HOUR_OF_DAY) ->
LocalDate.from(temporal).atStartOfDay()
!temporal.isSupported(ChronoField.OFFSET_SECONDS) ->
LocalDateTime.from(temporal)
else -> ZonedDateTime.from(temporal).toLocalDateTime()
}
.atZone(context.timeZone.toZoneId())
.toOffsetDateTime()
!temporal.isSupported(ChronoField.HOUR_OF_DAY) ->
LocalDate.from(temporal)
.atStartOfDay()
.atZone(ZoneId.of("UTC"))
.toOffsetDateTime()
!temporal.isSupported(ChronoField.OFFSET_SECONDS) ->
LocalDateTime.from(temporal).atZone(ZoneId.of("UTC")).toOffsetDateTime()
else -> OffsetDateTime.from(temporal)
}
} catch (e: DateTimeException) {
exceptions.add(e)
}
Expand Down
Loading
Loading