mirror of
https://github.com/HeyPuter/puter.git
synced 2026-01-05 04:30:33 -06:00
4.3 KiB
4.3 KiB
Share Endpoints
Share endpoints allow sharing files with other users.
POST /share (auth required)
Description
The /share endpoint shares 1 or more filesystem items
with one or more recipients. The recipients will receive
some notification about the shared item, making this
different from calling /grant-user-user with a permission.
Parameters
- recipients - required
- accepts:
string | Array<string> - description: recipients for the filesystem entries being shared.
- notes:
- validation on
string: email or username - requirement of at least one value
- validation on
- accepts:
- paths: - required
- accepts:
string | object | Array<string | object> - description: paths of filesystem entries (files or directories) to share with the specified recipients
- notes:
- requirement that file/directory exists
- requirement of at least one value
- structure: for
objectvalues:- path: - required
- accepts:
string - description: a Puter file path
- accepts:
- access: - required
- description: one of:
"read","write"
- description: one of:
- path: - required
- examples:
-
{ "path": "/some/path", "access": "read" } -
{ "path": "/some/path" }
-
- accepts:
- dry_run: - optional
- accepts:
bool - description: when true, only validation will occur
- accepts:
Response
- $:
api:share - $version:
v0.0.0 - status: one of:
"success","mixed","aborted" - recipients: array of:
api:status-reportorheyputer:api/APIError - paths: array of:
api:status-reportorheyputer:api/APIError - dry_run:
trueif present
Request Example
await fetch("http://puter.localhost:4100/share", {
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${puter.authToken}`,
},
body: JSON.stringify({
// dry_run: true,
recipients: [
'user_that_gets_shared_to',
],
paths: [
'/user_that_shares/file_that_gets_shared.txt',
],
}),
method: "POST",
});
Success Response
{
"$": "api:share",
"$version": "v0.0.0",
"status": "success",
"recipients": [
{
"$": "api:status-report",
"status": "success"
}
],
"paths": [
{
"$": "api:status-report",
"status": "success"
}
],
"dry_run": true
}
Error response (missing file)
{
"$": "api:share",
"$version": "v0.0.0",
"status": "mixed",
"recipients": [
{
"$": "api:status-report",
"status": "success"
}
],
"paths": [
{
"$": "heyputer:api/APIError",
"code": "subject_does_not_exist",
"message": "File or directory not found.",
"status": 404
}
],
"dry_run": true
}
Error response (missing user)
{
"$": "api:share",
"$version": "v0.0.0",
"status": "mixed",
"recipients": [
{
"$": "heyputer:api/APIError",
"code": "user_does_not_exist",
"message": "The user `non_existing_user` does not exist.",
"username": "non_existing_user",
"status": 422
}
],
"paths": [
{
"$": "api:status-report",
"status": "success"
}
],
"dry_run": true
}
deprecated POST /share/item-by-username (auth required)
Description
The /share/item-by-username endpoint grants access permission
for an item to the specified user. This user will also receive an
email about the shared item.
Parameters
| Name | Description | Default Value |
|---|---|---|
| path | Location of the item | required |
| username | Username of the user to share to | required |
| access_level | Either 'read' or 'write' |
'write' |
Response
This endpoint responds with an empty object ({}).
Request Example
await fetch("https://api.puter.local/share/item-by-username", {
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${puter.authToken}`,
},
body: JSON.stringify({
path: "/my-username/Desktop/some-file.txt",
username: "other-username",
}),
method: "POST",
});