Skip to main content

Configuration API

The configuration endpoint allows clients to discover server capabilities and receive catalog configuration.

Get Catalog Configuration

Retrieve catalog configuration settings from the server.

Query Parameters

string
Warehouse location or identifier to request from the service.

Request Example

Response

object
Properties that should be used as default configuration. Applied before client configuration.
object
Properties that should be used to override client configuration. Applied after defaults and client configuration.
array
List of endpoints supported by the server. Each endpoint is formatted as <HTTP verb> <resource path>.If not provided, a default set of endpoints is assumed.
string (duration)
Client reuse window for an Idempotency-Key (ISO-8601 duration, e.g., PT30M, PT24H).Indicates how long clients may reuse an idempotency key. Presence indicates server supports idempotency.

Response Example

Status Codes

  • 200 OK - Configuration retrieved successfully
  • 400 Bad Request - Invalid request parameters
  • 401 Unauthorized - Authentication required
  • 403 Forbidden - Not authorized to access configuration
  • 419 Authentication Timeout - Authentication expired
  • 503 Service Unavailable - Service temporarily unavailable

Configuration Properties

How Configuration is Applied

Catalog configuration is constructed in this order:
  1. Defaults from server response
  2. Client configuration provided by the application
  3. Overrides from server response
This allows servers to:
  • Suggest default values that clients can override
  • Enforce specific values that cannot be changed by clients

Common Configuration Properties

Warehouse Location

The root location for table data:

Client Pool Size

Number of HTTP client connections:

Namespace Separator

Character used to separate namespace levels (default: 0x1F):

OAuth2 Configuration

OAuth2 server URI for authentication:

Additional Catalog Properties

Servers may return any Iceberg catalog configuration property:
  • io-impl - FileIO implementation class
  • lock-impl - Lock implementation class
  • cache-enabled - Enable metadata caching
  • cache.expiration-interval-ms - Cache expiration time
See Catalog Properties for a full list.

Endpoint Discovery

The endpoints array advertises which API operations the server supports.

Default Endpoints

If endpoints is not provided, clients should assume support for:
  • GET /v1/{prefix}/namespaces
  • POST /v1/{prefix}/namespaces
  • GET /v1/{prefix}/namespaces/{namespace}
  • DELETE /v1/{prefix}/namespaces/{namespace}
  • POST /v1/{prefix}/namespaces/{namespace}/properties
  • GET /v1/{prefix}/namespaces/{namespace}/tables
  • POST /v1/{prefix}/namespaces/{namespace}/tables
  • GET /v1/{prefix}/namespaces/{namespace}/tables/{table}
  • POST /v1/{prefix}/namespaces/{namespace}/tables/{table}
  • DELETE /v1/{prefix}/namespaces/{namespace}/tables/{table}
  • POST /v1/{prefix}/namespaces/{namespace}/register
  • POST /v1/{prefix}/namespaces/{namespace}/tables/{table}/metrics
  • POST /v1/{prefix}/tables/rename
  • POST /v1/{prefix}/transactions/commit

Checking Endpoint Support

Before calling an endpoint, check if it’s in the advertised list:

Idempotency Support

The idempotency-key-lifetime field indicates:
  1. If present: Server supports idempotency keys
  2. Value: How long clients can reuse the same key

Using Idempotency Keys

Key Requirements

  • Format: UUIDv7 (RFC 9562)
  • Must be globally unique
  • Reuse same key when retrying the same operation
  • Generate new key for different operations
  • Don’t reuse after lifetime expires

Client Implementation

Initialization Flow

Configuration Caching

Cache configuration to avoid repeated calls:

Use Cases

Multi-Warehouse Setup

Server returns different configurations:

Custom Client Configuration

Client can set custom properties, but server overrides take precedence:

Best Practices

  1. Call /config first: Always retrieve configuration before other operations
  2. Respect overrides: Don’t try to override server-enforced settings
  3. Cache configuration: Avoid repeated calls with appropriate TTL
  4. Check endpoint support: Gracefully handle unsupported operations
  5. Use warehouse parameter: For multi-tenant deployments
  6. Handle configuration changes: Re-fetch if errors suggest configuration issues