The nextcloud konnector can be used to create an io.cozy.account
for a
NextCloud. Then, the stack can be used as a client for this NextCloud account.
Currently, it supports files operations via WebDAV.
This route can be used to list the files and subdirectories inside a directory of NextCloud.
With Dl=1
in the query-string, it can also be used to download a file.
The :account
parameter is the identifier of the NextCloud io.cozy.account
.
It is available with the cozyMetadata.sourceAccount
of the shortcut file for
example.
The *path
parameter is the path of the file/directory on the NextCloud.
Note: a permission on GET io.cozy.files
is required to use this route.
GET /remote/nextcloud/4ab2155707bb6613a8b9463daf00381b/Documents HTTP/1.1
Host: cozy.example.net
Authorization: Bearer eyJhbG...
HTTP/1.1 200 OK
Content-Type: application/vnd.api+json
{
"data": [
{
"type": "io.cozy.remote.nextcloud.files",
"id": "192172",
"attributes": {
"type": "directory",
"name": "Images",
"updated_at": "Thu, 02 May 2024 09:29:53 GMT",
"etag": "\"66335d11c4b91\""
},
"meta": {},
"links": {
"self": "https://nextcloud.example.net/apps/files/files/192172?dir=/Documents"
}
},
{
"type": "io.cozy.remote.nextcloud.files",
"id": "208937",
"attributes": {
"type": "file",
"name": "BugBounty.pdf",
"size": 2947,
"mime": "application/pdf",
"class": "pdf",
"updated_at": "Mon, 14 Jan 2019 08:22:21 GMT",
"etag": "\"dd1a602431671325b7c1538f829248d9\""
},
"meta": {},
"links": {
"self": "https://nextcloud.example.net/apps/files/files/208937?dir=/Documents"
}
},
{
"type": "io.cozy.remote.nextcloud.files",
"id": "615827",
"attributes": {
"type": "directory",
"name": "Music",
"updated_at": "Thu, 02 May 2024 09:28:37 GMT",
"etag": "\"66335cc55204b\""
},
"meta": {},
"links": {
"self": "https://nextcloud.example.net/apps/files/files/615827?dir=/Documents"
}
},
{
"type": "io.cozy.remote.nextcloud.files",
"id": "615828",
"attributes": {
"type": "directory",
"name": "Video",
"updated_at": "Thu, 02 May 2024 09:29:53 GMT",
"etag": "\"66335d11c2318\""
},
"meta": {},
"links": {
"self": "https://nextcloud.example.net/apps/files/files/615828?dir=/Documents"
}
}
],
"meta": {
"count": 5
}
}
GET /remote/nextcloud/4ab2155707bb6613a8b9463daf00381b/Documents/Wallpaper.jpg?Dl=1 HTTP/1.1
Host: cozy.example.net
Authorization: Bearer eyJhbG...
HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Length: 12345
Content-Disposition: attachment; filename="Wallpaper.jpg"
...
- 200 OK, for a success
- 401 Unauthorized, when authentication to the NextCloud fails
- 404 Not Found, when the account is not found or the directory is not found on the NextCloud
This route can be used to create a directory, or upload a file, on the
NextCloud. The query-string parameter Type
should be file
when uploading a
file.
The :account
parameter is the identifier of the NextCloud io.cozy.account
.
The *path
parameter is the path of the file/directory on the NextCloud.
Note: a permission on POST io.cozy.files
is required to use this route.
PUT /remote/nextcloud/4ab2155707bb6613a8b9463daf00381b/Documents/Images/Clouds?Type=directory HTTP/1.1
Host: cozy.example.net
Authorization: Bearer eyJhbG...
HTTP/1.1 201 Created
Content-Type: application/json
{
"ok": true
}
PUT /remote/nextcloud/4ab2155707bb6613a8b9463daf00381b/Documents/Images/sunset.jpg?Type=file HTTP/1.1
Host: cozy.example.net
Authorization: Bearer eyJhbG...
Content-Type: image/jpeg
Content-Length: 54321
...
HTTP/1.1 201 Created
Content-Type: application/json
{
"ok": true
}
- 201 Created, when the directory has been created
- 400 Bad Request, when the account is not configured for NextCloud
- 401 Unauthorized, when authentication to the NextCloud fails
- 404 Not Found, when the account is not found or the parent directory is not found on the NextCloud
- 409 Conflict, when a directory or file already exists at this path on the NextCloud.
This route can be used to put a file or directory in the NextCloud trash.
The :account
parameter is the identifier of the NextCloud io.cozy.account
.
The *path
parameter is the path of the file/directory on the NextCloud.
Note: a permission on DELETE io.cozy.files
is required to use this route.
DELETE /remote/nextcloud/4ab2155707bb6613a8b9463daf00381b/Documents/Images/Clouds HTTP/1.1
Host: cozy.example.net
Authorization: Bearer eyJhbG...
HTTP/1.1 204 No Content
- 204 No Content, when the file/directory has been put in the trash
- 400 Bad Request, when the account is not configured for NextCloud, or the
To
parameter is missing - 401 Unauthorized, when authentication to the NextCloud fails
- 404 Not Found, when the account is not found or the file/directory is not found on the NextCloud
This route can be used to move or rename a file/directory on the NextCloud.
The new path must be given with the To
parameter in the query-string.
The :account
parameter is the identifier of the NextCloud io.cozy.account
.
The *path
parameter is the path of the file on the NextCloud.
Note: a permission on POST io.cozy.files
is required to use this route.
POST /remote/nextcloud/4ab2155707bb6613a8b9463daf00381b/move/Documents/wallpaper.jpg?To=/Wallpaper.jpg HTTP/1.1
Host: cozy.example.net
Authorization: Bearer eyJhbG...
HTTP/1.1 204 No Content
- 204 No Content, when the file/directory has been moved
- 400 Bad Request, when the account is not configured for NextCloud
- 401 Unauthorized, when authentication to the NextCloud fails
- 404 Not Found, when the account is not found or the file/directory is not found on the NextCloud
- 409 Conflict, when a file already exists with the new name on the NextCloud.
This route can be used to create a copy of a file in the same directory, with a
copy suffix in its name. The new name can be optionaly given with the Name
parameter in the query-string, or the full path can be given with Path
parameter.
The :account
parameter is the identifier of the NextCloud io.cozy.account
.
The *path
parameter is the path of the file on the NextCloud.
Note: a permission on POST io.cozy.files
is required to use this route.
POST /remote/nextcloud/4ab2155707bb6613a8b9463daf00381b/copy/Documents/wallpaper.jpg?Path=/Images/beach.jpg HTTP/1.1
Host: cozy.example.net
Authorization: Bearer eyJhbG...
HTTP/1.1 201 Created
Content-Type: application/json
{
"ok": true
}
- 201 Created, when the file has been copied
- 400 Bad Request, when the account is not configured for NextCloud
- 401 Unauthorized, when authentication to the NextCloud fails
- 404 Not Found, when the account is not found or the file/directory is not found on the NextCloud
- 409 Conflict, when a file already exists with the new name on the NextCloud.
This route can be used to move/copy a file from the NextCloud to the Cozy.
The :account
parameter is the identifier of the NextCloud io.cozy.account
.
The *path
parameter is the path of the file on the NextCloud.
The To
parameter in the query-string must be given, as the ID of the
directory on the Cozy where the file will be put.
By default, the file will be moved, but using Copy=true
in the query-string
will makes a copy.
Note: a permission on POST io.cozy.files
is required to use this route.
POST /remote/nextcloud/4ab2155707bb6613a8b9463daf00381b/downstream/Documents/Images/sunset.jpg?To=b3ecbc00f4ba013c2bf418c04daba326 HTTP/1.1
Host: cozy.example.net
Authorization: Bearer eyJhbG...
HTTP/1.1 201 Created
Content-Type: application/vnd.api+json
{
"data": {
"type": "io.cozy.files",
"id": "7b41fb7c31e87eeaf13a54bc32001830",
"attributes": {
"type": "file",
"name": "sunset.jpg",
"dir_id": "b3ecbc00f4ba013c2bf418c04daba326",
"created_at": "2024-05-15T09:24:39.460655706+02:00",
"updated_at": "2024-05-15T09:24:39.460655706+02:00",
"size": "54321",
"md5sum": "1B2M2Y8AsgTpgAmY7PhCfg==",
"mime": "image/jpeg",
"class": "image",
"executable": false,
"trashed": false,
"encrypted": false,
"cozyMetadata": {
"doctypeVersion": "1",
"metadataVersion": 1,
"createdAt": "2024-05-15T09:24:38.971901347+02:00",
"updatedAt": "2024-05-15T09:24:38.971901347+02:00",
"createdOn": "https://cozy.example.net/",
"uploadedAt": "2024-05-15T09:24:38.971901347+02:00",
"uploadedOn": "https://cozy.example.net/"
}
},
"meta": {
"rev": "1-cfed435c4ad72b911b31ed775e3024df"
},
"links": {
"self": "/files/7b41fb7c31e87eeaf13a54bc32001830"
},
"relationships": {
"parent": {
"links": {
"related": "/files/b3ecbc00f4ba013c2bf418c04daba326"
},
"data": {
"id": "b3ecbc00f4ba013c2bf418c04daba326",
"type": "io.cozy.files"
}
},
"referenced_by": {
"links": {
"self": "/files/7b41fb7c31e87eeaf13a54bc32001830/relationships/references"
}
}
}
}
}
- 201 Created, when the file has been moved from the NextCloud to the Cozy
- 400 Bad Request, when the account is not configured for NextCloud
- 401 Unauthorized, when authentication to the NextCloud fails
- 404 Not Found, when the account is not found or the file is not found on the NextCloud
This route can be used to move/copy a file from the Cozy to the NextCloud.
The :account
parameter is the identifier of the NextCloud io.cozy.account
.
The *path
parameter is the path of the file on the NextCloud.
The From
parameter in the query-string must be given, as the ID of the
file on the Cozy that will be moved.
By default, the file will be moved, but using Copy=true
in the query-string
will makes a copy.
Note: a permission on POST io.cozy.files
is required to use this route.
POST /remote/nextcloud/4ab2155707bb6613a8b9463daf00381b/upstream/Documents/Images/sunset2.jpg?From=7b41fb7c31e87eeaf13a54bc32001830 HTTP/1.1
Host: cozy.example.net
Authorization: Bearer eyJhbG...
HTTP/1.1 204 No Content
- 204 No Content, when the file has been moved from the Cozy to the NextCloud
- 400 Bad Request, when the account is not configured for NextCloud
- 401 Unauthorized, when authentication to the NextCloud fails
- 404 Not Found, when the account is not found or the file is not found on the Cozy
This route can be used to list the files and directories inside the trashbin of NextCloud.
GET /remote/nextcloud/4ab2155707bb6613a8b9463daf00381b/trash/ HTTP/1.1
Host: cozy.example.net
Authorization: Bearer eyJhbG...
HTTP/1.1 200 OK
Content-Type: application/vnd.api+json
{
"data": [
{
"type": "io.cozy.remote.nextcloud.files",
"id": "613281",
"attributes": {
"type": "directory",
"name": "Old",
"updated_at": "Tue, 25 Jun 2024 14:31:44 GMT",
"etag": "1719326384"
},
"meta": {},
"links": {
"self": "https://nextcloud.example.net/apps/files/trashbin/613281?dir=/Old"
}
}
]
}