Response Format Selection
The format is controlled by thedelta-sharing-capabilities header:
Format Selection:
- No header: Defaults to Parquet format
responseformat=parquet: Parquet format (compatible with all connectors)responseformat=delta: Delta format (enables advanced features like deletion vectors, column mapping)responseformat=delta,parquet: Server chooses based on table features
Parquet Format Responses
The Parquet format is used by Delta Sharing v1.0 and later. It’s the default format and compatible with all existing Delta Sharing connectors.JSON Wrapper Object
Each line contains exactly one of these fields:| Field | Type | Description |
|---|---|---|
protocol | Object | Protocol versioning information |
metaData | Object | Table metadata (schema, partitions, etc.) |
file | Object | Individual data file reference |
add | Object | Add file action (for CDF/streaming) |
cdf | Object | Change data file reference |
remove | Object | Remove file action (for CDF/streaming) |
endStreamAction | Object | End of stream marker (optional) |
Protocol Object
Defines the minimum protocol version clients must support.Minimum protocol version required to read the table. Currently always
1. Will increase for non-forward-compatible changes.Clients can safely ignore unrecognized fields in responses that support their reader version.
Metadata Object
Contains comprehensive table metadata including schema, partitioning, and configuration.Unique identifier for the table (typically UUID)
User-provided table name
User-provided table description
Root directory of the table where delta log exists. Required for tables supporting
dir access mode.Additional storage locations for table files. Most tables only use the root location.
Supported access modes:
["url"], ["dir"], or both. If absent, assume URL-only access.Data file encoding specification
Serialized JSON string representing the table schema. Parse this string to get the Schema Object.
Array of column names used for partitioning. Empty array if table is not partitioned.
Map of table configuration options (e.g.,
{"enableChangeDataFeed": "true"})Table version this metadata corresponds to (returned for versioned/CDF queries)
Total table size in bytes (if available in delta log)
Total number of files in the table (if available in delta log)
File Object
Represents a single data file in the table with a pre-signed URL.HTTPS pre-signed URL to read the file. URLs may differ across responses for the same file.
Unique identifier guaranteed to be the same across requests. Use as cache key.
Map of partition column to value. Empty object
{} for non-partitioned tables. See Partition Value Serialization.File size in bytes
Serialized JSON string with file statistics. Parse to get Statistics Object. May be absent.
Table version of the file (for versioned queries)
Unix timestamp in milliseconds of the table version (for versioned queries)
Unix timestamp in milliseconds when the URL expires
Data Change File Actions
Used in streaming and CDF queries to represent changes to the table.Add File Action
Add File Action
Represents a file added to the table.Fields: Same as File object, but
timestamp and version are required.CDF File Action
CDF File Action
Represents a change data feed file.CDF files contain three metadata columns:
_change_type:insert,update_preimage,update_postimage, ordelete_commit_version: Table version of the change_commit_timestamp: Unix timestamp in milliseconds
Remove File Action
Remove File Action
Represents a file removed from the table.
EndStreamAction
Optional action marking the end of a response stream.Token for refreshing pre-signed URLs in snapshot queries
Token for fetching next page in paginated queries
Minimum URL expiration timestamp across all files in the response
Error message for failures during HTTP streaming. Client must fail the query when present.
Delta Format Responses
Delta format enables support for advanced Delta Lake features (deletion vectors, column mapping, etc.). Responses contain Delta actions that can be used to construct a local delta log.JSON Wrapper Object (Delta)
Each line contains exactly one of:| Field | Type | Description |
|---|---|---|
protocol | Object | Delta protocol wrapper |
metaData | Object | Delta metadata wrapper |
file | Object | Delta single action wrapper |
Protocol (Delta Format)
Standard Delta Protocol object. Must be parsed by a Delta library.
Metadata (Delta Format)
Standard Delta Metadata object. Must be parsed by a Delta library.
Table version (for versioned/CDF queries)
Table size in bytes
Number of files in table
Root directory (required for
dir access)Additional storage locations
Supported access modes
File (Delta Format)
Wraps a Delta single action (Add, Remove, or CDC).Unique file identifier (consistent across requests)
Unique identifier for deletion vector file (if present)
Table version (for versioned queries)
Unix timestamp in milliseconds
URL expiration timestamp
Standard Delta single action (
add, remove, or cdc) with path replaced by pre-signed URL. Must be parsed by Delta library.Schema Object
Table schemas use a subset of Spark SQL’s JSON schema representation.Struct Type
name: Column nametype: Type name (primitive, struct, array, or map)nullable: Whether column can be nullmetadata: JSON map with additional info (e.g., comments)
Primitive Types
| Type | Description |
|---|---|
string | UTF-8 string |
long | 8-byte signed integer |
integer | 4-byte signed integer |
short | 2-byte signed integer |
byte | 1-byte signed integer |
float | 4-byte floating-point |
double | 8-byte floating-point |
boolean | true or false |
binary | Binary data |
date | Calendar date (year-month-day) |
timestamp | Microsecond precision timestamp (no timezone) |
decimal | Fixed precision/scale decimal (max 38 digits) |
Complex Types
Array Type
Array Type
elementType: Type of array elementscontainsNull: Whether array can contain nulls
Map Type
Map Type
keyType: Type of map keysvalueType: Type of map valuesvalueContainsNull: Whether values can be null
Partition Value Serialization
Partition values inpartitionValues maps are serialized as strings:
| Type | Format | Example |
|---|---|---|
| string | No translation | "value" |
| numeric | String representation | "123" |
| date | {year}-{month}-{day} | "1970-01-01" |
| timestamp | {year}-{month}-{day} {hour}:{minute}:{second} | "1970-01-01 00:00:00" |
| boolean | "true" or "false" | "true" |
An empty string for any type represents a
null partition value.Per-file Statistics
File objects may include statistics in thestats field (serialized JSON string).
Global Statistics
| Statistic | Description |
|---|---|
numRecords | Total number of records in file |
Per-column Statistics
Statistics mirror the data schema:| Statistic | Description |
|---|---|
nullCount | Number of null values per column |
minValues | Minimum value per column |
maxValues | Maximum value per column |
Statistics are optional and may be missing. Servers use them for query optimization and file pruning.
Next Steps
REST APIs
Explore REST API endpoints
Filtering
Learn about data filtering