diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index b8dda9bfc..554e34bbe 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.29.0"
+ ".": "0.30.0"
}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 2e67f53d3..e7dc5cc33 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,2 +1,2 @@
configured_endpoints: 65
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai-4aa6ee65ba9efc789e05e6a5ef0883b2cadf06def8efd863dbf75e9e233067e1.yml
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai-5d30684c3118d049682ea30cdb4dbef39b97d51667da484689193dc40162af32.yml
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 072ce4dc6..941bb6a63 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,26 @@
# Changelog
+## 0.30.0 (2025-02-27)
+
+Full Changelog: [v0.29.0...v0.30.0](https://github.com/openai/openai-java/compare/v0.29.0...v0.30.0)
+
+### Features
+
+* **api:** add gpt-4.5-preview ([#258](https://github.com/openai/openai-java/issues/258)) ([27d1e7f](https://github.com/openai/openai-java/commit/27d1e7f6565ab00161d322bf04a8cb1e70c31694))
+
+
+### Chores
+
+* **client:** use deep identity methods for primitive array types ([#255](https://github.com/openai/openai-java/issues/255)) ([fac8678](https://github.com/openai/openai-java/commit/fac86783373355488b81a7a1452bc8ba2a74066f))
+* **internal:** add async service tests ([#253](https://github.com/openai/openai-java/issues/253)) ([147872a](https://github.com/openai/openai-java/commit/147872a570403c78059fb785d9860003a5187583))
+* **internal:** improve sync service tests ([147872a](https://github.com/openai/openai-java/commit/147872a570403c78059fb785d9860003a5187583))
+* **internal:** refactor `ServiceParamsTest` ([#257](https://github.com/openai/openai-java/issues/257)) ([9cb1929](https://github.com/openai/openai-java/commit/9cb19297c372976fa331d5945c028017392b2d5d))
+
+
+### Documentation
+
+* readme parameter tweaks ([147872a](https://github.com/openai/openai-java/commit/147872a570403c78059fb785d9860003a5187583))
+
## 0.29.0 (2025-02-26)
Full Changelog: [v0.28.0...v0.29.0](https://github.com/openai/openai-java/compare/v0.28.0...v0.29.0)
diff --git a/README.md b/README.md
index bd358f6ce..f37bcbc53 100644
--- a/README.md
+++ b/README.md
@@ -9,8 +9,8 @@
-[](https://central.sonatype.com/artifact/com.openai/openai-java/0.29.0)
-[](https://javadoc.io/doc/com.openai/openai-java/0.29.0)
+[](https://central.sonatype.com/artifact/com.openai/openai-java/0.30.0)
+[](https://javadoc.io/doc/com.openai/openai-java/0.30.0)
@@ -25,7 +25,7 @@ The REST API documentation can be found on [platform.openai.com](https://platfor
### Gradle
```kotlin
-implementation("com.openai:openai-java:0.29.0")
+implementation("com.openai:openai-java:0.30.0")
```
### Maven
@@ -34,7 +34,7 @@ implementation("com.openai:openai-java:0.29.0")
com.openai
openai-java
- 0.29.0
+ 0.30.0
```
diff --git a/build.gradle.kts b/build.gradle.kts
index a7db5098b..52fd836f1 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -8,7 +8,7 @@ repositories {
allprojects {
group = "com.openai"
- version = "0.29.0" // x-release-please-version
+ version = "0.30.0" // x-release-please-version
}
subprojects {
diff --git a/openai-java-core/src/main/kotlin/com/openai/core/Utils.kt b/openai-java-core/src/main/kotlin/com/openai/core/Utils.kt
index e2cfee075..a63ef98b6 100644
--- a/openai-java-core/src/main/kotlin/com/openai/core/Utils.kt
+++ b/openai-java-core/src/main/kotlin/com/openai/core/Utils.kt
@@ -25,6 +25,42 @@ internal fun , V> SortedMap.toImmutable(): SortedMap.openai.azure.com`.
diff --git a/openai-java-core/src/main/kotlin/com/openai/core/Values.kt b/openai-java-core/src/main/kotlin/com/openai/core/Values.kt
index 3cb8bf169..9d9ed6e86 100644
--- a/openai-java-core/src/main/kotlin/com/openai/core/Values.kt
+++ b/openai-java-core/src/main/kotlin/com/openai/core/Values.kt
@@ -470,41 +470,20 @@ internal constructor(
val filename: String? = null,
) {
- private var hashCode: Int = 0
-
- override fun hashCode(): Int {
- if (hashCode == 0) {
- hashCode =
- Objects.hash(
- name,
- contentType,
- filename,
- when (value) {
- is ByteArray -> value.contentHashCode()
- is String -> value
- is Boolean -> value
- is Long -> value
- is Double -> value
- else -> value?.hashCode()
- },
- )
- }
- return hashCode
- }
-
- override fun equals(other: Any?): Boolean {
- if (this === other) return true
- if (other == null || this.javaClass != other.javaClass) return false
+ private val hashCode: Int by lazy { contentHash(name, value, contentType, filename) }
- other as MultipartFormValue<*>
+ override fun hashCode(): Int = hashCode
- if (name != other.name || contentType != other.contentType || filename != other.filename)
- return false
-
- return when {
- value is ByteArray && other.value is ByteArray -> value contentEquals other.value
- else -> value?.equals(other.value) ?: (other.value == null)
+ override fun equals(other: Any?): Boolean {
+ if (this === other) {
+ return true
}
+
+ return other is MultipartFormValue<*> &&
+ name == other.name &&
+ value contentEquals other.value &&
+ contentType == other.contentType &&
+ filename == other.filename
}
override fun toString(): String =
diff --git a/openai-java-core/src/main/kotlin/com/openai/models/BetaAssistantUpdateParams.kt b/openai-java-core/src/main/kotlin/com/openai/models/BetaAssistantUpdateParams.kt
index 7945367b9..b5f6d7448 100644
--- a/openai-java-core/src/main/kotlin/com/openai/models/BetaAssistantUpdateParams.kt
+++ b/openai-java-core/src/main/kotlin/com/openai/models/BetaAssistantUpdateParams.kt
@@ -1629,6 +1629,10 @@ private constructor(
@JvmField val GPT_4O_MINI_2024_07_18 = of("gpt-4o-mini-2024-07-18")
+ @JvmField val GPT_4_5_PREVIEW = of("gpt-4.5-preview")
+
+ @JvmField val GPT_4_5_PREVIEW_2025_02_27 = of("gpt-4.5-preview-2025-02-27")
+
@JvmField val GPT_4_TURBO = of("gpt-4-turbo")
@JvmField val GPT_4_TURBO_2024_04_09 = of("gpt-4-turbo-2024-04-09")
@@ -1680,6 +1684,8 @@ private constructor(
GPT_4O_2024_05_13,
GPT_4O_MINI,
GPT_4O_MINI_2024_07_18,
+ GPT_4_5_PREVIEW,
+ GPT_4_5_PREVIEW_2025_02_27,
GPT_4_TURBO,
GPT_4_TURBO_2024_04_09,
GPT_4_0125_PREVIEW,
@@ -1720,6 +1726,8 @@ private constructor(
GPT_4O_2024_05_13,
GPT_4O_MINI,
GPT_4O_MINI_2024_07_18,
+ GPT_4_5_PREVIEW,
+ GPT_4_5_PREVIEW_2025_02_27,
GPT_4_TURBO,
GPT_4_TURBO_2024_04_09,
GPT_4_0125_PREVIEW,
@@ -1761,6 +1769,8 @@ private constructor(
GPT_4O_2024_05_13 -> Value.GPT_4O_2024_05_13
GPT_4O_MINI -> Value.GPT_4O_MINI
GPT_4O_MINI_2024_07_18 -> Value.GPT_4O_MINI_2024_07_18
+ GPT_4_5_PREVIEW -> Value.GPT_4_5_PREVIEW
+ GPT_4_5_PREVIEW_2025_02_27 -> Value.GPT_4_5_PREVIEW_2025_02_27
GPT_4_TURBO -> Value.GPT_4_TURBO
GPT_4_TURBO_2024_04_09 -> Value.GPT_4_TURBO_2024_04_09
GPT_4_0125_PREVIEW -> Value.GPT_4_0125_PREVIEW
@@ -1803,6 +1813,8 @@ private constructor(
GPT_4O_2024_05_13 -> Known.GPT_4O_2024_05_13
GPT_4O_MINI -> Known.GPT_4O_MINI
GPT_4O_MINI_2024_07_18 -> Known.GPT_4O_MINI_2024_07_18
+ GPT_4_5_PREVIEW -> Known.GPT_4_5_PREVIEW
+ GPT_4_5_PREVIEW_2025_02_27 -> Known.GPT_4_5_PREVIEW_2025_02_27
GPT_4_TURBO -> Known.GPT_4_TURBO
GPT_4_TURBO_2024_04_09 -> Known.GPT_4_TURBO_2024_04_09
GPT_4_0125_PREVIEW -> Known.GPT_4_0125_PREVIEW
diff --git a/openai-java-core/src/main/kotlin/com/openai/models/ChatModel.kt b/openai-java-core/src/main/kotlin/com/openai/models/ChatModel.kt
index 4d00da6a6..1478385df 100644
--- a/openai-java-core/src/main/kotlin/com/openai/models/ChatModel.kt
+++ b/openai-java-core/src/main/kotlin/com/openai/models/ChatModel.kt
@@ -36,6 +36,10 @@ class ChatModel @JsonCreator private constructor(private val value: JsonField Value.O1_PREVIEW_2024_09_12
O1_MINI -> Value.O1_MINI
O1_MINI_2024_09_12 -> Value.O1_MINI_2024_09_12
+ GPT_4_5_PREVIEW -> Value.GPT_4_5_PREVIEW
+ GPT_4_5_PREVIEW_2025_02_27 -> Value.GPT_4_5_PREVIEW_2025_02_27
GPT_4O -> Value.GPT_4O
GPT_4O_2024_11_20 -> Value.GPT_4O_2024_11_20
GPT_4O_2024_08_06 -> Value.GPT_4O_2024_08_06
@@ -267,6 +277,8 @@ class ChatModel @JsonCreator private constructor(private val value: JsonField Known.O1_PREVIEW_2024_09_12
O1_MINI -> Known.O1_MINI
O1_MINI_2024_09_12 -> Known.O1_MINI_2024_09_12
+ GPT_4_5_PREVIEW -> Known.GPT_4_5_PREVIEW
+ GPT_4_5_PREVIEW_2025_02_27 -> Known.GPT_4_5_PREVIEW_2025_02_27
GPT_4O -> Known.GPT_4O
GPT_4O_2024_11_20 -> Known.GPT_4O_2024_11_20
GPT_4O_2024_08_06 -> Known.GPT_4O_2024_08_06
diff --git a/openai-java-core/src/main/kotlin/com/openai/models/FileObject.kt b/openai-java-core/src/main/kotlin/com/openai/models/FileObject.kt
index e89cc2509..d354428a3 100644
--- a/openai-java-core/src/main/kotlin/com/openai/models/FileObject.kt
+++ b/openai-java-core/src/main/kotlin/com/openai/models/FileObject.kt
@@ -39,6 +39,9 @@ private constructor(
@JsonProperty("status")
@ExcludeMissing
private val status: JsonField = JsonMissing.of(),
+ @JsonProperty("expires_at")
+ @ExcludeMissing
+ private val expiresAt: JsonField = JsonMissing.of(),
@JsonProperty("status_details")
@ExcludeMissing
private val statusDetails: JsonField = JsonMissing.of(),
@@ -72,6 +75,9 @@ private constructor(
*/
@Deprecated("deprecated") fun status(): Status = status.getRequired("status")
+ /** The Unix timestamp (in seconds) for when the file will expire. */
+ fun expiresAt(): Optional = Optional.ofNullable(expiresAt.getNullable("expires_at"))
+
/**
* Deprecated. For details on why a fine-tuning training file failed validation, see the `error`
* field on `fine_tuning.job`.
@@ -107,6 +113,9 @@ private constructor(
@ExcludeMissing
fun _status(): JsonField = status
+ /** The Unix timestamp (in seconds) for when the file will expire. */
+ @JsonProperty("expires_at") @ExcludeMissing fun _expiresAt(): JsonField = expiresAt
+
/**
* Deprecated. For details on why a fine-tuning training file failed validation, see the `error`
* field on `fine_tuning.job`.
@@ -138,6 +147,7 @@ private constructor(
}
purpose()
status()
+ expiresAt()
statusDetails()
validated = true
}
@@ -159,6 +169,7 @@ private constructor(
private var object_: JsonValue = JsonValue.from("file")
private var purpose: JsonField? = null
private var status: JsonField? = null
+ private var expiresAt: JsonField = JsonMissing.of()
private var statusDetails: JsonField = JsonMissing.of()
private var additionalProperties: MutableMap = mutableMapOf()
@@ -171,6 +182,7 @@ private constructor(
object_ = fileObject.object_
purpose = fileObject.purpose
status = fileObject.status
+ expiresAt = fileObject.expiresAt
statusDetails = fileObject.statusDetails
additionalProperties = fileObject.additionalProperties.toMutableMap()
}
@@ -227,6 +239,12 @@ private constructor(
@Deprecated("deprecated")
fun status(status: JsonField) = apply { this.status = status }
+ /** The Unix timestamp (in seconds) for when the file will expire. */
+ fun expiresAt(expiresAt: Long) = expiresAt(JsonField.of(expiresAt))
+
+ /** The Unix timestamp (in seconds) for when the file will expire. */
+ fun expiresAt(expiresAt: JsonField) = apply { this.expiresAt = expiresAt }
+
/**
* Deprecated. For details on why a fine-tuning training file failed validation, see the
* `error` field on `fine_tuning.job`.
@@ -271,6 +289,7 @@ private constructor(
object_,
checkRequired("purpose", purpose),
checkRequired("status", status),
+ expiresAt,
statusDetails,
additionalProperties.toImmutable(),
)
@@ -522,15 +541,15 @@ private constructor(
return true
}
- return /* spotless:off */ other is FileObject && id == other.id && bytes == other.bytes && createdAt == other.createdAt && filename == other.filename && object_ == other.object_ && purpose == other.purpose && status == other.status && statusDetails == other.statusDetails && additionalProperties == other.additionalProperties /* spotless:on */
+ return /* spotless:off */ other is FileObject && id == other.id && bytes == other.bytes && createdAt == other.createdAt && filename == other.filename && object_ == other.object_ && purpose == other.purpose && status == other.status && expiresAt == other.expiresAt && statusDetails == other.statusDetails && additionalProperties == other.additionalProperties /* spotless:on */
}
/* spotless:off */
- private val hashCode: Int by lazy { Objects.hash(id, bytes, createdAt, filename, object_, purpose, status, statusDetails, additionalProperties) }
+ private val hashCode: Int by lazy { Objects.hash(id, bytes, createdAt, filename, object_, purpose, status, expiresAt, statusDetails, additionalProperties) }
/* spotless:on */
override fun hashCode(): Int = hashCode
override fun toString() =
- "FileObject{id=$id, bytes=$bytes, createdAt=$createdAt, filename=$filename, object_=$object_, purpose=$purpose, status=$status, statusDetails=$statusDetails, additionalProperties=$additionalProperties}"
+ "FileObject{id=$id, bytes=$bytes, createdAt=$createdAt, filename=$filename, object_=$object_, purpose=$purpose, status=$status, expiresAt=$expiresAt, statusDetails=$statusDetails, additionalProperties=$additionalProperties}"
}
diff --git a/openai-java-core/src/main/kotlin/com/openai/models/Upload.kt b/openai-java-core/src/main/kotlin/com/openai/models/Upload.kt
index 153473db5..1c2d91320 100644
--- a/openai-java-core/src/main/kotlin/com/openai/models/Upload.kt
+++ b/openai-java-core/src/main/kotlin/com/openai/models/Upload.kt
@@ -57,7 +57,7 @@ private constructor(
/** The Unix timestamp (in seconds) for when the Upload was created. */
fun createdAt(): Long = createdAt.getRequired("created_at")
- /** The Unix timestamp (in seconds) for when the Upload was created. */
+ /** The Unix timestamp (in seconds) for when the Upload will expire. */
fun expiresAt(): Long = expiresAt.getRequired("expires_at")
/** The name of the file to be uploaded. */
@@ -88,7 +88,7 @@ private constructor(
/** The Unix timestamp (in seconds) for when the Upload was created. */
@JsonProperty("created_at") @ExcludeMissing fun _createdAt(): JsonField = createdAt
- /** The Unix timestamp (in seconds) for when the Upload was created. */
+ /** The Unix timestamp (in seconds) for when the Upload will expire. */
@JsonProperty("expires_at") @ExcludeMissing fun _expiresAt(): JsonField = expiresAt
/** The name of the file to be uploaded. */
@@ -187,10 +187,10 @@ private constructor(
/** The Unix timestamp (in seconds) for when the Upload was created. */
fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt }
- /** The Unix timestamp (in seconds) for when the Upload was created. */
+ /** The Unix timestamp (in seconds) for when the Upload will expire. */
fun expiresAt(expiresAt: Long) = expiresAt(JsonField.of(expiresAt))
- /** The Unix timestamp (in seconds) for when the Upload was created. */
+ /** The Unix timestamp (in seconds) for when the Upload will expire. */
fun expiresAt(expiresAt: JsonField) = apply { this.expiresAt = expiresAt }
/** The name of the file to be uploaded. */
diff --git a/openai-java-core/src/test/kotlin/com/openai/core/UtilsTest.kt b/openai-java-core/src/test/kotlin/com/openai/core/UtilsTest.kt
new file mode 100644
index 000000000..2f3a54ba3
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/core/UtilsTest.kt
@@ -0,0 +1,33 @@
+package com.openai.core
+
+import org.assertj.core.api.Assertions.assertThat
+import org.junit.jupiter.api.Test
+
+internal class UtilsTest {
+ @Test
+ fun contentDeepEquals() {
+ assertThat(42 contentEquals 42).isTrue()
+ assertThat(42 contentEquals "Hello World!").isFalse()
+ assertThat(byteArrayOf(1, 2, 3) contentEquals byteArrayOf(1, 2, 3)).isTrue()
+ assertThat(byteArrayOf(1, 2, 3) contentEquals byteArrayOf(1, 2, 4)).isFalse()
+ assertThat(
+ arrayOf(byteArrayOf(1, 2), byteArrayOf(3)) contentEquals
+ arrayOf(byteArrayOf(1, 2), byteArrayOf(3))
+ )
+ .isTrue()
+ assertThat(
+ arrayOf(byteArrayOf(1, 2), byteArrayOf(3)) contentEquals
+ arrayOf(byteArrayOf(1), byteArrayOf(2, 3))
+ )
+ .isFalse()
+ }
+
+ @Test
+ fun contentToString() {
+ assertThat((42).contentToString()).isEqualTo("42")
+ assertThat("Hello World!".contentToString()).isEqualTo("Hello World!")
+ assertThat(byteArrayOf(1, 2, 3).contentToString()).isEqualTo("[1, 2, 3]")
+ assertThat(arrayOf(byteArrayOf(1, 2), byteArrayOf(3)).contentToString())
+ .isEqualTo("[[1, 2], [3]]")
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/models/FileObjectTest.kt b/openai-java-core/src/test/kotlin/com/openai/models/FileObjectTest.kt
index d31bda8c8..ab2999406 100644
--- a/openai-java-core/src/test/kotlin/com/openai/models/FileObjectTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/models/FileObjectTest.kt
@@ -17,6 +17,7 @@ class FileObjectTest {
.filename("filename")
.purpose(FileObject.Purpose.ASSISTANTS)
.status(FileObject.Status.UPLOADED)
+ .expiresAt(0L)
.statusDetails("status_details")
.build()
assertThat(fileObject).isNotNull
@@ -26,6 +27,7 @@ class FileObjectTest {
assertThat(fileObject.filename()).isEqualTo("filename")
assertThat(fileObject.purpose()).isEqualTo(FileObject.Purpose.ASSISTANTS)
assertThat(fileObject.status()).isEqualTo(FileObject.Status.UPLOADED)
+ assertThat(fileObject.expiresAt()).contains(0L)
assertThat(fileObject.statusDetails()).contains("status_details")
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/models/UploadTest.kt b/openai-java-core/src/test/kotlin/com/openai/models/UploadTest.kt
index 119691cb2..2153b1916 100644
--- a/openai-java-core/src/test/kotlin/com/openai/models/UploadTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/models/UploadTest.kt
@@ -26,6 +26,7 @@ class UploadTest {
.filename("filename")
.purpose(FileObject.Purpose.ASSISTANTS)
.status(FileObject.Status.UPLOADED)
+ .expiresAt(0L)
.statusDetails("status_details")
.build()
)
@@ -47,6 +48,7 @@ class UploadTest {
.filename("filename")
.purpose(FileObject.Purpose.ASSISTANTS)
.status(FileObject.Status.UPLOADED)
+ .expiresAt(0L)
.statusDetails("status_details")
.build()
)
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/ServiceParamsTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/ServiceParamsTest.kt
index 249b26f23..bc93bc52a 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/ServiceParamsTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/ServiceParamsTest.kt
@@ -2,7 +2,6 @@
package com.openai.services
-import com.fasterxml.jackson.databind.json.JsonMapper
import com.github.tomakehurst.wiremock.client.WireMock.anyUrl
import com.github.tomakehurst.wiremock.client.WireMock.equalTo
import com.github.tomakehurst.wiremock.client.WireMock.matchingJsonPath
@@ -16,23 +15,16 @@ import com.github.tomakehurst.wiremock.junit5.WireMockTest
import com.openai.client.OpenAIClient
import com.openai.client.okhttp.OpenAIOkHttpClient
import com.openai.core.JsonValue
-import com.openai.core.jsonMapper
-import com.openai.models.ChatCompletion
-import com.openai.models.ChatCompletionAudio
import com.openai.models.ChatCompletionAudioParam
import com.openai.models.ChatCompletionCreateParams
import com.openai.models.ChatCompletionDeveloperMessageParam
-import com.openai.models.ChatCompletionMessage
-import com.openai.models.ChatCompletionMessageToolCall
import com.openai.models.ChatCompletionModality
import com.openai.models.ChatCompletionPredictionContent
import com.openai.models.ChatCompletionReasoningEffort
import com.openai.models.ChatCompletionStreamOptions
-import com.openai.models.ChatCompletionTokenLogprob
import com.openai.models.ChatCompletionTool
import com.openai.models.ChatCompletionToolChoiceOption
import com.openai.models.ChatModel
-import com.openai.models.CompletionUsage
import com.openai.models.FunctionDefinition
import com.openai.models.FunctionParameters
import com.openai.models.Metadata
@@ -41,9 +33,7 @@ import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
@WireMockTest
-class ServiceParamsTest {
-
- private val JSON_MAPPER: JsonMapper = jsonMapper()
+internal class ServiceParamsTest {
private lateinit var client: OpenAIClient
@@ -51,28 +41,17 @@ class ServiceParamsTest {
fun beforeEach(wmRuntimeInfo: WireMockRuntimeInfo) {
client =
OpenAIOkHttpClient.builder()
+ .baseUrl(wmRuntimeInfo.httpBaseUrl)
.apiKey("My API Key")
- .organization("My Organization")
- .project("My Project")
- .baseUrl(wmRuntimeInfo.getHttpBaseUrl())
.build()
}
@Test
- fun completionsCreateWithAdditionalParams() {
- val additionalHeaders = mutableMapOf>()
-
- additionalHeaders.put("x-test-header", listOf("abc1234"))
-
- val additionalQueryParams = mutableMapOf>()
-
- additionalQueryParams.put("test_query_param", listOf("def567"))
-
- val additionalBodyProperties = mutableMapOf()
+ fun create() {
+ val completionService = client.chat().completions()
+ stubFor(post(anyUrl()).willReturn(ok("{}")))
- additionalBodyProperties.put("testBodyProperty", JsonValue.from("ghi890"))
-
- val params =
+ completionService.create(
ChatCompletionCreateParams.builder()
.addMessage(
ChatCompletionDeveloperMessageParam.builder()
@@ -146,120 +125,17 @@ class ServiceParamsTest {
.topLogprobs(0L)
.topP(1.0)
.user("user-1234")
- .additionalHeaders(additionalHeaders)
- .additionalBodyProperties(additionalBodyProperties)
- .additionalQueryParams(additionalQueryParams)
+ .putAdditionalHeader("Secret-Header", "42")
+ .putAdditionalQueryParam("secret_query_param", "42")
+ .putAdditionalBodyProperty("secretProperty", JsonValue.from("42"))
.build()
-
- val apiResponse =
- ChatCompletion.builder()
- .id("id")
- .addChoice(
- ChatCompletion.Choice.builder()
- .finishReason(ChatCompletion.Choice.FinishReason.STOP)
- .index(0L)
- .logprobs(
- ChatCompletion.Choice.Logprobs.builder()
- .addContent(
- ChatCompletionTokenLogprob.builder()
- .token("token")
- .addByte(0L)
- .logprob(0.0)
- .addTopLogprob(
- ChatCompletionTokenLogprob.TopLogprob.builder()
- .token("token")
- .addByte(0L)
- .logprob(0.0)
- .build()
- )
- .build()
- )
- .addRefusal(
- ChatCompletionTokenLogprob.builder()
- .token("token")
- .addByte(0L)
- .logprob(0.0)
- .addTopLogprob(
- ChatCompletionTokenLogprob.TopLogprob.builder()
- .token("token")
- .addByte(0L)
- .logprob(0.0)
- .build()
- )
- .build()
- )
- .build()
- )
- .message(
- ChatCompletionMessage.builder()
- .content("content")
- .refusal("refusal")
- .audio(
- ChatCompletionAudio.builder()
- .id("id")
- .data("data")
- .expiresAt(0L)
- .transcript("transcript")
- .build()
- )
- .functionCall(
- ChatCompletionMessage.FunctionCall.builder()
- .arguments("arguments")
- .name("name")
- .build()
- )
- .addToolCall(
- ChatCompletionMessageToolCall.builder()
- .id("id")
- .function(
- ChatCompletionMessageToolCall.Function.builder()
- .arguments("arguments")
- .name("name")
- .build()
- )
- .build()
- )
- .build()
- )
- .build()
- )
- .created(0L)
- .model("model")
- .serviceTier(ChatCompletion.ServiceTier.SCALE)
- .systemFingerprint("system_fingerprint")
- .usage(
- CompletionUsage.builder()
- .completionTokens(0L)
- .promptTokens(0L)
- .totalTokens(0L)
- .completionTokensDetails(
- CompletionUsage.CompletionTokensDetails.builder()
- .acceptedPredictionTokens(0L)
- .audioTokens(0L)
- .reasoningTokens(0L)
- .rejectedPredictionTokens(0L)
- .build()
- )
- .promptTokensDetails(
- CompletionUsage.PromptTokensDetails.builder()
- .audioTokens(0L)
- .cachedTokens(0L)
- .build()
- )
- .build()
- )
- .build()
-
- stubFor(
- post(anyUrl())
- .withHeader("x-test-header", equalTo("abc1234"))
- .withQueryParam("test_query_param", equalTo("def567"))
- .withRequestBody(matchingJsonPath("$.testBodyProperty", equalTo("ghi890")))
- .willReturn(ok(JSON_MAPPER.writeValueAsString(apiResponse)))
)
- client.chat().completions().create(params)
-
- verify(postRequestedFor(anyUrl()))
+ verify(
+ postRequestedFor(anyUrl())
+ .withHeader("Secret-Header", equalTo("42"))
+ .withQueryParam("secret_query_param", equalTo("42"))
+ .withRequestBody(matchingJsonPath("$.secretProperty", equalTo("42")))
+ )
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/BatchServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/BatchServiceAsyncTest.kt
new file mode 100644
index 000000000..22b10ddae
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/BatchServiceAsyncTest.kt
@@ -0,0 +1,91 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.core.JsonValue
+import com.openai.models.BatchCancelParams
+import com.openai.models.BatchCreateParams
+import com.openai.models.BatchRetrieveParams
+import com.openai.models.Metadata
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class BatchServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val batchServiceAsync = client.batches()
+
+ val batchFuture =
+ batchServiceAsync.create(
+ BatchCreateParams.builder()
+ .completionWindow(BatchCreateParams.CompletionWindow._24H)
+ .endpoint(BatchCreateParams.Endpoint.V1_CHAT_COMPLETIONS)
+ .inputFileId("input_file_id")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .build()
+ )
+
+ val batch = batchFuture.get()
+ batch.validate()
+ }
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val batchServiceAsync = client.batches()
+
+ val batchFuture =
+ batchServiceAsync.retrieve(BatchRetrieveParams.builder().batchId("batch_id").build())
+
+ val batch = batchFuture.get()
+ batch.validate()
+ }
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val batchServiceAsync = client.batches()
+
+ val pageFuture = batchServiceAsync.list()
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+
+ @Test
+ fun cancel() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val batchServiceAsync = client.batches()
+
+ val batchFuture =
+ batchServiceAsync.cancel(BatchCancelParams.builder().batchId("batch_id").build())
+
+ val batch = batchFuture.get()
+ batch.validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/CompletionServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/CompletionServiceAsyncTest.kt
new file mode 100644
index 000000000..93f172fbd
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/CompletionServiceAsyncTest.kt
@@ -0,0 +1,98 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.core.JsonValue
+import com.openai.models.ChatCompletionStreamOptions
+import com.openai.models.CompletionCreateParams
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class CompletionServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val completionServiceAsync = client.completions()
+
+ val completionFuture =
+ completionServiceAsync.create(
+ CompletionCreateParams.builder()
+ .model(CompletionCreateParams.Model.GPT_3_5_TURBO_INSTRUCT)
+ .prompt("This is a test.")
+ .bestOf(0L)
+ .echo(true)
+ .frequencyPenalty(-2.0)
+ .logitBias(
+ CompletionCreateParams.LogitBias.builder()
+ .putAdditionalProperty("foo", JsonValue.from(0))
+ .build()
+ )
+ .logprobs(0L)
+ .maxTokens(16L)
+ .n(1L)
+ .presencePenalty(-2.0)
+ .seed(0L)
+ .stop("\n")
+ .streamOptions(ChatCompletionStreamOptions.builder().includeUsage(true).build())
+ .suffix("test.")
+ .temperature(1.0)
+ .topP(1.0)
+ .user("user-1234")
+ .build()
+ )
+
+ val completion = completionFuture.get()
+ completion.validate()
+ }
+
+ @Test
+ fun createStreaming() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val completionServiceAsync = client.completions()
+
+ val completionStreamResponse =
+ completionServiceAsync.createStreaming(
+ CompletionCreateParams.builder()
+ .model(CompletionCreateParams.Model.GPT_3_5_TURBO_INSTRUCT)
+ .prompt("This is a test.")
+ .bestOf(0L)
+ .echo(true)
+ .frequencyPenalty(-2.0)
+ .logitBias(
+ CompletionCreateParams.LogitBias.builder()
+ .putAdditionalProperty("foo", JsonValue.from(0))
+ .build()
+ )
+ .logprobs(0L)
+ .maxTokens(16L)
+ .n(1L)
+ .presencePenalty(-2.0)
+ .seed(0L)
+ .stop("\n")
+ .streamOptions(ChatCompletionStreamOptions.builder().includeUsage(true).build())
+ .suffix("test.")
+ .temperature(1.0)
+ .topP(1.0)
+ .user("user-1234")
+ .build()
+ )
+
+ val onCompleteFuture =
+ completionStreamResponse
+ .subscribe { completion -> completion.validate() }
+ .onCompleteFuture()
+ onCompleteFuture.get()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/EmbeddingServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/EmbeddingServiceAsyncTest.kt
new file mode 100644
index 000000000..450fc8cb8
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/EmbeddingServiceAsyncTest.kt
@@ -0,0 +1,38 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.EmbeddingCreateParams
+import com.openai.models.EmbeddingModel
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class EmbeddingServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val embeddingServiceAsync = client.embeddings()
+
+ val createEmbeddingResponseFuture =
+ embeddingServiceAsync.create(
+ EmbeddingCreateParams.builder()
+ .input("The quick brown fox jumped over the lazy dog")
+ .model(EmbeddingModel.TEXT_EMBEDDING_ADA_002)
+ .dimensions(1L)
+ .encodingFormat(EmbeddingCreateParams.EncodingFormat.FLOAT)
+ .user("user-1234")
+ .build()
+ )
+
+ val createEmbeddingResponse = createEmbeddingResponseFuture.get()
+ createEmbeddingResponse.validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/FileServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/FileServiceAsyncTest.kt
new file mode 100644
index 000000000..1872ceeaf
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/FileServiceAsyncTest.kt
@@ -0,0 +1,87 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async
+
+import com.github.tomakehurst.wiremock.client.WireMock.anyUrl
+import com.github.tomakehurst.wiremock.client.WireMock.get
+import com.github.tomakehurst.wiremock.client.WireMock.ok
+import com.github.tomakehurst.wiremock.client.WireMock.stubFor
+import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo
+import com.github.tomakehurst.wiremock.junit5.WireMockTest
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.FileContentParams
+import com.openai.models.FileDeleteParams
+import com.openai.models.FileRetrieveParams
+import org.assertj.core.api.Assertions.assertThat
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+@WireMockTest
+class FileServiceAsyncTest {
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val fileServiceAsync = client.files()
+
+ val fileObjectFuture =
+ fileServiceAsync.retrieve(FileRetrieveParams.builder().fileId("file_id").build())
+
+ val fileObject = fileObjectFuture.get()
+ fileObject.validate()
+ }
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val fileServiceAsync = client.files()
+
+ val pageFuture = fileServiceAsync.list()
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+
+ @Test
+ fun delete() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val fileServiceAsync = client.files()
+
+ val fileDeletedFuture =
+ fileServiceAsync.delete(FileDeleteParams.builder().fileId("file_id").build())
+
+ val fileDeleted = fileDeletedFuture.get()
+ fileDeleted.validate()
+ }
+
+ @Test
+ fun content(wmRuntimeInfo: WireMockRuntimeInfo) {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(wmRuntimeInfo.httpBaseUrl)
+ .apiKey("My API Key")
+ .build()
+ val fileServiceAsync = client.files()
+ stubFor(get(anyUrl()).willReturn(ok().withBody("abc")))
+
+ val responseFuture =
+ fileServiceAsync.content(FileContentParams.builder().fileId("file_id").build())
+
+ val response = responseFuture.get()
+ assertThat(response.body()).hasContent("abc")
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/ImageServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/ImageServiceAsyncTest.kt
new file mode 100644
index 000000000..481efda86
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/ImageServiceAsyncTest.kt
@@ -0,0 +1,41 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.ImageGenerateParams
+import com.openai.models.ImageModel
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class ImageServiceAsyncTest {
+
+ @Test
+ fun generate() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val imageServiceAsync = client.images()
+
+ val imagesResponseFuture =
+ imageServiceAsync.generate(
+ ImageGenerateParams.builder()
+ .prompt("A cute baby sea otter")
+ .model(ImageModel.DALL_E_2)
+ .n(1L)
+ .quality(ImageGenerateParams.Quality.STANDARD)
+ .responseFormat(ImageGenerateParams.ResponseFormat.URL)
+ .size(ImageGenerateParams.Size._256X256)
+ .style(ImageGenerateParams.Style.VIVID)
+ .user("user-1234")
+ .build()
+ )
+
+ val imagesResponse = imagesResponseFuture.get()
+ imagesResponse.validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/ModelServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/ModelServiceAsyncTest.kt
new file mode 100644
index 000000000..8f34abb4c
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/ModelServiceAsyncTest.kt
@@ -0,0 +1,63 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.ModelDeleteParams
+import com.openai.models.ModelRetrieveParams
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class ModelServiceAsyncTest {
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val modelServiceAsync = client.models()
+
+ val modelFuture =
+ modelServiceAsync.retrieve(ModelRetrieveParams.builder().model("gpt-4o-mini").build())
+
+ val model = modelFuture.get()
+ model.validate()
+ }
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val modelServiceAsync = client.models()
+
+ val pageFuture = modelServiceAsync.list()
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+
+ @Test
+ fun delete() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val modelServiceAsync = client.models()
+
+ val modelDeletedFuture =
+ modelServiceAsync.delete(
+ ModelDeleteParams.builder().model("ft:gpt-4o-mini:acemeco:suffix:abc123").build()
+ )
+
+ val modelDeleted = modelDeletedFuture.get()
+ modelDeleted.validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/ModerationServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/ModerationServiceAsyncTest.kt
new file mode 100644
index 000000000..f0e6c985f
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/ModerationServiceAsyncTest.kt
@@ -0,0 +1,35 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.ModerationCreateParams
+import com.openai.models.ModerationModel
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class ModerationServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val moderationServiceAsync = client.moderations()
+
+ val moderationFuture =
+ moderationServiceAsync.create(
+ ModerationCreateParams.builder()
+ .input("I want to kill them.")
+ .model(ModerationModel.OMNI_MODERATION_LATEST)
+ .build()
+ )
+
+ val moderation = moderationFuture.get()
+ moderation.validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/UploadServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/UploadServiceAsyncTest.kt
new file mode 100644
index 000000000..4189e5994
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/UploadServiceAsyncTest.kt
@@ -0,0 +1,79 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.FilePurpose
+import com.openai.models.UploadCancelParams
+import com.openai.models.UploadCompleteParams
+import com.openai.models.UploadCreateParams
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class UploadServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val uploadServiceAsync = client.uploads()
+
+ val uploadFuture =
+ uploadServiceAsync.create(
+ UploadCreateParams.builder()
+ .bytes(0L)
+ .filename("filename")
+ .mimeType("mime_type")
+ .purpose(FilePurpose.ASSISTANTS)
+ .build()
+ )
+
+ val upload = uploadFuture.get()
+ upload.validate()
+ }
+
+ @Test
+ fun cancel() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val uploadServiceAsync = client.uploads()
+
+ val uploadFuture =
+ uploadServiceAsync.cancel(
+ UploadCancelParams.builder().uploadId("upload_abc123").build()
+ )
+
+ val upload = uploadFuture.get()
+ upload.validate()
+ }
+
+ @Test
+ fun complete() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val uploadServiceAsync = client.uploads()
+
+ val uploadFuture =
+ uploadServiceAsync.complete(
+ UploadCompleteParams.builder()
+ .uploadId("upload_abc123")
+ .addPartId("string")
+ .md5("md5")
+ .build()
+ )
+
+ val upload = uploadFuture.get()
+ upload.validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/beta/AssistantServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/AssistantServiceAsyncTest.kt
new file mode 100644
index 000000000..fdf16455c
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/AssistantServiceAsyncTest.kt
@@ -0,0 +1,185 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.beta
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.core.JsonValue
+import com.openai.models.AutoFileChunkingStrategyParam
+import com.openai.models.BetaAssistantCreateParams
+import com.openai.models.BetaAssistantDeleteParams
+import com.openai.models.BetaAssistantRetrieveParams
+import com.openai.models.BetaAssistantUpdateParams
+import com.openai.models.ChatModel
+import com.openai.models.CodeInterpreterTool
+import com.openai.models.Metadata
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class AssistantServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val assistantServiceAsync = client.beta().assistants()
+
+ val assistantFuture =
+ assistantServiceAsync.create(
+ BetaAssistantCreateParams.builder()
+ .model(ChatModel.O3_MINI)
+ .description("description")
+ .instructions("instructions")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .name("name")
+ .reasoningEffort(BetaAssistantCreateParams.ReasoningEffort.LOW)
+ .responseFormatAuto()
+ .temperature(1.0)
+ .toolResources(
+ BetaAssistantCreateParams.ToolResources.builder()
+ .codeInterpreter(
+ BetaAssistantCreateParams.ToolResources.CodeInterpreter.builder()
+ .addFileId("string")
+ .build()
+ )
+ .fileSearch(
+ BetaAssistantCreateParams.ToolResources.FileSearch.builder()
+ .addVectorStoreId("string")
+ .addVectorStore(
+ BetaAssistantCreateParams.ToolResources.FileSearch
+ .VectorStore
+ .builder()
+ .chunkingStrategy(
+ AutoFileChunkingStrategyParam.builder().build()
+ )
+ .addFileId("string")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty(
+ "foo",
+ JsonValue.from("string"),
+ )
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .addTool(CodeInterpreterTool.builder().build())
+ .topP(1.0)
+ .build()
+ )
+
+ val assistant = assistantFuture.get()
+ assistant.validate()
+ }
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val assistantServiceAsync = client.beta().assistants()
+
+ val assistantFuture =
+ assistantServiceAsync.retrieve(
+ BetaAssistantRetrieveParams.builder().assistantId("assistant_id").build()
+ )
+
+ val assistant = assistantFuture.get()
+ assistant.validate()
+ }
+
+ @Test
+ fun update() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val assistantServiceAsync = client.beta().assistants()
+
+ val assistantFuture =
+ assistantServiceAsync.update(
+ BetaAssistantUpdateParams.builder()
+ .assistantId("assistant_id")
+ .description("description")
+ .instructions("instructions")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .model(BetaAssistantUpdateParams.Model.O3_MINI)
+ .name("name")
+ .reasoningEffort(BetaAssistantUpdateParams.ReasoningEffort.LOW)
+ .responseFormatAuto()
+ .temperature(1.0)
+ .toolResources(
+ BetaAssistantUpdateParams.ToolResources.builder()
+ .codeInterpreter(
+ BetaAssistantUpdateParams.ToolResources.CodeInterpreter.builder()
+ .addFileId("string")
+ .build()
+ )
+ .fileSearch(
+ BetaAssistantUpdateParams.ToolResources.FileSearch.builder()
+ .addVectorStoreId("string")
+ .build()
+ )
+ .build()
+ )
+ .addTool(CodeInterpreterTool.builder().build())
+ .topP(1.0)
+ .build()
+ )
+
+ val assistant = assistantFuture.get()
+ assistant.validate()
+ }
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val assistantServiceAsync = client.beta().assistants()
+
+ val pageFuture = assistantServiceAsync.list()
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+
+ @Test
+ fun delete() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val assistantServiceAsync = client.beta().assistants()
+
+ val assistantDeletedFuture =
+ assistantServiceAsync.delete(
+ BetaAssistantDeleteParams.builder().assistantId("assistant_id").build()
+ )
+
+ val assistantDeleted = assistantDeletedFuture.get()
+ assistantDeleted.validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/beta/ThreadServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/ThreadServiceAsyncTest.kt
new file mode 100644
index 000000000..8c63d9a6c
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/ThreadServiceAsyncTest.kt
@@ -0,0 +1,409 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.beta
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.core.JsonValue
+import com.openai.models.AssistantToolChoiceOption
+import com.openai.models.AutoFileChunkingStrategyParam
+import com.openai.models.BetaThreadCreateAndRunParams
+import com.openai.models.BetaThreadCreateParams
+import com.openai.models.BetaThreadDeleteParams
+import com.openai.models.BetaThreadRetrieveParams
+import com.openai.models.BetaThreadUpdateParams
+import com.openai.models.ChatModel
+import com.openai.models.CodeInterpreterTool
+import com.openai.models.Metadata
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class ThreadServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val threadServiceAsync = client.beta().threads()
+
+ val threadFuture =
+ threadServiceAsync.create(
+ BetaThreadCreateParams.builder()
+ .addMessage(
+ BetaThreadCreateParams.Message.builder()
+ .content("string")
+ .role(BetaThreadCreateParams.Message.Role.USER)
+ .addAttachment(
+ BetaThreadCreateParams.Message.Attachment.builder()
+ .fileId("file_id")
+ .addTool(CodeInterpreterTool.builder().build())
+ .build()
+ )
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .build()
+ )
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .toolResources(
+ BetaThreadCreateParams.ToolResources.builder()
+ .codeInterpreter(
+ BetaThreadCreateParams.ToolResources.CodeInterpreter.builder()
+ .addFileId("string")
+ .build()
+ )
+ .fileSearch(
+ BetaThreadCreateParams.ToolResources.FileSearch.builder()
+ .addVectorStoreId("string")
+ .addVectorStore(
+ BetaThreadCreateParams.ToolResources.FileSearch.VectorStore
+ .builder()
+ .chunkingStrategy(
+ AutoFileChunkingStrategyParam.builder().build()
+ )
+ .addFileId("string")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty(
+ "foo",
+ JsonValue.from("string"),
+ )
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+
+ val thread = threadFuture.get()
+ thread.validate()
+ }
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val threadServiceAsync = client.beta().threads()
+
+ val threadFuture =
+ threadServiceAsync.retrieve(
+ BetaThreadRetrieveParams.builder().threadId("thread_id").build()
+ )
+
+ val thread = threadFuture.get()
+ thread.validate()
+ }
+
+ @Test
+ fun update() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val threadServiceAsync = client.beta().threads()
+
+ val threadFuture =
+ threadServiceAsync.update(
+ BetaThreadUpdateParams.builder()
+ .threadId("thread_id")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .toolResources(
+ BetaThreadUpdateParams.ToolResources.builder()
+ .codeInterpreter(
+ BetaThreadUpdateParams.ToolResources.CodeInterpreter.builder()
+ .addFileId("string")
+ .build()
+ )
+ .fileSearch(
+ BetaThreadUpdateParams.ToolResources.FileSearch.builder()
+ .addVectorStoreId("string")
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+
+ val thread = threadFuture.get()
+ thread.validate()
+ }
+
+ @Test
+ fun delete() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val threadServiceAsync = client.beta().threads()
+
+ val threadDeletedFuture =
+ threadServiceAsync.delete(
+ BetaThreadDeleteParams.builder().threadId("thread_id").build()
+ )
+
+ val threadDeleted = threadDeletedFuture.get()
+ threadDeleted.validate()
+ }
+
+ @Test
+ fun createAndRun() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val threadServiceAsync = client.beta().threads()
+
+ val runFuture =
+ threadServiceAsync.createAndRun(
+ BetaThreadCreateAndRunParams.builder()
+ .assistantId("assistant_id")
+ .instructions("instructions")
+ .maxCompletionTokens(256L)
+ .maxPromptTokens(256L)
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .model(ChatModel.O3_MINI)
+ .parallelToolCalls(true)
+ .responseFormatAuto()
+ .temperature(1.0)
+ .thread(
+ BetaThreadCreateAndRunParams.Thread.builder()
+ .addMessage(
+ BetaThreadCreateAndRunParams.Thread.Message.builder()
+ .content("string")
+ .role(BetaThreadCreateAndRunParams.Thread.Message.Role.USER)
+ .addAttachment(
+ BetaThreadCreateAndRunParams.Thread.Message.Attachment
+ .builder()
+ .fileId("file_id")
+ .addTool(CodeInterpreterTool.builder().build())
+ .build()
+ )
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .build()
+ )
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .toolResources(
+ BetaThreadCreateAndRunParams.Thread.ToolResources.builder()
+ .codeInterpreter(
+ BetaThreadCreateAndRunParams.Thread.ToolResources
+ .CodeInterpreter
+ .builder()
+ .addFileId("string")
+ .build()
+ )
+ .fileSearch(
+ BetaThreadCreateAndRunParams.Thread.ToolResources.FileSearch
+ .builder()
+ .addVectorStoreId("string")
+ .addVectorStore(
+ BetaThreadCreateAndRunParams.Thread.ToolResources
+ .FileSearch
+ .VectorStore
+ .builder()
+ .chunkingStrategy(
+ AutoFileChunkingStrategyParam.builder()
+ .build()
+ )
+ .addFileId("string")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty(
+ "foo",
+ JsonValue.from("string"),
+ )
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .toolChoice(AssistantToolChoiceOption.Auto.NONE)
+ .toolResources(
+ BetaThreadCreateAndRunParams.ToolResources.builder()
+ .codeInterpreter(
+ BetaThreadCreateAndRunParams.ToolResources.CodeInterpreter.builder()
+ .addFileId("string")
+ .build()
+ )
+ .fileSearch(
+ BetaThreadCreateAndRunParams.ToolResources.FileSearch.builder()
+ .addVectorStoreId("string")
+ .build()
+ )
+ .build()
+ )
+ .addTool(CodeInterpreterTool.builder().build())
+ .topP(1.0)
+ .truncationStrategy(
+ BetaThreadCreateAndRunParams.TruncationStrategy.builder()
+ .type(BetaThreadCreateAndRunParams.TruncationStrategy.Type.AUTO)
+ .lastMessages(1L)
+ .build()
+ )
+ .build()
+ )
+
+ val run = runFuture.get()
+ run.validate()
+ }
+
+ @Test
+ fun createAndRunStreaming() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val threadServiceAsync = client.beta().threads()
+
+ val runStreamResponse =
+ threadServiceAsync.createAndRunStreaming(
+ BetaThreadCreateAndRunParams.builder()
+ .assistantId("assistant_id")
+ .instructions("instructions")
+ .maxCompletionTokens(256L)
+ .maxPromptTokens(256L)
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .model(ChatModel.O3_MINI)
+ .parallelToolCalls(true)
+ .responseFormatAuto()
+ .temperature(1.0)
+ .thread(
+ BetaThreadCreateAndRunParams.Thread.builder()
+ .addMessage(
+ BetaThreadCreateAndRunParams.Thread.Message.builder()
+ .content("string")
+ .role(BetaThreadCreateAndRunParams.Thread.Message.Role.USER)
+ .addAttachment(
+ BetaThreadCreateAndRunParams.Thread.Message.Attachment
+ .builder()
+ .fileId("file_id")
+ .addTool(CodeInterpreterTool.builder().build())
+ .build()
+ )
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .build()
+ )
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .toolResources(
+ BetaThreadCreateAndRunParams.Thread.ToolResources.builder()
+ .codeInterpreter(
+ BetaThreadCreateAndRunParams.Thread.ToolResources
+ .CodeInterpreter
+ .builder()
+ .addFileId("string")
+ .build()
+ )
+ .fileSearch(
+ BetaThreadCreateAndRunParams.Thread.ToolResources.FileSearch
+ .builder()
+ .addVectorStoreId("string")
+ .addVectorStore(
+ BetaThreadCreateAndRunParams.Thread.ToolResources
+ .FileSearch
+ .VectorStore
+ .builder()
+ .chunkingStrategy(
+ AutoFileChunkingStrategyParam.builder()
+ .build()
+ )
+ .addFileId("string")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty(
+ "foo",
+ JsonValue.from("string"),
+ )
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .toolChoice(AssistantToolChoiceOption.Auto.NONE)
+ .toolResources(
+ BetaThreadCreateAndRunParams.ToolResources.builder()
+ .codeInterpreter(
+ BetaThreadCreateAndRunParams.ToolResources.CodeInterpreter.builder()
+ .addFileId("string")
+ .build()
+ )
+ .fileSearch(
+ BetaThreadCreateAndRunParams.ToolResources.FileSearch.builder()
+ .addVectorStoreId("string")
+ .build()
+ )
+ .build()
+ )
+ .addTool(CodeInterpreterTool.builder().build())
+ .topP(1.0)
+ .truncationStrategy(
+ BetaThreadCreateAndRunParams.TruncationStrategy.builder()
+ .type(BetaThreadCreateAndRunParams.TruncationStrategy.Type.AUTO)
+ .lastMessages(1L)
+ .build()
+ )
+ .build()
+ )
+
+ val onCompleteFuture =
+ runStreamResponse.subscribe { run -> run.validate() }.onCompleteFuture()
+ onCompleteFuture.get()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/beta/VectorStoreServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/VectorStoreServiceAsyncTest.kt
new file mode 100644
index 000000000..13f2a9bba
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/VectorStoreServiceAsyncTest.kt
@@ -0,0 +1,129 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.beta
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.core.JsonValue
+import com.openai.models.AutoFileChunkingStrategyParam
+import com.openai.models.BetaVectorStoreCreateParams
+import com.openai.models.BetaVectorStoreDeleteParams
+import com.openai.models.BetaVectorStoreRetrieveParams
+import com.openai.models.BetaVectorStoreUpdateParams
+import com.openai.models.Metadata
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class VectorStoreServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val vectorStoreServiceAsync = client.beta().vectorStores()
+
+ val vectorStoreFuture =
+ vectorStoreServiceAsync.create(
+ BetaVectorStoreCreateParams.builder()
+ .chunkingStrategy(AutoFileChunkingStrategyParam.builder().build())
+ .expiresAfter(
+ BetaVectorStoreCreateParams.ExpiresAfter.builder().days(1L).build()
+ )
+ .addFileId("string")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .name("name")
+ .build()
+ )
+
+ val vectorStore = vectorStoreFuture.get()
+ vectorStore.validate()
+ }
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val vectorStoreServiceAsync = client.beta().vectorStores()
+
+ val vectorStoreFuture =
+ vectorStoreServiceAsync.retrieve(
+ BetaVectorStoreRetrieveParams.builder().vectorStoreId("vector_store_id").build()
+ )
+
+ val vectorStore = vectorStoreFuture.get()
+ vectorStore.validate()
+ }
+
+ @Test
+ fun update() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val vectorStoreServiceAsync = client.beta().vectorStores()
+
+ val vectorStoreFuture =
+ vectorStoreServiceAsync.update(
+ BetaVectorStoreUpdateParams.builder()
+ .vectorStoreId("vector_store_id")
+ .expiresAfter(
+ BetaVectorStoreUpdateParams.ExpiresAfter.builder().days(1L).build()
+ )
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .name("name")
+ .build()
+ )
+
+ val vectorStore = vectorStoreFuture.get()
+ vectorStore.validate()
+ }
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val vectorStoreServiceAsync = client.beta().vectorStores()
+
+ val pageFuture = vectorStoreServiceAsync.list()
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+
+ @Test
+ fun delete() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val vectorStoreServiceAsync = client.beta().vectorStores()
+
+ val vectorStoreDeletedFuture =
+ vectorStoreServiceAsync.delete(
+ BetaVectorStoreDeleteParams.builder().vectorStoreId("vector_store_id").build()
+ )
+
+ val vectorStoreDeleted = vectorStoreDeletedFuture.get()
+ vectorStoreDeleted.validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/beta/threads/MessageServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/threads/MessageServiceAsyncTest.kt
new file mode 100644
index 000000000..c86a02b6e
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/threads/MessageServiceAsyncTest.kt
@@ -0,0 +1,139 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.beta.threads
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.core.JsonValue
+import com.openai.models.BetaThreadMessageCreateParams
+import com.openai.models.BetaThreadMessageDeleteParams
+import com.openai.models.BetaThreadMessageListParams
+import com.openai.models.BetaThreadMessageRetrieveParams
+import com.openai.models.BetaThreadMessageUpdateParams
+import com.openai.models.CodeInterpreterTool
+import com.openai.models.Metadata
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class MessageServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val messageServiceAsync = client.beta().threads().messages()
+
+ val messageFuture =
+ messageServiceAsync.create(
+ BetaThreadMessageCreateParams.builder()
+ .threadId("thread_id")
+ .content("string")
+ .role(BetaThreadMessageCreateParams.Role.USER)
+ .addAttachment(
+ BetaThreadMessageCreateParams.Attachment.builder()
+ .fileId("file_id")
+ .addTool(CodeInterpreterTool.builder().build())
+ .build()
+ )
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .build()
+ )
+
+ val message = messageFuture.get()
+ message.validate()
+ }
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val messageServiceAsync = client.beta().threads().messages()
+
+ val messageFuture =
+ messageServiceAsync.retrieve(
+ BetaThreadMessageRetrieveParams.builder()
+ .threadId("thread_id")
+ .messageId("message_id")
+ .build()
+ )
+
+ val message = messageFuture.get()
+ message.validate()
+ }
+
+ @Test
+ fun update() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val messageServiceAsync = client.beta().threads().messages()
+
+ val messageFuture =
+ messageServiceAsync.update(
+ BetaThreadMessageUpdateParams.builder()
+ .threadId("thread_id")
+ .messageId("message_id")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .build()
+ )
+
+ val message = messageFuture.get()
+ message.validate()
+ }
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val messageServiceAsync = client.beta().threads().messages()
+
+ val pageFuture =
+ messageServiceAsync.list(
+ BetaThreadMessageListParams.builder().threadId("thread_id").build()
+ )
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+
+ @Test
+ fun delete() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val messageServiceAsync = client.beta().threads().messages()
+
+ val messageDeletedFuture =
+ messageServiceAsync.delete(
+ BetaThreadMessageDeleteParams.builder()
+ .threadId("thread_id")
+ .messageId("message_id")
+ .build()
+ )
+
+ val messageDeleted = messageDeletedFuture.get()
+ messageDeleted.validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/beta/threads/RunServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/threads/RunServiceAsyncTest.kt
new file mode 100644
index 000000000..ab64e6992
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/threads/RunServiceAsyncTest.kt
@@ -0,0 +1,282 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.beta.threads
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.core.JsonValue
+import com.openai.models.AssistantToolChoiceOption
+import com.openai.models.BetaThreadRunCancelParams
+import com.openai.models.BetaThreadRunCreateParams
+import com.openai.models.BetaThreadRunListParams
+import com.openai.models.BetaThreadRunRetrieveParams
+import com.openai.models.BetaThreadRunSubmitToolOutputsParams
+import com.openai.models.BetaThreadRunUpdateParams
+import com.openai.models.ChatModel
+import com.openai.models.CodeInterpreterTool
+import com.openai.models.Metadata
+import com.openai.models.RunStepInclude
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class RunServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val runServiceAsync = client.beta().threads().runs()
+
+ val runFuture =
+ runServiceAsync.create(
+ BetaThreadRunCreateParams.builder()
+ .threadId("thread_id")
+ .addInclude(RunStepInclude.STEP_DETAILS_TOOL_CALLS_FILE_SEARCH_RESULTS_CONTENT)
+ .assistantId("assistant_id")
+ .additionalInstructions("additional_instructions")
+ .addAdditionalMessage(
+ BetaThreadRunCreateParams.AdditionalMessage.builder()
+ .content("string")
+ .role(BetaThreadRunCreateParams.AdditionalMessage.Role.USER)
+ .addAttachment(
+ BetaThreadRunCreateParams.AdditionalMessage.Attachment.builder()
+ .fileId("file_id")
+ .addTool(CodeInterpreterTool.builder().build())
+ .build()
+ )
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .build()
+ )
+ .instructions("instructions")
+ .maxCompletionTokens(256L)
+ .maxPromptTokens(256L)
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .model(ChatModel.O3_MINI)
+ .parallelToolCalls(true)
+ .reasoningEffort(BetaThreadRunCreateParams.ReasoningEffort.LOW)
+ .responseFormatAuto()
+ .temperature(1.0)
+ .toolChoice(AssistantToolChoiceOption.Auto.NONE)
+ .addTool(CodeInterpreterTool.builder().build())
+ .topP(1.0)
+ .truncationStrategy(
+ BetaThreadRunCreateParams.TruncationStrategy.builder()
+ .type(BetaThreadRunCreateParams.TruncationStrategy.Type.AUTO)
+ .lastMessages(1L)
+ .build()
+ )
+ .build()
+ )
+
+ val run = runFuture.get()
+ run.validate()
+ }
+
+ @Test
+ fun createStreaming() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val runServiceAsync = client.beta().threads().runs()
+
+ val runStreamResponse =
+ runServiceAsync.createStreaming(
+ BetaThreadRunCreateParams.builder()
+ .threadId("thread_id")
+ .addInclude(RunStepInclude.STEP_DETAILS_TOOL_CALLS_FILE_SEARCH_RESULTS_CONTENT)
+ .assistantId("assistant_id")
+ .additionalInstructions("additional_instructions")
+ .addAdditionalMessage(
+ BetaThreadRunCreateParams.AdditionalMessage.builder()
+ .content("string")
+ .role(BetaThreadRunCreateParams.AdditionalMessage.Role.USER)
+ .addAttachment(
+ BetaThreadRunCreateParams.AdditionalMessage.Attachment.builder()
+ .fileId("file_id")
+ .addTool(CodeInterpreterTool.builder().build())
+ .build()
+ )
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .build()
+ )
+ .instructions("instructions")
+ .maxCompletionTokens(256L)
+ .maxPromptTokens(256L)
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .model(ChatModel.O3_MINI)
+ .parallelToolCalls(true)
+ .reasoningEffort(BetaThreadRunCreateParams.ReasoningEffort.LOW)
+ .responseFormatAuto()
+ .temperature(1.0)
+ .toolChoice(AssistantToolChoiceOption.Auto.NONE)
+ .addTool(CodeInterpreterTool.builder().build())
+ .topP(1.0)
+ .truncationStrategy(
+ BetaThreadRunCreateParams.TruncationStrategy.builder()
+ .type(BetaThreadRunCreateParams.TruncationStrategy.Type.AUTO)
+ .lastMessages(1L)
+ .build()
+ )
+ .build()
+ )
+
+ val onCompleteFuture =
+ runStreamResponse.subscribe { run -> run.validate() }.onCompleteFuture()
+ onCompleteFuture.get()
+ }
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val runServiceAsync = client.beta().threads().runs()
+
+ val runFuture =
+ runServiceAsync.retrieve(
+ BetaThreadRunRetrieveParams.builder().threadId("thread_id").runId("run_id").build()
+ )
+
+ val run = runFuture.get()
+ run.validate()
+ }
+
+ @Test
+ fun update() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val runServiceAsync = client.beta().threads().runs()
+
+ val runFuture =
+ runServiceAsync.update(
+ BetaThreadRunUpdateParams.builder()
+ .threadId("thread_id")
+ .runId("run_id")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .build()
+ )
+
+ val run = runFuture.get()
+ run.validate()
+ }
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val runServiceAsync = client.beta().threads().runs()
+
+ val pageFuture =
+ runServiceAsync.list(BetaThreadRunListParams.builder().threadId("thread_id").build())
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+
+ @Test
+ fun cancel() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val runServiceAsync = client.beta().threads().runs()
+
+ val runFuture =
+ runServiceAsync.cancel(
+ BetaThreadRunCancelParams.builder().threadId("thread_id").runId("run_id").build()
+ )
+
+ val run = runFuture.get()
+ run.validate()
+ }
+
+ @Test
+ fun submitToolOutputs() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val runServiceAsync = client.beta().threads().runs()
+
+ val runFuture =
+ runServiceAsync.submitToolOutputs(
+ BetaThreadRunSubmitToolOutputsParams.builder()
+ .threadId("thread_id")
+ .runId("run_id")
+ .addToolOutput(
+ BetaThreadRunSubmitToolOutputsParams.ToolOutput.builder()
+ .output("output")
+ .toolCallId("tool_call_id")
+ .build()
+ )
+ .build()
+ )
+
+ val run = runFuture.get()
+ run.validate()
+ }
+
+ @Test
+ fun submitToolOutputsStreaming() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val runServiceAsync = client.beta().threads().runs()
+
+ val runStreamResponse =
+ runServiceAsync.submitToolOutputsStreaming(
+ BetaThreadRunSubmitToolOutputsParams.builder()
+ .threadId("thread_id")
+ .runId("run_id")
+ .addToolOutput(
+ BetaThreadRunSubmitToolOutputsParams.ToolOutput.builder()
+ .output("output")
+ .toolCallId("tool_call_id")
+ .build()
+ )
+ .build()
+ )
+
+ val onCompleteFuture =
+ runStreamResponse.subscribe { run -> run.validate() }.onCompleteFuture()
+ onCompleteFuture.get()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/beta/threads/runs/StepServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/threads/runs/StepServiceAsyncTest.kt
new file mode 100644
index 000000000..ab055ca77
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/threads/runs/StepServiceAsyncTest.kt
@@ -0,0 +1,56 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.beta.threads.runs
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.BetaThreadRunStepListParams
+import com.openai.models.BetaThreadRunStepRetrieveParams
+import com.openai.models.RunStepInclude
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class StepServiceAsyncTest {
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val stepServiceAsync = client.beta().threads().runs().steps()
+
+ val runStepFuture =
+ stepServiceAsync.retrieve(
+ BetaThreadRunStepRetrieveParams.builder()
+ .threadId("thread_id")
+ .runId("run_id")
+ .stepId("step_id")
+ .addInclude(RunStepInclude.STEP_DETAILS_TOOL_CALLS_FILE_SEARCH_RESULTS_CONTENT)
+ .build()
+ )
+
+ val runStep = runStepFuture.get()
+ runStep.validate()
+ }
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val stepServiceAsync = client.beta().threads().runs().steps()
+
+ val pageFuture =
+ stepServiceAsync.list(
+ BetaThreadRunStepListParams.builder().threadId("thread_id").runId("run_id").build()
+ )
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/beta/vectorStores/FileBatchServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/vectorStores/FileBatchServiceAsyncTest.kt
new file mode 100644
index 000000000..eb6863878
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/vectorStores/FileBatchServiceAsyncTest.kt
@@ -0,0 +1,102 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.beta.vectorStores
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.AutoFileChunkingStrategyParam
+import com.openai.models.BetaVectorStoreFileBatchCancelParams
+import com.openai.models.BetaVectorStoreFileBatchCreateParams
+import com.openai.models.BetaVectorStoreFileBatchListFilesParams
+import com.openai.models.BetaVectorStoreFileBatchRetrieveParams
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class FileBatchServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val fileBatchServiceAsync = client.beta().vectorStores().fileBatches()
+
+ val vectorStoreFileBatchFuture =
+ fileBatchServiceAsync.create(
+ BetaVectorStoreFileBatchCreateParams.builder()
+ .vectorStoreId("vs_abc123")
+ .addFileId("string")
+ .chunkingStrategy(AutoFileChunkingStrategyParam.builder().build())
+ .build()
+ )
+
+ val vectorStoreFileBatch = vectorStoreFileBatchFuture.get()
+ vectorStoreFileBatch.validate()
+ }
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val fileBatchServiceAsync = client.beta().vectorStores().fileBatches()
+
+ val vectorStoreFileBatchFuture =
+ fileBatchServiceAsync.retrieve(
+ BetaVectorStoreFileBatchRetrieveParams.builder()
+ .vectorStoreId("vs_abc123")
+ .batchId("vsfb_abc123")
+ .build()
+ )
+
+ val vectorStoreFileBatch = vectorStoreFileBatchFuture.get()
+ vectorStoreFileBatch.validate()
+ }
+
+ @Test
+ fun cancel() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val fileBatchServiceAsync = client.beta().vectorStores().fileBatches()
+
+ val vectorStoreFileBatchFuture =
+ fileBatchServiceAsync.cancel(
+ BetaVectorStoreFileBatchCancelParams.builder()
+ .vectorStoreId("vector_store_id")
+ .batchId("batch_id")
+ .build()
+ )
+
+ val vectorStoreFileBatch = vectorStoreFileBatchFuture.get()
+ vectorStoreFileBatch.validate()
+ }
+
+ @Test
+ fun listFiles() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val fileBatchServiceAsync = client.beta().vectorStores().fileBatches()
+
+ val pageFuture =
+ fileBatchServiceAsync.listFiles(
+ BetaVectorStoreFileBatchListFilesParams.builder()
+ .vectorStoreId("vector_store_id")
+ .batchId("batch_id")
+ .build()
+ )
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/beta/vectorStores/FileServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/vectorStores/FileServiceAsyncTest.kt
new file mode 100644
index 000000000..dea24f398
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/beta/vectorStores/FileServiceAsyncTest.kt
@@ -0,0 +1,99 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.beta.vectorStores
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.AutoFileChunkingStrategyParam
+import com.openai.models.BetaVectorStoreFileCreateParams
+import com.openai.models.BetaVectorStoreFileDeleteParams
+import com.openai.models.BetaVectorStoreFileListParams
+import com.openai.models.BetaVectorStoreFileRetrieveParams
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class FileServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val fileServiceAsync = client.beta().vectorStores().files()
+
+ val vectorStoreFileFuture =
+ fileServiceAsync.create(
+ BetaVectorStoreFileCreateParams.builder()
+ .vectorStoreId("vs_abc123")
+ .fileId("file_id")
+ .chunkingStrategy(AutoFileChunkingStrategyParam.builder().build())
+ .build()
+ )
+
+ val vectorStoreFile = vectorStoreFileFuture.get()
+ vectorStoreFile.validate()
+ }
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val fileServiceAsync = client.beta().vectorStores().files()
+
+ val vectorStoreFileFuture =
+ fileServiceAsync.retrieve(
+ BetaVectorStoreFileRetrieveParams.builder()
+ .vectorStoreId("vs_abc123")
+ .fileId("file-abc123")
+ .build()
+ )
+
+ val vectorStoreFile = vectorStoreFileFuture.get()
+ vectorStoreFile.validate()
+ }
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val fileServiceAsync = client.beta().vectorStores().files()
+
+ val pageFuture =
+ fileServiceAsync.list(
+ BetaVectorStoreFileListParams.builder().vectorStoreId("vector_store_id").build()
+ )
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+
+ @Test
+ fun delete() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val fileServiceAsync = client.beta().vectorStores().files()
+
+ val vectorStoreFileDeletedFuture =
+ fileServiceAsync.delete(
+ BetaVectorStoreFileDeleteParams.builder()
+ .vectorStoreId("vector_store_id")
+ .fileId("file_id")
+ .build()
+ )
+
+ val vectorStoreFileDeleted = vectorStoreFileDeletedFuture.get()
+ vectorStoreFileDeleted.validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/chat/CompletionServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/chat/CompletionServiceAsyncTest.kt
new file mode 100644
index 000000000..72591ccd1
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/chat/CompletionServiceAsyncTest.kt
@@ -0,0 +1,276 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.chat
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.core.JsonValue
+import com.openai.models.ChatCompletionAudioParam
+import com.openai.models.ChatCompletionCreateParams
+import com.openai.models.ChatCompletionDeleteParams
+import com.openai.models.ChatCompletionDeveloperMessageParam
+import com.openai.models.ChatCompletionModality
+import com.openai.models.ChatCompletionPredictionContent
+import com.openai.models.ChatCompletionReasoningEffort
+import com.openai.models.ChatCompletionRetrieveParams
+import com.openai.models.ChatCompletionStreamOptions
+import com.openai.models.ChatCompletionTool
+import com.openai.models.ChatCompletionToolChoiceOption
+import com.openai.models.ChatCompletionUpdateParams
+import com.openai.models.ChatModel
+import com.openai.models.FunctionDefinition
+import com.openai.models.FunctionParameters
+import com.openai.models.Metadata
+import com.openai.models.ResponseFormatText
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class CompletionServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val completionServiceAsync = client.chat().completions()
+
+ val chatCompletionFuture =
+ completionServiceAsync.create(
+ ChatCompletionCreateParams.builder()
+ .addMessage(
+ ChatCompletionDeveloperMessageParam.builder()
+ .content("string")
+ .name("name")
+ .build()
+ )
+ .model(ChatModel.O3_MINI)
+ .audio(
+ ChatCompletionAudioParam.builder()
+ .format(ChatCompletionAudioParam.Format.WAV)
+ .voice(ChatCompletionAudioParam.Voice.ALLOY)
+ .build()
+ )
+ .frequencyPenalty(-2.0)
+ .functionCall(ChatCompletionCreateParams.FunctionCall.Auto.NONE)
+ .addFunction(
+ ChatCompletionCreateParams.Function.builder()
+ .name("name")
+ .description("description")
+ .parameters(
+ FunctionParameters.builder()
+ .putAdditionalProperty("foo", JsonValue.from("bar"))
+ .build()
+ )
+ .build()
+ )
+ .logitBias(
+ ChatCompletionCreateParams.LogitBias.builder()
+ .putAdditionalProperty("foo", JsonValue.from(0))
+ .build()
+ )
+ .logprobs(true)
+ .maxCompletionTokens(0L)
+ .maxTokens(0L)
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .addModality(ChatCompletionModality.TEXT)
+ .n(1L)
+ .parallelToolCalls(true)
+ .prediction(ChatCompletionPredictionContent.builder().content("string").build())
+ .presencePenalty(-2.0)
+ .reasoningEffort(ChatCompletionReasoningEffort.LOW)
+ .responseFormat(ResponseFormatText.builder().build())
+ .seed(0L)
+ .serviceTier(ChatCompletionCreateParams.ServiceTier.AUTO)
+ .stop("string")
+ .store(true)
+ .streamOptions(ChatCompletionStreamOptions.builder().includeUsage(true).build())
+ .temperature(1.0)
+ .toolChoice(ChatCompletionToolChoiceOption.Auto.NONE)
+ .addTool(
+ ChatCompletionTool.builder()
+ .function(
+ FunctionDefinition.builder()
+ .name("name")
+ .description("description")
+ .parameters(
+ FunctionParameters.builder()
+ .putAdditionalProperty("foo", JsonValue.from("bar"))
+ .build()
+ )
+ .strict(true)
+ .build()
+ )
+ .build()
+ )
+ .topLogprobs(0L)
+ .topP(1.0)
+ .user("user-1234")
+ .build()
+ )
+
+ val chatCompletion = chatCompletionFuture.get()
+ chatCompletion.validate()
+ }
+
+ @Test
+ fun createStreaming() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val completionServiceAsync = client.chat().completions()
+
+ val chatCompletionStreamResponse =
+ completionServiceAsync.createStreaming(
+ ChatCompletionCreateParams.builder()
+ .addMessage(
+ ChatCompletionDeveloperMessageParam.builder()
+ .content("string")
+ .name("name")
+ .build()
+ )
+ .model(ChatModel.O3_MINI)
+ .audio(
+ ChatCompletionAudioParam.builder()
+ .format(ChatCompletionAudioParam.Format.WAV)
+ .voice(ChatCompletionAudioParam.Voice.ALLOY)
+ .build()
+ )
+ .frequencyPenalty(-2.0)
+ .functionCall(ChatCompletionCreateParams.FunctionCall.Auto.NONE)
+ .addFunction(
+ ChatCompletionCreateParams.Function.builder()
+ .name("name")
+ .description("description")
+ .parameters(
+ FunctionParameters.builder()
+ .putAdditionalProperty("foo", JsonValue.from("bar"))
+ .build()
+ )
+ .build()
+ )
+ .logitBias(
+ ChatCompletionCreateParams.LogitBias.builder()
+ .putAdditionalProperty("foo", JsonValue.from(0))
+ .build()
+ )
+ .logprobs(true)
+ .maxCompletionTokens(0L)
+ .maxTokens(0L)
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .addModality(ChatCompletionModality.TEXT)
+ .n(1L)
+ .parallelToolCalls(true)
+ .prediction(ChatCompletionPredictionContent.builder().content("string").build())
+ .presencePenalty(-2.0)
+ .reasoningEffort(ChatCompletionReasoningEffort.LOW)
+ .responseFormat(ResponseFormatText.builder().build())
+ .seed(0L)
+ .serviceTier(ChatCompletionCreateParams.ServiceTier.AUTO)
+ .stop("string")
+ .store(true)
+ .streamOptions(ChatCompletionStreamOptions.builder().includeUsage(true).build())
+ .temperature(1.0)
+ .toolChoice(ChatCompletionToolChoiceOption.Auto.NONE)
+ .addTool(
+ ChatCompletionTool.builder()
+ .function(
+ FunctionDefinition.builder()
+ .name("name")
+ .description("description")
+ .parameters(
+ FunctionParameters.builder()
+ .putAdditionalProperty("foo", JsonValue.from("bar"))
+ .build()
+ )
+ .strict(true)
+ .build()
+ )
+ .build()
+ )
+ .topLogprobs(0L)
+ .topP(1.0)
+ .user("user-1234")
+ .build()
+ )
+
+ val onCompleteFuture =
+ chatCompletionStreamResponse
+ .subscribe { chatCompletion -> chatCompletion.validate() }
+ .onCompleteFuture()
+ onCompleteFuture.get()
+ }
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val completionServiceAsync = client.chat().completions()
+
+ val chatCompletionFuture =
+ completionServiceAsync.retrieve(
+ ChatCompletionRetrieveParams.builder().completionId("completion_id").build()
+ )
+
+ val chatCompletion = chatCompletionFuture.get()
+ chatCompletion.validate()
+ }
+
+ @Test
+ fun update() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val completionServiceAsync = client.chat().completions()
+
+ val chatCompletionFuture =
+ completionServiceAsync.update(
+ ChatCompletionUpdateParams.builder()
+ .completionId("completion_id")
+ .metadata(
+ Metadata.builder()
+ .putAdditionalProperty("foo", JsonValue.from("string"))
+ .build()
+ )
+ .build()
+ )
+
+ val chatCompletion = chatCompletionFuture.get()
+ chatCompletion.validate()
+ }
+
+ @Test
+ fun delete() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val completionServiceAsync = client.chat().completions()
+
+ val chatCompletionDeletedFuture =
+ completionServiceAsync.delete(
+ ChatCompletionDeleteParams.builder().completionId("completion_id").build()
+ )
+
+ val chatCompletionDeleted = chatCompletionDeletedFuture.get()
+ chatCompletionDeleted.validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/chat/completions/MessageServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/chat/completions/MessageServiceAsyncTest.kt
new file mode 100644
index 000000000..cbac37539
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/chat/completions/MessageServiceAsyncTest.kt
@@ -0,0 +1,31 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.chat.completions
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.ChatCompletionMessageListParams
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class MessageServiceAsyncTest {
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val messageServiceAsync = client.chat().completions().messages()
+
+ val pageFuture =
+ messageServiceAsync.list(
+ ChatCompletionMessageListParams.builder().completionId("completion_id").build()
+ )
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/fineTuning/JobServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/fineTuning/JobServiceAsyncTest.kt
new file mode 100644
index 000000000..c63f30234
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/fineTuning/JobServiceAsyncTest.kt
@@ -0,0 +1,164 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.fineTuning
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.FineTuningJobCancelParams
+import com.openai.models.FineTuningJobCreateParams
+import com.openai.models.FineTuningJobListEventsParams
+import com.openai.models.FineTuningJobRetrieveParams
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class JobServiceAsyncTest {
+
+ @Test
+ fun create() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val jobServiceAsync = client.fineTuning().jobs()
+
+ val fineTuningJobFuture =
+ jobServiceAsync.create(
+ FineTuningJobCreateParams.builder()
+ .model(FineTuningJobCreateParams.Model.BABBAGE_002)
+ .trainingFile("file-abc123")
+ .hyperparameters(
+ FineTuningJobCreateParams.Hyperparameters.builder()
+ .batchSizeAuto()
+ .learningRateMultiplierAuto()
+ .nEpochsAuto()
+ .build()
+ )
+ .addIntegration(
+ FineTuningJobCreateParams.Integration.builder()
+ .wandb(
+ FineTuningJobCreateParams.Integration.Wandb.builder()
+ .project("my-wandb-project")
+ .entity("entity")
+ .name("name")
+ .addTag("custom-tag")
+ .build()
+ )
+ .build()
+ )
+ .method(
+ FineTuningJobCreateParams.Method.builder()
+ .dpo(
+ FineTuningJobCreateParams.Method.Dpo.builder()
+ .hyperparameters(
+ FineTuningJobCreateParams.Method.Dpo.Hyperparameters
+ .builder()
+ .batchSizeAuto()
+ .betaAuto()
+ .learningRateMultiplierAuto()
+ .nEpochsAuto()
+ .build()
+ )
+ .build()
+ )
+ .supervised(
+ FineTuningJobCreateParams.Method.Supervised.builder()
+ .hyperparameters(
+ FineTuningJobCreateParams.Method.Supervised.Hyperparameters
+ .builder()
+ .batchSizeAuto()
+ .learningRateMultiplierAuto()
+ .nEpochsAuto()
+ .build()
+ )
+ .build()
+ )
+ .type(FineTuningJobCreateParams.Method.Type.SUPERVISED)
+ .build()
+ )
+ .seed(42L)
+ .suffix("x")
+ .validationFile("file-abc123")
+ .build()
+ )
+
+ val fineTuningJob = fineTuningJobFuture.get()
+ fineTuningJob.validate()
+ }
+
+ @Test
+ fun retrieve() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val jobServiceAsync = client.fineTuning().jobs()
+
+ val fineTuningJobFuture =
+ jobServiceAsync.retrieve(
+ FineTuningJobRetrieveParams.builder()
+ .fineTuningJobId("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
+ .build()
+ )
+
+ val fineTuningJob = fineTuningJobFuture.get()
+ fineTuningJob.validate()
+ }
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val jobServiceAsync = client.fineTuning().jobs()
+
+ val pageFuture = jobServiceAsync.list()
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+
+ @Test
+ fun cancel() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val jobServiceAsync = client.fineTuning().jobs()
+
+ val fineTuningJobFuture =
+ jobServiceAsync.cancel(
+ FineTuningJobCancelParams.builder()
+ .fineTuningJobId("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
+ .build()
+ )
+
+ val fineTuningJob = fineTuningJobFuture.get()
+ fineTuningJob.validate()
+ }
+
+ @Test
+ fun listEvents() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val jobServiceAsync = client.fineTuning().jobs()
+
+ val pageFuture =
+ jobServiceAsync.listEvents(
+ FineTuningJobListEventsParams.builder()
+ .fineTuningJobId("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
+ .build()
+ )
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/async/fineTuning/jobs/CheckpointServiceAsyncTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/async/fineTuning/jobs/CheckpointServiceAsyncTest.kt
new file mode 100644
index 000000000..c6ed8cd3f
--- /dev/null
+++ b/openai-java-core/src/test/kotlin/com/openai/services/async/fineTuning/jobs/CheckpointServiceAsyncTest.kt
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec by Stainless.
+
+package com.openai.services.async.fineTuning.jobs
+
+import com.openai.TestServerExtension
+import com.openai.client.okhttp.OpenAIOkHttpClientAsync
+import com.openai.models.FineTuningJobCheckpointListParams
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.ExtendWith
+
+@ExtendWith(TestServerExtension::class)
+class CheckpointServiceAsyncTest {
+
+ @Test
+ fun list() {
+ val client =
+ OpenAIOkHttpClientAsync.builder()
+ .baseUrl(TestServerExtension.BASE_URL)
+ .apiKey("My API Key")
+ .build()
+ val checkpointServiceAsync = client.fineTuning().jobs().checkpoints()
+
+ val pageFuture =
+ checkpointServiceAsync.list(
+ FineTuningJobCheckpointListParams.builder()
+ .fineTuningJobId("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
+ .build()
+ )
+
+ val page = pageFuture.get()
+ page.response().validate()
+ }
+}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/BatchServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/BatchServiceTest.kt
index 1aa8c4f9a..33621e800 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/BatchServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/BatchServiceTest.kt
@@ -16,13 +16,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class BatchServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val batchService = client.batches()
+
val batch =
batchService.create(
BatchCreateParams.builder()
@@ -36,46 +37,49 @@ class BatchServiceTest {
)
.build()
)
- println(batch)
+
batch.validate()
}
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val batchService = client.batches()
+
val batch = batchService.retrieve(BatchRetrieveParams.builder().batchId("batch_id").build())
- println(batch)
+
batch.validate()
}
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val batchService = client.batches()
- val listBatchesResponse = batchService.list()
- println(listBatchesResponse)
- listBatchesResponse.data().forEach { it.validate() }
+
+ val page = batchService.list()
+
+ page.response().validate()
}
@Test
- fun callCancel() {
+ fun cancel() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val batchService = client.batches()
+
val batch = batchService.cancel(BatchCancelParams.builder().batchId("batch_id").build())
- println(batch)
+
batch.validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/CompletionServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/CompletionServiceTest.kt
index 55c16983c..1d1ee4569 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/CompletionServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/CompletionServiceTest.kt
@@ -14,13 +14,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class CompletionServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val completionService = client.completions()
+
val completion =
completionService.create(
CompletionCreateParams.builder()
@@ -47,12 +48,12 @@ class CompletionServiceTest {
.user("user-1234")
.build()
)
- println(completion)
+
completion.validate()
}
@Test
- fun callCreateStreaming() {
+ fun createStreaming() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
@@ -60,7 +61,7 @@ class CompletionServiceTest {
.build()
val completionService = client.completions()
- val completionStream =
+ val completionStreamResponse =
completionService.createStreaming(
CompletionCreateParams.builder()
.model(CompletionCreateParams.Model.GPT_3_5_TURBO_INSTRUCT)
@@ -87,11 +88,8 @@ class CompletionServiceTest {
.build()
)
- completionStream.use {
- completionStream.stream().forEach {
- println(it)
- it.validate()
- }
+ completionStreamResponse.use {
+ completionStreamResponse.stream().forEach { completion -> completion.validate() }
}
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/EmbeddingServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/EmbeddingServiceTest.kt
index 3dae18256..0d31b863e 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/EmbeddingServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/EmbeddingServiceTest.kt
@@ -13,13 +13,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class EmbeddingServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val embeddingService = client.embeddings()
+
val createEmbeddingResponse =
embeddingService.create(
EmbeddingCreateParams.builder()
@@ -30,7 +31,7 @@ class EmbeddingServiceTest {
.user("user-1234")
.build()
)
- println(createEmbeddingResponse)
+
createEmbeddingResponse.validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/FileServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/FileServiceTest.kt
index b05d66a7c..2efe09046 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/FileServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/FileServiceTest.kt
@@ -10,7 +10,6 @@ import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo
import com.github.tomakehurst.wiremock.junit5.WireMockTest
import com.openai.TestServerExtension
import com.openai.client.okhttp.OpenAIOkHttpClient
-import com.openai.core.http.HttpResponse
import com.openai.models.FileContentParams
import com.openai.models.FileDeleteParams
import com.openai.models.FileRetrieveParams
@@ -23,57 +22,60 @@ import org.junit.jupiter.api.extension.ExtendWith
class FileServiceTest {
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val fileService = client.files()
+
val fileObject =
fileService.retrieve(FileRetrieveParams.builder().fileId("file_id").build())
- println(fileObject)
+
fileObject.validate()
}
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val fileService = client.files()
- val listFilesResponse = fileService.list()
- println(listFilesResponse)
- listFilesResponse.data().forEach { it.validate() }
+
+ val page = fileService.list()
+
+ page.response().validate()
}
@Test
- fun callDelete() {
+ fun delete() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val fileService = client.files()
+
val fileDeleted = fileService.delete(FileDeleteParams.builder().fileId("file_id").build())
- println(fileDeleted)
+
fileDeleted.validate()
}
@Test
- fun callContent(wmRuntimeInfo: WireMockRuntimeInfo) {
+ fun content(wmRuntimeInfo: WireMockRuntimeInfo) {
val client =
OpenAIOkHttpClient.builder()
- .baseUrl(wmRuntimeInfo.getHttpBaseUrl())
+ .baseUrl(wmRuntimeInfo.httpBaseUrl)
.apiKey("My API Key")
.build()
- stubFor(get(anyUrl()).willReturn(ok().withBody("abc")))
val fileService = client.files()
+ stubFor(get(anyUrl()).willReturn(ok().withBody("abc")))
+
val response = fileService.content(FileContentParams.builder().fileId("file_id").build())
- println(response)
- assertThat(response).isInstanceOf(HttpResponse::class.java)
+
assertThat(response.body()).hasContent("abc")
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/ImageServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/ImageServiceTest.kt
index c1ec94e85..817e2edc5 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/ImageServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/ImageServiceTest.kt
@@ -13,13 +13,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class ImageServiceTest {
@Test
- fun callGenerate() {
+ fun generate() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val imageService = client.images()
+
val imagesResponse =
imageService.generate(
ImageGenerateParams.builder()
@@ -33,7 +34,7 @@ class ImageServiceTest {
.user("user-1234")
.build()
)
- println(imagesResponse)
+
imagesResponse.validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/ModelServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/ModelServiceTest.kt
index b6551e664..3193e3cc7 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/ModelServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/ModelServiceTest.kt
@@ -13,45 +13,48 @@ import org.junit.jupiter.api.extension.ExtendWith
class ModelServiceTest {
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val modelService = client.models()
+
val model =
modelService.retrieve(ModelRetrieveParams.builder().model("gpt-4o-mini").build())
- println(model)
+
model.validate()
}
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val modelService = client.models()
- val listModelsResponse = modelService.list()
- println(listModelsResponse)
- listModelsResponse.data().forEach { it.validate() }
+
+ val page = modelService.list()
+
+ page.response().validate()
}
@Test
- fun callDelete() {
+ fun delete() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val modelService = client.models()
+
val modelDeleted =
modelService.delete(
ModelDeleteParams.builder().model("ft:gpt-4o-mini:acemeco:suffix:abc123").build()
)
- println(modelDeleted)
+
modelDeleted.validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/ModerationServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/ModerationServiceTest.kt
index 30f69f34d..eff4e6cbd 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/ModerationServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/ModerationServiceTest.kt
@@ -13,21 +13,22 @@ import org.junit.jupiter.api.extension.ExtendWith
class ModerationServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val moderationService = client.moderations()
- val moderationCreateResponse =
+
+ val moderation =
moderationService.create(
ModerationCreateParams.builder()
.input("I want to kill them.")
.model(ModerationModel.OMNI_MODERATION_LATEST)
.build()
)
- println(moderationCreateResponse)
- moderationCreateResponse.validate()
+
+ moderation.validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/UploadServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/UploadServiceTest.kt
index 4c6833bb1..879f8bc5d 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/UploadServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/UploadServiceTest.kt
@@ -15,13 +15,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class UploadServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val uploadService = client.uploads()
+
val upload =
uploadService.create(
UploadCreateParams.builder()
@@ -31,32 +32,34 @@ class UploadServiceTest {
.purpose(FilePurpose.ASSISTANTS)
.build()
)
- println(upload)
+
upload.validate()
}
@Test
- fun callCancel() {
+ fun cancel() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val uploadService = client.uploads()
+
val upload =
uploadService.cancel(UploadCancelParams.builder().uploadId("upload_abc123").build())
- println(upload)
+
upload.validate()
}
@Test
- fun callComplete() {
+ fun complete() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val uploadService = client.uploads()
+
val upload =
uploadService.complete(
UploadCompleteParams.builder()
@@ -65,7 +68,7 @@ class UploadServiceTest {
.md5("md5")
.build()
)
- println(upload)
+
upload.validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/AssistantServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/AssistantServiceTest.kt
index 942506a6a..7981cbdb8 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/AssistantServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/AssistantServiceTest.kt
@@ -20,13 +20,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class AssistantServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val assistantService = client.beta().assistants()
+
val assistant =
assistantService.create(
BetaAssistantCreateParams.builder()
@@ -78,34 +79,36 @@ class AssistantServiceTest {
.topP(1.0)
.build()
)
- println(assistant)
+
assistant.validate()
}
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val assistantService = client.beta().assistants()
+
val assistant =
assistantService.retrieve(
BetaAssistantRetrieveParams.builder().assistantId("assistant_id").build()
)
- println(assistant)
+
assistant.validate()
}
@Test
- fun callUpdate() {
+ fun update() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val assistantService = client.beta().assistants()
+
val assistant =
assistantService.update(
BetaAssistantUpdateParams.builder()
@@ -140,36 +143,38 @@ class AssistantServiceTest {
.topP(1.0)
.build()
)
- println(assistant)
+
assistant.validate()
}
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val assistantService = client.beta().assistants()
- val listAssistantsResponse = assistantService.list()
- println(listAssistantsResponse)
- listAssistantsResponse.data().forEach { it.validate() }
+
+ val page = assistantService.list()
+
+ page.response().validate()
}
@Test
- fun callDelete() {
+ fun delete() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val assistantService = client.beta().assistants()
+
val assistantDeleted =
assistantService.delete(
BetaAssistantDeleteParams.builder().assistantId("assistant_id").build()
)
- println(assistantDeleted)
+
assistantDeleted.validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/ThreadServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/ThreadServiceTest.kt
index d04ba9161..3eb2bace0 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/ThreadServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/ThreadServiceTest.kt
@@ -22,13 +22,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class ThreadServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val threadService = client.beta().threads()
+
val thread =
threadService.create(
BetaThreadCreateParams.builder()
@@ -87,32 +88,34 @@ class ThreadServiceTest {
)
.build()
)
- println(thread)
+
thread.validate()
}
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val threadService = client.beta().threads()
+
val thread =
threadService.retrieve(BetaThreadRetrieveParams.builder().threadId("thread_id").build())
- println(thread)
+
thread.validate()
}
@Test
- fun callUpdate() {
+ fun update() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val threadService = client.beta().threads()
+
val thread =
threadService.update(
BetaThreadUpdateParams.builder()
@@ -138,32 +141,34 @@ class ThreadServiceTest {
)
.build()
)
- println(thread)
+
thread.validate()
}
@Test
- fun callDelete() {
+ fun delete() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val threadService = client.beta().threads()
+
val threadDeleted =
threadService.delete(BetaThreadDeleteParams.builder().threadId("thread_id").build())
- println(threadDeleted)
+
threadDeleted.validate()
}
@Test
- fun callCreateAndRun() {
+ fun createAndRun() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val threadService = client.beta().threads()
+
val run =
threadService.createAndRun(
BetaThreadCreateAndRunParams.builder()
@@ -269,12 +274,12 @@ class ThreadServiceTest {
)
.build()
)
- println(run)
+
run.validate()
}
@Test
- fun callCreateAndRunStreaming() {
+ fun createAndRunStreaming() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
@@ -282,7 +287,7 @@ class ThreadServiceTest {
.build()
val threadService = client.beta().threads()
- val runStream =
+ val runStreamResponse =
threadService.createAndRunStreaming(
BetaThreadCreateAndRunParams.builder()
.assistantId("assistant_id")
@@ -388,11 +393,6 @@ class ThreadServiceTest {
.build()
)
- runStream.use {
- runStream.stream().forEach {
- println(it)
- it.validate()
- }
- }
+ runStreamResponse.use { runStreamResponse.stream().forEach { run -> run.validate() } }
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/VectorStoreServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/VectorStoreServiceTest.kt
index 96b75b094..1794925d0 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/VectorStoreServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/VectorStoreServiceTest.kt
@@ -18,13 +18,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class VectorStoreServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val vectorStoreService = client.beta().vectorStores()
+
val vectorStore =
vectorStoreService.create(
BetaVectorStoreCreateParams.builder()
@@ -41,34 +42,36 @@ class VectorStoreServiceTest {
.name("name")
.build()
)
- println(vectorStore)
+
vectorStore.validate()
}
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val vectorStoreService = client.beta().vectorStores()
+
val vectorStore =
vectorStoreService.retrieve(
BetaVectorStoreRetrieveParams.builder().vectorStoreId("vector_store_id").build()
)
- println(vectorStore)
+
vectorStore.validate()
}
@Test
- fun callUpdate() {
+ fun update() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val vectorStoreService = client.beta().vectorStores()
+
val vectorStore =
vectorStoreService.update(
BetaVectorStoreUpdateParams.builder()
@@ -84,36 +87,38 @@ class VectorStoreServiceTest {
.name("name")
.build()
)
- println(vectorStore)
+
vectorStore.validate()
}
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val vectorStoreService = client.beta().vectorStores()
- val listVectorStoresResponse = vectorStoreService.list()
- println(listVectorStoresResponse)
- listVectorStoresResponse.data().forEach { it.validate() }
+
+ val page = vectorStoreService.list()
+
+ page.response().validate()
}
@Test
- fun callDelete() {
+ fun delete() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val vectorStoreService = client.beta().vectorStores()
+
val vectorStoreDeleted =
vectorStoreService.delete(
BetaVectorStoreDeleteParams.builder().vectorStoreId("vector_store_id").build()
)
- println(vectorStoreDeleted)
+
vectorStoreDeleted.validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/MessageServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/MessageServiceTest.kt
index 5e9a04e55..53f133aa0 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/MessageServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/MessageServiceTest.kt
@@ -19,13 +19,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class MessageServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val messageService = client.beta().threads().messages()
+
val message =
messageService.create(
BetaThreadMessageCreateParams.builder()
@@ -45,18 +46,19 @@ class MessageServiceTest {
)
.build()
)
- println(message)
+
message.validate()
}
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val messageService = client.beta().threads().messages()
+
val message =
messageService.retrieve(
BetaThreadMessageRetrieveParams.builder()
@@ -64,18 +66,19 @@ class MessageServiceTest {
.messageId("message_id")
.build()
)
- println(message)
+
message.validate()
}
@Test
- fun callUpdate() {
+ fun update() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val messageService = client.beta().threads().messages()
+
val message =
messageService.update(
BetaThreadMessageUpdateParams.builder()
@@ -88,32 +91,34 @@ class MessageServiceTest {
)
.build()
)
- println(message)
+
message.validate()
}
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val messageService = client.beta().threads().messages()
- val listMessagesResponse =
+
+ val page =
messageService.list(BetaThreadMessageListParams.builder().threadId("thread_id").build())
- println(listMessagesResponse)
- listMessagesResponse.data().forEach { it.validate() }
+
+ page.response().validate()
}
@Test
- fun callDelete() {
+ fun delete() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val messageService = client.beta().threads().messages()
+
val messageDeleted =
messageService.delete(
BetaThreadMessageDeleteParams.builder()
@@ -121,7 +126,7 @@ class MessageServiceTest {
.messageId("message_id")
.build()
)
- println(messageDeleted)
+
messageDeleted.validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/RunServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/RunServiceTest.kt
index c77223adf..9b34120c7 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/RunServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/RunServiceTest.kt
@@ -23,13 +23,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class RunServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val runService = client.beta().threads().runs()
+
val run =
runService.create(
BetaThreadRunCreateParams.builder()
@@ -78,12 +79,12 @@ class RunServiceTest {
)
.build()
)
- println(run)
+
run.validate()
}
@Test
- fun callCreateStreaming() {
+ fun createStreaming() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
@@ -91,7 +92,7 @@ class RunServiceTest {
.build()
val runService = client.beta().threads().runs()
- val runStream =
+ val runStreamResponse =
runService.createStreaming(
BetaThreadRunCreateParams.builder()
.threadId("thread_id")
@@ -140,38 +141,35 @@ class RunServiceTest {
.build()
)
- runStream.use {
- runStream.stream().forEach {
- println(it)
- it.validate()
- }
- }
+ runStreamResponse.use { runStreamResponse.stream().forEach { run -> run.validate() } }
}
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val runService = client.beta().threads().runs()
+
val run =
runService.retrieve(
BetaThreadRunRetrieveParams.builder().threadId("thread_id").runId("run_id").build()
)
- println(run)
+
run.validate()
}
@Test
- fun callUpdate() {
+ fun update() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val runService = client.beta().threads().runs()
+
val run =
runService.update(
BetaThreadRunUpdateParams.builder()
@@ -184,48 +182,50 @@ class RunServiceTest {
)
.build()
)
- println(run)
+
run.validate()
}
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val runService = client.beta().threads().runs()
- val listRunsResponse =
- runService.list(BetaThreadRunListParams.builder().threadId("thread_id").build())
- println(listRunsResponse)
- listRunsResponse.data().forEach { it.validate() }
+
+ val page = runService.list(BetaThreadRunListParams.builder().threadId("thread_id").build())
+
+ page.response().validate()
}
@Test
- fun callCancel() {
+ fun cancel() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val runService = client.beta().threads().runs()
+
val run =
runService.cancel(
BetaThreadRunCancelParams.builder().threadId("thread_id").runId("run_id").build()
)
- println(run)
+
run.validate()
}
@Test
- fun callSubmitToolOutputs() {
+ fun submitToolOutputs() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val runService = client.beta().threads().runs()
+
val run =
runService.submitToolOutputs(
BetaThreadRunSubmitToolOutputsParams.builder()
@@ -239,12 +239,12 @@ class RunServiceTest {
)
.build()
)
- println(run)
+
run.validate()
}
@Test
- fun callSubmitToolOutputsStreaming() {
+ fun submitToolOutputsStreaming() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
@@ -252,7 +252,7 @@ class RunServiceTest {
.build()
val runService = client.beta().threads().runs()
- val runStream =
+ val runStreamResponse =
runService.submitToolOutputsStreaming(
BetaThreadRunSubmitToolOutputsParams.builder()
.threadId("thread_id")
@@ -266,11 +266,6 @@ class RunServiceTest {
.build()
)
- runStream.use {
- runStream.stream().forEach {
- println(it)
- it.validate()
- }
- }
+ runStreamResponse.use { runStreamResponse.stream().forEach { run -> run.validate() } }
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/runs/StepServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/runs/StepServiceTest.kt
index 9dde52cdd..0770c3148 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/runs/StepServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/threads/runs/StepServiceTest.kt
@@ -14,13 +14,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class StepServiceTest {
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val stepService = client.beta().threads().runs().steps()
+
val runStep =
stepService.retrieve(
BetaThreadRunStepRetrieveParams.builder()
@@ -30,23 +31,24 @@ class StepServiceTest {
.addInclude(RunStepInclude.STEP_DETAILS_TOOL_CALLS_FILE_SEARCH_RESULTS_CONTENT)
.build()
)
- println(runStep)
+
runStep.validate()
}
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val stepService = client.beta().threads().runs().steps()
- val listRunStepsResponse =
+
+ val page =
stepService.list(
BetaThreadRunStepListParams.builder().threadId("thread_id").runId("run_id").build()
)
- println(listRunStepsResponse)
- listRunStepsResponse.data().forEach { it.validate() }
+
+ page.response().validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/vectorStores/FileBatchServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/vectorStores/FileBatchServiceTest.kt
index ff574d99c..718b32339 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/vectorStores/FileBatchServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/vectorStores/FileBatchServiceTest.kt
@@ -16,13 +16,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class FileBatchServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val fileBatchService = client.beta().vectorStores().fileBatches()
+
val vectorStoreFileBatch =
fileBatchService.create(
BetaVectorStoreFileBatchCreateParams.builder()
@@ -31,18 +32,19 @@ class FileBatchServiceTest {
.chunkingStrategy(AutoFileChunkingStrategyParam.builder().build())
.build()
)
- println(vectorStoreFileBatch)
+
vectorStoreFileBatch.validate()
}
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val fileBatchService = client.beta().vectorStores().fileBatches()
+
val vectorStoreFileBatch =
fileBatchService.retrieve(
BetaVectorStoreFileBatchRetrieveParams.builder()
@@ -50,18 +52,19 @@ class FileBatchServiceTest {
.batchId("vsfb_abc123")
.build()
)
- println(vectorStoreFileBatch)
+
vectorStoreFileBatch.validate()
}
@Test
- fun callCancel() {
+ fun cancel() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val fileBatchService = client.beta().vectorStores().fileBatches()
+
val vectorStoreFileBatch =
fileBatchService.cancel(
BetaVectorStoreFileBatchCancelParams.builder()
@@ -69,26 +72,27 @@ class FileBatchServiceTest {
.batchId("batch_id")
.build()
)
- println(vectorStoreFileBatch)
+
vectorStoreFileBatch.validate()
}
@Test
- fun callListFiles() {
+ fun listFiles() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val fileBatchService = client.beta().vectorStores().fileBatches()
- val listVectorStoreFilesResponse =
+
+ val page =
fileBatchService.listFiles(
BetaVectorStoreFileBatchListFilesParams.builder()
.vectorStoreId("vector_store_id")
.batchId("batch_id")
.build()
)
- println(listVectorStoreFilesResponse)
- listVectorStoreFilesResponse.data().forEach { it.validate() }
+
+ page.response().validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/vectorStores/FileServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/vectorStores/FileServiceTest.kt
index 35b95a7c5..ed8e61776 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/vectorStores/FileServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/beta/vectorStores/FileServiceTest.kt
@@ -16,13 +16,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class FileServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val fileService = client.beta().vectorStores().files()
+
val vectorStoreFile =
fileService.create(
BetaVectorStoreFileCreateParams.builder()
@@ -31,18 +32,19 @@ class FileServiceTest {
.chunkingStrategy(AutoFileChunkingStrategyParam.builder().build())
.build()
)
- println(vectorStoreFile)
+
vectorStoreFile.validate()
}
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val fileService = client.beta().vectorStores().files()
+
val vectorStoreFile =
fileService.retrieve(
BetaVectorStoreFileRetrieveParams.builder()
@@ -50,34 +52,36 @@ class FileServiceTest {
.fileId("file-abc123")
.build()
)
- println(vectorStoreFile)
+
vectorStoreFile.validate()
}
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val fileService = client.beta().vectorStores().files()
- val listVectorStoreFilesResponse =
+
+ val page =
fileService.list(
BetaVectorStoreFileListParams.builder().vectorStoreId("vector_store_id").build()
)
- println(listVectorStoreFilesResponse)
- listVectorStoreFilesResponse.data().forEach { it.validate() }
+
+ page.response().validate()
}
@Test
- fun callDelete() {
+ fun delete() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val fileService = client.beta().vectorStores().files()
+
val vectorStoreFileDeleted =
fileService.delete(
BetaVectorStoreFileDeleteParams.builder()
@@ -85,7 +89,7 @@ class FileServiceTest {
.fileId("file_id")
.build()
)
- println(vectorStoreFileDeleted)
+
vectorStoreFileDeleted.validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/chat/CompletionServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/chat/CompletionServiceTest.kt
index 857ffb750..bba74f35a 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/chat/CompletionServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/chat/CompletionServiceTest.kt
@@ -29,13 +29,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class CompletionServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val completionService = client.chat().completions()
+
val chatCompletion =
completionService.create(
ChatCompletionCreateParams.builder()
@@ -113,12 +114,12 @@ class CompletionServiceTest {
.user("user-1234")
.build()
)
- println(chatCompletion)
+
chatCompletion.validate()
}
@Test
- fun callCreateStreaming() {
+ fun createStreaming() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
@@ -126,7 +127,7 @@ class CompletionServiceTest {
.build()
val completionService = client.chat().completions()
- val chatCompletionStream =
+ val chatCompletionStreamResponse =
completionService.createStreaming(
ChatCompletionCreateParams.builder()
.addMessage(
@@ -204,38 +205,39 @@ class CompletionServiceTest {
.build()
)
- chatCompletionStream.use {
- chatCompletionStream.stream().forEach {
- println(it)
- it.validate()
+ chatCompletionStreamResponse.use {
+ chatCompletionStreamResponse.stream().forEach { chatCompletion ->
+ chatCompletion.validate()
}
}
}
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val completionService = client.chat().completions()
+
val chatCompletion =
completionService.retrieve(
ChatCompletionRetrieveParams.builder().completionId("completion_id").build()
)
- println(chatCompletion)
+
chatCompletion.validate()
}
@Test
- fun callUpdate() {
+ fun update() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val completionService = client.chat().completions()
+
val chatCompletion =
completionService.update(
ChatCompletionUpdateParams.builder()
@@ -247,23 +249,24 @@ class CompletionServiceTest {
)
.build()
)
- println(chatCompletion)
+
chatCompletion.validate()
}
@Test
- fun callDelete() {
+ fun delete() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val completionService = client.chat().completions()
+
val chatCompletionDeleted =
completionService.delete(
ChatCompletionDeleteParams.builder().completionId("completion_id").build()
)
- println(chatCompletionDeleted)
+
chatCompletionDeleted.validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/chat/completions/MessageServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/chat/completions/MessageServiceTest.kt
index d03a2576e..d17320d75 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/chat/completions/MessageServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/chat/completions/MessageServiceTest.kt
@@ -12,18 +12,19 @@ import org.junit.jupiter.api.extension.ExtendWith
class MessageServiceTest {
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val messageService = client.chat().completions().messages()
- val chatCompletionMessageList =
+
+ val page =
messageService.list(
ChatCompletionMessageListParams.builder().completionId("completion_id").build()
)
- println(chatCompletionMessageList)
- chatCompletionMessageList.data().forEach { it.validate() }
+
+ page.response().validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/fineTuning/JobServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/fineTuning/JobServiceTest.kt
index 47bfcb29b..609d966b3 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/fineTuning/JobServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/fineTuning/JobServiceTest.kt
@@ -15,13 +15,14 @@ import org.junit.jupiter.api.extension.ExtendWith
class JobServiceTest {
@Test
- fun callCreate() {
+ fun create() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val jobService = client.fineTuning().jobs()
+
val fineTuningJob =
jobService.create(
FineTuningJobCreateParams.builder()
@@ -81,74 +82,78 @@ class JobServiceTest {
.validationFile("file-abc123")
.build()
)
- println(fineTuningJob)
+
fineTuningJob.validate()
}
@Test
- fun callRetrieve() {
+ fun retrieve() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val jobService = client.fineTuning().jobs()
+
val fineTuningJob =
jobService.retrieve(
FineTuningJobRetrieveParams.builder()
.fineTuningJobId("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
.build()
)
- println(fineTuningJob)
+
fineTuningJob.validate()
}
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val jobService = client.fineTuning().jobs()
- val listPaginatedFineTuningJobsResponse = jobService.list()
- println(listPaginatedFineTuningJobsResponse)
- listPaginatedFineTuningJobsResponse.data().forEach { it.validate() }
+
+ val page = jobService.list()
+
+ page.response().validate()
}
@Test
- fun callCancel() {
+ fun cancel() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val jobService = client.fineTuning().jobs()
+
val fineTuningJob =
jobService.cancel(
FineTuningJobCancelParams.builder()
.fineTuningJobId("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
.build()
)
- println(fineTuningJob)
+
fineTuningJob.validate()
}
@Test
- fun callListEvents() {
+ fun listEvents() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val jobService = client.fineTuning().jobs()
- val listFineTuningJobEventsResponse =
+
+ val page =
jobService.listEvents(
FineTuningJobListEventsParams.builder()
.fineTuningJobId("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
.build()
)
- println(listFineTuningJobEventsResponse)
- listFineTuningJobEventsResponse.data().forEach { it.validate() }
+
+ page.response().validate()
}
}
diff --git a/openai-java-core/src/test/kotlin/com/openai/services/blocking/fineTuning/jobs/CheckpointServiceTest.kt b/openai-java-core/src/test/kotlin/com/openai/services/blocking/fineTuning/jobs/CheckpointServiceTest.kt
index d779133bd..9eba157e1 100644
--- a/openai-java-core/src/test/kotlin/com/openai/services/blocking/fineTuning/jobs/CheckpointServiceTest.kt
+++ b/openai-java-core/src/test/kotlin/com/openai/services/blocking/fineTuning/jobs/CheckpointServiceTest.kt
@@ -12,20 +12,21 @@ import org.junit.jupiter.api.extension.ExtendWith
class CheckpointServiceTest {
@Test
- fun callList() {
+ fun list() {
val client =
OpenAIOkHttpClient.builder()
.baseUrl(TestServerExtension.BASE_URL)
.apiKey("My API Key")
.build()
val checkpointService = client.fineTuning().jobs().checkpoints()
- val listFineTuningJobCheckpointsResponse =
+
+ val page =
checkpointService.list(
FineTuningJobCheckpointListParams.builder()
.fineTuningJobId("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
.build()
)
- println(listFineTuningJobCheckpointsResponse)
- listFineTuningJobCheckpointsResponse.data().forEach { it.validate() }
+
+ page.response().validate()
}
}