From fff8c05b581f12c847f83dd2edea16c6adaebe77 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 13 Aug 2026 22:14:10 +0000 Subject: [PATCH 01/12] fix(docs): link the javadoc badge so the version stays current after release --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6d11dddc..09d4d64c 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![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.13.0) -[![javadoc](https://javadoc.io/badge2/so.prelude.sdk/prelude-java/0.13.0/javadoc.svg)](https://javadoc.io/doc/so.prelude.sdk/prelude-java/0.13.0) +[![javadoc](https://javadoc.io/badge2/so.prelude.sdk/prelude-java/javadoc.svg)](https://javadoc.io/doc/so.prelude.sdk/prelude-java/0.13.0) From 775f43b7f440b730a8e71e913963eec408fac8a1 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2026 19:46:26 +0000 Subject: [PATCH 02/12] chore(internal): codegen related update --- prelude-java-core/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/prelude-java-core/build.gradle.kts b/prelude-java-core/build.gradle.kts index 31f51449..a7e9edc5 100644 --- a/prelude-java-core/build.gradle.kts +++ b/prelude-java-core/build.gradle.kts @@ -38,4 +38,5 @@ dependencies { testImplementation("org.mockito:mockito-core:5.14.2") testImplementation("org.mockito:mockito-junit-jupiter:5.14.2") testImplementation("org.mockito.kotlin:mockito-kotlin:4.1.0") + testImplementation("org.slf4j:slf4j-nop:1.7.36") } From cfa0c6fb36fa1194af2434a1e28113e8dde2221f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 19 Aug 2026 13:53:45 +0000 Subject: [PATCH 03/12] feat(api): api update --- .stats.yml | 4 ++-- .../so/prelude/sdk/models/WatchPredictResponse.kt | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 408b5808..03418424 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 19 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-bceac2d798eb515f8fd14406ac6f50de2aa983a3674cecb63167c0d0d52cfbc9.yml -openapi_spec_hash: b9963276e8c0178b0c45bf2ea07f63fb +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-994c4cb5ca1ff854e2dd4b0ccac2cebce30130b5c61eec6174a10bc619b48df3.yml +openapi_spec_hash: 7bf85f915dd85a2e6fc6f05a747a06cf config_hash: 3dbe79c14ecd9a153418249f9155d159 diff --git a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/WatchPredictResponse.kt b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/WatchPredictResponse.kt index fbb69346..5e4f5c55 100644 --- a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/WatchPredictResponse.kt +++ b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/WatchPredictResponse.kt @@ -70,6 +70,8 @@ private constructor( /** * The risk factors that contributed to the suspicious prediction. Only present when prediction * is "suspicious" and the anti-fraud system detected specific risk signals. + * * `account_risk_profile` - The target matches a risk profile derived from the outcomes + * reported on your own account, rather than from a signal shared across accounts. * * `behavioral_pattern` - The phone number past behavior during verification flows exhibits * suspicious patterns. * * `device_attribute` - The device exhibits characteristics associated with suspicious @@ -214,6 +216,8 @@ private constructor( /** * The risk factors that contributed to the suspicious prediction. Only present when * prediction is "suspicious" and the anti-fraud system detected specific risk signals. + * * `account_risk_profile` - The target matches a risk profile derived from the outcomes + * reported on your own account, rather than from a signal shared across accounts. * * `behavioral_pattern` - The phone number past behavior during verification flows * exhibits suspicious patterns. * * `device_attribute` - The device exhibits characteristics associated with suspicious @@ -496,6 +500,8 @@ private constructor( companion object { + @JvmField val ACCOUNT_RISK_PROFILE = of("account_risk_profile") + @JvmField val BEHAVIORAL_PATTERN = of("behavioral_pattern") @JvmField val DEVICE_ATTRIBUTE = of("device_attribute") @@ -521,6 +527,7 @@ private constructor( /** An enum containing [RiskFactor]'s known values. */ enum class Known { + ACCOUNT_RISK_PROFILE, BEHAVIORAL_PATTERN, DEVICE_ATTRIBUTE, FRAUD_DATABASE, @@ -543,6 +550,7 @@ private constructor( * - It was constructed with an arbitrary value using the [of] method. */ enum class Value { + ACCOUNT_RISK_PROFILE, BEHAVIORAL_PATTERN, DEVICE_ATTRIBUTE, FRAUD_DATABASE, @@ -568,6 +576,7 @@ private constructor( */ fun value(): Value = when (this) { + ACCOUNT_RISK_PROFILE -> Value.ACCOUNT_RISK_PROFILE BEHAVIORAL_PATTERN -> Value.BEHAVIORAL_PATTERN DEVICE_ATTRIBUTE -> Value.DEVICE_ATTRIBUTE FRAUD_DATABASE -> Value.FRAUD_DATABASE @@ -592,6 +601,7 @@ private constructor( */ fun known(): Known = when (this) { + ACCOUNT_RISK_PROFILE -> Known.ACCOUNT_RISK_PROFILE BEHAVIORAL_PATTERN -> Known.BEHAVIORAL_PATTERN DEVICE_ATTRIBUTE -> Known.DEVICE_ATTRIBUTE FRAUD_DATABASE -> Known.FRAUD_DATABASE From 8181844928f29fe11414bff4423db2c6eabfb6b7 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 19 Aug 2026 17:27:18 +0000 Subject: [PATCH 04/12] chore(internal): allow the mock server port to be set with STAINLESS_MOCK_PORT --- scripts/mock | 13 ++++++++++--- scripts/test | 12 +++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/scripts/mock b/scripts/mock index feebe5ed..984e1c00 100755 --- a/scripts/mock +++ b/scripts/mock @@ -4,6 +4,11 @@ set -e cd "$(dirname "$0")/.." +if [ "$1" == "--install" ]; then + npm exec --package=@stdy/cli@0.22.1 -- steady --version + exit 0 +fi + if [[ -n "$1" && "$1" != '--'* ]]; then URL="$1" shift @@ -20,16 +25,18 @@ fi echo "==> Starting mock server with URL ${URL}" # Run steady mock on the given spec +MOCK_PORT="${STAINLESS_MOCK_PORT:-4010}" + if [ "$1" == "--daemon" ]; then # Pre-install the package so the download doesn't eat into the startup timeout npm exec --package=@stdy/cli@0.22.1 -- steady --version - npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log & + npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p "$MOCK_PORT" --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log & # Wait for server to come online via health endpoint (max 30s) echo -n "Waiting for server" attempts=0 - while ! curl --silent --fail "http://127.0.0.1:4010/_x-steady/health" >/dev/null 2>&1; do + while ! curl --silent --fail "http://127.0.0.1:$MOCK_PORT/_x-steady/health" >/dev/null 2>&1; do if ! kill -0 $! 2>/dev/null; then echo cat .stdy.log @@ -48,5 +55,5 @@ if [ "$1" == "--daemon" ]; then echo else - npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" + npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p "$MOCK_PORT" --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" fi diff --git a/scripts/test b/scripts/test index 7d7f08e3..29eb2fa9 100755 --- a/scripts/test +++ b/scripts/test @@ -9,8 +9,10 @@ GREEN='\033[0;32m' YELLOW='\033[0;33m' NC='\033[0m' # No Color +MOCK_PORT="${STAINLESS_MOCK_PORT:-4010}" + function steady_is_running() { - curl --silent "http://127.0.0.1:4010/_x-steady/health" >/dev/null 2>&1 + curl --silent "http://127.0.0.1:$MOCK_PORT/_x-steady/health" >/dev/null 2>&1 } kill_server_on_port() { @@ -27,7 +29,7 @@ function is_overriding_api_base_url() { if ! is_overriding_api_base_url && ! steady_is_running ; then # When we exit this script, make sure to kill the background mock server process - trap 'kill_server_on_port 4010' EXIT + trap 'kill_server_on_port "$MOCK_PORT"' EXIT # Start the dev server ./scripts/mock --daemon @@ -43,7 +45,7 @@ elif ! steady_is_running ; then echo -e "To run the server, pass in the path or url of your OpenAPI" echo -e "spec to the steady command:" echo - echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.22.1 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}" + echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.22.1 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p $MOCK_PORT --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}" echo exit 1 @@ -52,5 +54,9 @@ else echo fi +if [ -n "${STAINLESS_MOCK_PORT:-}" ] && ! is_overriding_api_base_url ; then + export TEST_API_BASE_URL="http://127.0.0.1:$MOCK_PORT" +fi + echo "==> Running tests" ./gradlew test "$@" From 3b9b34cde0cbf3efa398cab5aedecd961cff745b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 26 Aug 2026 13:47:30 +0000 Subject: [PATCH 05/12] feat(api): api update --- .stats.yml | 4 +- .../sdk/models/VerificationCreateParams.kt | 56 ++++++++++++++++++- .../prelude/sdk/models/WatchPredictParams.kt | 56 ++++++++++++++++++- .../models/VerificationCreateParamsTest.kt | 3 + .../sdk/models/WatchPredictParamsTest.kt | 3 + .../prelude/sdk/services/ErrorHandlingTest.kt | 17 ++++++ .../prelude/sdk/services/ServiceParamsTest.kt | 1 + .../async/VerificationServiceAsyncTest.kt | 1 + .../services/async/WatchServiceAsyncTest.kt | 1 + .../blocking/VerificationServiceTest.kt | 1 + .../sdk/services/blocking/WatchServiceTest.kt | 1 + 11 files changed, 140 insertions(+), 4 deletions(-) diff --git a/.stats.yml b/.stats.yml index 03418424..d012bc88 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 19 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-994c4cb5ca1ff854e2dd4b0ccac2cebce30130b5c61eec6174a10bc619b48df3.yml -openapi_spec_hash: 7bf85f915dd85a2e6fc6f05a747a06cf +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-85efd6925654a59860b926f34cbf05bacbf7de258c1da29a523ad3b3c04c52d8.yml +openapi_spec_hash: 6fe5c6605f24a2e7dc4306d3cdabdc90 config_hash: 3dbe79c14ecd9a153418249f9155d159 diff --git a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/VerificationCreateParams.kt b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/VerificationCreateParams.kt index 976e6e51..8bd0ed53 100644 --- a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/VerificationCreateParams.kt +++ b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/VerificationCreateParams.kt @@ -3005,6 +3005,7 @@ private constructor( private val deviceId: JsonField, private val deviceModel: JsonField, private val devicePlatform: JsonField, + private val existingUser: JsonField, private val ip: JsonField, private val isTrustedUser: JsonField, private val ja4Fingerprint: JsonField, @@ -3027,6 +3028,9 @@ private constructor( @JsonProperty("device_platform") @ExcludeMissing devicePlatform: JsonField = JsonMissing.of(), + @JsonProperty("existing_user") + @ExcludeMissing + existingUser: JsonField = JsonMissing.of(), @JsonProperty("ip") @ExcludeMissing ip: JsonField = JsonMissing.of(), @JsonProperty("is_trusted_user") @ExcludeMissing @@ -3045,6 +3049,7 @@ private constructor( deviceId, deviceModel, devicePlatform, + existingUser, ip, isTrustedUser, ja4Fingerprint, @@ -3088,6 +3093,18 @@ private constructor( fun devicePlatform(): Optional = devicePlatform.getOptional("device_platform") + /** + * Whether the end-user already exists in your system, for example an existing account + * signing in again rather than a first-time signup. Unlike `is_trusted_user`, this signal + * does not bypass fraud checks; it is taken into account as one additional anti-fraud + * signal. For more details, refer to + * [Signals](/verify/v2/documentation/prevent-fraud#signals). + * + * @throws PreludeInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). + */ + fun existingUser(): Optional = existingUser.getOptional("existing_user") + /** * The public IP v4 or v6 address of the end-user's device. You should collect this from * your backend. If your backend is behind a proxy, use the `X-Forwarded-For`, `Forwarded`, @@ -3172,6 +3189,16 @@ private constructor( @ExcludeMissing fun _devicePlatform(): JsonField = devicePlatform + /** + * Returns the raw JSON value of [existingUser]. + * + * Unlike [existingUser], this method doesn't throw if the JSON field has an unexpected + * type. + */ + @JsonProperty("existing_user") + @ExcludeMissing + fun _existingUser(): JsonField = existingUser + /** * Returns the raw JSON value of [ip]. * @@ -3238,6 +3265,7 @@ private constructor( private var deviceId: JsonField = JsonMissing.of() private var deviceModel: JsonField = JsonMissing.of() private var devicePlatform: JsonField = JsonMissing.of() + private var existingUser: JsonField = JsonMissing.of() private var ip: JsonField = JsonMissing.of() private var isTrustedUser: JsonField = JsonMissing.of() private var ja4Fingerprint: JsonField = JsonMissing.of() @@ -3251,6 +3279,7 @@ private constructor( deviceId = signals.deviceId deviceModel = signals.deviceModel devicePlatform = signals.devicePlatform + existingUser = signals.existingUser ip = signals.ip isTrustedUser = signals.isTrustedUser ja4Fingerprint = signals.ja4Fingerprint @@ -3316,6 +3345,26 @@ private constructor( this.devicePlatform = devicePlatform } + /** + * Whether the end-user already exists in your system, for example an existing account + * signing in again rather than a first-time signup. Unlike `is_trusted_user`, this + * signal does not bypass fraud checks; it is taken into account as one additional + * anti-fraud signal. For more details, refer to + * [Signals](/verify/v2/documentation/prevent-fraud#signals). + */ + fun existingUser(existingUser: Boolean) = existingUser(JsonField.of(existingUser)) + + /** + * Sets [Builder.existingUser] to an arbitrary JSON value. + * + * You should usually call [Builder.existingUser] with a well-typed [Boolean] value + * instead. This method is primarily for setting the field to an undocumented or not yet + * supported value. + */ + fun existingUser(existingUser: JsonField) = apply { + this.existingUser = existingUser + } + /** * The public IP v4 or v6 address of the end-user's device. You should collect this from * your backend. If your backend is behind a proxy, use the `X-Forwarded-For`, @@ -3428,6 +3477,7 @@ private constructor( deviceId, deviceModel, devicePlatform, + existingUser, ip, isTrustedUser, ja4Fingerprint, @@ -3457,6 +3507,7 @@ private constructor( deviceId() deviceModel() devicePlatform().ifPresent { it.validate() } + existingUser() ip() isTrustedUser() ja4Fingerprint() @@ -3485,6 +3536,7 @@ private constructor( (if (deviceId.asKnown().isPresent) 1 else 0) + (if (deviceModel.asKnown().isPresent) 1 else 0) + (devicePlatform.asKnown().getOrNull()?.validity() ?: 0) + + (if (existingUser.asKnown().isPresent) 1 else 0) + (if (ip.asKnown().isPresent) 1 else 0) + (if (isTrustedUser.asKnown().isPresent) 1 else 0) + (if (ja4Fingerprint.asKnown().isPresent) 1 else 0) + @@ -3662,6 +3714,7 @@ private constructor( deviceId == other.deviceId && deviceModel == other.deviceModel && devicePlatform == other.devicePlatform && + existingUser == other.existingUser && ip == other.ip && isTrustedUser == other.isTrustedUser && ja4Fingerprint == other.ja4Fingerprint && @@ -3676,6 +3729,7 @@ private constructor( deviceId, deviceModel, devicePlatform, + existingUser, ip, isTrustedUser, ja4Fingerprint, @@ -3688,7 +3742,7 @@ private constructor( override fun hashCode(): Int = hashCode override fun toString() = - "Signals{appVersion=$appVersion, deviceId=$deviceId, deviceModel=$deviceModel, devicePlatform=$devicePlatform, ip=$ip, isTrustedUser=$isTrustedUser, ja4Fingerprint=$ja4Fingerprint, osVersion=$osVersion, userAgent=$userAgent, additionalProperties=$additionalProperties}" + "Signals{appVersion=$appVersion, deviceId=$deviceId, deviceModel=$deviceModel, devicePlatform=$devicePlatform, existingUser=$existingUser, ip=$ip, isTrustedUser=$isTrustedUser, ja4Fingerprint=$ja4Fingerprint, osVersion=$osVersion, userAgent=$userAgent, additionalProperties=$additionalProperties}" } override fun equals(other: Any?): Boolean { diff --git a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/WatchPredictParams.kt b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/WatchPredictParams.kt index b49584c3..eb21b53b 100644 --- a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/WatchPredictParams.kt +++ b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/WatchPredictParams.kt @@ -1144,6 +1144,7 @@ private constructor( private val deviceId: JsonField, private val deviceModel: JsonField, private val devicePlatform: JsonField, + private val existingUser: JsonField, private val ip: JsonField, private val isTrustedUser: JsonField, private val ja4Fingerprint: JsonField, @@ -1166,6 +1167,9 @@ private constructor( @JsonProperty("device_platform") @ExcludeMissing devicePlatform: JsonField = JsonMissing.of(), + @JsonProperty("existing_user") + @ExcludeMissing + existingUser: JsonField = JsonMissing.of(), @JsonProperty("ip") @ExcludeMissing ip: JsonField = JsonMissing.of(), @JsonProperty("is_trusted_user") @ExcludeMissing @@ -1184,6 +1188,7 @@ private constructor( deviceId, deviceModel, devicePlatform, + existingUser, ip, isTrustedUser, ja4Fingerprint, @@ -1227,6 +1232,18 @@ private constructor( fun devicePlatform(): Optional = devicePlatform.getOptional("device_platform") + /** + * Whether the end-user already exists in your system, for example an existing account + * signing in again rather than a first-time signup. Unlike `is_trusted_user`, this signal + * does not bypass fraud checks; it is taken into account as one additional anti-fraud + * signal. For more details, refer to + * [Signals](/verify/v2/documentation/prevent-fraud#signals). + * + * @throws PreludeInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). + */ + fun existingUser(): Optional = existingUser.getOptional("existing_user") + /** * The public IP v4 or v6 address of the end-user's device. You should collect this from * your backend. If your backend is behind a proxy, use the `X-Forwarded-For`, `Forwarded`, @@ -1311,6 +1328,16 @@ private constructor( @ExcludeMissing fun _devicePlatform(): JsonField = devicePlatform + /** + * Returns the raw JSON value of [existingUser]. + * + * Unlike [existingUser], this method doesn't throw if the JSON field has an unexpected + * type. + */ + @JsonProperty("existing_user") + @ExcludeMissing + fun _existingUser(): JsonField = existingUser + /** * Returns the raw JSON value of [ip]. * @@ -1377,6 +1404,7 @@ private constructor( private var deviceId: JsonField = JsonMissing.of() private var deviceModel: JsonField = JsonMissing.of() private var devicePlatform: JsonField = JsonMissing.of() + private var existingUser: JsonField = JsonMissing.of() private var ip: JsonField = JsonMissing.of() private var isTrustedUser: JsonField = JsonMissing.of() private var ja4Fingerprint: JsonField = JsonMissing.of() @@ -1390,6 +1418,7 @@ private constructor( deviceId = signals.deviceId deviceModel = signals.deviceModel devicePlatform = signals.devicePlatform + existingUser = signals.existingUser ip = signals.ip isTrustedUser = signals.isTrustedUser ja4Fingerprint = signals.ja4Fingerprint @@ -1455,6 +1484,26 @@ private constructor( this.devicePlatform = devicePlatform } + /** + * Whether the end-user already exists in your system, for example an existing account + * signing in again rather than a first-time signup. Unlike `is_trusted_user`, this + * signal does not bypass fraud checks; it is taken into account as one additional + * anti-fraud signal. For more details, refer to + * [Signals](/verify/v2/documentation/prevent-fraud#signals). + */ + fun existingUser(existingUser: Boolean) = existingUser(JsonField.of(existingUser)) + + /** + * Sets [Builder.existingUser] to an arbitrary JSON value. + * + * You should usually call [Builder.existingUser] with a well-typed [Boolean] value + * instead. This method is primarily for setting the field to an undocumented or not yet + * supported value. + */ + fun existingUser(existingUser: JsonField) = apply { + this.existingUser = existingUser + } + /** * The public IP v4 or v6 address of the end-user's device. You should collect this from * your backend. If your backend is behind a proxy, use the `X-Forwarded-For`, @@ -1567,6 +1616,7 @@ private constructor( deviceId, deviceModel, devicePlatform, + existingUser, ip, isTrustedUser, ja4Fingerprint, @@ -1596,6 +1646,7 @@ private constructor( deviceId() deviceModel() devicePlatform().ifPresent { it.validate() } + existingUser() ip() isTrustedUser() ja4Fingerprint() @@ -1624,6 +1675,7 @@ private constructor( (if (deviceId.asKnown().isPresent) 1 else 0) + (if (deviceModel.asKnown().isPresent) 1 else 0) + (devicePlatform.asKnown().getOrNull()?.validity() ?: 0) + + (if (existingUser.asKnown().isPresent) 1 else 0) + (if (ip.asKnown().isPresent) 1 else 0) + (if (isTrustedUser.asKnown().isPresent) 1 else 0) + (if (ja4Fingerprint.asKnown().isPresent) 1 else 0) + @@ -1801,6 +1853,7 @@ private constructor( deviceId == other.deviceId && deviceModel == other.deviceModel && devicePlatform == other.devicePlatform && + existingUser == other.existingUser && ip == other.ip && isTrustedUser == other.isTrustedUser && ja4Fingerprint == other.ja4Fingerprint && @@ -1815,6 +1868,7 @@ private constructor( deviceId, deviceModel, devicePlatform, + existingUser, ip, isTrustedUser, ja4Fingerprint, @@ -1827,7 +1881,7 @@ private constructor( override fun hashCode(): Int = hashCode override fun toString() = - "Signals{appVersion=$appVersion, deviceId=$deviceId, deviceModel=$deviceModel, devicePlatform=$devicePlatform, ip=$ip, isTrustedUser=$isTrustedUser, ja4Fingerprint=$ja4Fingerprint, osVersion=$osVersion, userAgent=$userAgent, additionalProperties=$additionalProperties}" + "Signals{appVersion=$appVersion, deviceId=$deviceId, deviceModel=$deviceModel, devicePlatform=$devicePlatform, existingUser=$existingUser, ip=$ip, isTrustedUser=$isTrustedUser, ja4Fingerprint=$ja4Fingerprint, osVersion=$osVersion, userAgent=$userAgent, additionalProperties=$additionalProperties}" } override fun equals(other: Any?): Boolean { diff --git a/prelude-java-core/src/test/kotlin/so/prelude/sdk/models/VerificationCreateParamsTest.kt b/prelude-java-core/src/test/kotlin/so/prelude/sdk/models/VerificationCreateParamsTest.kt index 7849508a..391e9e34 100644 --- a/prelude-java-core/src/test/kotlin/so/prelude/sdk/models/VerificationCreateParamsTest.kt +++ b/prelude-java-core/src/test/kotlin/so/prelude/sdk/models/VerificationCreateParamsTest.kt @@ -54,6 +54,7 @@ internal class VerificationCreateParamsTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -117,6 +118,7 @@ internal class VerificationCreateParamsTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -177,6 +179,7 @@ internal class VerificationCreateParamsTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") diff --git a/prelude-java-core/src/test/kotlin/so/prelude/sdk/models/WatchPredictParamsTest.kt b/prelude-java-core/src/test/kotlin/so/prelude/sdk/models/WatchPredictParamsTest.kt index 52df9bbb..362cff8d 100644 --- a/prelude-java-core/src/test/kotlin/so/prelude/sdk/models/WatchPredictParamsTest.kt +++ b/prelude-java-core/src/test/kotlin/so/prelude/sdk/models/WatchPredictParamsTest.kt @@ -24,6 +24,7 @@ internal class WatchPredictParamsTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(WatchPredictParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -56,6 +57,7 @@ internal class WatchPredictParamsTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(WatchPredictParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -86,6 +88,7 @@ internal class WatchPredictParamsTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(WatchPredictParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") diff --git a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/ErrorHandlingTest.kt b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/ErrorHandlingTest.kt index 1faa96e0..4e027818 100644 --- a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/ErrorHandlingTest.kt +++ b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/ErrorHandlingTest.kt @@ -122,6 +122,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -204,6 +205,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -286,6 +288,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -368,6 +371,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -450,6 +454,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -532,6 +537,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -614,6 +620,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -696,6 +703,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -778,6 +786,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -860,6 +869,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -942,6 +952,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -1024,6 +1035,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -1106,6 +1118,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -1188,6 +1201,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -1270,6 +1284,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -1352,6 +1367,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") @@ -1432,6 +1448,7 @@ internal class ErrorHandlingTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") diff --git a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/ServiceParamsTest.kt b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/ServiceParamsTest.kt index d93d0b33..460f418b 100644 --- a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/ServiceParamsTest.kt +++ b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/ServiceParamsTest.kt @@ -89,6 +89,7 @@ internal class ServiceParamsTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") diff --git a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/async/VerificationServiceAsyncTest.kt b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/async/VerificationServiceAsyncTest.kt index a6620fcf..fac0dab0 100644 --- a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/async/VerificationServiceAsyncTest.kt +++ b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/async/VerificationServiceAsyncTest.kt @@ -72,6 +72,7 @@ internal class VerificationServiceAsyncTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") diff --git a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/async/WatchServiceAsyncTest.kt b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/async/WatchServiceAsyncTest.kt index ec141ca1..b30e19a3 100644 --- a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/async/WatchServiceAsyncTest.kt +++ b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/async/WatchServiceAsyncTest.kt @@ -43,6 +43,7 @@ internal class WatchServiceAsyncTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(WatchPredictParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") diff --git a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/blocking/VerificationServiceTest.kt b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/blocking/VerificationServiceTest.kt index 6f78064b..0001a2d2 100644 --- a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/blocking/VerificationServiceTest.kt +++ b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/blocking/VerificationServiceTest.kt @@ -72,6 +72,7 @@ internal class VerificationServiceTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(VerificationCreateParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") diff --git a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/blocking/WatchServiceTest.kt b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/blocking/WatchServiceTest.kt index 8c4511a7..7bee3348 100644 --- a/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/blocking/WatchServiceTest.kt +++ b/prelude-java-core/src/test/kotlin/so/prelude/sdk/services/blocking/WatchServiceTest.kt @@ -43,6 +43,7 @@ internal class WatchServiceTest { .deviceId("8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2") .deviceModel("iPhone17,2") .devicePlatform(WatchPredictParams.Signals.DevicePlatform.IOS) + .existingUser(false) .ip("203.0.113.123") .isTrustedUser(false) .ja4Fingerprint("t13d1516h2_8daaf6152771_e5627efa2ab1") From 785fcbf76078fa97691d71ca4656caa7f1b0068d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2026 13:08:47 +0000 Subject: [PATCH 06/12] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index d012bc88..8ed1de9b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 19 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-85efd6925654a59860b926f34cbf05bacbf7de258c1da29a523ad3b3c04c52d8.yml -openapi_spec_hash: 6fe5c6605f24a2e7dc4306d3cdabdc90 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-68cf854dcc1077fb98f800d0b107f9bc257f5fbc474b5df8b86f2d92784ebffa.yml +openapi_spec_hash: 992ba8a60b39cbcbb5f51597179b6ec8 config_hash: 3dbe79c14ecd9a153418249f9155d159 From a31a60caa06cc18cb91ca8a489539d9387552dce Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2026 12:25:14 +0000 Subject: [PATCH 07/12] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 8ed1de9b..01c838d6 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 19 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-68cf854dcc1077fb98f800d0b107f9bc257f5fbc474b5df8b86f2d92784ebffa.yml -openapi_spec_hash: 992ba8a60b39cbcbb5f51597179b6ec8 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-3ec6b635d14ce8cebd3ddf861bd0a47ff39fcbffdf7a31a95e93783396f2bd32.yml +openapi_spec_hash: f59b87eca5dd40944c566d91bcc25b3b config_hash: 3dbe79c14ecd9a153418249f9155d159 From 9be3f6a2da42ba7e7f1c87ddcecd9023eb6f11b6 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2026 13:03:44 +0000 Subject: [PATCH 08/12] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 01c838d6..ac7f50eb 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 19 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-3ec6b635d14ce8cebd3ddf861bd0a47ff39fcbffdf7a31a95e93783396f2bd32.yml -openapi_spec_hash: f59b87eca5dd40944c566d91bcc25b3b +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-44b1e9e0df95f1ea006da6358afc86dbd9c3f06e474b2c26f84fe6a7d616d9a8.yml +openapi_spec_hash: b87f9662a63842d6e9f29cd52cad9ae1 config_hash: 3dbe79c14ecd9a153418249f9155d159 From ebcb5d20a7604af621ea2f631c98bf9f6fb2980f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2026 11:34:59 +0000 Subject: [PATCH 09/12] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index ac7f50eb..e02d309d 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 19 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-44b1e9e0df95f1ea006da6358afc86dbd9c3f06e474b2c26f84fe6a7d616d9a8.yml -openapi_spec_hash: b87f9662a63842d6e9f29cd52cad9ae1 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-eeb1e1ac065eb60183bc4a7dd7a14c16681f17ba6d56f3ab673b1e523f1308ed.yml +openapi_spec_hash: a81344ec2f7343c99856e09232009ceb config_hash: 3dbe79c14ecd9a153418249f9155d159 From b7041632f2221e53a08eee85c0ccde5d84ef1dec Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2026 13:22:23 +0000 Subject: [PATCH 10/12] feat(api): api update --- .stats.yml | 4 ++-- .../models/NotifyGetSubscriptionConfigParams.kt | 6 +++++- .../NotifyGetSubscriptionPhoneNumberParams.kt | 2 ++ .../models/NotifyListSubscriptionConfigsParams.kt | 2 ++ ...otifyListSubscriptionPhoneNumberEventsParams.kt | 2 ++ .../NotifyListSubscriptionPhoneNumbersParams.kt | 2 ++ .../sdk/services/async/NotifyServiceAsync.kt | 14 +++++++++++++- .../prelude/sdk/services/blocking/NotifyService.kt | 14 +++++++++++++- 8 files changed, 41 insertions(+), 5 deletions(-) diff --git a/.stats.yml b/.stats.yml index e02d309d..b49561c5 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 19 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-eeb1e1ac065eb60183bc4a7dd7a14c16681f17ba6d56f3ab673b1e523f1308ed.yml -openapi_spec_hash: a81344ec2f7343c99856e09232009ceb +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-cf635e479af808341d4353bdc6bd5dc98d6dbc0391151b67178eb4d0f8ee1d91.yml +openapi_spec_hash: f4b9f452b031955fd70901afece8eaa8 config_hash: 3dbe79c14ecd9a153418249f9155d159 diff --git a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyGetSubscriptionConfigParams.kt b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyGetSubscriptionConfigParams.kt index 153c0e8a..0c885373 100644 --- a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyGetSubscriptionConfigParams.kt +++ b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyGetSubscriptionConfigParams.kt @@ -9,7 +9,11 @@ import so.prelude.sdk.core.Params import so.prelude.sdk.core.http.Headers import so.prelude.sdk.core.http.QueryParams -/** Retrieve a specific subscription management configuration by its ID. */ +/** + * Retrieve a specific subscription management configuration by its ID. + * + * In order to get access to this endpoint, contact our support team. + */ class NotifyGetSubscriptionConfigParams private constructor( private val configId: String?, diff --git a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyGetSubscriptionPhoneNumberParams.kt b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyGetSubscriptionPhoneNumberParams.kt index 147d98e5..23e24d5d 100644 --- a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyGetSubscriptionPhoneNumberParams.kt +++ b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyGetSubscriptionPhoneNumberParams.kt @@ -13,6 +13,8 @@ import so.prelude.sdk.core.http.QueryParams /** * Retrieve the current subscription status for a specific phone number within a subscription * configuration. + * + * In order to get access to this endpoint, contact our support team. */ class NotifyGetSubscriptionPhoneNumberParams private constructor( diff --git a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionConfigsParams.kt b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionConfigsParams.kt index c68ca563..03c02ad3 100644 --- a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionConfigsParams.kt +++ b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionConfigsParams.kt @@ -14,6 +14,8 @@ import so.prelude.sdk.core.http.QueryParams * * Each configuration represents a subscription management setup with phone numbers for receiving * opt-out/opt-in requests and a callback URL for webhook events. + * + * In order to get access to this endpoint, contact our support team. */ class NotifyListSubscriptionConfigsParams private constructor( diff --git a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionPhoneNumberEventsParams.kt b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionPhoneNumberEventsParams.kt index 5c0d3b76..347160a8 100644 --- a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionPhoneNumberEventsParams.kt +++ b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionPhoneNumberEventsParams.kt @@ -15,6 +15,8 @@ import so.prelude.sdk.core.http.QueryParams * within a subscription configuration. * * Events are ordered by timestamp in descending order (most recent first). + * + * In order to get access to this endpoint, contact our support team. */ class NotifyListSubscriptionPhoneNumberEventsParams private constructor( diff --git a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionPhoneNumbersParams.kt b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionPhoneNumbersParams.kt index 2ae701b0..9d552243 100644 --- a/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionPhoneNumbersParams.kt +++ b/prelude-java-core/src/main/kotlin/so/prelude/sdk/models/NotifyListSubscriptionPhoneNumbersParams.kt @@ -18,6 +18,8 @@ import so.prelude.sdk.errors.PreludeInvalidDataException * subscription configuration. * * You can optionally filter by subscription state (SUB or UNSUB). + * + * In order to get access to this endpoint, contact our support team. */ class NotifyListSubscriptionPhoneNumbersParams private constructor( diff --git a/prelude-java-core/src/main/kotlin/so/prelude/sdk/services/async/NotifyServiceAsync.kt b/prelude-java-core/src/main/kotlin/so/prelude/sdk/services/async/NotifyServiceAsync.kt index 04627945..7acfade2 100644 --- a/prelude-java-core/src/main/kotlin/so/prelude/sdk/services/async/NotifyServiceAsync.kt +++ b/prelude-java-core/src/main/kotlin/so/prelude/sdk/services/async/NotifyServiceAsync.kt @@ -37,7 +37,11 @@ interface NotifyServiceAsync { */ fun withOptions(modifier: Consumer): NotifyServiceAsync - /** Retrieve a specific subscription management configuration by its ID. */ + /** + * Retrieve a specific subscription management configuration by its ID. + * + * In order to get access to this endpoint, contact our support team. + */ fun getSubscriptionConfig( configId: String ): CompletableFuture = @@ -80,6 +84,8 @@ interface NotifyServiceAsync { /** * Retrieve the current subscription status for a specific phone number within a subscription * configuration. + * + * In order to get access to this endpoint, contact our support team. */ fun getSubscriptionPhoneNumber( phoneNumber: String, @@ -115,6 +121,8 @@ interface NotifyServiceAsync { * * Each configuration represents a subscription management setup with phone numbers for * receiving opt-out/opt-in requests and a callback URL for webhook events. + * + * In order to get access to this endpoint, contact our support team. */ fun listSubscriptionConfigs(): CompletableFuture = listSubscriptionConfigs(NotifyListSubscriptionConfigsParams.none()) @@ -142,6 +150,8 @@ interface NotifyServiceAsync { * within a subscription configuration. * * Events are ordered by timestamp in descending order (most recent first). + * + * In order to get access to this endpoint, contact our support team. */ fun listSubscriptionPhoneNumberEvents( phoneNumber: String, @@ -177,6 +187,8 @@ interface NotifyServiceAsync { * subscription configuration. * * You can optionally filter by subscription state (SUB or UNSUB). + * + * In order to get access to this endpoint, contact our support team. */ fun listSubscriptionPhoneNumbers( configId: String diff --git a/prelude-java-core/src/main/kotlin/so/prelude/sdk/services/blocking/NotifyService.kt b/prelude-java-core/src/main/kotlin/so/prelude/sdk/services/blocking/NotifyService.kt index 4da07157..92fecfbf 100644 --- a/prelude-java-core/src/main/kotlin/so/prelude/sdk/services/blocking/NotifyService.kt +++ b/prelude-java-core/src/main/kotlin/so/prelude/sdk/services/blocking/NotifyService.kt @@ -37,7 +37,11 @@ interface NotifyService { */ fun withOptions(modifier: Consumer): NotifyService - /** Retrieve a specific subscription management configuration by its ID. */ + /** + * Retrieve a specific subscription management configuration by its ID. + * + * In order to get access to this endpoint, contact our support team. + */ fun getSubscriptionConfig(configId: String): NotifyGetSubscriptionConfigResponse = getSubscriptionConfig(configId, NotifyGetSubscriptionConfigParams.none()) @@ -77,6 +81,8 @@ interface NotifyService { /** * Retrieve the current subscription status for a specific phone number within a subscription * configuration. + * + * In order to get access to this endpoint, contact our support team. */ fun getSubscriptionPhoneNumber( phoneNumber: String, @@ -112,6 +118,8 @@ interface NotifyService { * * Each configuration represents a subscription management setup with phone numbers for * receiving opt-out/opt-in requests and a callback URL for webhook events. + * + * In order to get access to this endpoint, contact our support team. */ fun listSubscriptionConfigs(): NotifyListSubscriptionConfigsResponse = listSubscriptionConfigs(NotifyListSubscriptionConfigsParams.none()) @@ -139,6 +147,8 @@ interface NotifyService { * within a subscription configuration. * * Events are ordered by timestamp in descending order (most recent first). + * + * In order to get access to this endpoint, contact our support team. */ fun listSubscriptionPhoneNumberEvents( phoneNumber: String, @@ -174,6 +184,8 @@ interface NotifyService { * subscription configuration. * * You can optionally filter by subscription state (SUB or UNSUB). + * + * In order to get access to this endpoint, contact our support team. */ fun listSubscriptionPhoneNumbers(configId: String): NotifyListSubscriptionPhoneNumbersResponse = listSubscriptionPhoneNumbers(configId, NotifyListSubscriptionPhoneNumbersParams.none()) From 85144b477400ae2840db29caae87e7d26247231f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2026 14:56:45 +0000 Subject: [PATCH 11/12] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index b49561c5..b57e87a9 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 19 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-cf635e479af808341d4353bdc6bd5dc98d6dbc0391151b67178eb4d0f8ee1d91.yml -openapi_spec_hash: f4b9f452b031955fd70901afece8eaa8 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/prelude/prelude-86fc45f417e6468f6a6087f9e35b264b0a350e31385bc078a2027a1f1abd1d15.yml +openapi_spec_hash: fb72aba38ec55a3b6b5162c9f5b4228d config_hash: 3dbe79c14ecd9a153418249f9155d159 From 61e99009b5898581521ff762fe38eba9c1345e04 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2026 14:57:10 +0000 Subject: [PATCH 12/12] release: 0.14.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 21 +++++++++++++++++++++ README.md | 10 +++++----- build.gradle.kts | 2 +- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d52d2b97..a26ebfc1 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.13.0" + ".": "0.14.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 47d5edd8..2d26bd82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## 0.14.0 (2026-09-15) + +Full Changelog: [v0.13.0...v0.14.0](https://github.com/prelude-so/java-sdk/compare/v0.13.0...v0.14.0) + +### Features + +* **api:** api update ([b704163](https://github.com/prelude-so/java-sdk/commit/b7041632f2221e53a08eee85c0ccde5d84ef1dec)) +* **api:** api update ([3b9b34c](https://github.com/prelude-so/java-sdk/commit/3b9b34cde0cbf3efa398cab5aedecd961cff745b)) +* **api:** api update ([cfa0c6f](https://github.com/prelude-so/java-sdk/commit/cfa0c6fb36fa1194af2434a1e28113e8dde2221f)) + + +### Bug Fixes + +* **docs:** link the javadoc badge so the version stays current after release ([fff8c05](https://github.com/prelude-so/java-sdk/commit/fff8c05b581f12c847f83dd2edea16c6adaebe77)) + + +### Chores + +* **internal:** allow the mock server port to be set with STAINLESS_MOCK_PORT ([8181844](https://github.com/prelude-so/java-sdk/commit/8181844928f29fe11414bff4423db2c6eabfb6b7)) +* **internal:** codegen related update ([775f43b](https://github.com/prelude-so/java-sdk/commit/775f43b7f440b730a8e71e913963eec408fac8a1)) + ## 0.13.0 (2026-08-07) Full Changelog: [v0.12.0...v0.13.0](https://github.com/prelude-so/java-sdk/compare/v0.12.0...v0.13.0) diff --git a/README.md b/README.md index 09d4d64c..efdba809 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ -[![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.13.0) -[![javadoc](https://javadoc.io/badge2/so.prelude.sdk/prelude-java/javadoc.svg)](https://javadoc.io/doc/so.prelude.sdk/prelude-java/0.13.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.14.0) +[![javadoc](https://javadoc.io/badge2/so.prelude.sdk/prelude-java/javadoc.svg)](https://javadoc.io/doc/so.prelude.sdk/prelude-java/0.14.0) @@ -13,7 +13,7 @@ It is generated with [Stainless](https://www.stainless.com/). -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.13.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.14.0). @@ -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.13.0") +implementation("so.prelude.sdk:prelude-java:0.14.0") ``` ### Maven @@ -33,7 +33,7 @@ implementation("so.prelude.sdk:prelude-java:0.13.0") so.prelude.sdk prelude-java - 0.13.0 + 0.14.0 ``` diff --git a/build.gradle.kts b/build.gradle.kts index 034e4da7..9913f290 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ repositories { allprojects { group = "so.prelude.sdk" - version = "0.13.0" // x-release-please-version + version = "0.14.0" // x-release-please-version } subprojects {