https://api.planasonix.comAuth:
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.
Must be
client_credentials.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.
Optional parent namespace for hierarchical namespace listing.
POST /v1/namespaces
Create a new namespace.
Namespace identifier as an array of strings.
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.
Properties to set or overwrite.
Property keys to remove.
Tables
GET /v1/namespaces/{namespace}/tables
List tables in a namespace.
POST /v1/namespaces/{namespace}/tables
Create a new table.
Table name.
Iceberg schema definition.
Optional partition specification.
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.
Pre-conditions that must be satisfied (e.g.,
assert-table-uuid, assert-current-schema-id).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.
Source table identifier (
namespace and name).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:| Code | Type | Description |
|---|---|---|
400 | BadRequestException | Invalid request body or parameters |
401 | NotAuthorizedException | Missing or invalid authentication |
403 | ForbiddenException | Feature not available for your tier |
404 | NoSuchNamespaceException | Namespace not found |
404 | NoSuchTableException | Table not found |
409 | AlreadyExistsException | Namespace or table already exists |
409 | CommitFailedException | Optimistic concurrency conflict |
429 | TooManyRequestsException | Rate limit exceeded |
Rate Limits
Catalog API requests are rate-limited per organization by tier:| Tier | Requests/Day |
|---|---|
| Professional | 10,000 |
| Premium | 100,000 |
| Enterprise | Unlimited |
429 Too Many Requests.