diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 7657c56..f471069 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.1.0-alpha.27"
+ ".": "0.1.0-alpha.28"
}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 69f3e77..ef7f019 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 15
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/brand-dev%2Fbrand.dev-737dbedd830e2c989387e90a9bb5baa3915306ecfef2e46b09d02cb1879f043c.yml
-openapi_spec_hash: 7bc21f4c6d5fd39c1a3b22626846ca87
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/brand-dev%2Fbrand.dev-73562e26b663cf10185b9e98966accf5f151c6d3cf99b5e060ce5a847045e383.yml
+openapi_spec_hash: bf5994966b84f9dda998ad5059ff8318
config_hash: 6f10592c7d0c3bafefc1271472283217
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ba339d0..929b089 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
# Changelog
+## 0.1.0-alpha.28 (2026-02-07)
+
+Full Changelog: [v0.1.0-alpha.27...v0.1.0-alpha.28](https://github.com/brand-dot-dev/java-sdk/compare/v0.1.0-alpha.27...v0.1.0-alpha.28)
+
+### Features
+
+* **api:** api update ([e826166](https://github.com/brand-dot-dev/java-sdk/commit/e826166942dc6320cfdce18d760785d60eb83bb0))
+
+
+### Chores
+
+* **internal:** upgrade AssertJ ([2656e0a](https://github.com/brand-dot-dev/java-sdk/commit/2656e0ae35284ad0f03187f0d58134162ab81a01))
+
## 0.1.0-alpha.27 (2026-02-02)
Full Changelog: [v0.1.0-alpha.26...v0.1.0-alpha.27](https://github.com/brand-dot-dev/java-sdk/compare/v0.1.0-alpha.26...v0.1.0-alpha.27)
diff --git a/README.md b/README.md
index bbdfde7..8435cb6 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,8 @@
-[](https://central.sonatype.com/artifact/com.branddev.api/brand-dev-java/0.1.0-alpha.27)
-[](https://javadoc.io/doc/com.branddev.api/brand-dev-java/0.1.0-alpha.27)
+[](https://central.sonatype.com/artifact/com.branddev.api/brand-dev-java/0.1.0-alpha.28)
+[](https://javadoc.io/doc/com.branddev.api/brand-dev-java/0.1.0-alpha.28)
@@ -22,7 +22,7 @@ Use the Brand Dev MCP Server to enable AI assistants to interact with this API,
-The REST API documentation can be found on [docs.brand.dev](https://docs.brand.dev/). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.branddev.api/brand-dev-java/0.1.0-alpha.27).
+The REST API documentation can be found on [docs.brand.dev](https://docs.brand.dev/). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.branddev.api/brand-dev-java/0.1.0-alpha.28).
@@ -33,7 +33,7 @@ The REST API documentation can be found on [docs.brand.dev](https://docs.brand.d
### Gradle
```kotlin
-implementation("com.branddev.api:brand-dev-java:0.1.0-alpha.27")
+implementation("com.branddev.api:brand-dev-java:0.1.0-alpha.28")
```
### Maven
@@ -42,7 +42,7 @@ implementation("com.branddev.api:brand-dev-java:0.1.0-alpha.27")
com.branddev.api
brand-dev-java
- 0.1.0-alpha.27
+ 0.1.0-alpha.28
```
diff --git a/brand-dev-java-client-okhttp/build.gradle.kts b/brand-dev-java-client-okhttp/build.gradle.kts
index 0a0b515..76f3cc0 100644
--- a/brand-dev-java-client-okhttp/build.gradle.kts
+++ b/brand-dev-java-client-okhttp/build.gradle.kts
@@ -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")
}
diff --git a/brand-dev-java-core/build.gradle.kts b/brand-dev-java-core/build.gradle.kts
index 6098014..95b0c50 100644
--- a/brand-dev-java-core/build.gradle.kts
+++ b/brand-dev-java-core/build.gradle.kts
@@ -33,7 +33,7 @@ dependencies {
testImplementation(kotlin("test"))
testImplementation(project(":brand-dev-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")
diff --git a/brand-dev-java-core/src/main/kotlin/com/branddev/api/models/brand/BrandAiProductsParams.kt b/brand-dev-java-core/src/main/kotlin/com/branddev/api/models/brand/BrandAiProductsParams.kt
index 478cf30..15e5122 100644
--- a/brand-dev-java-core/src/main/kotlin/com/branddev/api/models/brand/BrandAiProductsParams.kt
+++ b/brand-dev-java-core/src/main/kotlin/com/branddev/api/models/brand/BrandAiProductsParams.kt
@@ -7,7 +7,6 @@ import com.branddev.api.core.JsonField
import com.branddev.api.core.JsonMissing
import com.branddev.api.core.JsonValue
import com.branddev.api.core.Params
-import com.branddev.api.core.checkRequired
import com.branddev.api.core.http.Headers
import com.branddev.api.core.http.QueryParams
import com.branddev.api.errors.BrandDevInvalidDataException
@@ -32,12 +31,23 @@ private constructor(
) : Params {
/**
- * The domain name to analyze
+ * A specific URL to use directly as the starting point for extraction without domain
+ * resolution. Useful when you want to extract products from a specific page rather than
+ * discovering the site's product pages automatically. Either 'domain' or 'directUrl' must be
+ * provided, but not both.
*
- * @throws BrandDevInvalidDataException if the JSON field has an unexpected type or is
- * unexpectedly missing or null (e.g. if the server responded with an unexpected value).
+ * @throws BrandDevInvalidDataException if the JSON field has an unexpected type (e.g. if the
+ * server responded with an unexpected value).
+ */
+ fun directUrl(): Optional = body.directUrl()
+
+ /**
+ * The domain name to analyze. Either 'domain' or 'directUrl' must be provided, but not both.
+ *
+ * @throws BrandDevInvalidDataException if the JSON field has an unexpected type (e.g. if the
+ * server responded with an unexpected value).
*/
- fun domain(): String = body.domain()
+ fun domain(): Optional = body.domain()
/**
* Maximum number of products to extract.
@@ -57,6 +67,13 @@ private constructor(
*/
fun timeoutMs(): Optional = body.timeoutMs()
+ /**
+ * Returns the raw JSON value of [directUrl].
+ *
+ * Unlike [directUrl], this method doesn't throw if the JSON field has an unexpected type.
+ */
+ fun _directUrl(): JsonField = body._directUrl()
+
/**
* Returns the raw JSON value of [domain].
*
@@ -90,14 +107,9 @@ private constructor(
companion object {
- /**
- * Returns a mutable builder for constructing an instance of [BrandAiProductsParams].
- *
- * The following fields are required:
- * ```java
- * .domain()
- * ```
- */
+ @JvmStatic fun none(): BrandAiProductsParams = builder().build()
+
+ /** Returns a mutable builder for constructing an instance of [BrandAiProductsParams]. */
@JvmStatic fun builder() = Builder()
}
@@ -120,13 +132,34 @@ private constructor(
*
* This is generally only useful if you are already constructing the body separately.
* Otherwise, it's more convenient to use the top-level setters instead:
+ * - [directUrl]
* - [domain]
* - [maxProducts]
* - [timeoutMs]
*/
fun body(body: Body) = apply { this.body = body.toBuilder() }
- /** The domain name to analyze */
+ /**
+ * A specific URL to use directly as the starting point for extraction without domain
+ * resolution. Useful when you want to extract products from a specific page rather than
+ * discovering the site's product pages automatically. Either 'domain' or 'directUrl' must
+ * be provided, but not both.
+ */
+ fun directUrl(directUrl: String) = apply { body.directUrl(directUrl) }
+
+ /**
+ * Sets [Builder.directUrl] to an arbitrary JSON value.
+ *
+ * You should usually call [Builder.directUrl] with a well-typed [String] value instead.
+ * This method is primarily for setting the field to an undocumented or not yet supported
+ * value.
+ */
+ fun directUrl(directUrl: JsonField) = apply { body.directUrl(directUrl) }
+
+ /**
+ * The domain name to analyze. Either 'domain' or 'directUrl' must be provided, but not
+ * both.
+ */
fun domain(domain: String) = apply { body.domain(domain) }
/**
@@ -285,13 +318,6 @@ private constructor(
* Returns an immutable instance of [BrandAiProductsParams].
*
* Further updates to this [Builder] will not mutate the returned instance.
- *
- * The following fields are required:
- * ```java
- * .domain()
- * ```
- *
- * @throws IllegalStateException if any required field is unset.
*/
fun build(): BrandAiProductsParams =
BrandAiProductsParams(
@@ -310,6 +336,7 @@ private constructor(
class Body
@JsonCreator(mode = JsonCreator.Mode.DISABLED)
private constructor(
+ private val directUrl: JsonField,
private val domain: JsonField,
private val maxProducts: JsonField,
private val timeoutMs: JsonField,
@@ -318,20 +345,35 @@ private constructor(
@JsonCreator
private constructor(
+ @JsonProperty("directUrl")
+ @ExcludeMissing
+ directUrl: JsonField = JsonMissing.of(),
@JsonProperty("domain") @ExcludeMissing domain: JsonField = JsonMissing.of(),
@JsonProperty("maxProducts")
@ExcludeMissing
maxProducts: JsonField = JsonMissing.of(),
@JsonProperty("timeoutMS") @ExcludeMissing timeoutMs: JsonField = JsonMissing.of(),
- ) : this(domain, maxProducts, timeoutMs, mutableMapOf())
+ ) : this(directUrl, domain, maxProducts, timeoutMs, mutableMapOf())
/**
- * The domain name to analyze
+ * A specific URL to use directly as the starting point for extraction without domain
+ * resolution. Useful when you want to extract products from a specific page rather than
+ * discovering the site's product pages automatically. Either 'domain' or 'directUrl' must
+ * be provided, but not both.
*
- * @throws BrandDevInvalidDataException if the JSON field has an unexpected type or is
- * unexpectedly missing or null (e.g. if the server responded with an unexpected value).
+ * @throws BrandDevInvalidDataException if the JSON field has an unexpected type (e.g. if
+ * the server responded with an unexpected value).
*/
- fun domain(): String = domain.getRequired("domain")
+ fun directUrl(): Optional = directUrl.getOptional("directUrl")
+
+ /**
+ * The domain name to analyze. Either 'domain' or 'directUrl' must be provided, but not
+ * both.
+ *
+ * @throws BrandDevInvalidDataException if the JSON field has an unexpected type (e.g. if
+ * the server responded with an unexpected value).
+ */
+ fun domain(): Optional = domain.getOptional("domain")
/**
* Maximum number of products to extract.
@@ -351,6 +393,13 @@ private constructor(
*/
fun timeoutMs(): Optional = timeoutMs.getOptional("timeoutMS")
+ /**
+ * Returns the raw JSON value of [directUrl].
+ *
+ * Unlike [directUrl], this method doesn't throw if the JSON field has an unexpected type.
+ */
+ @JsonProperty("directUrl") @ExcludeMissing fun _directUrl(): JsonField = directUrl
+
/**
* Returns the raw JSON value of [domain].
*
@@ -388,34 +437,49 @@ private constructor(
companion object {
- /**
- * Returns a mutable builder for constructing an instance of [Body].
- *
- * The following fields are required:
- * ```java
- * .domain()
- * ```
- */
+ /** Returns a mutable builder for constructing an instance of [Body]. */
@JvmStatic fun builder() = Builder()
}
/** A builder for [Body]. */
class Builder internal constructor() {
- private var domain: JsonField? = null
+ private var directUrl: JsonField = JsonMissing.of()
+ private var domain: JsonField = JsonMissing.of()
private var maxProducts: JsonField = JsonMissing.of()
private var timeoutMs: JsonField = JsonMissing.of()
private var additionalProperties: MutableMap = mutableMapOf()
@JvmSynthetic
internal fun from(body: Body) = apply {
+ directUrl = body.directUrl
domain = body.domain
maxProducts = body.maxProducts
timeoutMs = body.timeoutMs
additionalProperties = body.additionalProperties.toMutableMap()
}
- /** The domain name to analyze */
+ /**
+ * A specific URL to use directly as the starting point for extraction without domain
+ * resolution. Useful when you want to extract products from a specific page rather than
+ * discovering the site's product pages automatically. Either 'domain' or 'directUrl'
+ * must be provided, but not both.
+ */
+ fun directUrl(directUrl: String) = directUrl(JsonField.of(directUrl))
+
+ /**
+ * Sets [Builder.directUrl] to an arbitrary JSON value.
+ *
+ * You should usually call [Builder.directUrl] with a well-typed [String] value instead.
+ * This method is primarily for setting the field to an undocumented or not yet
+ * supported value.
+ */
+ fun directUrl(directUrl: JsonField) = apply { this.directUrl = directUrl }
+
+ /**
+ * The domain name to analyze. Either 'domain' or 'directUrl' must be provided, but not
+ * both.
+ */
fun domain(domain: String) = domain(JsonField.of(domain))
/**
@@ -478,21 +542,9 @@ private constructor(
* Returns an immutable instance of [Body].
*
* Further updates to this [Builder] will not mutate the returned instance.
- *
- * The following fields are required:
- * ```java
- * .domain()
- * ```
- *
- * @throws IllegalStateException if any required field is unset.
*/
fun build(): Body =
- Body(
- checkRequired("domain", domain),
- maxProducts,
- timeoutMs,
- additionalProperties.toMutableMap(),
- )
+ Body(directUrl, domain, maxProducts, timeoutMs, additionalProperties.toMutableMap())
}
private var validated: Boolean = false
@@ -502,6 +554,7 @@ private constructor(
return@apply
}
+ directUrl()
domain()
maxProducts()
timeoutMs()
@@ -524,7 +577,8 @@ private constructor(
*/
@JvmSynthetic
internal fun validity(): Int =
- (if (domain.asKnown().isPresent) 1 else 0) +
+ (if (directUrl.asKnown().isPresent) 1 else 0) +
+ (if (domain.asKnown().isPresent) 1 else 0) +
(if (maxProducts.asKnown().isPresent) 1 else 0) +
(if (timeoutMs.asKnown().isPresent) 1 else 0)
@@ -534,6 +588,7 @@ private constructor(
}
return other is Body &&
+ directUrl == other.directUrl &&
domain == other.domain &&
maxProducts == other.maxProducts &&
timeoutMs == other.timeoutMs &&
@@ -541,13 +596,13 @@ private constructor(
}
private val hashCode: Int by lazy {
- Objects.hash(domain, maxProducts, timeoutMs, additionalProperties)
+ Objects.hash(directUrl, domain, maxProducts, timeoutMs, additionalProperties)
}
override fun hashCode(): Int = hashCode
override fun toString() =
- "Body{domain=$domain, maxProducts=$maxProducts, timeoutMs=$timeoutMs, additionalProperties=$additionalProperties}"
+ "Body{directUrl=$directUrl, domain=$domain, maxProducts=$maxProducts, timeoutMs=$timeoutMs, additionalProperties=$additionalProperties}"
}
override fun equals(other: Any?): Boolean {
diff --git a/brand-dev-java-core/src/main/kotlin/com/branddev/api/services/async/BrandServiceAsync.kt b/brand-dev-java-core/src/main/kotlin/com/branddev/api/services/async/BrandServiceAsync.kt
index 4500458..a5d9434 100644
--- a/brand-dev-java-core/src/main/kotlin/com/branddev/api/services/async/BrandServiceAsync.kt
+++ b/brand-dev-java-core/src/main/kotlin/com/branddev/api/services/async/BrandServiceAsync.kt
@@ -67,15 +67,24 @@ interface BrandServiceAsync {
* website and return a list of products with details such as name, description, image, pricing,
* features, and more.
*/
- fun aiProducts(params: BrandAiProductsParams): CompletableFuture =
- aiProducts(params, RequestOptions.none())
+ fun aiProducts(): CompletableFuture =
+ aiProducts(BrandAiProductsParams.none())
/** @see aiProducts */
fun aiProducts(
- params: BrandAiProductsParams,
+ params: BrandAiProductsParams = BrandAiProductsParams.none(),
requestOptions: RequestOptions = RequestOptions.none(),
): CompletableFuture
+ /** @see aiProducts */
+ fun aiProducts(
+ params: BrandAiProductsParams = BrandAiProductsParams.none()
+ ): CompletableFuture = aiProducts(params, RequestOptions.none())
+
+ /** @see aiProducts */
+ fun aiProducts(requestOptions: RequestOptions): CompletableFuture =
+ aiProducts(BrandAiProductsParams.none(), requestOptions)
+
/**
* Use AI to extract specific data points from a brand's website. The AI will crawl the website
* and extract the requested information based on the provided data points.
@@ -297,16 +306,26 @@ interface BrandServiceAsync {
* Returns a raw HTTP response for `post /brand/ai/products`, but is otherwise the same as
* [BrandServiceAsync.aiProducts].
*/
+ fun aiProducts(): CompletableFuture> =
+ aiProducts(BrandAiProductsParams.none())
+
+ /** @see aiProducts */
fun aiProducts(
- params: BrandAiProductsParams
+ params: BrandAiProductsParams = BrandAiProductsParams.none(),
+ requestOptions: RequestOptions = RequestOptions.none(),
+ ): CompletableFuture>
+
+ /** @see aiProducts */
+ fun aiProducts(
+ params: BrandAiProductsParams = BrandAiProductsParams.none()
): CompletableFuture> =
aiProducts(params, RequestOptions.none())
/** @see aiProducts */
fun aiProducts(
- params: BrandAiProductsParams,
- requestOptions: RequestOptions = RequestOptions.none(),
- ): CompletableFuture>
+ requestOptions: RequestOptions
+ ): CompletableFuture> =
+ aiProducts(BrandAiProductsParams.none(), requestOptions)
/**
* Returns a raw HTTP response for `post /brand/ai/query`, but is otherwise the same as
diff --git a/brand-dev-java-core/src/main/kotlin/com/branddev/api/services/blocking/BrandService.kt b/brand-dev-java-core/src/main/kotlin/com/branddev/api/services/blocking/BrandService.kt
index b467fc0..05f66f8 100644
--- a/brand-dev-java-core/src/main/kotlin/com/branddev/api/services/blocking/BrandService.kt
+++ b/brand-dev-java-core/src/main/kotlin/com/branddev/api/services/blocking/BrandService.kt
@@ -67,15 +67,23 @@ interface BrandService {
* website and return a list of products with details such as name, description, image, pricing,
* features, and more.
*/
- fun aiProducts(params: BrandAiProductsParams): BrandAiProductsResponse =
- aiProducts(params, RequestOptions.none())
+ fun aiProducts(): BrandAiProductsResponse = aiProducts(BrandAiProductsParams.none())
/** @see aiProducts */
fun aiProducts(
- params: BrandAiProductsParams,
+ params: BrandAiProductsParams = BrandAiProductsParams.none(),
requestOptions: RequestOptions = RequestOptions.none(),
): BrandAiProductsResponse
+ /** @see aiProducts */
+ fun aiProducts(
+ params: BrandAiProductsParams = BrandAiProductsParams.none()
+ ): BrandAiProductsResponse = aiProducts(params, RequestOptions.none())
+
+ /** @see aiProducts */
+ fun aiProducts(requestOptions: RequestOptions): BrandAiProductsResponse =
+ aiProducts(BrandAiProductsParams.none(), requestOptions)
+
/**
* Use AI to extract specific data points from a brand's website. The AI will crawl the website
* and extract the requested information based on the provided data points.
@@ -281,16 +289,27 @@ interface BrandService {
* [BrandService.aiProducts].
*/
@MustBeClosed
- fun aiProducts(params: BrandAiProductsParams): HttpResponseFor =
- aiProducts(params, RequestOptions.none())
+ fun aiProducts(): HttpResponseFor =
+ aiProducts(BrandAiProductsParams.none())
/** @see aiProducts */
@MustBeClosed
fun aiProducts(
- params: BrandAiProductsParams,
+ params: BrandAiProductsParams = BrandAiProductsParams.none(),
requestOptions: RequestOptions = RequestOptions.none(),
): HttpResponseFor
+ /** @see aiProducts */
+ @MustBeClosed
+ fun aiProducts(
+ params: BrandAiProductsParams = BrandAiProductsParams.none()
+ ): HttpResponseFor = aiProducts(params, RequestOptions.none())
+
+ /** @see aiProducts */
+ @MustBeClosed
+ fun aiProducts(requestOptions: RequestOptions): HttpResponseFor =
+ aiProducts(BrandAiProductsParams.none(), requestOptions)
+
/**
* Returns a raw HTTP response for `post /brand/ai/query`, but is otherwise the same as
* [BrandService.aiQuery].
diff --git a/brand-dev-java-core/src/test/kotlin/com/branddev/api/models/brand/BrandAiProductsParamsTest.kt b/brand-dev-java-core/src/test/kotlin/com/branddev/api/models/brand/BrandAiProductsParamsTest.kt
index 7b7169f..43b5833 100644
--- a/brand-dev-java-core/src/test/kotlin/com/branddev/api/models/brand/BrandAiProductsParamsTest.kt
+++ b/brand-dev-java-core/src/test/kotlin/com/branddev/api/models/brand/BrandAiProductsParamsTest.kt
@@ -9,27 +9,36 @@ internal class BrandAiProductsParamsTest {
@Test
fun create() {
- BrandAiProductsParams.builder().domain("domain").maxProducts(1L).timeoutMs(1L).build()
+ BrandAiProductsParams.builder()
+ .directUrl("https://example.com")
+ .domain("domain")
+ .maxProducts(1L)
+ .timeoutMs(1L)
+ .build()
}
@Test
fun body() {
val params =
- BrandAiProductsParams.builder().domain("domain").maxProducts(1L).timeoutMs(1L).build()
+ BrandAiProductsParams.builder()
+ .directUrl("https://example.com")
+ .domain("domain")
+ .maxProducts(1L)
+ .timeoutMs(1L)
+ .build()
val body = params._body()
- assertThat(body.domain()).isEqualTo("domain")
+ assertThat(body.directUrl()).contains("https://example.com")
+ assertThat(body.domain()).contains("domain")
assertThat(body.maxProducts()).contains(1L)
assertThat(body.timeoutMs()).contains(1L)
}
@Test
fun bodyWithoutOptionalFields() {
- val params = BrandAiProductsParams.builder().domain("domain").build()
+ val params = BrandAiProductsParams.builder().build()
val body = params._body()
-
- assertThat(body.domain()).isEqualTo("domain")
}
}
diff --git a/brand-dev-java-core/src/test/kotlin/com/branddev/api/services/async/BrandServiceAsyncTest.kt b/brand-dev-java-core/src/test/kotlin/com/branddev/api/services/async/BrandServiceAsyncTest.kt
index 51af267..27645b2 100644
--- a/brand-dev-java-core/src/test/kotlin/com/branddev/api/services/async/BrandServiceAsyncTest.kt
+++ b/brand-dev-java-core/src/test/kotlin/com/branddev/api/services/async/BrandServiceAsyncTest.kt
@@ -64,6 +64,7 @@ internal class BrandServiceAsyncTest {
val responseFuture =
brandServiceAsync.aiProducts(
BrandAiProductsParams.builder()
+ .directUrl("https://example.com")
.domain("domain")
.maxProducts(1L)
.timeoutMs(1L)
diff --git a/brand-dev-java-core/src/test/kotlin/com/branddev/api/services/blocking/BrandServiceTest.kt b/brand-dev-java-core/src/test/kotlin/com/branddev/api/services/blocking/BrandServiceTest.kt
index 2d696f9..b755776 100644
--- a/brand-dev-java-core/src/test/kotlin/com/branddev/api/services/blocking/BrandServiceTest.kt
+++ b/brand-dev-java-core/src/test/kotlin/com/branddev/api/services/blocking/BrandServiceTest.kt
@@ -63,6 +63,7 @@ internal class BrandServiceTest {
val response =
brandService.aiProducts(
BrandAiProductsParams.builder()
+ .directUrl("https://example.com")
.domain("domain")
.maxProducts(1L)
.timeoutMs(1L)
diff --git a/brand-dev-java-proguard-test/build.gradle.kts b/brand-dev-java-proguard-test/build.gradle.kts
index 1be525d..74fe8a5 100644
--- a/brand-dev-java-proguard-test/build.gradle.kts
+++ b/brand-dev-java-proguard-test/build.gradle.kts
@@ -18,7 +18,7 @@ dependencies {
testImplementation(project(":brand-dev-java"))
testImplementation(kotlin("test"))
testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.3")
- testImplementation("org.assertj:assertj-core:3.25.3")
+ testImplementation("org.assertj:assertj-core:3.27.7")
testImplementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.14.0")
}
diff --git a/build.gradle.kts b/build.gradle.kts
index 5b39dcd..bc78627 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -9,7 +9,7 @@ repositories {
allprojects {
group = "com.branddev.api"
- version = "0.1.0-alpha.27" // x-release-please-version
+ version = "0.1.0-alpha.28" // x-release-please-version
}
subprojects {