Skip to content

Commit 2a40605

Browse files
committed
## Java SDK Changes Detected:
* `glean.client.announcements.create()`: * `request.body.structuredList.[].document.metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `response.body.structuredList.[].document.metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `glean.client.announcements.update()`: * `request.body.structuredList.[].document.metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `response.body.structuredList.[].document.metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `glean.client.answers.create()`: * `request.data.addedRoles.[].group.datasourceInstance` **Added** * `response.addedroles.[].group.datasourceInstance` **Added** * `glean.client.answers.update()`: * `request.addedRoles.[].group.datasourceInstance` **Added** * `response.addedroles.[].group.datasourceInstance` **Added** * `glean.client.answers.retrieve()`: `response.answerresult.answer.addedRoles.[].group.datasourceInstance` **Added** * `glean.client.answers.list()`: `response.answerresults.[].answer.addedRoles.[].group.datasourceInstance` **Added** * `glean.client.chat.create()`: * `request.chatrequest.messages.[].citations.[].sourceDocument.metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `response.messages.[].citations.[].sourceDocument.metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `glean.client.chat.retrieve()`: `response.chatresult.chat` **Changed** * `glean.client.chat.list()`: `response.chatresults.[].chat.createdBy.relatedDocuments.[].querySuggestion.ranges.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.chat.createStream()`: * `request.chatrequest.messages.[].citations.[].sourceDocument.metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `glean.client.collections.addItems()`: `response.collection.addedRoles.[].group.datasourceInstance` **Added** * `glean.client.collections.create()`: * `request.addedRoles.[].group.datasourceInstance` **Added** * `response.addedroles.[].group.datasourceInstance` **Added** * `glean.client.collections.deleteItem()`: `response.collection.addedRoles.[].group.datasourceInstance` **Added** * `glean.client.collections.update()`: * `request.addedRoles.[].group.datasourceInstance` **Added** * `response.addedroles.[].group.datasourceInstance` **Added** * `glean.client.collections.updateItem()`: `response.collection.addedRoles.[].group.datasourceInstance` **Added** * `glean.client.collections.retrieve()`: `response.collection.addedRoles.[].group.datasourceInstance` **Added** * `glean.client.collections.list()`: `response.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.documents.retrieve()`: `response.documents.{}.[document].metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `glean.client.documents.retrieveByFacets()`: `response.documents.[].metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `glean.client.insights.retrieve()`: `response.users.activityInsights.[].user.relatedDocuments.[].querySuggestion.ranges.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.messages.retrieve()`: `response.searchresponse.results.[].structuredResults.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.pins.update()`: `response.attribution.relatedDocuments.[].querySuggestion.ranges.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.pins.retrieve()`: `response.pin.attribution.relatedDocuments.[].querySuggestion.ranges.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.pins.list()`: `response.pins.[].attribution.relatedDocuments.[].querySuggestion.ranges.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.pins.create()`: `response.attribution.relatedDocuments.[].querySuggestion.ranges.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.search.queryAsAdmin()`: * `request.sourceDocument.metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `response.results.[].structuredResults.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.search.autocomplete()`: `response.results.[].document.metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `glean.client.search.retrieveFeed()`: `response.results.[].primaryEntry` **Changed** * `glean.client.search.recommendations()`: * `request.sourceDocument.metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `response.results.[].structuredResults.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.search.query()`: * `request.sourceDocument.metadata.author.relatedDocuments.[].results.[].structuredResults.[].customEntity.roles.[].group.datasourceInstance` **Added** * `response.results.[].structuredResults.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.entities.list()`: `response.results.[].relatedDocuments.[].querySuggestion.ranges.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.entities.readPeople()`: `response.results.[].relatedDocuments.[].querySuggestion.ranges.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.shortcuts.create()`: * `request.data.addedRoles.[].group.datasourceInstance` **Added** * `response.shortcut.addedRoles.[].group.datasourceInstance` **Added** * `glean.client.shortcuts.retrieve()`: `response.shortcut.addedRoles.[].group.datasourceInstance` **Added** * `glean.client.shortcuts.list()`: `response.shortcuts.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.shortcuts.update()`: * `request.addedRoles.[].group.datasourceInstance` **Added** * `response.shortcut.addedRoles.[].group.datasourceInstance` **Added** * `glean.client.verification.addReminder()`: `response.metadata.lastVerifier.relatedDocuments.[].querySuggestion.ranges.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.verification.list()`: `response.documents.[].metadata.lastVerifier.relatedDocuments.[].querySuggestion.ranges.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added** * `glean.client.verification.verify()`: `response.metadata.lastVerifier.relatedDocuments.[].querySuggestion.ranges.[].document.metadata.collections.[].addedRoles.[].group.datasourceInstance` **Added**
1 parent 41e2d96 commit 2a40605

File tree

749 files changed

+55448
-5024
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

749 files changed

+55448
-5024
lines changed

.speakeasy/gen.lock

Lines changed: 319 additions & 48 deletions
Large diffs are not rendered by default.

.speakeasy/gen.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,19 @@ generation:
2121
generateNewTests: false
2222
skipResponseBodyAssertions: false
2323
java:
24-
version: 0.8.0
24+
version: 0.9.0
2525
additionalDependencies: []
2626
additionalPlugins: []
2727
artifactID: glean-api-client
28+
asyncMode: enabled
2829
baseErrorName: GleanError
2930
clientServerStatusCodesAsErrors: true
3031
companyEmail: [email protected]
3132
companyName: Glean
3233
companyURL: https://www.glean.com
3334
defaultErrorName: APIException
34-
enableAsync: false
3535
enableCustomCodeRegions: false
36+
enableStreamingUploads: false
3637
envVarPrefix: GLEAN
3738
flattenGlobalSecurity: true
3839
githubURL: github.com/gleanwork/api-client-java

.speakeasy/glean-merged-spec.yaml

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3774,6 +3774,7 @@ components:
37743774
email:
37753775
type: string
37763776
description: The email address of the user who submitted the Feedback.event.MANUAL_FEEDBACK event.
3777+
deprecated: true
37773778
source:
37783779
type: string
37793780
description: The source associated with the Feedback.event.MANUAL_FEEDBACK event.
@@ -4366,7 +4367,7 @@ components:
43664367
description: Disables automatic adjustment of the input query for spelling corrections or other reasons.
43674368
returnLlmContentOverSnippets:
43684369
type: boolean
4369-
description: "[beta] Enables expanded content to be returned for LLM usage. The size of content per result returned should be modified using maxSnippetSize. Server may return less or more than what is specified in maxSnippetSize. For more details, https://docs.google.com/document/d/1CTOLSxWWT9WDEnHVLoCUaxbGYyXYP8kctPRF-RluSQY/edit. Requires sufficient permissions."
4370+
description: Enables expanded content to be returned for LLM usage. The size of content per result returned should be modified using maxSnippetSize. Server may return less or more than what is specified in maxSnippetSize. For more details, see https://developers.glean.com/guides/search/llm-content.
43704371
inclusions:
43714372
$ref: "#/components/schemas/RestrictionFilters"
43724373
description: A list of filters which restrict the search results to only the specified content.
@@ -4864,6 +4865,9 @@ components:
48644865
name:
48654866
type: string
48664867
description: Name of the group.
4868+
datasourceInstance:
4869+
type: string
4870+
description: Datasource instance if the group belongs to one e.g. external groups.
48674871
UserRole:
48684872
type: string
48694873
description: A user's role with respect to a specific document.
@@ -5841,9 +5845,6 @@ components:
58415845
required:
58425846
- snippet
58435847
properties:
5844-
snippet:
5845-
type: string
5846-
description: A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007.
58475848
mimeType:
58485849
type: string
58495850
description: The mime type of the snippets, currently either text/plain or text/html.
@@ -5861,6 +5862,10 @@ components:
58615862
url:
58625863
type: string
58635864
description: A URL, generated based on availability, that links to the position of the snippet text or to the nearest header above the snippet text.
5865+
snippet:
5866+
type: string
5867+
deprecated: true
5868+
description: A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead.
58645869
example:
58655870
snippet: snippet
58665871
mimeType: mimeType
@@ -5954,6 +5959,8 @@ components:
59545959
- THREAD_ROOT
59555960
- PREFIX
59565961
- SUFFIX
5962+
- AUTHOR_PREFIX
5963+
- AUTHOR_SUFFIX
59575964
ClusterGroup:
59585965
required:
59595966
- visibleCountHint
@@ -7306,7 +7313,7 @@ components:
73067313
$ref: "#/components/schemas/AgentConfig"
73077314
description: Describes the agent config that generated this message. Populated on responses and not required on requests.
73087315
author:
7309-
default: GLEAN_AI
7316+
default: USER
73107317
enum:
73117318
- USER
73127319
- GLEAN_AI
@@ -7482,12 +7489,18 @@ components:
74827489
description: A historical representation of a series of chat messages a user had with Glean Assistant.
74837490
allOf:
74847491
- $ref: "#/components/schemas/ChatMetadata"
7492+
- $ref: "#/components/schemas/PermissionedObject"
74857493
properties:
74867494
messages:
74877495
type: array
74887496
items:
74897497
$ref: "#/components/schemas/ChatMessage"
74907498
description: The chat messages within a Chat.
7499+
roles:
7500+
type: array
7501+
items:
7502+
$ref: "#/components/schemas/UserRoleSpecification"
7503+
description: A list of roles for this Chat.
74917504
ChatResult:
74927505
properties:
74937506
chat:
@@ -9145,6 +9158,7 @@ components:
91459158
- ZERO_STATE_WORKFLOW_FAVORITES
91469159
- ZERO_STATE_WORKFLOW_POPULAR
91479160
- ZERO_STATE_WORKFLOW_SUGGESTION
9161+
- PERSONALIZED_CHAT_SUGGESTION
91489162
description: Categories of content requested. An allowlist gives flexibility to request content separately or together.
91499163
requestOptions:
91509164
$ref: "#/components/schemas/FeedRequestOptions"
@@ -9300,6 +9314,14 @@ components:
93009314
type: array
93019315
items:
93029316
$ref: "#/components/schemas/GeneratedAttachment"
9317+
ChatSuggestion:
9318+
properties:
9319+
query:
9320+
type: string
9321+
description: The actionable chat query to run when the user selects this suggestion.
9322+
feature:
9323+
type: string
9324+
description: Targeted Glean Chat feature for the suggestion.
93039325
PromptTemplateMutableProperties:
93049326
required:
93059327
- template
@@ -9513,6 +9535,7 @@ components:
95139535
- ZERO_STATE_PROMPT_TEMPLATE_SUGGESTION
95149536
- ZERO_STATE_STATIC_WORKFLOW_SUGGESTION
95159537
- ZERO_STATE_AGENT_SUGGESTION
9538+
- PERSONALIZED_CHAT_SUGGESTION
95169539
description: Type of the justification.
95179540
justification:
95189541
type: string
@@ -9537,6 +9560,8 @@ components:
95379560
$ref: "#/components/schemas/Person"
95389561
app:
95399562
$ref: "#/components/schemas/AppResult"
9563+
chatSuggestion:
9564+
$ref: "#/components/schemas/ChatSuggestion"
95409565
promptTemplate:
95419566
$ref: "#/components/schemas/PromptTemplateResult"
95429567
workflow:
@@ -9578,6 +9603,7 @@ components:
95789603
- ZERO_STATE_WORKFLOW_FAVORITES
95799604
- ZERO_STATE_WORKFLOW_POPULAR
95809605
- ZERO_STATE_WORKFLOW_SUGGESTION
9606+
- PERSONALIZED_CHAT_SUGGESTION
95819607
description: Category of the result, one of the requested categories in incoming request.
95829608
primaryEntry:
95839609
$ref: "#/components/schemas/FeedEntry"
@@ -11575,6 +11601,7 @@ components:
1157511601
- EXTERNAL_SHORTCUT
1157611602
- ENTITY
1157711603
- CALENDAR
11604+
- AGENTS
1157811605
description: The document category of this object type.
1157911606
propertyDefinitions:
1158011607
type: array
@@ -11629,6 +11656,7 @@ components:
1162911656
- EXTERNAL_SHORTCUT
1163011657
- ENTITY
1163111658
- CALENDAR
11659+
- AGENTS
1163211660
default: UNCATEGORIZED
1163311661
description: The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details.
1163411662
urlRegex:

.speakeasy/workflow.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
speakeasyVersion: 1.603.0
1+
speakeasyVersion: 1.609.0
22
sources:
33
Glean API:
44
sourceNamespace: glean-api-specs
5-
sourceRevisionDigest: sha256:8f18d79a0a7d8f51de7edd5bc8ca3ccc569b81832ffc44ce95a27a12e67b9b7d
6-
sourceBlobDigest: sha256:bb3e5a453f03cbdecf3fb3925768ef4cb0b3119083d9d36c341e1ecd721cde8b
5+
sourceRevisionDigest: sha256:1d65c7ec86c2282d859444620e38022be13cffabe2ddc114882663760b81e128
6+
sourceBlobDigest: sha256:c47ee96b91dc6e9704fb7bfbd1bad3ed46aa3d350c599840c831129f35fe8f84
77
tags:
88
- latest
9-
- speakeasy-sdk-regen-1752597383
9+
- speakeasy-sdk-regen-1755200997
1010
Glean-OAS:
1111
sourceNamespace: glean-oas
1212
sourceRevisionDigest: sha256:8841834dd58ddd4e2dcf98fc90fbd06fbf3626a29df941503cce55b9548a5317
@@ -18,10 +18,10 @@ targets:
1818
glean:
1919
source: Glean API
2020
sourceNamespace: glean-api-specs
21-
sourceRevisionDigest: sha256:8f18d79a0a7d8f51de7edd5bc8ca3ccc569b81832ffc44ce95a27a12e67b9b7d
22-
sourceBlobDigest: sha256:bb3e5a453f03cbdecf3fb3925768ef4cb0b3119083d9d36c341e1ecd721cde8b
21+
sourceRevisionDigest: sha256:1d65c7ec86c2282d859444620e38022be13cffabe2ddc114882663760b81e128
22+
sourceBlobDigest: sha256:c47ee96b91dc6e9704fb7bfbd1bad3ed46aa3d350c599840c831129f35fe8f84
2323
codeSamplesNamespace: glean-api-specs-java-code-samples
24-
codeSamplesRevisionDigest: sha256:e2f179bd27ebe8ef2e5db4899dbce44b41be5a1a46f7d62f7df45af109b6df27
24+
codeSamplesRevisionDigest: sha256:276f3a59565b0ade33ae1975fdc364b3be2bd131a351c2a11bec0c2172862272
2525
workflow:
2626
workflowVersion: 1.0.0
2727
speakeasyVersion: latest

README.md

Lines changed: 127 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ Remember that each namespace requires its own authentication token type as descr
4141
* [Unified SDK Architecture](#unified-sdk-architecture)
4242
* [SDK Installation](#sdk-installation)
4343
* [SDK Example Usage](#sdk-example-usage)
44+
* [Asynchronous Support](#asynchronous-support)
4445
* [Authentication](#authentication)
4546
* [Available Resources and Operations](#available-resources-and-operations)
4647
* [Error Handling](#error-handling)
@@ -63,15 +64,15 @@ The samples below show how a published SDK artifact is used:
6364

6465
Gradle:
6566
```groovy
66-
implementation 'com.glean.api-client:glean-api-client:0.8.0'
67+
implementation 'com.glean.api-client:glean-api-client:0.9.0'
6768
```
6869

6970
Maven:
7071
```xml
7172
<dependency>
7273
<groupId>com.glean.api-client</groupId>
7374
<artifactId>glean-api-client</artifactId>
74-
<version>0.8.0</version>
75+
<version>0.9.0</version>
7576
</dependency>
7677
```
7778

@@ -116,7 +117,6 @@ public class Application {
116117
.chatRequest(ChatRequest.builder()
117118
.messages(List.of(
118119
ChatMessage.builder()
119-
.author(Author.USER)
120120
.fragments(List.of(
121121
ChatMessageFragment.builder()
122122
.text("What are the company holidays this year?")
@@ -155,7 +155,6 @@ public class Application {
155155
.chatRequest(ChatRequest.builder()
156156
.messages(List.of(
157157
ChatMessage.builder()
158-
.author(Author.USER)
159158
.fragments(List.of(
160159
ChatMessageFragment.builder()
161160
.text("What are the company holidays this year?")
@@ -170,8 +169,132 @@ public class Application {
170169
}
171170
}
172171
```
172+
#### Asynchronous Call
173+
An asynchronous SDK client is also available that returns a [`CompletableFuture<T>`][comp-fut]. See [Asynchronous Support](#asynchronous-support) for more details on async benefits and reactive library integration.
174+
```java
175+
package hello.world;
176+
177+
import com.glean.api_client.glean_api_client.AsyncGlean;
178+
import com.glean.api_client.glean_api_client.Glean;
179+
import com.glean.api_client.glean_api_client.models.components.*;
180+
import com.glean.api_client.glean_api_client.models.operations.async.ActivityResponse;
181+
import java.time.OffsetDateTime;
182+
import java.util.List;
183+
import java.util.concurrent.CompletableFuture;
184+
185+
public class Application {
186+
187+
public static void main(String[] args) {
188+
189+
AsyncGlean sdk = Glean.builder()
190+
.apiToken(System.getenv().getOrDefault("GLEAN_API_TOKEN", ""))
191+
.build()
192+
.async();
193+
194+
Activity req = Activity.builder()
195+
.events(List.of(
196+
ActivityEvent.builder()
197+
.action(ActivityEventAction.HISTORICAL_VIEW)
198+
.timestamp(OffsetDateTime.parse("2000-01-23T04:56:07.000Z"))
199+
.url("https://example.com/")
200+
.build(),
201+
ActivityEvent.builder()
202+
.action(ActivityEventAction.SEARCH)
203+
.timestamp(OffsetDateTime.parse("2000-01-23T04:56:07.000Z"))
204+
.url("https://example.com/search?q=query")
205+
.params(ActivityEventParams.builder()
206+
.query("query")
207+
.build())
208+
.build(),
209+
ActivityEvent.builder()
210+
.action(ActivityEventAction.VIEW)
211+
.timestamp(OffsetDateTime.parse("2000-01-23T04:56:07.000Z"))
212+
.url("https://example.com/")
213+
.params(ActivityEventParams.builder()
214+
.duration(20L)
215+
.referrer("https://example.com/document")
216+
.build())
217+
.build()))
218+
.build();
219+
220+
CompletableFuture<ActivityResponse> resFut = sdk.client().activity().report()
221+
.request(req)
222+
.call();
223+
224+
// handle response
225+
}
226+
}
227+
```
228+
229+
[comp-fut]: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html
173230
<!-- End SDK Example Usage [usage] -->
174231

232+
<!-- Start Asynchronous Support [async-support] -->
233+
## Asynchronous Support
234+
235+
The SDK provides comprehensive asynchronous support using Java's [`CompletableFuture<T>`][comp-fut] and [Reactive Streams `Publisher<T>`][reactive-streams] APIs. This design makes no assumptions about your choice of reactive toolkit, allowing seamless integration with any reactive library.
236+
237+
<details>
238+
<summary>Why Use Async?</summary>
239+
240+
Asynchronous operations provide several key benefits:
241+
242+
- **Non-blocking I/O**: Your threads stay free for other work while operations are in flight
243+
- **Better resource utilization**: Handle more concurrent operations with fewer threads
244+
- **Improved scalability**: Build highly responsive applications that can handle thousands of concurrent requests
245+
- **Reactive integration**: Works seamlessly with reactive streams and backpressure handling
246+
247+
</details>
248+
249+
<details>
250+
<summary>Reactive Library Integration</summary>
251+
252+
The SDK returns [Reactive Streams `Publisher<T>`][reactive-streams] instances for operations dealing with streams involving multiple I/O interactions. We use Reactive Streams instead of JDK Flow API to provide broader compatibility with the reactive ecosystem, as most reactive libraries natively support Reactive Streams.
253+
254+
**Why Reactive Streams over JDK Flow?**
255+
- **Broader ecosystem compatibility**: Most reactive libraries (Project Reactor, RxJava, Akka Streams, etc.) natively support Reactive Streams
256+
- **Industry standard**: Reactive Streams is the de facto standard for reactive programming in Java
257+
- **Better interoperability**: Seamless integration without additional adapters for most use cases
258+
259+
**Integration with Popular Libraries:**
260+
- **Project Reactor**: Use `Flux.from(publisher)` to convert to Reactor types
261+
- **RxJava**: Use `Flowable.fromPublisher(publisher)` for RxJava integration
262+
- **Akka Streams**: Use `Source.fromPublisher(publisher)` for Akka Streams integration
263+
- **Vert.x**: Use `ReadStream.fromPublisher(vertx, publisher)` for Vert.x reactive streams
264+
- **Mutiny**: Use `Multi.createFrom().publisher(publisher)` for Quarkus Mutiny integration
265+
266+
**For JDK Flow API Integration:**
267+
If you need JDK Flow API compatibility (e.g., for Quarkus/Mutiny 2), you can use adapters:
268+
```java
269+
// Convert Reactive Streams Publisher to Flow Publisher
270+
Flow.Publisher<T> flowPublisher = FlowAdapters.toFlowPublisher(reactiveStreamsPublisher);
271+
272+
// Convert Flow Publisher to Reactive Streams Publisher
273+
Publisher<T> reactiveStreamsPublisher = FlowAdapters.toPublisher(flowPublisher);
274+
```
275+
276+
For standard single-response operations, the SDK returns `CompletableFuture<T>` for straightforward async execution.
277+
278+
</details>
279+
280+
<details>
281+
<summary>Supported Operations</summary>
282+
283+
Async support is available for:
284+
285+
- **[Server-sent Events](#server-sent-event-streaming)**: Stream real-time events with Reactive Streams `Publisher<T>`
286+
- **[JSONL Streaming](#jsonl-streaming)**: Process streaming JSON lines asynchronously
287+
- **[Pagination](#pagination)**: Iterate through paginated results using `callAsPublisher()` and `callAsPublisherUnwrapped()`
288+
- **[File Uploads](#file-uploads)**: Upload files asynchronously with progress tracking
289+
- **[File Downloads](#file-downloads)**: Download files asynchronously with streaming support
290+
- **[Standard Operations](#example)**: All regular API calls return `CompletableFuture<T>` for async execution
291+
292+
</details>
293+
294+
[comp-fut]: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html
295+
[reactive-streams]: https://www.reactive-streams.org/
296+
<!-- End Asynchronous Support [async-support] -->
297+
175298
<!-- Start Authentication [security] -->
176299
## Authentication
177300

RELEASES.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,4 +188,14 @@ Based on:
188188
### Generated
189189
- [java v0.8.0] .
190190
### Releases
191-
- [Maven Central v0.8.0] https://central.sonatype.com/artifact/com.glean.api-client/glean-api-client/0.8.0 - .
191+
- [Maven Central v0.8.0] https://central.sonatype.com/artifact/com.glean.api-client/glean-api-client/0.8.0 - .
192+
193+
## 2025-09-05 00:45:36
194+
### Changes
195+
Based on:
196+
- OpenAPI Doc
197+
- Speakeasy CLI 1.609.0 (2.692.0) https://github.com/speakeasy-api/speakeasy
198+
### Generated
199+
- [java v0.9.0] .
200+
### Releases
201+
- [Maven Central v0.9.0] https://central.sonatype.com/artifact/com.glean.api-client/glean-api-client/0.9.0 - .

0 commit comments

Comments
 (0)