Hi @Ji-Seung,
The ENDPOINT_NOT_FOUND error makes sense โ the endpoint you're trying to call does not exist in the Delta Sharing open protocol. There is no standalone "Get Table" (singular) endpoint at that path.
The Delta Sharing Protocol Endpoints for Tables
Here are the actual available endpoints under the Delta Sharing recipient API path (/api/2.0/delta-sharing/metastores/{metastore_id}/...):
Method Path Purpose Status for you
| GET | .../shares/{share}/schemas/{schema}/tables | List all tables in a schema | Should work |
| GET | .../shares/{share}/schemas/{schema}/tables/{table}/metadata | Query table metadata | โ
You confirmed this works |
| GET | .../shares/{share}/schemas/{schema}/tables/{table}/version | Get table version | Should work |
| POST | .../shares/{share}/schemas/{schema}/tables/{table}/query | Query table data (with predicates/limits) | Should work |
| GET | .../shares/{share}/all-tables | List all tables across all schemas | Should work |
And for the Iceberg REST Catalog interface:
Method Path Purpose Status for you
| GET | .../iceberg/v1/namespaces/{namespace}/tables/{table} | Load table (Iceberg metadata) | โ
You confirmed this works |
What's Missing
Notice there is no:
GET .../shares/{share}/schemas/{schema}/tables/{table}This path (without a trailing /metadata, /version, or /query) is simply not a valid endpoint in the Delta Sharing protocol. The protocol was designed so that you either:
- List tables in a schema (get all table names/metadata at once)
- Query a specific table's metadata, version, or data
There's no intermediate "get table details" endpoint like you'd find in the Unity Catalog API (GET /api/2.1/unity-catalog/tables/{full_name}).
What to Use Instead
Depending on what info you need:
If you want table metadata (schema, partition columns, etc.):
curl -s -X GET \
'https://frankfurt.cloud.databricks.com/api/2.0/delta-sharing/metastores/<metastore_id>/shares/share_test/schemas/iceberg_database/tables/test_iceberg_table/metadata' \
-H 'Authorization: Bearer xxx'
(You already confirmed this works โ
)
If you want to confirm a table exists and get its basic info:
# List tables in the schema and filter for your table
curl -s -X GET \
'https://frankfurt.cloud.databricks.com/api/2.0/delta-sharing/metastores/<metastore_id>/shares/share_test/schemas/iceberg_database/tables' \
-H 'Authorization: Bearer xxx'
If you want the Iceberg table metadata (for Iceberg clients):
# Use the Iceberg REST Catalog API (you confirmed this works)
curl -s -X GET \
'https://frankfurt.cloud.databricks.com/api/2.0/delta-sharing/metastores/<metastore_id>/iceberg/v1/namespaces/iceberg_database/tables/test_iceberg_table' \
-H 'Authorization: Bearer xxx'
Why the Confusion?
The Delta Sharing open protocol spec (on GitHub: delta-io/delta-sharing) doesn't define a "Get Table" endpoint. Some documentation or API reference pages may list it, but the Databricks implementation follows the open protocol strictly for the /delta-sharing/ path.
The Iceberg loadTable endpoint works because that follows the Apache Iceberg REST Catalog spec, which does have an individual table retrieval endpoint.
Summary
What you tried Why it fails
| GET .../tables/test_iceberg_table | This endpoint doesn't exist in the Delta Sharing protocol |
| GET .../tables/test_iceberg_table/metadata | โ
Works โ this IS a valid endpoint |
| GET .../iceberg/v1/.../tables/test_iceberg_table | โ
Works โ Iceberg REST Catalog spec has this endpoint |
Use /metadata or the Iceberg loadTable API to get the table information you need. If you need to enumerate tables, use the List Tables endpoint (GET .../schemas/{schema}/tables without a table name at the end).
Hope this clarifies things!