(BETA) Public Apache Iceberg REST Catalog for AI Lake databases.
Point any Iceberg-REST-capable client (PyIceberg, Spark, Trino, dbt, ...) at https://<org-host>/api/v1/ailake/database/<database>/catalog and authenticate with a standard GoodData API token. You never handle cloud credentials: catalog calls are re-signed by the proxy, and data files are read/written by your client directly against object storage using per-request remote signing handled automatically by the client — no credentials are ever returned to the client.
Schema stability disclaimer. The request and response bodies on these endpoints are defined by the Apache Iceberg REST Catalog specification, not by GoodData. The proxy forwards them to the underlying catalog, so their exact shape follows the Apache Iceberg version in use and can change as Apache Iceberg evolves — new fields may appear and existing structures may be extended without a GoodData API version change. The schemas documented here are informative outlines; the authoritative definition is the Apache Iceberg REST Catalog OpenAPI specification (https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml).
Namespaces are provisioned, not created. Each AI Lake database maps to exactly one namespace, created when the database is provisioned. GET .../namespaces (list) and POST .../namespaces (create) are rejected with 403 ForbiddenException; multi-level namespaces are not supported. Address tables as <namespace>.<table> using the database's own namespace.
Not supported through this catalog: registering an existing Iceberg table (registerTable), renaming tables, and views.
Errors use the standard Iceberg REST error envelope {"error": {"message", "type", "code"}}.
(BETA) Get catalog configuration
(BETA) Returns the catalog configuration for this AI Lake database, per the Apache Iceberg REST Catalog specification. The proxy injects the correct warehouse for the database (any client-supplied warehouse query parameter is ignored) and configures remote signing, so standard clients need no manual setup beyond the catalog URI and a GoodData API token. Response shape follows the Apache Iceberg REST Catalog specification and may change as Apache Iceberg evolves.
path Parameters
databaseIdstring · requiredAI Lake database name (preferred, e.g.
sales) or UUID. Must be a provisioned AI Lake database owned by the calling organization.
Responses
Catalog configuration (defaults, overrides). Includes the catalog prefix used in all subsequent requests — treat it as an opaque value chosen by the server.
defaultsobjectConfiguration defaults the client may override.
overridesobjectConfiguration the client must apply (includes the catalog
prefixandwarehouse).
(BETA) Load namespace properties
(BETA) Loads the properties of this database's own namespace. Only the database's provisioned namespace is addressable — any other namespace returns 404 NoSuchNamespaceException. Response shape follows the Apache Iceberg REST Catalog specification and may change as Apache Iceberg evolves.
path Parameters
databaseIdstring · requiredAI Lake database name (preferred, e.g.
sales) or UUID. Must be a provisioned AI Lake database owned by the calling organization.prefixstring · requiredCatalog prefix returned by the config endpoint (
GET .../catalog/v1/config). Opaque server-chosen value — Iceberg clients insert it automatically; do not construct it manually.namespacestring · requiredThe database's own namespace (commonly the database name). Each AI Lake database has exactly one namespace, created at provisioning time; any other namespace returns
404 NoSuchNamespaceException.
Responses
(BETA) Check whether a namespace exists
(BETA) Existence check for this database's own namespace, per the Apache Iceberg REST Catalog specification.
path Parameters
databaseIdstring · requiredAI Lake database name (preferred, e.g.
sales) or UUID. Must be a provisioned AI Lake database owned by the calling organization.prefixstring · requiredCatalog prefix returned by the config endpoint (
GET .../catalog/v1/config). Opaque server-chosen value — Iceberg clients insert it automatically; do not construct it manually.namespacestring · requiredThe database's own namespace (commonly the database name). Each AI Lake database has exactly one namespace, created at provisioning time; any other namespace returns
404 NoSuchNamespaceException.
Responses
Namespace exists.
(BETA) List tables in the namespace
(BETA) Lists table identifiers in this database's namespace, per the Apache Iceberg REST Catalog specification. Response shape follows the Apache Iceberg REST Catalog specification and may change as Apache Iceberg evolves.
path Parameters
databaseIdstring · requiredAI Lake database name (preferred, e.g.
sales) or UUID. Must be a provisioned AI Lake database owned by the calling organization.prefixstring · requiredCatalog prefix returned by the config endpoint (
GET .../catalog/v1/config). Opaque server-chosen value — Iceberg clients insert it automatically; do not construct it manually.namespacestring · requiredThe database's own namespace (commonly the database name). Each AI Lake database has exactly one namespace, created at provisioning time; any other namespace returns
404 NoSuchNamespaceException.
query Parameters
pageTokenstringOpaque pagination token from a previous response.
pageSizeintegerMaximum number of results to return.
Responses
(BETA) Create a table
(BETA) Creates an Iceberg table in this database's namespace, per the Apache Iceberg REST Catalog specification. Table properties, partition specs (identity/day/month/bucket/truncate transforms), and advisory identifier fields are supported. The returned table is immediately write-ready: writes are remote-signed through the catalog with no client-held credentials. Request and response shapes follow the Apache Iceberg REST Catalog specification and may change as Apache Iceberg evolves.
path Parameters
databaseIdstring · requiredAI Lake database name (preferred, e.g.
sales) or UUID. Must be a provisioned AI Lake database owned by the calling organization.prefixstring · requiredCatalog prefix returned by the config endpoint (
GET .../catalog/v1/config). Opaque server-chosen value — Iceberg clients insert it automatically; do not construct it manually.namespacestring · requiredThe database's own namespace (commonly the database name). Each AI Lake database has exactly one namespace, created at provisioning time; any other namespace returns
404 NoSuchNamespaceException.
Request Body
namestring · requiredTable name.
schemaobject · requiredIceberg schema (Apache Iceberg
Schemastructure).
partition-specobjectIceberg partition spec (identity/day/month/bucket/truncate transforms supported).
propertiesobjectTable properties, e.g.
format-version,write.format.default.stage-createbooleanwrite-orderobjectIceberg sort order.
Responses
(BETA) Load a table
(BETA) Loads table metadata (current snapshot, schema, partition spec, snapshot history), per the Apache Iceberg REST Catalog specification. Snapshot history enables time travel by snapshot_id and metadata-table inspection in standard clients. Response shape follows the Apache Iceberg REST Catalog specification and may change as Apache Iceberg evolves.
path Parameters
databaseIdstring · requiredAI Lake database name (preferred, e.g.
sales) or UUID. Must be a provisioned AI Lake database owned by the calling organization.prefixstring · requiredCatalog prefix returned by the config endpoint (
GET .../catalog/v1/config). Opaque server-chosen value — Iceberg clients insert it automatically; do not construct it manually.namespacestring · requiredThe database's own namespace (commonly the database name). Each AI Lake database has exactly one namespace, created at provisioning time; any other namespace returns
404 NoSuchNamespaceException.tablestring · requiredTable name within the namespace.
query Parameters
snapshotsstring · enumWhich snapshots to return in the metadata (
allorrefs), per the Apache Iceberg REST Catalog specification.Enum values:allrefs
Responses
(BETA) Commit updates to a table
(BETA) Commits a set of metadata updates and requirements to the table, per the Apache Iceberg REST Catalog specification. This single endpoint carries all write commits made by Iceberg clients: appends, overwrites, row-level deletes, upserts/merges, schema evolution (add/rename/drop column, widening type promotion), and partition-spec evolution. Commits use optimistic concurrency: a concurrent writer that commits first causes 409 CommitFailedException — re-load the table and retry with backoff. Request and response shapes follow the Apache Iceberg REST Catalog specification and may change as Apache Iceberg evolves.
path Parameters
databaseIdstring · requiredAI Lake database name (preferred, e.g.
sales) or UUID. Must be a provisioned AI Lake database owned by the calling organization.prefixstring · requiredCatalog prefix returned by the config endpoint (
GET .../catalog/v1/config). Opaque server-chosen value — Iceberg clients insert it automatically; do not construct it manually.namespacestring · requiredThe database's own namespace (commonly the database name). Each AI Lake database has exactly one namespace, created at provisioning time; any other namespace returns
404 NoSuchNamespaceException.tablestring · requiredTable name within the namespace.
Responses
(BETA) Drop a table
(BETA) Drops a table, per the Apache Iceberg REST Catalog specification. Tables on managed storage must be dropped with purge: set purgeRequested=true, which removes the table and its data and metadata files. A plain drop without purge is rejected with 400 BadRequest.
path Parameters
databaseIdstring · requiredAI Lake database name (preferred, e.g.
sales) or UUID. Must be a provisioned AI Lake database owned by the calling organization.prefixstring · requiredCatalog prefix returned by the config endpoint (
GET .../catalog/v1/config). Opaque server-chosen value — Iceberg clients insert it automatically; do not construct it manually.namespacestring · requiredThe database's own namespace (commonly the database name). Each AI Lake database has exactly one namespace, created at provisioning time; any other namespace returns
404 NoSuchNamespaceException.tablestring · requiredTable name within the namespace.
query Parameters
purgeRequestedbooleanWhether to also purge the table's underlying data and metadata files. Required (
true) for AI Lake managed storage; a drop without purge returns400 BadRequest.Default: false
Responses
Table dropped.
(BETA) Check whether a table exists
(BETA) Existence check for a table, per the Apache Iceberg REST Catalog specification.
path Parameters
databaseIdstring · requiredAI Lake database name (preferred, e.g.
sales) or UUID. Must be a provisioned AI Lake database owned by the calling organization.prefixstring · requiredCatalog prefix returned by the config endpoint (
GET .../catalog/v1/config). Opaque server-chosen value — Iceberg clients insert it automatically; do not construct it manually.namespacestring · requiredThe database's own namespace (commonly the database name). Each AI Lake database has exactly one namespace, created at provisioning time; any other namespace returns
404 NoSuchNamespaceException.tablestring · requiredTable name within the namespace.
Responses
Table exists.