Official Java client library for the Rasepi API — a multilingual-first collaborative documentation platform with forced expiry and plugin architecture.
<dependency>
<groupId>com.rasepi</groupId>
<artifactId>rasepi-java</artifactId>
<version>1.0.0</version>
</dependency>implementation 'com.rasepi:rasepi-java:1.0.0'import com.rasepi.RasepiClient;
import com.rasepi.RasepiClientOptions;
var client = RasepiClient.create(RasepiClientOptions.builder()
.baseUrl("https://your-instance.rasepi.com")
.accessToken("your-access-token")
.build());
// List hubs
var hubs = client.hubs().list();
hubs.forEach(hub -> System.out.println(hub.name() + " (" + hub.key() + ")"));
// Get an entry
var entry = client.entries().get(entryId);
System.out.println(entry.title());
// Create a new entry
var newEntry = client.entries().create(Map.of(
"hubKey", "engineering",
"key", "getting-started",
"title", "Getting Started Guide",
"content", "<p>Hello world</p>",
"originalLanguage", "en",
"expiryDays", 90
));var client = RasepiClient.create(RasepiClientOptions.builder()
.baseUrl("https://your-instance.rasepi.com")
.build());
// Step 1: Get the OAuth login URL
String loginUrl = client.auth().getLoginUrl("google", "https://your-app.com/callback");
// Step 2: Exchange the code
var tokens = client.auth().exchangeCode(authCode);
// Client automatically stores and uses the tokens
// Tokens are refreshed automatically when expiredvar tokens = client.auth().refreshToken(refreshToken);var client = RasepiClient.create(RasepiClientOptions.builder()
.baseUrl("http://localhost:5000")
.devToken(tenantId, userId)
.build());client.hubs().list();
client.hubs().get("engineering");
client.hubs().create(Map.of("key", "eng", "name", "Engineering", "defaultExpiryDays", 90));
client.hubs().update("engineering", Map.of("name", "Engineering Docs"));
client.hubs().delete("engineering");
client.hubs().transferOwnership("engineering", newOwnerId);client.entries().listByHub("engineering");
client.entries().get(entryId);
client.entries().create(Map.of(...));
client.entries().update(entryId, Map.of("title", "Updated"));
client.entries().publish(entryId);
client.entries().renew(entryId);
client.entries().delete(entryId);client.translations().list(entryId);
client.translations().get(entryId, "de");
client.translations().create(entryId, "de", Map.of("title", "Titel", "content", "<p>Inhalt</p>"));
client.translations().getStatus(entryId, "de");
client.translations().getStaleBlocks(entryId, "de");
client.translations().markUpToDate(entryId, "de");client.analytics().getSummary(entryId);
client.analytics().getEvents(entryId, 0, 50);
client.analytics().reportTimeSpent(entryId, 120);var results = client.ai().search(Map.of("query", "how to deploy", "mode", "hybrid"));
var conversation = client.ai().createConversation("My Question");
var response = client.ai().sendMessage(conversationId, Map.of("content", "How to set up CI/CD?"));client.portal().getFeed();
client.portal().getTopics();
client.portal().getContent("engineering", "getting-started", "en");
client.portal().search("deployment guide");var link = client.sharing().create("getting-started", Map.of("expiresAt", "2026-04-14T00:00:00Z"));
var links = client.sharing().list("getting-started");
client.sharing().revoke("getting-started", linkId);import com.rasepi.RasepiApiException;
try {
var hub = client.hubs().get("non-existent");
} catch (RasepiApiException e) {
System.out.println("Error " + e.getStatusCode() + ": " + e.getMessage());
}- Java 17+
java.net.http.HttpClient(built-in)- Jackson for JSON serialization
MIT — see LICENSE for details.