Protocol Architecture
The Delta Sharing protocol defines REST APIs and message formats used by clients and servers to exchange data. It enables direct access to shared data through various tools including Pandas, Apache Spark, Tableau, and any system implementing the protocol.Key Design Principles
Cloud-Native
Leverages cloud storage systems (S3, ADLS, GCS) for reliable large-scale data transfer
Secure
Uses bearer token authentication and pre-signed URLs for secure access control
Open Standard
Platform-agnostic protocol that works across different data platforms
Efficient
Supports predicate pushdown, file-level statistics, and optimized metadata queries
REST API Structure
All Delta Sharing REST APIs use bearer tokens for authorization. The API endpoints follow a consistent pattern:- prefix: Configurable server endpoint (e.g.,
https://sharing.delta.io/delta-sharing/) - share: The share name (case-insensitive)
- schema: The schema name (case-insensitive)
- table: The table name (case-insensitive)
Authentication
Delta Sharing uses RFC 6750 bearer token authentication. Every API request must include an authorization header:- Server endpoint URL
- Bearer token for authentication
- Token expiration time (optional)
- Protocol version information
Response Codes
All APIs return standard HTTP status codes:| Status | Meaning |
|---|---|
| 200 | Request successful |
| 400 | Malformed request |
| 401 | Unauthenticated (missing or incorrect token) |
| 403 | Forbidden (insufficient permissions) |
| 404 | Resource not found |
| 500 | Server error |
errorCode and message fields:
Core API Endpoints
Discovery APIs
These APIs help recipients discover available resources:List Shares
List Shares
List Schemas
List Schemas
GET
{prefix}/shares/{share}/schemasReturns all schemas in a share.List Tables
List Tables
GET
{prefix}/shares/{share}/schemas/{schema}/tablesReturns all tables in a schema with metadata about supported access modes.Data Access APIs
Query Table Metadata
Query Table Metadata
GET
{prefix}/shares/{share}/schemas/{schema}/tables/{table}/metadataReturns table schema, format, partition columns, and configuration.Response uses newline-delimited JSON (NDJSON) format with:- Protocol version information
- Table metadata (schema, partitions, configuration)
Query Table Data
Query Table Data
POST
{prefix}/shares/{share}/schemas/{schema}/tables/{table}/queryReturns data files with optional filtering and limits.Request body supports:predicateHints: SQL filter expressionslimitHint: Row limit hintversion: Time travel to specific versiontimestamp: Time travel to specific timestamp
Query Table Version
Query Table Version
GET
{prefix}/shares/{share}/schemas/{schema}/tables/{table}/versionLightweight API to check table version for cache validation.Returns version in response header:Data Flow
The typical data access flow works as follows:Response Format
Metadata and data query responses use newline-delimited JSON (NDJSON) format:- protocol: Version requirements
- metaData: Table schema and configuration
- file: Data file with pre-signed URL
- add/remove/cdf: Change data feed actions
The NDJSON format enables efficient streaming of large result sets without loading the entire response into memory.
Protocol Versioning
The protocol uses versioning to maintain backward compatibility:- minReaderVersion: Minimum protocol version required to read responses
- Currently set to
1for all tables - Will increment for non-forward-compatible changes
- Clients should validate they support the required version
Capabilities Header
Clients can advertise capabilities through thedelta-sharing-capabilities header:
- responseformat:
parquet(default) ordeltaformat - readerfeatures: Comma-separated Delta features (e.g.,
deletionvectors,columnmapping) - includeEndStreamAction: Request end-of-stream markers
Next Steps
Data Model
Learn about the hierarchical structure of shares, schemas, and tables
Access Modes
Understand URL-based vs directory-based access patterns
Profile Files
Configure authentication with profile files
API Reference
Explore detailed API specifications