Skip to main content
The Iceberg REST Catalog API implements the Apache Iceberg REST Catalog specification, enabling query engines like Snowflake, DuckDB, Spark, and Trino to discover and read Planasonix-managed Iceberg tables. Base URL: https://api.planasonix.com
Auth: Authorization: Bearer plus your flx_ API key or a JWT obtained via the OAuth2 token exchange endpoint.

OAuth2 Token Exchange

POST /v1/oauth/tokens

Exchange an flx_ API key for a short-lived JWT. This endpoint is unauthenticated and follows the Iceberg REST spec’s OAuth2 flow.
string
required
Must be client_credentials.
string
required
Your flx_ API key.

Configuration

GET /v1/config

Returns the catalog configuration, including the default warehouse identifier.

Namespaces

GET /v1/namespaces

List namespaces in the catalog.
string
Optional parent namespace for hierarchical namespace listing.

POST /v1/namespaces

Create a new namespace.
string[]
required
Namespace identifier as an array of strings.
object
Key-value properties for the namespace.

GET /v1/namespaces/{namespace}

Get metadata for a namespace.

DELETE /v1/namespaces/{namespace}

Drop a namespace. The namespace must be empty (no tables). Returns 204 No Content on success, 409 Conflict if the namespace contains tables.

POST /v1/namespaces/{namespace}/properties

Update namespace properties.
object
Properties to set or overwrite.
string[]
Property keys to remove.

Tables

GET /v1/namespaces/{namespace}/tables

List tables in a namespace.

POST /v1/namespaces/{namespace}/tables

Create a new table.
string
required
Table name.
object
required
Iceberg schema definition.
object
Optional partition specification.
string
Optional custom storage location.

GET /v1/namespaces/{namespace}/tables/{table}

Load a table. Returns the full table metadata and temporary storage credentials for data file access.
The config field contains temporary, read-only credentials scoped to the table’s storage location. These credentials are typically valid for 1 hour (AWS STS) or the duration of the SAS token (Azure).

POST /v1/namespaces/{namespace}/tables/{table}

Commit updates to a table. Uses optimistic concurrency — if another commit has occurred since your loadTable, the request returns 409 Conflict.
object[]
required
Pre-conditions that must be satisfied (e.g., assert-table-uuid, assert-current-schema-id).
object[]
required
Table update actions (e.g., add-schema, add-snapshot, set-current-schema, set-properties).

DELETE /v1/namespaces/{namespace}/tables/{table}

Drop a table and remove it from the catalog. Returns 204 No Content on success.

POST /v1/tables/rename

Rename a table within or across namespaces.
object
required
Source table identifier (namespace and name).
object
required
Destination table identifier (namespace and name).

POST /v1/namespaces/{namespace}/tables/{table}/metrics

Report table scan metrics. Accepts the request and returns 204 No Content.

Error Responses

All error responses follow the Iceberg REST spec format:

Rate Limits

Catalog API requests are rate-limited per organization by tier: When the limit is exceeded, the API returns 429 Too Many Requests.