Skip to main content

Table API

Table endpoints provide operations for creating, reading, updating, and deleting Iceberg tables through the REST Catalog API.

List Tables

List all tables in a namespace.

Path Parameters

string
required
Optional prefix for multi-tenant deployments
string
required
Namespace identifier (multi-part namespaces use %1F separator)

Query Parameters

string
Pagination token from a previous response
integer
Maximum number of tables to return

Response

array
required
List of table identifiers
string
Token for next page of results

Example


Create Table

Create a new table in the specified namespace.

Path Parameters

string
required
Optional prefix for multi-tenant deployments
string
required
Namespace identifier

Headers

string (uuid)
UUIDv7 for idempotent request handling
string
Comma-separated list of access delegation mechanisms: vended-credentials, remote-signing

Request Body

string
required
Table name
string
Table location. If not provided, a location will be generated.
object
required
Table schema definition
object
Partition specification
object
Sort order for data
object
Table properties
boolean
If true, table is not created but metadata is initialized for a transaction. Default: false.

Response

string
required
Location of table metadata file
object
required
Complete table metadata
object
Additional configuration for the table

Example


Load Table

Load table metadata from the catalog.

Path Parameters

string
required
Optional prefix for multi-tenant deployments
string
required
Namespace identifier
string
required
Table name

Headers

string
ETag from previous response. Server returns 304 if metadata hasn’t changed.
string
Access delegation mechanisms

Query Parameters

string
Which snapshots to include: all (default) or refs (only referenced snapshots)
string
Comma-separated list of view identifiers referencing this table

Response

string
required
Location of table metadata file
object
required
Complete table metadata including schema, partition specs, snapshots, etc.
object
Additional configuration and credentials for accessing the table

Example


Update Table

Commit updates to table metadata.

Path Parameters

string
required
Optional prefix for multi-tenant deployments
string
required
Namespace identifier
string
required
Table name

Headers

string (uuid)
UUIDv7 for idempotent request handling

Request Body

array
required
Assertions that must be true before applying updates
array
required
Changes to apply to table metadata

Response

string
required
Location of new metadata file
object
required
Updated table metadata

Example

The server validates requirements before applying updates. If any requirement fails, the entire commit is rejected with 409 Conflict.

Check Table Exists

Check if a table exists without loading its metadata.

Path Parameters

string
required
Optional prefix for multi-tenant deployments
string
required
Namespace identifier
string
required
Table name

Response

No response body. Status code indicates existence.

Example


Drop Table

Delete a table from the catalog.

Path Parameters

string
required
Optional prefix for multi-tenant deployments
string
required
Namespace identifier
string
required
Table name

Query Parameters

boolean
If true, delete table data and metadata. Default: false.

Headers

string (uuid)
UUIDv7 for idempotent request handling

Response

No response body on success.

Example

With purgeRequested=true, all table data and metadata are permanently deleted and cannot be recovered.

Rename Table

Rename a table or move it to a different namespace.

Path Parameters

string
required
Optional prefix for multi-tenant deployments

Headers

string (uuid)
UUIDv7 for idempotent request handling

Request Body

object
required
Current table identifier
object
required
New table identifier

Response

No response body on success.

Example

Moving tables across namespaces is valid but not all servers support it. Check the 406 response if cross-namespace moves fail.

Register Table

Register an existing table using its metadata file location.

Path Parameters

string
required
Optional prefix for multi-tenant deployments
string
required
Namespace identifier

Headers

string (uuid)
UUIDv7 for idempotent request handling
string
Access delegation mechanisms

Request Body

string
required
Table name to register
string
required
Location of existing metadata file

Response

Same as Load Table response.

Example


Report Metrics

Send table operation metrics to the catalog.

Path Parameters

string
required
Optional prefix for multi-tenant deployments
string
required
Namespace identifier
string
required
Table name

Request Body

Metrics report containing scan metrics, commit metrics, etc.

Response

No response body on success.

Example


Status Codes

Success

  • 200 OK - Request successful with response body
  • 204 No Content - Request successful without response body
  • 304 Not Modified - Table metadata unchanged (with If-None-Match)

Client Errors

  • 400 Bad Request - Invalid request format
  • 401 Unauthorized - Authentication required
  • 403 Forbidden - Not authorized
  • 404 Not Found - Table or namespace does not exist
  • 406 Not Acceptable - Operation not supported
  • 409 Conflict - Table already exists or commit requirements failed
  • 419 Authentication Timeout - Authentication expired

Server Errors

  • 500 Internal Server Error - Commit state unknown
  • 502 Bad Gateway - Gateway error, commit state unknown
  • 503 Service Unavailable - Service temporarily unavailable
  • 504 Gateway Timeout - Timeout, commit state unknown

Common Patterns

Staged Table Creation (CTAS)

Optimistic Concurrency Control

Using ETags