openapi: 3.0.3 info: title: Delta Sharing API description: An Open Protocol for Secure Data Sharing license: name: AGPL v3.0 url: https://www.gnu.org/licenses/agpl-3.0.en.html version: 0.0.0 tags: - name: CatalogService description: Manage catalogs and schemas in the service. - name: CredentialService description: |- Manage credentials to access external data sources and services as well as generate signed urls for the Delta Sharing service. - name: DeltaSharingExtensionService description: |- Services exposing the unofficial APIs for Delta Sharing. Mainly used to manage resoureces exposed by the Delta Sharing service. - name: DeltaSharingService description: Service exposing the official APIs for Delta Sharing. - name: official description: APIs which are part of published official document - name: schemas description: Schema discovery APIs - name: shares description: Share discovery APIs - name: tables description: Table query and inspection APIs - name: unofficial description: APIs which are custom to delta-sharing-rs paths: /catalogs: get: tags: - CatalogService - catalogs - unity description: List catalogs operationId: ListCatalogs parameters: - name: pageToken in: query description: The next_page_token value returned from a previous List request, if any. schema: type: string - name: maxResults in: query description: The maximum number of items to return. schema: type: integer format: int32 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListCatalogsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - CatalogService - catalogs - unity description: Create a new catalog operationId: CreateCatalog requestBody: content: application/json: schema: $ref: '#/components/schemas/CatalogInfo' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CatalogInfo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /catalogs/{name}: get: tags: - CatalogService - catalogs - unity description: Get a catalog operationId: GetCatalog parameters: - name: name in: path description: Name of catalog. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CatalogInfo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - CatalogService - catalogs - unity description: Delete a catalog operationId: DeleteCatalog parameters: - name: name in: path description: Name of catalog. required: true schema: type: string - name: force in: query description: Force deletion even if the catalog is not empty. schema: type: boolean responses: '200': description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - CatalogService - catalogs - unity description: Update a catalog operationId: UpdateCatalog parameters: - name: name in: path description: Name of catalog. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateCatalogRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CatalogInfo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /credentials: post: tags: - CredentialService - credentials - unofficial operationId: CreateCredential requestBody: content: application/json: schema: $ref: '#/components/schemas/Credential' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Credential' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /credentials/{name}: get: tags: - CredentialService - credentials - unofficial operationId: GetCredential parameters: - name: name in: path description: Name of credential. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Credential' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - CredentialService - credentials - unofficial operationId: DeleteCredential parameters: - name: name in: path description: Name of credential. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Credential' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /locations: get: tags: - CredentialService - locations - unofficial operationId: ListStorageLocations parameters: - name: maxResults in: query description: The maximum number of results per page that should be returned. schema: type: integer format: int32 - name: pageToken in: query description: |- Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results. schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListStorageLocationsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - CredentialService - locations - unofficial operationId: CreateStorageLocation requestBody: content: application/json: schema: $ref: '#/components/schemas/StorageLocation' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StorageLocation' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /locations/{name}: get: tags: - CredentialService - locations - unofficial operationId: GetStorageLocation parameters: - name: name in: path description: Name of storage location. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StorageLocation' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - CredentialService - locations - unofficial operationId: DeleteStorageLocation parameters: - name: name in: path description: Name of storage location. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StorageLocation' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /schemas: get: tags: - CatalogService - schemas - unity description: List Schemas operationId: ListSchemas parameters: - name: catalogName in: query description: Name of parent catalog. schema: type: string - name: pageToken in: query description: The next_page_token value returned from a previous List request, if any. schema: type: string - name: maxResults in: query description: The maximum number of items to return. schema: type: integer format: int32 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListSchemasResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - CatalogService - schemas - unity description: Create a new Schema operationId: CreateSchema requestBody: content: application/json: schema: $ref: '#/components/schemas/SchemaInfo' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SchemaInfo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /schemas/{fullName}: patch: tags: - CatalogService - schemas - unity description: Update a Schema operationId: UpdateSchema parameters: - name: fullName in: path description: Full name of schema, in form of catalog_name.schema_name. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateSchemaRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SchemaInfo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /schemas/{name}: get: tags: - CatalogService - schemas - unity description: Get a Schema operationId: GetSchema parameters: - name: name in: path description: Name of schema. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SchemaInfo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - CatalogService - schemas - unity description: Delete a Schema operationId: DeleteSchema parameters: - name: name in: path description: Name of schema. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SchemaInfo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /shares: get: tags: - DeltaSharingService - shares - official description: List shares accessible to a recipient. operationId: ListShares parameters: - name: maxResults in: query description: The maximum number of results per page that should be returned. schema: type: integer format: int32 - name: pageToken in: query description: |- Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results. schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListSharesResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - DeltaSharingExtensionService - shares - unofficial description: Create a new Share in the Delta Sharing service. operationId: CreateShare requestBody: content: application/json: schema: $ref: '#/components/schemas/ShareInfo' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ShareInfo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /shares/{name}: delete: tags: - DeltaSharingExtensionService - shares - unofficial description: Delete a Share in the Delta Sharing service. operationId: DeleteShare parameters: - name: name in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ShareInfo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /shares/{share}: get: tags: - DeltaSharingService - shares - official description: Get the metadata for a specific share. operationId: GetShare parameters: - name: share in: path description: The share id. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Share' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /shares/{share}/all-tables: get: tags: - DeltaSharingService - tables - official description: List all the tables under all schemas in a share. operationId: ListShareTables parameters: - name: share in: path description: The share id. required: true schema: type: string - name: maxResults in: query description: The maximum number of results per page that should be returned. schema: type: integer format: int32 - name: pageToken in: query description: |- Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results. schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListShareTablesResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /shares/{share}/schemas: get: tags: - DeltaSharingService - schemas - official description: List the schemas in a share. operationId: ListSharingSchemas parameters: - name: share in: path description: The share id. required: true schema: type: string - name: maxResults in: query description: The maximum number of results per page that should be returned. schema: type: integer format: int32 - name: pageToken in: query description: |- Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results. schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListSharingSchemasResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - DeltaSharingExtensionService - schemas - unofficial description: Create a new Schema in the Delta Sharing service. operationId: CreateSchema parameters: - name: share in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SharingSchemaInfo' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SharingSchemaInfo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /shares/{share}/schemas/{name}: delete: tags: - DeltaSharingExtensionService - schemas - unofficial description: Delete a Schema in the Delta Sharing service. operationId: DeleteSchema parameters: - name: share in: path required: true schema: type: string - name: name in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SharingSchemaInfo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /shares/{share}/schemas/{name}/tables: get: tags: - DeltaSharingService - tables - official description: List the tables in a given share's schema. operationId: ListSchemaTables parameters: - name: share in: path description: The share name to query. It's case-insensitive. required: true schema: type: string - name: name in: path description: The schema name to query. It's case-insensitive. required: true schema: type: string - name: maxResults in: query description: The maximum number of results per page that should be returned. schema: type: integer format: int32 - name: pageToken in: query description: |- Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results. schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListSchemaTablesResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /shares/{share}/schemas/{schema}/tables/{name}/metadata: get: tags: - DeltaSharingService - tables - official operationId: GetTableMetadata parameters: - name: share in: path description: The share name to query. It's case-insensitive. required: true schema: type: string - name: schema in: path description: The schema name to query. It's case-insensitive. required: true schema: type: string - name: name in: path description: The table name to query. It's case-insensitive. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/QueryResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /shares/{share}/schemas/{schema}/tables/{name}/version: get: tags: - DeltaSharingService - tables - official description: Get the current version for a table within a schema. operationId: GetTableVersion parameters: - name: share in: path description: The share name to query. It's case-insensitive. required: true schema: type: string - name: schema in: path description: The schema name to query. It's case-insensitive. required: true schema: type: string - name: name in: path description: The table name to query. It's case-insensitive. required: true schema: type: string - name: startingTimestamp in: query description: |- The startingTimestamp of the query, a string in the ISO8601 format, in the UTC timezone, such as 2022-01-01T00:00:00Z. the server needs to return the earliest table version at or after the provided timestamp, can be earlier than the timestamp of table version 0. schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetTableVersionResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' components: schemas: AzureClientCredential: required: - tenantId - clientId type: object properties: tenantId: type: string clientId: type: string clientSecret: type: string clientCertificate: type: string federatedTokenFile: type: string AzureCredential: type: object properties: accountKey: $ref: '#/components/schemas/AzureKeyCredential' sas: $ref: '#/components/schemas/AzureSasCredential' client: $ref: '#/components/schemas/AzureClientCredential' AzureKeyCredential: required: - accountName - accountKey type: object properties: accountName: type: string accountKey: type: string AzureSasCredential: required: - accountName - sasToken type: object properties: accountName: type: string sasToken: type: string CatalogInfo: required: - name type: object properties: name: type: string description: Name of catalog. comment: type: string description: User-provided free-form text description. properties: type: object description: A map of key-value properties attached to the securable. owner: readOnly: true type: string description: Username of current owner of catalog. createAt: readOnly: true type: string description: Time at which this catalog was created, in epoch milliseconds. createdBy: readOnly: true type: string description: Username of catalog creator. updateAt: readOnly: true type: string description: Time at which this catalog was last updated, in epoch milliseconds. updatedBy: readOnly: true type: string description: Username of user who last modified catalog. id: readOnly: true type: string description: Unique identifier for the catalog. description: A catalog is a root-level namespace that contains schemas. Credential: required: - name type: object properties: id: readOnly: true type: string name: type: string azure: $ref: '#/components/schemas/AzureCredential' DeltaLogMessage: type: object properties: protocol: $ref: '#/components/schemas/ProtocolDelta' metadata: $ref: '#/components/schemas/MetadatDelta' description: Log message for Delta response. DeltaResponse: type: object properties: entries: type: array items: $ref: '#/components/schemas/DeltaLogMessage' description: Response for a query against a table in Delta format. Format: type: object properties: provider: type: string description: Name of the encoding for files in this table options: type: object additionalProperties: type: string description: A map containing configuration options for the format description: File format for data files in a table GetTableVersionResponse: type: object properties: version: type: string description: The table version that was requested. description: Response for GetTableVersionRequest. GoogleProtobufAny: type: object properties: '@type': type: string description: The type of the serialized message. additionalProperties: true description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message. ListCatalogsResponse: type: object properties: catalogs: type: array items: $ref: '#/components/schemas/CatalogInfo' description: The catalogs returned. nextPageToken: type: string description: The next_page_token value to include in the next List request. description: List catalogs response. ListSchemaTablesResponse: type: object properties: items: type: array items: $ref: '#/components/schemas/SharingTable' description: The tables that were requested. nextPageToken: type: string description: |- Token that can be used to retrieve the next page of tables. An empty or missing token means that no more tables are available for retrieval. description: Response for ListSchemaTablesRequest. ListSchemasResponse: type: object properties: schemas: type: array items: $ref: '#/components/schemas/SchemaInfo' description: The schemas returned. nextPageToken: type: string description: The next_page_token value to include in the next List request. description: List Schemas response. ListShareTablesResponse: type: object properties: items: type: array items: $ref: '#/components/schemas/SharingTable' description: The tables that were requested. nextPageToken: type: string description: |- Token that can be used to retrieve the next page of tables. An empty or missing token means that no more tables are available for retrieval. description: Response for ListShareTablesRequest. ListSharesResponse: type: object properties: items: type: array items: $ref: '#/components/schemas/Share' description: The shares that were requested. nextPageToken: type: string description: |- Token that can be used to retrieve the next page of shares. An empty or missing token means that no more shares are available for retrieval. description: Response for ListSharesRequest. ListSharingSchemasResponse: type: object properties: items: type: array items: $ref: '#/components/schemas/SharingSchema' description: The schemas that were requested. nextPageToken: type: string description: |- Token that can be used to retrieve the next page of schemas. An empty or missing token means that no more schemas are available for retrieval. description: Response for ListSharingSchemasRequest. ListStorageLocationsResponse: type: object properties: storageLocations: type: array items: $ref: '#/components/schemas/StorageLocation' description: The storage locations returned. nextPageToken: type: string description: The next_page_token value to include in the next List request. description: List storage locations response. MetadatDelta: type: object properties: deltaMetadata: allOf: - $ref: '#/components/schemas/Metadata' description: Metadata from Delta protocol version: type: string description: |- The table version the metadata corresponds to, returned when querying table data with a version or timestamp parameter, or cdf query with includeHistoricalMetadata set to true. size: type: string description: The size of the table in bytes, will be returned if available in the delta log. numFiles: type: string description: The number of files in the table, will be returned if available in the delta log. description: Metadata for Delta response. Metadata: type: object properties: id: type: string description: |- Unique identifier for this table Validate GUID name: type: string description: User-provided identifier for this table description: type: string description: User-provided description for this table format: allOf: - $ref: '#/components/schemas/Format' description: Specification of the encoding for the files stored in the table schemaString: type: string description: Schema of the table partitionColumns: type: array items: type: string description: An array containing the names of columns by which the data should be partitioned createdTime: type: string description: The time when this metadata action is created, in milliseconds since the Unix epoch options: type: object additionalProperties: type: string description: A map containing configuration options for the metadata action description: Metadata for a table MetadataParquet: type: object properties: id: type: string description: Unique identifier for this table name: type: string description: User-provided identifier for this table description: type: string description: User-provided description for this table format: allOf: - $ref: '#/components/schemas/Format' description: Specification of the encoding for the files stored in the table schemaString: type: string description: Schema of the table partitionColumns: type: array items: type: string description: An array containing the names of columns by which the data should be partitioned description: Metadata for Parquet response. ParquetLogMessage: type: object properties: protocol: $ref: '#/components/schemas/ProtocolParquet' metadata: $ref: '#/components/schemas/MetadataParquet' description: Log message for Parquet response. ParquetResponse: type: object properties: entries: type: array items: $ref: '#/components/schemas/ParquetLogMessage' description: Response for a query against a table in Parquet format. ProtocolDelta: type: object properties: minReaderVersion: type: integer description: |- The minimum version of the protocol that a client must implement in order to correctly read a Delta Lake table. format: int32 minWriterVersion: type: integer format: int32 description: Protocol for Delta response. ProtocolParquet: type: object properties: minReaderVersion: type: integer description: |- The minimum version of the protocol that a client must implement in order to correctly read a Delta Lake table. format: int32 description: Protocol for Parquet response. QueryResponse: type: object properties: parquet: allOf: - $ref: '#/components/schemas/ParquetResponse' description: Parquet response format delta: allOf: - $ref: '#/components/schemas/DeltaResponse' description: Delta response format description: Response for a query against a table. SchemaInfo: required: - name - catalogName type: object properties: name: type: string description: Name of schema, relative to parent catalog. catalogName: type: string description: Name of parent catalog. comment: type: string description: User-provided free-form text description. properties: type: object description: A map of key-value properties attached to the securable. fullName: readOnly: true type: string description: Full name of schema, in form of catalog_name.schema_name. owner: readOnly: true type: string description: Username of current owner of schema. createAt: readOnly: true type: string description: Time at which this schema was created, in epoch milliseconds. createdBy: readOnly: true type: string description: Username of schema creator. updateAt: readOnly: true type: string description: Time at which this schema was last updated, in epoch milliseconds. updatedBy: readOnly: true type: string description: Username of user who last modified schema. schemaId: readOnly: true type: string description: Unique identifier for the schema. description: A schema is a namespace within a catalog that contains tables. Share: type: object properties: name: type: string description: Name of the share. id: readOnly: true type: string description: Unique identifier for the share. description: |- A share is a logical grouping to share with recipients. A share can be shared with one or multiple recipients. A recipient can access all resources in a share. A share may contain multiple schemas. ShareInfo: type: object properties: id: readOnly: true type: string name: type: string description: type: string properties: type: object description: |- A share in a delta sharing service. A share is a logical grouping to share with recipients. It may contain multiple schemas and tables. SharingSchema: type: object properties: name: type: string description: The name of the schama share: type: string description: The share name that the schema belongs to. id: readOnly: true type: string description: Unique identifier for the schema. description: A schema is a logical grouping of tables. A schema may contain multiple tables. SharingSchemaInfo: type: object properties: id: readOnly: true type: string description: Unique identifier for the schema. name: type: string description: The name of the schema. share: readOnly: true type: string description: The share name that the schema belongs to. shareId: readOnly: true type: string description: The unique identifier for the share this schema belongs to. description: type: string description: User-provided free-form text description. properties: type: object description: A map of key-value properties attached to the securable. description: |- A schema in a delta sharing service. A schema is a logical grouping of tables. It may contain multiple tables. SharingTable: type: object properties: name: type: string description: The name of the table. schema: type: string description: The schema name that the table belongs to. share: type: string description: The share name that the table belongs to. id: readOnly: true type: string description: Unique identifier for the table. shareId: readOnly: true type: string description: A unique identifier for the share this table belongs to. description: A table is a Delta Lake table or a view on top of a Delta Lake table. Status: type: object properties: code: type: integer description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. format: int32 message: type: string description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client. details: type: array items: $ref: '#/components/schemas/GoogleProtobufAny' description: A list of messages that carry the error details. There is a common set of message types for APIs to use. description: 'The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).' StorageLocation: required: - name - url - type - credential type: object properties: id: readOnly: true type: string name: type: string url: type: string type: type: integer format: enum credential: type: string description: type: string properties: type: object UpdateCatalogRequest: required: - name type: object properties: name: type: string description: Name of catalog. comment: type: string description: User-provided free-form text description. properties: type: object description: A map of key-value properties attached to the securable. newName: type: string description: Name of catalog. description: Update a catalog UpdateSchemaRequest: required: - fullName type: object properties: fullName: type: string description: Full name of schema, in form of catalog_name.schema_name. comment: type: string description: User-provided free-form text description. properties: type: object description: A map of key-value properties attached to the securable. newName: type: string description: Name of schema. description: Update a Schema