Collaboration
Get an invitation by token
GET
/v1/invitations/{token} Retrieve a single invitation using its token.
Request
curl "https://api.rendley.com/v1/invitations/TOKEN" \
-H "Authorization: Bearer YOUR_API_KEY" const res = await fetch("https://api.rendley.com/v1/invitations/TOKEN", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json(); import requests
res = requests.get(
"https://api.rendley.com/v1/invitations/TOKEN",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"] Path parameters
| Name | Type | Description |
|---|---|---|
token | string | Invitation token |
Example response
{
"data": {
"created_at": "string",
"email": "string",
"expires_at": "string",
"id": "string",
"invited_by": "string",
"inviter_name": "string",
"project_id": "string",
"project_name": "string",
"role": "string"
}
} Response codes
| Status | Description |
|---|---|
200 | OK |
401 | Unauthorized |
404 | Not Found |
Accept an invitation
POST
/v1/invitations/{token}/accept Accept a collaboration invitation using its token.
Request
curl -X POST "https://api.rendley.com/v1/invitations/TOKEN/accept" \
-H "Authorization: Bearer YOUR_API_KEY" const res = await fetch("https://api.rendley.com/v1/invitations/TOKEN/accept", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json(); import requests
res = requests.post(
"https://api.rendley.com/v1/invitations/TOKEN/accept",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"] Path parameters
| Name | Type | Description |
|---|---|---|
token | string | Invitation token |
Example response
{
"data": {
"created_at": "string",
"id": "string",
"role": "string",
"user_email": "string",
"user_id": "string",
"user_image": "string",
"user_name": "string"
}
} Response codes
| Status | Description |
|---|---|
200 | OK |
401 | Unauthorized |
404 | Not Found |
Decline an invitation
POST
/v1/invitations/{token}/decline Decline a collaboration invitation using its token.
Request
curl -X POST "https://api.rendley.com/v1/invitations/TOKEN/decline" \
-H "Authorization: Bearer YOUR_API_KEY" const res = await fetch("https://api.rendley.com/v1/invitations/TOKEN/decline", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json(); import requests
res = requests.post(
"https://api.rendley.com/v1/invitations/TOKEN/decline",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"] Path parameters
| Name | Type | Description |
|---|---|---|
token | string | Invitation token |
Response codes
| Status | Description |
|---|---|
200 | OK |
401 | Unauthorized |
404 | Not Found |
List collaborators
GET
/v1/projects/{projectId}/collaborators Retrieve all collaborators for a project.
Request
curl "https://api.rendley.com/v1/projects/PROJECT_ID/collaborators" \
-H "Authorization: Bearer YOUR_API_KEY" const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/collaborators", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json(); import requests
res = requests.get(
"https://api.rendley.com/v1/projects/PROJECT_ID/collaborators",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"] Path parameters
| Name | Type | Description |
|---|---|---|
projectId | string | Project ID |
Example response
{
"data": [
{
"created_at": "string",
"id": "string",
"role": "string",
"user_email": "string",
"user_id": "string",
"user_image": "string",
"user_name": "string"
}
]
} Response codes
| Status | Description |
|---|---|
200 | OK |
401 | Unauthorized |
403 | Forbidden |
Update a collaborator's role
PATCH
/v1/projects/{projectId}/collaborators/{userId} Update the role of a collaborator on a project.
Request
curl -X PATCH "https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"role": "viewer"
}' const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID", {
method: "PATCH",
headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"role": "viewer"
}),
});
const { data } = await res.json(); import requests
res = requests.patch(
"https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"role": "viewer"
},
)
data = res.json()["data"] Path parameters
| Name | Type | Description |
|---|---|---|
projectId | string | Project ID |
userId | string | User ID |
Request body
| Name | Type | Required | Description |
|---|---|---|---|
role | "viewer" | "editor" | Required |
Response codes
| Status | Description |
|---|---|
200 | OK |
400 | Bad Request |
401 | Unauthorized |
403 | Forbidden |
Remove a collaborator
DELETE
/v1/projects/{projectId}/collaborators/{userId} Remove a collaborator from a project.
Request
curl -X DELETE "https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID" \
-H "Authorization: Bearer YOUR_API_KEY" const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID", {
method: "DELETE",
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json(); import requests
res = requests.delete(
"https://api.rendley.com/v1/projects/PROJECT_ID/collaborators/USER_ID",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"] Path parameters
| Name | Type | Description |
|---|---|---|
projectId | string | Project ID |
userId | string | User ID |
Response codes
| Status | Description |
|---|---|
200 | OK |
401 | Unauthorized |
403 | Forbidden |
List invitations
GET
/v1/projects/{projectId}/invitations Retrieve all invitations for a project.
Request
curl "https://api.rendley.com/v1/projects/PROJECT_ID/invitations" \
-H "Authorization: Bearer YOUR_API_KEY" const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/invitations", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json(); import requests
res = requests.get(
"https://api.rendley.com/v1/projects/PROJECT_ID/invitations",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"] Path parameters
| Name | Type | Description |
|---|---|---|
projectId | string | Project ID |
Example response
{
"data": [
{
"created_at": "string",
"email": "string",
"expires_at": "string",
"id": "string",
"invited_by": "string",
"inviter_name": "string",
"project_id": "string",
"project_name": "string",
"role": "string"
}
]
} Response codes
| Status | Description |
|---|---|
200 | OK |
401 | Unauthorized |
403 | Forbidden |
Create an invitation
POST
/v1/projects/{projectId}/invitations Invite a user to collaborate on a project.
Request
curl -X POST "https://api.rendley.com/v1/projects/PROJECT_ID/invitations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "<email>",
"role": "viewer"
}' const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/invitations", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"email": "<email>",
"role": "viewer"
}),
});
const { data } = await res.json(); import requests
res = requests.post(
"https://api.rendley.com/v1/projects/PROJECT_ID/invitations",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"email": "<email>",
"role": "viewer"
},
)
data = res.json()["data"] Path parameters
| Name | Type | Description |
|---|---|---|
projectId | string | Project ID |
Request body
| Name | Type | Required | Description |
|---|---|---|---|
email | string | Required | |
role | "viewer" | "editor" | Required |
Example response
{
"data": {
"created_at": "string",
"email": "string",
"expires_at": "string",
"id": "string",
"invited_by": "string",
"inviter_name": "string",
"project_id": "string",
"project_name": "string",
"role": "string"
}
} Response codes
| Status | Description |
|---|---|
200 | OK |
400 | Bad Request |
401 | Unauthorized |
403 | Forbidden |
Delete an invitation
DELETE
/v1/projects/{projectId}/invitations/{invitationId} Delete a pending invitation from a project.
Request
curl -X DELETE "https://api.rendley.com/v1/projects/PROJECT_ID/invitations/INVITATION_ID" \
-H "Authorization: Bearer YOUR_API_KEY" const res = await fetch("https://api.rendley.com/v1/projects/PROJECT_ID/invitations/INVITATION_ID", {
method: "DELETE",
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json(); import requests
res = requests.delete(
"https://api.rendley.com/v1/projects/PROJECT_ID/invitations/INVITATION_ID",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"] Path parameters
| Name | Type | Description |
|---|---|---|
projectId | string | Project ID |
invitationId | string | Invitation ID |
Response codes
| Status | Description |
|---|---|
200 | OK |
401 | Unauthorized |
403 | Forbidden |
List shared projects
GET
/v1/projects/shared Retrieve all projects shared with the authenticated user.
Request
curl "https://api.rendley.com/v1/projects/shared" \
-H "Authorization: Bearer YOUR_API_KEY" const res = await fetch("https://api.rendley.com/v1/projects/shared", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json(); import requests
res = requests.get(
"https://api.rendley.com/v1/projects/shared",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = res.json()["data"] Response codes
| Status | Description |
|---|---|
200 | OK |
401 | Unauthorized |