data-files

API for uploading and managing user data files

Endpoints

Skip to section
GET/data-files/quotas
GET/data-files/connections/{id}
GET/data-files/connections
POST/data-files
GET/data-files
PUT/data-files/{id}
GET/data-files/{id}
DELETE/data-files/{id}
POST/data-files/{id}/actions/change-owner
POST/data-files/{id}/actions/change-space
POST/data-files/actions/delete
POST/data-files/actions/change-space

Get quota information for the calling user.

Responses GET /data-files/quotas

200
application/json

The quota information was retrieved.

400
application/json

Bad Request

403
application/json

Forbidden

GET/data-files/quotas

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files/quotas" \
 -H "Authorization: Bearer <API-key>"

Response GET /data-files/quotas

{
  "maxFileSize": 524288000,
  "maxLargeFileSize": 6442450944,
  "maxSize": 9223372036854776000,
  "size": 5000,
  "allowedExtensions": [],
  "allowedInternalExtensions": []
}

Get the built-in connection used by the engine to load/write data files given a connection ID.

Path Parameters GET /data-files/connections/{id}

id
string<uuid>

The ID of the connection.

Responses GET /data-files/connections/{id}

200
application/json

The connection was returned.

403
application/json

The space referenced by the specified connection was not found, or is not accessible to the current user.

404
application/json

A connection with the specified ID was not found.

GET/data-files/connections/{id}

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files/connections/{id}" \
 -H "Authorization: Bearer <API-key>"

Response GET /data-files/connections/{id}

{
  "id": "ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc",
  "name": "DataFiles",
  "type": "qix-datafiles.exe",
  "connectStatement": "CUSTOM CONNECT TO \"provider=qix-datafiles.exe;path=mydatafiles;\"",
  "spaceId": "617979737a9f56e49dea2e6e"
}

Get the list of built-in connections used by the engine to load/write data files.

The non-filtered list contains a set of hardcoded connections, along with one connection per team space that the given user has access to.

Query Parameters GET /data-files/connections

appId
string

If present, get connections with connection strings that are scoped to the given app ID.

name
string

If present, only return connections with the given name.

spaceId
string

If present, only return the connection that accesses data files in the specified space.

personal
boolean

If true, only return the connections that access data in a personal space. Default is false.

page
string

If present, the cursor that starts the page of data that is returned.

limit
default=20, minimum=1, maximum=1000
integer<int32>

If present, the maximum number of data file connection records to return.

sort

The name of the field used to sort the result. By default, the sort is ascending. Putting a '+' prefix on the sort field name explicitly indicates ascending sort order. A '-' prefix indicates a descending sort order.

Responses GET /data-files/connections

200
application/json

Connection list was returned.

400
application/json

Bad Request

403
application/json

Forbidden

GET/data-files/connections

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files/connections" \
 -H "Authorization: Bearer <API-key>"

Response GET /data-files/connections

{
  "data": [
    {
      "id": "ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc",
      "name": "DataFiles",
      "type": "qix-datafiles.exe",
      "connectStatement": "CUSTOM CONNECT TO \"provider=qix-datafiles.exe;path=mydatafiles;\"",
      "spaceId": "617979737a9f56e49dea2e6e"
    }
  ],
  "links": {
    "next": {
      "href": "http://example.com"
    },
    "self": {
      "href": "http://example.com"
    },
    "prev": {
      "href": "http://example.com"
    }
  }
}

Upload a new data file.

Request Body POST /data-files

Json
multipart/form-data

See PostDataFileRequest schema which defines request structure. See model.

File
multipart/form-data
string<binary>

IFormFile form multipart/form-data

Responses POST /data-files

201
application/json

New file was uploaded and created.

400
application/json

Bad Request

403
application/json

Forbidden

409
application/json

A file with the same name already exists in the specified user or app scope.

413
application/json

The file exceeds the user's quota for maximum file size to upload.

423
application/json

The file is already locked for read or write by another client.

POST/data-files

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files" \
 -X POST \
 -H "Authorization: Bearer <API-key>" \
 -H "Content-type: multipart/form-data" \
 -F "file=@/path/to/file" \
 -d '{"name":"MyFile.csv","appId":"f34b91a1-0dc3-44ac-a847-51cb84122c84","connectionId":"ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc","sourceId":"f34b91a1-0dc3-44ac-a847-51cb84122c84","tempContentFileId":"624b0f54459f1c00018dade4"}'

Request POST /data-files

{
  "name": "MyFile.csv",
  "appId": "f34b91a1-0dc3-44ac-a847-51cb84122c84",
  "connectionId": "ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc",
  "sourceId": "f34b91a1-0dc3-44ac-a847-51cb84122c84",
  "tempContentFileId": "624b0f54459f1c00018dade4"
}

Response POST /data-files

{
  "id": "ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc",
  "name": "MyFile.csv",
  "appId": "f34b91a1-0dc3-44ac-a847-51cb84122c84",
  "size": 1024,
  "createdDate": "2020-07-07T20:52:40.8534780Z",
  "modifiedDate": "2020-07-07T20:52:40.8534780Z",
  "spaceId": "617979737a9f56e49dea2e6e",
  "ownerId": "lDL4DIINndhL_iJkcbqWyJenuwizP-2D"
}

Get descriptive info for the specified data files.

Query Parameters GET /data-files

connectionId
string<uuid>

Return files that reside in the space referenced by the specified DataFiles connection. If this parameter is not specified, the user's personal space is implied.

appId
string

Only return files scoped to the specified app. If this parameter is not specified, only files that are not scoped to any app are returned. "*" implies all app-scoped files are returned.

name
string

Filter the list of files returned to the given file name.

page
string

If present, the cursor that starts the page of data that is returned.

limit
default=20, minimum=1, maximum=1000
integer<int32>

If present, the maximum number of data files to return.

ownerId
string

If present, fetch the data files for the specified owner. If a connectionId is specified in this case, the returned list is constrained to the specified space. If connectionId is not specified, then all files owned by the specified user are returned regardless of the personal space that a given file resides in.

allowInternalFiles
boolean

If set to false, do not return data files with internal extensions else return all the data files.

sort

The name of the field used to sort the result. By default, the sort order is ascending. Putting a '+' prefix on the sort field name explicitly indicates ascending sort order. A '-' prefix indicates a descending sort order.

Responses GET /data-files

200
application/json

The file list was retrieved.

400
application/json

Bad Request

403
application/json

Forbidden

GET/data-files

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files" \
 -H "Authorization: Bearer <API-key>"

Response GET /data-files

{
  "data": [
    {
      "id": "ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc",
      "name": "MyFile.csv",
      "appId": "f34b91a1-0dc3-44ac-a847-51cb84122c84",
      "size": 1024,
      "createdDate": "2020-07-07T20:52:40.8534780Z",
      "modifiedDate": "2020-07-07T20:52:40.8534780Z",
      "spaceId": "617979737a9f56e49dea2e6e",
      "ownerId": "lDL4DIINndhL_iJkcbqWyJenuwizP-2D"
    }
  ],
  "links": {
    "next": {
      "href": "http://example.com"
    },
    "self": {
      "href": "http://example.com"
    },
    "prev": {
      "href": "http://example.com"
    }
  }
}

Re-upload an existing data file.

Path Parameters PUT /data-files/{id}

id
string<uuid>

The ID of the data file to update.

Request Body PUT /data-files/{id}

Json
multipart/form-data

See PutDataFileRequest schema which defines request structure. See model.

File
multipart/form-data
string<binary>

IFormFile form multipart/form-data

Responses PUT /data-files/{id}

201
application/json

The fie was updated.

400
application/json

Bad Request

403
application/json

Forbidden

404
application/json

A data file with the specified ID was not found.

409
application/json

If the file was renamed during the update, a file with the new name already exists in the specified user or app scope. Also, if the space that the file resides in was changed as part of the update, a file with the same name already resides in the new space.

413
application/json

The file exceeds the user's quota for maximum file size to upload.

423
application/json

The file is already locked for read or write by another client.

PUT/data-files/{id}

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files/{id}" \
 -X PUT \
 -H "Authorization: Bearer <API-key>" \
 -H "Content-type: multipart/form-data" \
 -F "file=@/path/to/file" \
 -d '{"name":"MyFile.csv","appId":"f34b91a1-0dc3-44ac-a847-51cb84122c84","connectionId":"ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc","sourceId":"f34b91a1-0dc3-44ac-a847-51cb84122c84","tempContentFileId":"624b0f54459f1c00018dade4"}'

Request PUT /data-files/{id}

{
  "name": "MyFile.csv",
  "appId": "f34b91a1-0dc3-44ac-a847-51cb84122c84",
  "connectionId": "ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc",
  "sourceId": "f34b91a1-0dc3-44ac-a847-51cb84122c84",
  "tempContentFileId": "624b0f54459f1c00018dade4"
}

Response PUT /data-files/{id}

{
  "id": "ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc",
  "name": "MyFile.csv",
  "appId": "f34b91a1-0dc3-44ac-a847-51cb84122c84",
  "size": 1024,
  "createdDate": "2020-07-07T20:52:40.8534780Z",
  "modifiedDate": "2020-07-07T20:52:40.8534780Z",
  "spaceId": "617979737a9f56e49dea2e6e",
  "ownerId": "lDL4DIINndhL_iJkcbqWyJenuwizP-2D"
}

Get descriptive info for the specified data file.

Path Parameters GET /data-files/{id}

id
string<uuid>

The ID of the data file.

Responses GET /data-files/{id}

200
application/json

The file was located.

400
application/json

Bad Request

403
application/json

Forbidden

404
application/json

A data file with the specified ID was not found.

GET/data-files/{id}

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files/{id}" \
 -H "Authorization: Bearer <API-key>"

Response GET /data-files/{id}

{
  "id": "ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc",
  "name": "MyFile.csv",
  "appId": "f34b91a1-0dc3-44ac-a847-51cb84122c84",
  "size": 1024,
  "createdDate": "2020-07-07T20:52:40.8534780Z",
  "modifiedDate": "2020-07-07T20:52:40.8534780Z",
  "spaceId": "617979737a9f56e49dea2e6e",
  "ownerId": "lDL4DIINndhL_iJkcbqWyJenuwizP-2D"
}

Delete the specified data file.

Path Parameters DELETE /data-files/{id}

id
string<uuid>

The ID of the data file to delete.

Responses DELETE /data-files/{id}

204
object

The fie was deleted.

400
application/json

Bad Request

403
application/json

Forbidden

404
application/json

A data file with the specified ID was not found.

DELETE/data-files/{id}

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files/{id}" \
 -X DELETE \
 -H "Authorization: Bearer <API-key>"

Change the owner of an existing data file.

This is primarily an admin type of operation. In general, the owner of a data file is implicitly set as part of a data file upload. For data files that reside in a personal space, changing the owner has the effect of moving the data file to the new owner's personal space.

Path Parameters POST /data-files/{id}/actions/change-owner

id
string<uuid>

The ID of the data file whose owner will be updated.

Request Body POST /data-files/{id}/actions/change-owner

The request.

Responses POST /data-files/{id}/actions/change-owner

204
object

The file's owner was changed.

400
application/json

An owner with the specified ID does not exist.

403
application/json

The user does not have permission to modify the specified data file.

404
application/json

A data file with the specified ID was not found.

423
application/json

The file is already locked for read or write by another client.

POST/data-files/{id}/actions/change-owner

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files/{id}/actions/change-owner" \
 -X POST \
 -H "Authorization: Bearer <API-key>" \
 -H "Content-type: application/json" \
 -d '{"ownerId":"lDL4DIINndhL_iJkcbqWyJenuwizP-2D"}'

Request POST /data-files/{id}/actions/change-owner

{
  "ownerId": "lDL4DIINndhL_iJkcbqWyJenuwizP-2D"
}

Change the space that an existing data file resides in.

This is to allow for a separate admin type of operation that is more global in terms of access in cases where admin users may not explicitly have been granted full access to a given space within the declared space-level permissions. If the space ID is set to null, then the datafile will end up residing in the personal space of the user who is the owner of the file.

Path Parameters POST /data-files/{id}/actions/change-space

id
string<uuid>

The ID of the data file whose space will be updated.

Request Body POST /data-files/{id}/actions/change-space

The request.

Responses POST /data-files/{id}/actions/change-space

204
object

The file's space was changed.

400
application/json

A space with the specified ID does not exist.

403
application/json

The user does not have permission to modify the specified data file.

404
application/json

A data file with the specified ID was not found.

423
application/json

The file is already locked for read or write by another client.

POST/data-files/{id}/actions/change-space

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files/{id}/actions/change-space" \
 -X POST \
 -H "Authorization: Bearer <API-key>" \
 -H "Content-type: application/json" \
 -d '{"spaceId":"617979737a9f56e49dea2e6e"}'

Request POST /data-files/{id}/actions/change-space

{
  "spaceId": "617979737a9f56e49dea2e6e"
}

Delete the specified set of data files as a single batch.

Request Body POST /data-files/actions/delete

The IDs for the batch of data files to delete.

Responses POST /data-files/actions/delete

207
application/json

The result status of the delete operations on each specified data file.

400
application/json

Bad Request

POST/data-files/actions/delete

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files/actions/delete" \
 -X POST \
 -H "Authorization: Bearer <API-key>" \
 -H "Content-type: application/json" \
 -d 'undefined'

Response POST /data-files/actions/delete

{
  "data": [
    {
      "id": "ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc",
      "status": 400,
      "title": "Cursor not formatted correctly.",
      "code": "HTTP-400",
      "detail": "Invalid encoding of cursor."
    }
  ]
}

Change the spaces that a set of existing data files reside in a a single batch.

This is to allow for a separate admin type of operation that is more global in terms of access in cases where admin users may not explicitly have been granted full access to a given space within the declared space-level permissions. If the space ID is set to null, then the data file will end up residing in the personal space of the user who is the owner of the file.

Request Body POST /data-files/actions/change-space

The batch of IDs for each data file in the batch whose space will be changed along with the space IDs for each change.

Responses POST /data-files/actions/change-space

207
application/json

The result status of the change space operations on each specified data file.

400
application/json

Bad Request

POST/data-files/actions/change-space

curl "https://your-tenant.us.qlikcloud.com/api/v1/data-files/actions/change-space" \
 -X POST \
 -H "Authorization: Bearer <API-key>" \
 -H "Content-type: application/json" \
 -d '{"change-space":[{"id":"ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc","spaceId":"617979737a9f56e49dea2e6e"}]}'

Request POST /data-files/actions/change-space

{
  "change-space": [
    {
      "id": "ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc",
      "spaceId": "617979737a9f56e49dea2e6e"
    }
  ]
}

Response POST /data-files/actions/change-space

{
  "data": [
    {
      "id": "ee6a390c-5d33-11e8-9c2d-fa7ae01bbebc",
      "status": 400,
      "title": "Cursor not formatted correctly.",
      "code": "HTTP-400",
      "detail": "Invalid encoding of cursor."
    }
  ]
}

BatchChangeSpaceItem

object

Properties

id
string<uuid>

The ID of the data file whose space will be changed.

spaceId
optional
string

The ID of the new space. Passing in a null will result in the data file being moved to the user's personal space.

BatchDeleteItem

object

Properties

id
string<uuid>

The ID of the data file to delete.

ChangeDataFileOwnerRequest

object

Properties

ownerId
string

The ID of the new owner.

ChangeDataFileSpaceRequest

object

Properties

spaceId
string

The ID of the space. If null, this data file will be moved to the user's personal space.

ConnectionsResponse

object

Properties

id
string<uuid>

No description

name
string

The name of the connection.

type
string

The type of the connection.

connectStatement
string

The connect statement that will be passed to the connector when invoked.

spaceId
optional
string

The team space that the given connection is associated with. If null, the connection is not associated with any specific team space.

DataFileBatchChangeSpaceRequest

object

Specifies the list of data file change space operations in a single batch.

Properties

change-space

The list of data files to delete.

DataFileBatchDeleteRequest

object

Specifies the list of data files to be deleted in a single batch.

DataFileDeleteRecordResponse

object

Properties

fileMetadataId
string<uuid>

The unique ID of the file that was deleted.

tenantId
string

The tenant that this file is scoped to.

userId
optional
string

If the file resided in a user's personal space, the user that this file is scoped to.

deletedDate
string<date-time>

The date that the file was deleted.

name
string

File Name

spaceId
optional
string

If not null, the ID of the space that the uploaded file will reside in. If null, this implies that the file is stored in the user-private area (DataFiles)

createdByUser
string

The user that deleted this datafile.

DataFileModificationResponse

object

Properties

tenantId
string

The ID of the tenant that this file is scoped to.

userId
optional
string

If the file resides in that user's personal space, the ID of the user that this file is scoped to.

createdByUser
string

The ID of the user that created the file.

modifiedByUser
optional
string

The ID of the user that last modified the file.

id
string<uuid>

The ID for the uploaded file.

name
string

The name of the uploaded file.

appId
optional
string

If this file is bound to the lifecycle of a specific app, this is the ID of this app.

size
integer<int64>

The size of the uploaded file, in bytes.

createdDate
string<date-time>

The date that the uploaded file was created.

modifiedDate
optional
string<date-time>

The date that the updated file was last modified.

spaceId
optional
string

If the file was uploaded to a team space, this is the ID of that space.

ownerId
string

The 'owner' of a file is the user who last uploaded the file's content.

DataFileUploadResponse

object

Properties

id
string<uuid>

The ID for the uploaded file.

name
string

The name of the uploaded file.

appId
optional
string

If this file is bound to the lifecycle of a specific app, this is the ID of this app.

size
integer<int64>

The size of the uploaded file, in bytes.

createdDate
string<date-time>

The date that the uploaded file was created.

modifiedDate
optional
string<date-time>

The date that the updated file was last modified.

spaceId
optional
string

If the file was uploaded to a team space, this is the ID of that space.

ownerId
string

The 'owner' of a file is the user who last uploaded the file's content.

ErrorResponse

object

Properties

errors

No description

ErrorResponseItem

object

Properties

title
optional
string

No description

code
string

No description

detail
optional
string

No description

GetConnectionsResponse

object

Properties

data

No description

links

No description

GetConnectionsSortField

string

GetDataFileDeleteRecordsResponse

object

Properties

data

No description

links

No description

GetDataFileDeleteRecordsSortField

string

GetDataFileInfosResponse

object

Properties

data

No description

links

No description

GetDataFileInfosSortField

string

GetDataFileModificationsResponse

object

Properties

data

No description

links

No description

GetDataFileModificationsSortField

string

LinkResponse

object

Properties

href
string<uri>

No description

LinksResponse

object

Properties

next

No description

self

No description

prev

No description

MultiStatusResponse

object

Properties

data

List of individual results for the items in the specified batch.

MultiStatusResponseItem

object

Properties

id
string<uuid>

No description

status
integer<int32>

No description

title
optional
string

No description

code
string

No description

detail
optional
string

No description

PostDataFileRequest

object

See PostDataFileRequest schema which defines request structure. See model.

Properties

name
pattern='^[^<>":\u0000|?*]+$'
string

Name that will be given to the uploaded file. It should be noted that the '/' character in a data file name indicates a 'path' separator in a logical folder hierarchy for the name. Names that contain '/'s should be used with the assumption that a logical 'folder hierarchy' is being defined for the full pathname of that file. '/' is a significant character in the data file name, and may impact the behavior of future APIs which take this folder hierarchy into account.

appId
optional
string

If this file should be bound to the lifecycle of a specific app, this is the ID of this app.

connectionId
optional
string<uuid>

If present, this is the DataFiles connection that the upload should occur in the context of. If absent, the default is that the upload will occur in the context of the MyDataFiles connection. If the DataFiles connection is different from the one specified when the file was last POSTed or PUT, this will result in a logical move of this file into the new space.

sourceId
optional
string<uuid>

If a SourceId is specified, this is the ID of the existing data file whose content should be copied into the specified data file. That is, instead of the file content being specified in the Data element, it is effectively copied from an existing, previously uploaded file.

tempContentFileId
optional
string

If a TempContentFileId is specified, this is the ID of a previously uploaded temporary content file whose content should be copied into the specified data file. That is, instead of the file content being specified in the Data element, it is effectively copied from an existing, previously uploaded file. The expectation is that this file was previously uploaded to the temporary content service, and the ID specified here is the one returned from the temp content upload request.

ProblemDetails

object

Properties

type
string

No description

title
string

No description

status
integer<int32>

No description

detail
string

No description

instance
string

No description

PutDataFileRequest

object

See PutDataFileRequest schema which defines request structure. See model.

Properties

name
pattern='^[^<>":\u0000|?*]+$'
string

Name that will be given to the uploaded file. If this name is different than the name used when the file was last POSTed or PUT, this will result in a rename of the file. It should be noted that the '/' character in a data file name indicates a 'path' separator in a logical folder hierarchy for the name. Names that contain '/'s should be used with the assumption that a logical 'folder hierarchy' is being defined for the full pathname of that file. '/' is a significant character in the data file name, and may impact the behavior of future APIs that take this folder hierarchy into account.

appId
string

If this file should be bound to the lifecycle of a specific app, this is the ID of this app.

connectionId
string<uuid>

If present, this is the DataFiles connection that the upload should occur in the context of. If absent, the default is that the upload will occur in the context of the MyDataFiles connection. If the DataFiles connection is different from the one specified when the file was last POSTed or PUT, this will result in a logical move of this file into the new space.

sourceId
string<uuid>

If a SourceId is specified, this is the ID of the existing data file whose content should be copied into the specified data file. That is, instead of the file content being specified in the Data element, it is effectively copied from an existing, previously uploaded file.

tempContentFileId
string

If a TempContentFileId is specified, this is the ID of a previously uploaded temporary content file whose content should be copied into the specified data file. That is, instead of the file content being specified in the Data element, it is effectively copied from an existing, previously uploaded file. The expectation is that this file was previously uploaded to the temporary content service, and the ID specified here is the one returned from the temp content upload request.

QuotaResponse

object

Properties

maxFileSize
integer<int64>

Maximum allowable size of an uploaded file.

maxLargeFileSize
integer<int64>

Maximum allowable size for a single uploaded large data file (in bytes). This is a file that was indirectly uploaded using the temp content service chunked upload capability.

maxSize
integer<int64>

The maximum aggregate size of all files uploaded by a given user.

size
integer<int64>

The current aggregate size of all files uploaded by a given user. If the current aggregate size is greater than the maximum aggregate size, this is a quota violation.

allowedExtensions
Array<string>

The allowed file extensions on files that are uploaded.

allowedInternalExtensions
Array<string>

The allowed file extensions for files that are only used internally by the system (and thus not typically shown to end users).

v1.30.0
Was this page helpful?