Create upload
Finalizes an upload after the file has been uploaded to the presigned URL. Supports creating new uploads, replacing existing ones, or upserting by path.
Authorization
OAuth2 upl:uploads:createOAuth 2.0 authorization
In: header
Scope: upl:uploads:create
Header Parameters
Define the version of the Connect protocol
1Define the timeout, in ms
Request Body
application/json
Reference to the bucket
Unique identifier for the upload request
Name of the file to be uploaded
Tags to associate with the upload
User who uploaded the file
List of part ETags for multipart uploads
Private access for this upload. If null, inherits from parent folder.
Whether this upload is private to the owning integration. When true, only the owning integration (with API key if api_key_enabled) can access it.
Optional creation timestamp. When set, overrides the default (now). Used by mobile photo sync to preserve the photo's original taken date.
DEPRECATED. Use last_synced_version instead. Kept only so
in-flight old clients continue working through one rollout cycle.
Timestamp comparison is vulnerable to server-clock skew and
sub-second precision drift; version is clock-free.
The Upload.version the caller observed on its last sync with the
server. On a replace or upsert_path target: if the existing
upload's current version is greater, the server detected a
concurrent edit and will not overwrite the current content. The
incoming bytes are stored as an UploadHistoryEntry with
is_conflict = true, the unchanged current upload is returned, and
CreateUploadResponse.conflict is set. The caller can retrieve the
conflicting content via ListUploadHistory / GetUploadHistoryContent
and reconcile however its product requires.
On a bare create target: behaves identically if an upload already
exists at that (directory, slug); the existing upload is returned as
current, and the caller's content is preserved as a conflict history
entry. With no existing upload, creates normally.
Special case — if last_synced_version is set and the target no
longer exists (deleted since the caller's last sync), the server
resurrects the upload with the caller's content as the new current
version (create semantics).
When 0 / unset, no conflict check is performed. Callers that don't care about cross-client concurrent edits (single-writer bots, bulk importers) can simply leave this unset.
int32Create a new upload in this directory
Response Body
application/json
application/json
curl -X POST "https://uploads-api.xeonr.io/uplim.api.v1.BucketUploadsService/CreateUpload" \ -H "Connect-Protocol-Version: 1" \ -H "Content-Type: application/json" \ -d '{ "create": {} }'{
"upload": {
"uploadId": "string",
"path": "string",
"slug": "string",
"url": "string",
"contentUrl": "string",
"sizeBytes": 0,
"tags": [
"string"
],
"integrationId": "497a18ca-284e-40c0-985d-f72be35d468e",
"integration": {
"integrationId": "string",
"name": "string",
"oauthClientId": "string",
"folderBehavior": "INTEGRATION_FOLDER_BEHAVIOR_UNSPECIFIED",
"folderLinkUrl": "string",
"mode": "INTEGRATION_MODE_UNSPECIFIED",
"bucketLauncherEnabled": true
},
"allowAnyExtension": true,
"defaultSlugExtension": "string",
"generatedDescription": "string",
"metaUploads": [
{
"type": {
"name": "string",
"n": 0,
"filename": "string"
},
"metadataId": "string",
"uploadUrl": "string",
"downloadUrl": "string"
}
],
"private": true,
"aliases": [
{
"aliasId": "string",
"uploadId": "string",
"path": "string",
"slug": "string",
"url": "string",
"hasPassword": true,
"expiresAt": "2023-01-15T01:30:15.01Z",
"maxUses": 0,
"useCount": 0,
"allowedUserIds": [
0
],
"createdAt": "2023-01-15T01:30:15.01Z",
"externalPath": "string"
}
],
"createdAt": "2023-01-15T01:30:15.01Z",
"updatedAt": "2023-01-15T01:30:15.01Z",
"author": {
"userId": 0,
"username": "string"
},
"lastModifiedBy": {
"userId": 0,
"username": "string"
},
"thumbnailGenerationVersion": 0,
"aiDescriptionGenerationVersion": 0,
"aiTagsGenerationVersion": 0,
"virusScanGenerationVersion": 0,
"aiDescriptionInputRef": "string",
"intentMetadata": {
"property1": {},
"property2": {}
},
"externalPath": "string",
"order": 0,
"isVirtualFile": true,
"integrationHidden": true,
"version": 0,
"thumbnailContentTypeUrn": "string",
"thumbnailContentTypeIconName": "string",
"thumbnailContentTypeIconUrl": "string",
"metadataKvs": [
{
"key": "string",
"valueType": "METADATA_VALUE_TYPE_UNSPECIFIED",
"value": {
"arrayValue": {
"values": [
{}
]
}
},
"title": "string",
"iconName": "string",
"hiddenFromUsers": true
}
]
},
"conflict": true,
"conflictHistory": {
"historyId": "string",
"uploadId": "string",
"version": 0,
"sizeBytes": 0,
"replacedAt": "2023-01-15T01:30:15.01Z",
"metaUploads": [
{
"type": {
"name": "string",
"n": 0,
"filename": "string"
},
"metadataId": "string",
"uploadUrl": "string",
"downloadUrl": "string"
}
],
"author": {
"userId": 0,
"username": "string"
},
"isConflict": true
}
}{
"code": "not_found",
"message": "string",
"details": [
{
"type": "string",
"value": "string",
"debug": {}
}
]
}