Java SDK
Java client SDK for GoodMem with Maven/Gradle support
- API version:
- Build date: 2025-11-20T00:19:55.021606826Z[Etc/UTC]
- Generator version: 7.14.0-SNAPSHOT
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
Automatically generated by the OpenAPI Generator
Requirements
Building the API client library requires:
- Java 1.8+
- Maven (3.8.3+)/Gradle (7.2+)
Installation
To install the API client library to your local Maven repository, simply execute:
mvn clean installTo deploy it to a remote Maven repository instead, configure the settings of the repository and execute:
mvn clean deployRefer to the OSSRH Guide for more information.
Maven users
Add this dependency to your project's POM:
<dependency>
<groupId>ai.pairsys.goodmem</groupId>
<artifactId>goodmem-client-java</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>Gradle users
Add this dependency to your project's build file:
repositories {
mavenCentral() // Needed if the 'goodmem-client-java' jar has been published to maven central.
mavenLocal() // Needed if the 'goodmem-client-java' jar has been published to the local maven repo.
}
dependencies {
implementation "ai.pairsys.goodmem:goodmem-client-java:1.0.0"
}Others
At first generate the JAR by executing:
mvn clean packageThen manually install the following JARs:
target/goodmem-client-java-1.0.0.jartarget/lib/*.jar
Getting Started
Please follow the installation instruction and execute the following Java code:
// Import classes:
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.ApiException;
import ai.pairsys.goodmem.client.Configuration;
import ai.pairsys.goodmem.client.auth.*;
import ai.pairsys.goodmem.client.model.*;
import ai.pairsys.goodmem.client.api.AdministrationApi;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("http://localhost:8080");
// Configure API key authorization: ApiKeyAuth
ApiKeyAuth ApiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("ApiKeyAuth");
ApiKeyAuth.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//ApiKeyAuth.setApiKeyPrefix("Token");
AdministrationApi apiInstance = new AdministrationApi(defaultClient);
AdminDrainRequest adminDrainRequest = new AdminDrainRequest(); // AdminDrainRequest |
try {
AdminDrainResponse result = apiInstance.drainServer(adminDrainRequest);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling AdministrationApi#drainServer");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}Streaming Memory Retrieval
The GoodMem Java client provides a StreamingClient class for real-time streaming memory retrieval. This is the recommended approach for memory retrieval operations.
Supported Formats
The StreamingClient supports two streaming formats:
- NDJSON (
application/x-ndjson) - Newline-delimited JSON (default, recommended) - SSE (
text/event-stream) - Server-Sent Events
Basic Streaming with ChatPostProcessor
Use retrieveMemoryStreamChat() for streaming with automatic ChatPostProcessor configuration:
import ai.pairsys.goodmem.client.ApiClient;
import ai.pairsys.goodmem.client.StreamingClient;
import ai.pairsys.goodmem.client.StreamingClient.*;
import java.util.List;
import java.util.stream.Stream;
// Configure client
ApiClient apiClient = new ApiClient();
apiClient.setBasePath("http://localhost:8080");
apiClient.setApiKey("your-api-key");
// Create streaming client
StreamingClient streamingClient = new StreamingClient(apiClient);
// Stream with ChatPostProcessor (NDJSON format)
Stream<MemoryStreamResponse> stream = streamingClient.retrieveMemoryStreamChat(
"your search query",
List.of("space-uuid"),
10, // requested size
true, // fetch memory
false, // fetch memory content
StreamingFormat.NDJSON, // format (NDJSON or SSE)
"llm-uuid", // LLM ID
"reranker-uuid", // reranker ID
0.5, // relevance threshold
0.3, // LLM temperature
10, // max results
true // chronological resort
);
// Process events
stream.forEach(event -> {
if (event.getAbstractReply() != null) {
System.out.println("Abstract: " + event.getAbstractReply().getText());
} else if (event.getRetrievedItem() != null
&& event.getRetrievedItem().getMemory() != null) {
System.out.println("Memory: " + event.getRetrievedItem().getMemory());
}
});Advanced Streaming with Custom Post-Processor
Use retrieveMemoryStreamAdvanced() for custom post-processor configuration:
import java.util.HashMap;
import java.util.Map;
// Create advanced request
AdvancedMemoryStreamRequest request = new AdvancedMemoryStreamRequest(
"your search query",
List.of("space-uuid")
);
request.setRequestedSize(10);
request.setFetchMemory(true);
request.setFormat(StreamingFormat.NDJSON); // or StreamingFormat.SSE
// Configure custom post-processor
request.setPostProcessorName("com.goodmem.retrieval.postprocess.ChatPostProcessorFactory");
Map<String, Object> config = new HashMap<>();
config.put("llm_id", "llm-uuid");
config.put("reranker_id", "reranker-uuid");
config.put("relevance_threshold", 0.5);
config.put("llm_temp", 0.3);
config.put("max_results", 10);
config.put("chronological_resort", true);
request.setPostProcessorConfig(config);
// Execute streaming
Stream<MemoryStreamResponse> stream = streamingClient.retrieveMemoryStreamAdvanced(request);
// Process events
stream.forEach(event -> {
if (event.getAbstractReply() != null) {
System.out.println("Abstract: " + event.getAbstractReply().getText());
} else if (event.getRetrievedItem() != null) {
System.out.println("Retrieved: " + event.getRetrievedItem());
}
});Choosing Between NDJSON and SSE
- NDJSON (recommended): Simpler parsing, better for most use cases
- SSE: Standard browser EventSource API compatible, useful for web applications
Documentation for API Endpoints
All URIs are relative to http://localhost:8080
| Class | Method | HTTP request | Description |
|---|---|---|---|
| AdministrationApi | drainServer | POST /v1/admin:drain | Request the server to enter drain mode |
| AdministrationApi | purgeBackgroundJobs | POST /v1/admin/background-jobs:purge | Purge completed background jobs |
| AdministrationApi | reloadLicense | POST /v1/admin/license:reload | Reload the active license from disk |
| ApiKeysApi | createApiKey | POST /v1/apikeys | Create a new API key |
| ApiKeysApi | deleteApiKey | DELETE /v1/apikeys/{id} | Delete an API key |
| ApiKeysApi | listApiKeys | GET /v1/apikeys | List API keys |
| ApiKeysApi | updateApiKey | PUT /v1/apikeys/{id} | Update an API key |
| EmbeddersApi | createEmbedder | POST /v1/embedders | Create a new embedder |
| EmbeddersApi | deleteEmbedder | DELETE /v1/embedders/{id} | Delete an embedder |
| EmbeddersApi | getEmbedder | GET /v1/embedders/{id} | Get an embedder by ID |
| EmbeddersApi | listEmbedders | GET /v1/embedders | List embedders |
| EmbeddersApi | updateEmbedder | PUT /v1/embedders/{id} | Update an embedder |
| LlmsApi | createLLM | POST /v1/llms | Create a new LLM |
| LlmsApi | deleteLLM | DELETE /v1/llms/{id} | Delete an LLM |
| LlmsApi | getLLM | GET /v1/llms/{id} | Get an LLM by ID |
| LlmsApi | listLLMs | GET /v1/llms | List LLMs |
| LlmsApi | updateLLM | PUT /v1/llms/{id} | Update an LLM |
| MemoriesApi | batchCreateMemory | POST /v1/memories:batchCreate | Create multiple memories in a batch |
| MemoriesApi | batchDeleteMemory | POST /v1/memories:batchDelete | Delete multiple memories by ID |
| MemoriesApi | batchGetMemory | POST /v1/memories:batchGet | Get multiple memories by ID |
| MemoriesApi | createMemory | POST /v1/memories | Create a new memory |
| MemoriesApi | deleteMemory | DELETE /v1/memories/{id} | Delete a memory |
| MemoriesApi | getMemory | GET /v1/memories/{id} | Get a memory by ID |
| MemoriesApi | getMemoryContent | GET /v1/memories/{id}/content | Download memory content |
| MemoriesApi | listMemories | GET /v1/spaces/{spaceId}/memories | List memories in a space |
| MemoriesApi | retrieveMemory | GET /v1/memories:retrieve | Stream semantic memory retrieval |
| MemoriesApi | retrieveMemoryAdvanced | POST /v1/memories:retrieve | Advanced semantic memory retrieval with JSON |
| RerankersApi | createReranker | POST /v1/rerankers | Create a new reranker |
| RerankersApi | deleteReranker | DELETE /v1/rerankers/{id} | Delete a reranker |
| RerankersApi | getReranker | GET /v1/rerankers/{id} | Get a reranker by ID |
| RerankersApi | listRerankers | GET /v1/rerankers | List rerankers |
| RerankersApi | updateReranker | PUT /v1/rerankers/{id} | Update a reranker |
| SpacesApi | createSpace | POST /v1/spaces | Create a new Space |
| SpacesApi | deleteSpace | DELETE /v1/spaces/{id} | Delete a space |
| SpacesApi | getSpace | GET /v1/spaces/{id} | Get a space by ID |
| SpacesApi | listSpaces | GET /v1/spaces | List spaces |
| SpacesApi | updateSpace | PUT /v1/spaces/{id} | Update a space |
| SystemApi | getSystemInfo | GET /v1/system/info | Retrieve server build metadata |
| SystemApi | initializeSystem | POST /v1/system/init | Initialize the system |
| UsersApi | getCurrentUser | GET /v1/users/me | Get current user profile |
| UsersApi | getUser | GET /v1/users/{id} | Get a user by ID |
| UsersApi | getUserByEmail | GET /v1/users/email/{email} | Get user by email address |
Documentation for Models
- AbstractReply
- ActiveLicenseMetadata
- AdminDrainRequest
- AdminDrainResponse
- AdminPurgeJobsRequest
- AdminPurgeJobsResponse
- AdminReloadLicenseResponse
- ApiKeyAuth
- ApiKeyResponse
- BackgroundJobAttempt
- BackgroundJobSummary
- BatchMemoryCreationRequest
- BatchMemoryDeletionRequest
- BatchMemoryRetrievalRequest
- BinaryContent
- ChunkReference
- ChunkingConfiguration
- ContextItem
- CreateApiKeyRequest
- CreateApiKeyResponse
- CreateLLMResponse
- CredentialKind
- DistributionType
- EmbedderCreationRequest
- EmbedderResponse
- EmbedderWeight
- EndpointAuthentication
- GcpAdcAuth
- GoodMemStatus
- LLMCapabilities
- LLMCreationRequest
- LLMProviderType
- LLMResponse
- LLMSamplingParams
- LLMUpdateRequest
- LengthMeasurement
- ListApiKeysResponse
- ListEmbeddersResponse
- ListLLMsResponse
- ListRerankersResponse
- ListSpacesResponse
- Memory
- MemoryChunkResponse
- MemoryCreationRequest
- MemoryListResponse
- Modality
- PostProcessor
- ProcessingHistory
- ProviderType
- RecursiveChunkingConfiguration
- RerankerCreationRequest
- RerankerResponse
- ResultSetBoundary
- RetrieveMemoryEvent
- RetrieveMemoryRequest
- RetrievedItem
- SecretReference
- SentenceChunkingConfiguration
- SeparatorKeepStrategy
- Space
- SpaceCreationRequest
- SpaceEmbedder
- SpaceEmbedderConfig
- SpaceKey
- SystemInfoResponse
- SystemInitResponse
- UpdateApiKeyRequest
- UpdateEmbedderRequest
- UpdateRerankerRequest
- UpdateSpaceRequest
- UserResponse
Documentation for Authorization
Authentication schemes defined for the API:
ApiKeyAuth
- Type: API key
- API key parameter name: X-API-Key
- Location: HTTP header
Recommendation
It's recommended to create an instance of ApiClient per thread in a multithreaded environment to avoid any potential issues.