This API returns the schema and metadata for a Delta Sharing table without retrieving the actual data files. Use this to inspect table structure, partitioning, and configuration.
Request
{prefix}/shares/{share}/schemas/{schema}/tables/{table}/metadata
Bearer token for authentication Authorization: Bearer {token}
delta-sharing-capabilities
Optional capabilities header for advanced features: delta-sharing-capabilities: responseformat=delta;readerfeatures=deletionvectors
See Delta Sharing Capabilities for details.
URL Parameters
The share name to query. This parameter is case-insensitive.
The schema name to query. This parameter is case-insensitive.
The table name to query. This parameter is case-insensitive.
Response
Content-Type: application/x-ndjson; charset=utf-8
Current table version number
Response Body
The response contains exactly two lines of newline-delimited JSON:
First line: Protocol version information Minimum reader version required to read this table
Second line: Complete table metadata Unique table identifier (UUID format)
Root location of the table (e.g., S3 bucket path)
Additional storage locations for table files. Most tables only use the root location.
Supported access modes for the table:
url: URL-based access
dir: Directory-based access
File format specification Format provider (typically "parquet")
JSON-encoded Delta Lake schema definition. Describes the table’s columns, data types, and nullability. Example structure: {
"type" : "struct" ,
"fields" : [
{
"name" : "eventTime" ,
"type" : "timestamp" ,
"nullable" : true ,
"metadata" : {}
},
{
"name" : "date" ,
"type" : "date" ,
"nullable" : true ,
"metadata" : {}
}
]
}
Array of column names used for partitioning
Table configuration properties (e.g., {"enableChangeDataFeed": "true"})
Example Request
curl -X GET \
'{prefix}/shares/share_name/schemas/schema_name/tables/table_name/metadata' \
-H 'Authorization: Bearer {token}'
Example Response
HTTP/2 200
content-type: application/x-ndjson; charset=utf-8
delta-table-version: 123
{ "protocol" :{ "minReaderVersion" : 1 }}
{ "metaData" :{ "id" : "f8d5c169-3d01-4ca3-ad9e-7dc3355aedb2" , "location" : "s3://my-bucket/tables/customer" , "auxiliaryLocations" :[ "s3://secondary-bucket/tables/customer" ], "accessModes" :[ "url" , "dir" ], "format" :{ "provider" : "parquet" }, "schemaString" : "{ \" type \" : \" struct \" , \" fields \" :[{ \" name \" : \" eventTime \" , \" type \" : \" timestamp \" , \" nullable \" :true, \" metadata \" :{}},{ \" name \" : \" date \" , \" type \" : \" date \" , \" nullable \" :true, \" metadata \" :{}}]}" , "partitionColumns" :[ "date" ]}}
For readability, here’s the same response formatted:
// Line 1: Protocol
{
"protocol" : {
"minReaderVersion" : 1
}
}
// Line 2: Metadata
{
"metaData" : {
"id" : "f8d5c169-3d01-4ca3-ad9e-7dc3355aedb2" ,
"location" : "s3://my-bucket/tables/customer" ,
"auxiliaryLocations" : [
"s3://secondary-bucket/tables/customer"
],
"accessModes" : [ "url" , "dir" ],
"format" : {
"provider" : "parquet"
},
"schemaString" : "{ \" type \" : \" struct \" , \" fields \" :[{ \" name \" : \" eventTime \" , \" type \" : \" timestamp \" , \" nullable \" :true, \" metadata \" :{}},{ \" name \" : \" date \" , \" type \" : \" date \" , \" nullable \" :true, \" metadata \" :{}}]}" ,
"partitionColumns" : [ "date" ]
}
}
Error Responses
The request is malformed. {
"errorCode" : "string" ,
"message" : "string"
}
The bearer token is missing or incorrect. {
"errorCode" : "string" ,
"message" : "string"
}
The request is forbidden from being fulfilled. {
"errorCode" : "string" ,
"message" : "string"
}
The requested resource does not exist. {
"errorCode" : "string" ,
"message" : "string"
}
Show 500 - Internal Server Error
The request is not handled correctly due to a server error. {
"errorCode" : "string" ,
"message" : "string"
}
This API is useful for:
Inspecting table schema before querying data
Validating partition columns for predicate pushdown
Checking table configuration (e.g., Change Data Feed enabled)
Understanding access modes available for the table