> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getcollate.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Java SDK Overview

> Enterprise Java integration client for Collate

## Overview

The Java SDK in the current platform code is published as `org.open-metadata:openmetadata-sdk`. It provides a service-level client through `OpenMetadata.client()` and a higher-level fluent layer under `org.openmetadata.sdk.fluent.*`.

## Installation

Use the SDK version that matches your server release.

### Maven

```xml theme={null}
<dependency>
    <groupId>org.open-metadata</groupId>
    <artifactId>openmetadata-sdk</artifactId>
    <version>YOUR_OPENMETADATA_VERSION</version>
</dependency>
```

### Gradle

```gradle theme={null}
implementation "org.open-metadata:openmetadata-sdk:YOUR_OPENMETADATA_VERSION"
```

## Quick start

```java theme={null}
import org.openmetadata.sdk.client.OpenMetadata;
import org.openmetadata.sdk.fluent.Tables;
import org.openmetadata.sdk.models.ListParams;

OpenMetadata.initialize(
    "https://your-company.getcollate.io/api",
    "your-jwt-token"
);

var client = OpenMetadata.client();

// Service-level access
var tablesPage = client.tables().list(new ListParams().setLimit(10));
for (var table : tablesPage.getData()) {
    System.out.println(table.getFullyQualifiedName());
}

// Fluent helpers
Tables.setDefaultClient(client);
var table = Tables.findByName("service.database.schema.table")
    .includeAll()
    .fetch();

table.withDescription("Curated in the Java SDK").save();
```

## SDK surfaces

* `OpenMetadata.client()` exposes REST-backed services such as `tables()`, `glossaries()`, `databaseServices()`, and `lineage()`.
* `org.openmetadata.sdk.fluent.*` provides chainable helpers for common workflows, such as `Tables.create()`, `Glossaries.findByName()`, and `Users.list()`.
* Resource methods use `org.openmetadata.sdk.models.ListParams` for pagination and filtering.

## Common patterns

### Create a table

```java theme={null}
import java.util.List;
import org.openmetadata.schema.type.Column;
import org.openmetadata.schema.type.ColumnDataType;
import static org.openmetadata.sdk.fluent.Tables.create;

Tables.setDefaultClient(client);

var table = create()
    .name("orders")
    .inSchema("sample_data.ecommerce_db.shopify")
    .withDescription("Orders curated from the commerce warehouse")
    .withColumns(List.of(
        new Column().withName("id").withDataType(ColumnDataType.BIGINT),
        new Column().withName("status").withDataType(ColumnDataType.VARCHAR).withDataLength(255)
    ))
    .execute();
```

### Fetch and update an entity

```java theme={null}
Tables.setDefaultClient(client);

var table = Tables.findByName("sample_data.ecommerce_db.shopify.orders")
    .includeAll()
    .fetch();

table.withDisplayName("Orders").save();
```

### List with pagination

```java theme={null}
import org.openmetadata.sdk.models.ListParams;

var page = client.tables().list(
    new ListParams()
        .setLimit(50)
        .setService("sample_data")
);

if (page.getPaging() != null && page.getPaging().getAfter() != null) {
    var nextPage = client.tables().list(
        new ListParams()
            .setLimit(50)
            .setAfter(page.getPaging().getAfter())
    );
}
```

## Next steps

* Use [Java SDK landing page](/sdk/java) for the current module and entry points.
* Use [Java SDK for Lineage](/sdk/java/lineage) for lineage-specific workflows.
