OpenMetadata Files API
A `File` is a document or resource stored in a Drive Service.
A `File` is a document or resource stored in a Drive Service.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/openmetadata-files-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: OpenMetadata APIs Agent Executions Files API
description: Common types and API definition for OpenMetadata
contact:
name: OpenMetadata
url: https://open-metadata.org
email: openmetadata-dev@googlegroups.com
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
version: '1.13'
servers:
- url: /api
description: Current Host
- url: http://localhost:8585/api
description: Endpoint URL
security:
- BearerAuth: []
tags:
- name: Files
description: A `File` is a document or resource stored in a Drive Service.
paths:
/v1/drives/files/{id}/followers:
put:
tags:
- Files
summary: Add a follower
description: Add a user identified by `userId` as follower of this file
operationId: addFollowerToFile
parameters:
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
requestBody:
description: Id of the user to be added as follower
content:
application/json:
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeEvent'
'404':
description: File for instance {id} is not found
/v1/drives/files/{id}/sampleData:
get:
tags:
- Files
summary: Get sample data
description: Get sample data from the file.
operationId: getSampleData_1
parameters:
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
responses:
'200':
description: The file with sample data
content:
application/json:
schema:
$ref: '#/components/schemas/File'
put:
tags:
- Files
summary: Add sample data
description: Add sample data to the file.
operationId: addSampleData_1
parameters:
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TableData'
responses:
'200':
description: The file with sample data
content:
application/json:
schema:
$ref: '#/components/schemas/File'
delete:
tags:
- Files
summary: Delete sample data
description: Delete sample data from the file.
operationId: deleteSampleData_1
parameters:
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
responses:
'200':
description: The file
content:
application/json:
schema:
$ref: '#/components/schemas/File'
/v1/drives/files/bulk:
put:
tags:
- Files
summary: Bulk create or update files
description: Create or update multiple files in a single operation.
operationId: bulkCreateOrUpdateFiles
parameters:
- name: async
in: query
schema:
type: boolean
default: false
requestBody:
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CreateFile'
responses:
'200':
description: Bulk operation results
'202':
description: Bulk operation accepted for async processing
'400':
description: Bad request
/v1/drives/files:
get:
tags:
- Files
summary: List files
description: Get a list of files, optionally filtered by `service` or `directory` it belongs to. Use `fields` parameter to get only necessary fields. Use cursor-based pagination to limit the number entries in the list using `limit` and `before` or `after` query params.
operationId: listFiles
parameters:
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,directory,usageSummary,tags,fileExtension,extension,domains,sourceHash,lifeCycle,votes,followers,columns,sampleData
- name: service
in: query
description: Filter files by service name
schema:
type: string
example: googleDrive
- name: directory
in: query
description: Filter files by directory fully qualified name
schema:
type: string
- name: fileType
in: query
description: Filter files by file type
schema:
type: string
- name: root
in: query
description: List files at the root level (without parent) when `true`
schema:
type: boolean
default: false
- name: limit
in: query
description: Limit the number files returned. (1 to 1000000, default = 10)
schema:
maximum: 1000000
minimum: 0
type: integer
format: int32
default: 10
- name: before
in: query
description: Returns list of files before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of files after this cursor
schema:
type: string
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
responses:
'200':
description: List of files
content:
application/json:
schema:
$ref: '#/components/schemas/FileList'
put:
tags:
- Files
summary: Create or update a file
description: Create a new file, if it does not exist or update an existing file.
operationId: createOrUpdateFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateFile'
responses:
'200':
description: The file
content:
application/json:
schema:
$ref: '#/components/schemas/File'
'400':
description: Bad request
post:
tags:
- Files
summary: Create a file
description: Create a new file under an existing `directory`.
operationId: createFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateFile'
responses:
'200':
description: The file
content:
application/json:
schema:
$ref: '#/components/schemas/File'
'400':
description: Bad request
/v1/drives/files/name/{fqn}:
get:
tags:
- Files
summary: Get a file by fully qualified name
description: Get a file by fully qualified name.
operationId: getFileByFQN
parameters:
- name: fqn
in: path
description: Fully qualified name of the file
required: true
schema:
type: string
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,directory,usageSummary,tags,fileExtension,extension,domains,sourceHash,lifeCycle,votes,followers,columns,sampleData
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
- name: includeRelations
in: query
description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.'
schema:
type: string
example: owners:non-deleted,followers:all
responses:
'200':
description: The file
content:
application/json:
schema:
$ref: '#/components/schemas/File'
'404':
description: File for instance {fqn} is not found
delete:
tags:
- Files
summary: Delete a file by fully qualified name
description: Delete a file by `fullyQualifiedName`.
operationId: deleteFileByFQN
parameters:
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: fqn
in: path
description: Fully qualified name of the file
required: true
schema:
type: string
responses:
'200':
description: OK
'404':
description: File for instance {fqn} is not found
patch:
tags:
- Files
summary: Update a file by name.
description: Update an existing file using JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchFile
parameters:
- name: fqn
in: path
description: Name of the file
required: true
schema:
type: string
requestBody:
description: JsonPatch with array of operations
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/JsonPatch'
example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
responses:
default:
description: default response
content:
application/json: {}
/v1/drives/files/{id}:
get:
tags:
- Files
summary: Get a file by Id
description: Get a file by `Id`.
operationId: getFileByID
parameters:
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,directory,usageSummary,tags,fileExtension,extension,domains,sourceHash,lifeCycle,votes,followers,columns,sampleData
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
- name: includeRelations
in: query
description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.'
schema:
type: string
example: owners:non-deleted,followers:all
responses:
'200':
description: The file
content:
application/json:
schema:
$ref: '#/components/schemas/File'
'404':
description: File for instance {id} is not found
delete:
tags:
- Files
summary: Delete a file by Id
description: Delete a file by `Id`.
operationId: deleteFile
parameters:
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: File for instance {id} is not found
patch:
tags:
- Files
summary: Update a file
description: Update an existing file using JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchFile_1
parameters:
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
requestBody:
description: JsonPatch with array of operations
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/JsonPatch'
example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
responses:
default:
description: default response
content:
application/json: {}
/v1/drives/files/async/{id}:
delete:
tags:
- Files
summary: Asynchronously delete a file by Id
description: Asynchronously delete a file by `Id`.
operationId: deleteFileAsync
parameters:
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: recursive
in: query
description: Recursively delete this entity and its children. (Default `false`)
schema:
type: boolean
default: false
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: File for instance {id} is not found
/v1/drives/files/{id}/followers/{userId}:
delete:
tags:
- Files
summary: Remove a follower
description: Remove the user identified `userId` as a follower of the file.
operationId: removeFollowerFromFile
parameters:
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
- name: userId
in: path
description: Id of the user being removed as follower
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeEvent'
/v1/drives/files/{id}/versions/{version}:
get:
tags:
- Files
summary: Get a specific version of the file
description: Get a specific version of the file identified by `Id`
operationId: getSpecificFileVersion
parameters:
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
- name: version
in: path
description: File version number in the form `major`.`minor`
required: true
schema:
type: string
example: 0.1 or 1.1
responses:
'200':
description: File
content:
application/json:
schema:
$ref: '#/components/schemas/File'
'404':
description: File for instance {id} and version {version} is not found
/v1/drives/files/history:
get:
tags:
- Files
summary: List all entity versions within a time range
description: 'Get a paginated list of all entity versions within a given time range specified by `startTs` and `endTs` in milliseconds since epoch. '
operationId: listAllEntityVersionsByTimestamp_25
parameters:
- name: startTs
in: query
description: Start timestamp in milliseconds since epoch
required: true
schema:
type: integer
format: int64
- name: endTs
in: query
description: End timestamp in milliseconds since epoch
required: true
schema:
type: integer
format: int64
- name: limit
in: query
description: Limit the number of entity returned (1 to 1000000, default = 10)
schema:
maximum: 500
minimum: 1
type: integer
format: int32
default: 10
- name: before
in: query
description: Returns list of entity versions before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of entity versions after this cursor
schema:
type: string
responses:
'200':
description: List of all versions
content:
application/json:
schema:
$ref: '#/components/schemas/ResultList'
/v1/drives/files/{id}/versions:
get:
tags:
- Files
summary: List file versions
description: Get a list of all the versions of a file identified by `Id`
operationId: listAllFileVersion
parameters:
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
responses:
'200':
description: List of file versions
content:
application/json:
schema:
$ref: '#/components/schemas/EntityHistory'
/v1/drives/files/restore:
put:
tags:
- Files
summary: Restore a soft deleted file by id
description: Restore a soft deleted file by id.
operationId: restoreFileById
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RestoreEntity'
responses:
'200':
description: Successfully restored the file
content:
application/json:
schema:
$ref: '#/components/schemas/File'
/v1/drives/files/{id}/restore:
put:
tags:
- Files
summary: Restore a soft deleted file
description: Restore a soft deleted file.
operationId: restoreFile
parameters:
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
responses:
'200':
description: 'Successfully restored the file '
content:
application/json:
schema:
$ref: '#/components/schemas/File'
/v1/drives/files/{id}/vote:
put:
tags:
- Files
summary: Update Vote for a file
description: Update vote for a file
operationId: updateVoteForFile
parameters:
- name: id
in: path
description: Id of the file
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VoteRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeEvent'
'404':
description: File for instance {id} is not found
components:
schemas:
EntityHistory:
required:
- entityType
- versions
type: object
properties:
entityType:
type: string
versions:
type: array
items:
type: object
AccessDetails:
required:
- timestamp
type: object
properties:
timestamp:
type: integer
format: int64
accessedBy:
$ref: '#/components/schemas/EntityReference'
accessedByAProcess:
type: string
FileList:
required:
- data
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/File'
paging:
$ref: '#/components/schemas/Paging'
errors:
type: array
items:
$ref: '#/components/schemas/EntityError'
warningsCount:
type: integer
format: int32
warnings:
type: array
items:
$ref: '#/components/schemas/EntityError'
JsonPatch:
type: object
UsageDetails:
required:
- dailyStats
- date
type: object
properties:
dailyStats:
$ref: '#/components/schemas/UsageStats'
weeklyStats:
$ref: '#/components/schemas/UsageStats'
monthlyStats:
$ref: '#/components/schemas/UsageStats'
date:
type: string
AssetCertification:
required:
- appliedDate
- expiryDate
- tagLabel
type: object
properties:
tagLabel:
$ref: '#/components/schemas/TagLabel'
appliedDate:
type: integer
format: int64
expiryDate:
type: integer
format: int64
TableData:
type: object
properties:
columns:
type: array
items:
type: string
rows:
type: array
items:
type: array
items:
type: object
Column:
required:
- dataType
- name
type: object
properties:
name:
maxLength: 2147483647
minLength: 1
pattern: ^((?!::).)*$
type: string
displayName:
type: string
dataType:
type: string
enum:
- NUMBER
- TINYINT
- SMALLINT
- INT
- BIGINT
- BYTEINT
- BYTES
- FLOAT
- DOUBLE
- DECIMAL
- NUMERIC
- TIMESTAMP
- TIMESTAMPZ
- TIME
- DATE
- DATETIME
- INTERVAL
- STRING
- MEDIUMTEXT
- TEXT
- CHAR
- LONG
- VARCHAR
- BOOLEAN
- BINARY
- VARBINARY
- ARRAY
- BLOB
- LONGBLOB
- MEDIUMBLOB
- MAP
- STRUCT
- UNION
- SET
- GEOGRAPHY
- ENUM
- JSON
- UUID
- VARIANT
- GEOMETRY
- BYTEA
- AGGREGATEFUNCTION
- ERROR
- FIXED
- RECORD
- 'NULL'
- SUPER
- HLLSKETCH
- PG_LSN
- PG_SNAPSHOT
- TSQUERY
- TXID_SNAPSHOT
- XML
- MACADDR
- TSVECTOR
- UNKNOWN
- CIDR
- INET
- CLOB
- ROWID
- LOWCARDINALITY
- YEAR
- POINT
- POLYGON
- TUPLE
- SPATIAL
- TABLE
- NTEXT
- IMAGE
- IPV4
- IPV6
- DATETIMERANGE
- HLL
- LARGEINT
- QUANTILE_STATE
- AGG_STATE
- BITMAP
- UINT
- BIT
- MONEY
- MEASURE HIDDEN
- MEASURE VISIBLE
- MEASURE
- KPI
- HEIRARCHY
- HIERARCHYID
arrayDataType:
type: string
enum:
- NUMBER
- TINYINT
- SMALLINT
- INT
- BIGINT
- BYTEINT
- BYTES
- FLOAT
- DOUBLE
- DECIMAL
- NUMERIC
- TIMESTAMP
- TIMESTAMPZ
- TIME
- DATE
- DATETIME
- INTERVAL
- STRING
- MEDIUMTEXT
- TEXT
- CHAR
- LONG
- VARCHAR
- BOOLEAN
- BINARY
- VARBINARY
- ARRAY
- BLOB
- LONGBLOB
- MEDIUMBLOB
- MAP
- STRUCT
- UNION
- SET
- GEOGRAPHY
- ENUM
- JSON
- UUID
- VARIANT
- GEOMETRY
- BYTEA
- AGGREGATEFUNCTION
- ERROR
- FIXED
- RECORD
- 'NULL'
- SUPER
- HLLSKETCH
- PG_LSN
- PG_SNAPSHOT
- TSQUERY
- TXID_SNAPSHOT
- XML
- MACADDR
- TSVECTOR
- UNKNOWN
- CIDR
- INET
- CLOB
- ROWID
- LOWCARDINALITY
- YEAR
- POINT
- POLYGON
- TUPLE
- SPATIAL
- TABLE
- NTEXT
- IMAGE
- IPV4
- IPV6
- DATETIMERANGE
- HLL
- LARGEINT
- QUANTILE_STATE
- AGG_STATE
- BITMAP
- UINT
- BIT
- MONEY
- MEASURE HIDDEN
- MEASURE VISIBLE
- MEASURE
- KPI
- HEIRARCHY
- HIERARCHYID
dataLength:
type: integer
format: int32
precision:
type: integer
format: int32
scale:
type: integer
format: int32
dataTypeDisplay:
type: string
description:
type: string
fullyQualifiedName:
maxLength: 3072
minLength: 1
type: string
tags:
type: array
items:
$ref: '#/components/schemas/TagLabel'
constraint:
type: string
enum:
- 'NULL'
- NOT_NULL
- UNIQUE
- PRIMARY_KEY
ordinalPosition:
type: integer
format: int32
jsonSchema:
type: string
children:
type: array
items:
$ref: '#/components/schemas/Column'
profile:
$ref: '#/components/schemas/ColumnProfile'
customMetrics:
type: array
items:
$ref: '#/components/schemas/CustomMetric'
extension:
type: object
CustomMetric:
required:
- expression
- name
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 256
minLength: 1
pattern: ^((?!::).)*$
type: string
description:
type: string
columnName:
type: string
expression:
type: string
owners:
type: array
items:
$ref: '#/components/schemas/EntityReference'
updatedAt:
type: integer
format: int64
updatedBy:
type: string
PatternMatch:
required:
- name
- score
type: object
properties:
name:
type: string
regex:
type: string
score:
type: number
format: double
TagLabelRecognizerMetadata:
required:
- recognizerId
- recognizerName
- score
type: object
properties:
recognizerId:
type: string
format: uuid
recognizerName:
type: string
score:
type: number
format: double
target:
type: string
enum:
- content
- column_name
patterns:
type: array
items:
$ref: '#/components/schemas/PatternMatch'
UsageStats:
required:
- count
type: object
properties:
count:
minimum: 0
type: integer
format: int32
percentileRank:
type: number
format: double
CustomMetricProfile:
type: object
properties:
name:
type: string
value:
type: number
format: double
CreateFile:
required:
- name
- service
type: object
properties:
name:
maxLength: 256
minLength: 1
pattern: ^((?!::).)*$
type: string
displayName:
type: string
description:
type: string
service:
maxLength: 3072
minLength: 1
type: string
directory:
maxLength: 3072
minLength: 1
type: string
fileType:
type: string
enum:
- Document
- Spreadsheet
- Presentation
- Image
- Video
- Audio
- PDF
- Archive
- Code
- Data
- CSV
- Text
- Other
mimeType:
type: string
fileExtension:
type: string
path:
type: string
size:
type: integer
format: int32
columns:
type: array
items:
$ref: '#/components/schemas/Column'
checksum:
type: string
webViewLink:
type: string
format: uri
downloadLink:
type: string
format: uri
isShared:
type: boolean
fileVersion:
type: string
sourceUrl:
type: string
tags:
type: array
items:
$ref: '#/components/schemas/TagLabel'
owners:
type: array
items:
$ref: '#/components/schemas/EntityReference'
dataProducts:
type: array
items:
type: string
domains:
type: array
items:
type: string
lifeCycle:
$ref: '#/components/schemas/LifeCycle'
sourceHash:
maxLength: 32
minLength: 1
type: string
extension:
type: object
reviewers:
type: array
items:
$ref: '#/components/schemas/EntityReference'
Style:
type: object
properties:
color:
type: string
iconURL:
type: string
coverImage:
$ref: '#/components/schemas/CoverImage'
File:
required:
- id
- name
- service
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 256
minLength: 1
pattern: ^((?!::).)*$
type: string
fullyQualifiedName:
maxLength: 3072
minLength: 1
type: string
displayName:
type: string
description:
type: string
service:
$ref: '#/components/schemas/EntityReference'
serviceType:
type: string
enum:
- GoogleDrive
- SharePoint
- Sftp
- CustomDrive
directory:
$ref: '#/components/schemas/EntityReference'
fileType:
type: string
enum:
- Document
- Spreadsheet
- Presentation
- Image
- Video
- Audio
- PDF
- Archive
- Code
- Data
- CSV
- Text
- Other
mimeType:
type: string
fileExtension:
type: string
path:
type: string
size:
type: integer
format: int32
columns:
type: array
items:
$ref: '#/components/schemas/Column'
sampleData:
$ref: '#/components/schemas/TableData'
checksum:
type: string
webViewLink:
type: string
format: uri
downloadLink:
type: string
format: uri
isShared:
type: boolean
fileVersion:
type: string
createdTime:
type: integer
format: int64
modifiedTime:
type: integer
format: int64
lastModifiedBy:
$ref: '#/components/schemas/EntityReference'
sourceUrl:
type: string
href:
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-files-api-openapi.yml