From 5b08e3942ce71c60ebc5b36b4535df8e4f92badc Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 4 May 2026 17:18:26 +0000 Subject: [PATCH 1/2] feat(client): more robust error parsing --- .../kotlin/com/increase/api/errors/BadRequestException.kt | 6 +++++- .../com/increase/api/errors/InternalServerException.kt | 7 ++++++- .../kotlin/com/increase/api/errors/NotFoundException.kt | 6 +++++- .../com/increase/api/errors/PermissionDeniedException.kt | 6 +++++- .../kotlin/com/increase/api/errors/RateLimitException.kt | 6 +++++- .../com/increase/api/errors/UnauthorizedException.kt | 6 +++++- .../increase/api/errors/UnexpectedStatusCodeException.kt | 7 ++++++- .../increase/api/errors/UnprocessableEntityException.kt | 6 +++++- 8 files changed, 42 insertions(+), 8 deletions(-) diff --git a/increase-java-core/src/main/kotlin/com/increase/api/errors/BadRequestException.kt b/increase-java-core/src/main/kotlin/com/increase/api/errors/BadRequestException.kt index 6de0d47e7..c034b619c 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/errors/BadRequestException.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/errors/BadRequestException.kt @@ -5,12 +5,16 @@ package com.increase.api.errors import com.increase.api.core.JsonValue import com.increase.api.core.checkRequired import com.increase.api.core.http.Headers +import com.increase.api.core.jsonMapper import java.util.Optional import kotlin.jvm.optionals.getOrNull class BadRequestException private constructor(private val headers: Headers, private val body: JsonValue, cause: Throwable?) : - IncreaseServiceException("400: $body", cause) { + IncreaseServiceException( + "400: ${if (body.isMissing()) "Unknown" else jsonMapper().writeValueAsString(body)}", + cause, + ) { override fun statusCode(): Int = 400 diff --git a/increase-java-core/src/main/kotlin/com/increase/api/errors/InternalServerException.kt b/increase-java-core/src/main/kotlin/com/increase/api/errors/InternalServerException.kt index 7d59de136..1105ea577 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/errors/InternalServerException.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/errors/InternalServerException.kt @@ -5,6 +5,7 @@ package com.increase.api.errors import com.increase.api.core.JsonValue import com.increase.api.core.checkRequired import com.increase.api.core.http.Headers +import com.increase.api.core.jsonMapper import java.util.Optional import kotlin.jvm.optionals.getOrNull @@ -14,7 +15,11 @@ private constructor( private val headers: Headers, private val body: JsonValue, cause: Throwable?, -) : IncreaseServiceException("$statusCode: $body", cause) { +) : + IncreaseServiceException( + "$statusCode: ${if (body.isMissing()) "Unknown" else jsonMapper().writeValueAsString(body)}", + cause, + ) { override fun statusCode(): Int = statusCode diff --git a/increase-java-core/src/main/kotlin/com/increase/api/errors/NotFoundException.kt b/increase-java-core/src/main/kotlin/com/increase/api/errors/NotFoundException.kt index 71d01c325..f3ca92679 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/errors/NotFoundException.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/errors/NotFoundException.kt @@ -5,12 +5,16 @@ package com.increase.api.errors import com.increase.api.core.JsonValue import com.increase.api.core.checkRequired import com.increase.api.core.http.Headers +import com.increase.api.core.jsonMapper import java.util.Optional import kotlin.jvm.optionals.getOrNull class NotFoundException private constructor(private val headers: Headers, private val body: JsonValue, cause: Throwable?) : - IncreaseServiceException("404: $body", cause) { + IncreaseServiceException( + "404: ${if (body.isMissing()) "Unknown" else jsonMapper().writeValueAsString(body)}", + cause, + ) { override fun statusCode(): Int = 404 diff --git a/increase-java-core/src/main/kotlin/com/increase/api/errors/PermissionDeniedException.kt b/increase-java-core/src/main/kotlin/com/increase/api/errors/PermissionDeniedException.kt index 7082684e9..86b32a1e4 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/errors/PermissionDeniedException.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/errors/PermissionDeniedException.kt @@ -5,12 +5,16 @@ package com.increase.api.errors import com.increase.api.core.JsonValue import com.increase.api.core.checkRequired import com.increase.api.core.http.Headers +import com.increase.api.core.jsonMapper import java.util.Optional import kotlin.jvm.optionals.getOrNull class PermissionDeniedException private constructor(private val headers: Headers, private val body: JsonValue, cause: Throwable?) : - IncreaseServiceException("403: $body", cause) { + IncreaseServiceException( + "403: ${if (body.isMissing()) "Unknown" else jsonMapper().writeValueAsString(body)}", + cause, + ) { override fun statusCode(): Int = 403 diff --git a/increase-java-core/src/main/kotlin/com/increase/api/errors/RateLimitException.kt b/increase-java-core/src/main/kotlin/com/increase/api/errors/RateLimitException.kt index 458dcb7a9..879ac39c2 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/errors/RateLimitException.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/errors/RateLimitException.kt @@ -5,12 +5,16 @@ package com.increase.api.errors import com.increase.api.core.JsonValue import com.increase.api.core.checkRequired import com.increase.api.core.http.Headers +import com.increase.api.core.jsonMapper import java.util.Optional import kotlin.jvm.optionals.getOrNull class RateLimitException private constructor(private val headers: Headers, private val body: JsonValue, cause: Throwable?) : - IncreaseServiceException("429: $body", cause) { + IncreaseServiceException( + "429: ${if (body.isMissing()) "Unknown" else jsonMapper().writeValueAsString(body)}", + cause, + ) { override fun statusCode(): Int = 429 diff --git a/increase-java-core/src/main/kotlin/com/increase/api/errors/UnauthorizedException.kt b/increase-java-core/src/main/kotlin/com/increase/api/errors/UnauthorizedException.kt index 8cf840ccc..bd0753d1a 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/errors/UnauthorizedException.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/errors/UnauthorizedException.kt @@ -5,12 +5,16 @@ package com.increase.api.errors import com.increase.api.core.JsonValue import com.increase.api.core.checkRequired import com.increase.api.core.http.Headers +import com.increase.api.core.jsonMapper import java.util.Optional import kotlin.jvm.optionals.getOrNull class UnauthorizedException private constructor(private val headers: Headers, private val body: JsonValue, cause: Throwable?) : - IncreaseServiceException("401: $body", cause) { + IncreaseServiceException( + "401: ${if (body.isMissing()) "Unknown" else jsonMapper().writeValueAsString(body)}", + cause, + ) { override fun statusCode(): Int = 401 diff --git a/increase-java-core/src/main/kotlin/com/increase/api/errors/UnexpectedStatusCodeException.kt b/increase-java-core/src/main/kotlin/com/increase/api/errors/UnexpectedStatusCodeException.kt index f051da1a7..a63feaeb5 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/errors/UnexpectedStatusCodeException.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/errors/UnexpectedStatusCodeException.kt @@ -5,6 +5,7 @@ package com.increase.api.errors import com.increase.api.core.JsonValue import com.increase.api.core.checkRequired import com.increase.api.core.http.Headers +import com.increase.api.core.jsonMapper import java.util.Optional import kotlin.jvm.optionals.getOrNull @@ -14,7 +15,11 @@ private constructor( private val headers: Headers, private val body: JsonValue, cause: Throwable?, -) : IncreaseServiceException("$statusCode: $body", cause) { +) : + IncreaseServiceException( + "$statusCode: ${if (body.isMissing()) "Unknown" else jsonMapper().writeValueAsString(body)}", + cause, + ) { override fun statusCode(): Int = statusCode diff --git a/increase-java-core/src/main/kotlin/com/increase/api/errors/UnprocessableEntityException.kt b/increase-java-core/src/main/kotlin/com/increase/api/errors/UnprocessableEntityException.kt index 7805edd75..985c6f41e 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/errors/UnprocessableEntityException.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/errors/UnprocessableEntityException.kt @@ -5,12 +5,16 @@ package com.increase.api.errors import com.increase.api.core.JsonValue import com.increase.api.core.checkRequired import com.increase.api.core.http.Headers +import com.increase.api.core.jsonMapper import java.util.Optional import kotlin.jvm.optionals.getOrNull class UnprocessableEntityException private constructor(private val headers: Headers, private val body: JsonValue, cause: Throwable?) : - IncreaseServiceException("422: $body", cause) { + IncreaseServiceException( + "422: ${if (body.isMissing()) "Unknown" else jsonMapper().writeValueAsString(body)}", + cause, + ) { override fun statusCode(): Int = 422 From a49f6d7bcf317381873fb82dea9c73ecef0f5af5 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 4 May 2026 17:19:12 +0000 Subject: [PATCH 2/2] release: 0.541.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ README.md | 10 +++++----- build.gradle.kts | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 33d070bf6..0572f1515 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.540.0" + ".": "0.541.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index e6752cece..3a48ae8e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.541.0 (2026-05-04) + +Full Changelog: [v0.540.0...v0.541.0](https://github.com/Increase/increase-java/compare/v0.540.0...v0.541.0) + +### Features + +* **client:** more robust error parsing ([5b08e39](https://github.com/Increase/increase-java/commit/5b08e3942ce71c60ebc5b36b4535df8e4f92badc)) + ## 0.540.0 (2026-05-04) Full Changelog: [v0.539.0...v0.540.0](https://github.com/Increase/increase-java/compare/v0.539.0...v0.540.0) diff --git a/README.md b/README.md index 68b02ce3c..9ae67ef25 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ -[![Maven Central](https://img.shields.io/maven-central/v/com.increase.api/increase-java)](https://central.sonatype.com/artifact/com.increase.api/increase-java/0.540.0) -[![javadoc](https://javadoc.io/badge2/com.increase.api/increase-java/0.540.0/javadoc.svg)](https://javadoc.io/doc/com.increase.api/increase-java/0.540.0) +[![Maven Central](https://img.shields.io/maven-central/v/com.increase.api/increase-java)](https://central.sonatype.com/artifact/com.increase.api/increase-java/0.541.0) +[![javadoc](https://javadoc.io/badge2/com.increase.api/increase-java/0.541.0/javadoc.svg)](https://javadoc.io/doc/com.increase.api/increase-java/0.541.0) @@ -13,7 +13,7 @@ The Increase Java SDK is similar to the Increase Kotlin SDK but with minor diffe -The REST API documentation can be found on [increase.com](https://increase.com/documentation). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.increase.api/increase-java/0.540.0). +The REST API documentation can be found on [increase.com](https://increase.com/documentation). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.increase.api/increase-java/0.541.0). @@ -24,7 +24,7 @@ The REST API documentation can be found on [increase.com](https://increase.com/d ### Gradle ```kotlin -implementation("com.increase.api:increase-java:0.540.0") +implementation("com.increase.api:increase-java:0.541.0") ``` ### Maven @@ -33,7 +33,7 @@ implementation("com.increase.api:increase-java:0.540.0") com.increase.api increase-java - 0.540.0 + 0.541.0 ``` diff --git a/build.gradle.kts b/build.gradle.kts index 991f89073..6a74e33ac 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ repositories { allprojects { group = "com.increase.api" - version = "0.540.0" // x-release-please-version + version = "0.541.0" // x-release-please-version } subprojects {