Share endpoints allow sharing files with other users.
/share
(auth required)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.
string | Array<string>
string
: email or usernamethings: - required
object | Array<object>
path
, uid
, name
are mutually exclusivefsitem
, app
"read"
or "write"
for files (default: "read"
){
"type": "fsitem",
"path": "/some/path",
"access": "write"
}
[
{ "type": "fsitem", "path": "/some/path" },
{ "type": "fsitem", "path": "/another/path" }
]
{
"type": "app",
"uid": "app-7978dd66-e5a8-43a0-80c8-1c7eca8cb00a"
}
dry_run: - optional
accepts: bool
description: when true, only validation will occur
api:share
v0.0.0
"success"
, "mixed"
, "aborted"
api:status-report
or
heyputer:api/APIError
api:status-report
or
heyputer:api/APIError
true
if present```javascript
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
json {
"$": "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)
json {
"$": "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)
json {
"$": "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
javascript 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", }); ```