Apps
The Apps API has methods for creating, and managing apps.
Create app
Create app with specified type
and uid
.
POST /api/apps
Body parameters
uid
string
requiredA string that uniquely identifies the app, for instance a product id or URL (cannot contain whitespace and must contain at least one non-digit).
type
string
requiredType of app (
chat
,comments
,files
orposts
etc.).
access
string
Access level for non-members. Defaults to
none
.none
= non-members cannot access the appread
= non-members can see the app and it's content but can cannot contributewrite
= non-members have access to the app and are allowed to create content
directory
string
Id or name of a user directory. Used in combination with
access
to control who can access the app.
name
string
Display name for the app.
description
string
App description.
metadata
object
Additional properties to associate with the app, e.g.
{ "color": "blue", "size": "XL" }
.
tags
array of strings
A list of tags to associate with the app.
Example request
curl https://{WEAVY-SERVER}/api/apps
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
--json "{ 'type': 'chat', 'uid': 'acme-chat', 'access': 'write' }"
Response codes
201 Created
400 Bad Request
401 Unauthorized
403 Forbidden
422 Validation Failed
Response schema
{
"id": "integer",
"type": "string",
"uid": "string",
"access": "string",
"directory_id": "integer",
"display_name": "string",
"name": "string",
"description": "string",
"archive_url": "string",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"created_at": "string",
"created_by_id": "integer",
"created_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"modified_at": "string",
"modified_by_id": "integer",
"modified_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"members": {
"data": [
"object"
],
"start": "integer",
"end": "integer",
"count": "integer"
},
"permissions": [
"string"
],
"is_starred": "boolean",
"is_subscribed": "boolean",
"is_trashed": "boolean"
}
Get app
Returns data for the specified app.
GET /api/apps/{app}
Path parameters
app
string
requiredApp identifier (
id
oruid
).
Query parameters
trashed
boolean
true
to return app even if trashed, otherwisefalse
.
Example request
curl https://{WEAVY-SERVER}/api/apps/acme-chat
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
Response codes
200 Success
401 Unauthorized
404 Not Found
Response schema
{
"id": "integer",
"type": "string",
"uid": "string",
"access": "string",
"directory_id": "integer",
"display_name": "string",
"name": "string",
"description": "string",
"archive_url": "string",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"created_at": "string",
"created_by_id": "integer",
"created_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"modified_at": "string",
"modified_by_id": "integer",
"modified_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"members": {
"data": [
"object"
],
"start": "integer",
"end": "integer",
"count": "integer"
},
"permissions": [
"string"
],
"is_starred": "boolean",
"is_subscribed": "boolean",
"is_trashed": "boolean"
}
Update app
Update an existing app.
PATCH /api/apps/{app}
Path parameters
app
string
requiredApp identifier (
id
oruid
).
Body parameters
uid
string
A string that uniquely identifies the app, for instance a product id or URL (cannot contain whitespace and must contain at least one non-digit).
access
string
Access level for non-members. Defaults to
none
.none
= non-members cannot access the appread
= non-members can see the app and it's content but can cannot contributewrite
= non-members have access to the app and are allowed to create content
directory
string
Id or name of a user directory. Used in combination with
access
to control who can access the app.
name
string
Display name for the app.
description
string
App description.
metadata
object
Additional properties to associate with the app, e.g.
{ "color": "blue", "size": "XL" }
.
tags
array of strings
A list of tags to associate with the app.
Example request
curl -X PATCH https://{WEAVY_SERVER}/api/apps/acme-chat
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
--json "{ 'description': 'Chat for ACME project' }"
Response codes
200 Success
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
422 Validation Failed
Response schema
{
"id": "integer",
"type": "string",
"uid": "string",
"access": "string",
"directory_id": "integer",
"display_name": "string",
"name": "string",
"description": "string",
"archive_url": "string",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"created_at": "string",
"created_by_id": "integer",
"created_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"modified_at": "string",
"modified_by_id": "integer",
"modified_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"members": {
"data": [
"object"
],
"start": "integer",
"end": "integer",
"count": "integer"
},
"permissions": [
"string"
],
"is_starred": "boolean",
"is_subscribed": "boolean",
"is_trashed": "boolean"
}
Upsert app
Update and return app with specified uid
. If the app does not exist it is created.
PUT /api/apps/{uid}
Path parameters
uid
string
requiredUnique app identifier.
Body parameters
type
string
requiredType of app (
chat
,comments
,files
orposts
etc.).
uid
string
access
string
Access level for non-members. Defaults to
none
.none
= non-members cannot access the appread
= non-members can see the app and it's content but can cannot contributewrite
= non-members have access to the app and are allowed to create content
directory
string
Id or name of a user directory. Used in combination with
access
to control who can access the app.
name
string
Display name for the app.
description
string
App description.
metadata
object
Additional properties to associate with the app, e.g.
{ "color": "blue", "size": "XL" }
.
tags
array of strings
A list of tags to associate with the app.
Example request
curl -X PUT https://{WEAVY-SERVER}/api/apps/acme-chat
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
--json "{ 'type': 'chat', 'access': 'write' }"
Response codes
200 Success
201 Created
400 Bad Request
401 Unauthorized
403 Forbidden
422 Validation Failed
Response schema
{
"id": "integer",
"type": "string",
"uid": "string",
"access": "string",
"directory_id": "integer",
"display_name": "string",
"name": "string",
"description": "string",
"archive_url": "string",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"created_at": "string",
"created_by_id": "integer",
"created_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"modified_at": "string",
"modified_by_id": "integer",
"modified_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"members": {
"data": [
"object"
],
"start": "integer",
"end": "integer",
"count": "integer"
},
"permissions": [
"string"
],
"is_starred": "boolean",
"is_subscribed": "boolean",
"is_trashed": "boolean"
}
List apps
Returns a list of apps.
GET /api/apps
Query parameters
contextual
boolean
true
to lists contextual apps,false
to list non-contextual apps; when not specified both types are listed. Default value istrue
.
type
array of strings
Guids of app types to list. Can be used to return only conversations of a specified type. When not specied all types of apps are returned.
q
string
A query used to find matching items.
tag
string
List items with the specified tag.
trashed
boolean
Indicates whether trashed items should be listed (default is
false
). Specifynull
to return both trashed and non-trashed items.
order_by
string
Specifies the sort order and direction for the listing, e.g. "
name
" or "name+desc
"
top
integer
Maximum number of items to return in the listing. Should be a value between
1
and100
. Default is25
.
skip
integer
The number of items to skip. Used together with
top
to return a specific range of items (for pagination).
count_only
boolean
true
to only return the number of matching items; when this is specified the response will only contain thecount
property.
Example request
curl https://{WEAVY-SERVER}/api/apps?top=10
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
Response codes
200 Success
401 Unauthorized
Response schema
{
"data": [
{
"id": "integer",
"type": "string",
"uid": "string",
"access": "string",
"directory_id": "integer",
"display_name": "string",
"name": "string",
"description": "string",
"archive_url": "string",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"created_at": "string",
"created_by_id": "integer",
"modified_at": "string",
"modified_by_id": "integer",
"permissions": [
"string"
],
"is_starred": "boolean",
"is_subscribed": "boolean",
"is_trashed": "boolean"
}
],
"start": "integer",
"end": "integer",
"count": "integer"
}
Add member
Add (or update) an app member.
PUT /api/apps/{app}/members/{user}
Path parameters
app
string
requiredApp identifier (
id
oruid
).
user
string
requiredUser identifier (
id
oruid
).
Body parameters
access
string
Optional access level for member. Defaults to
write
when not specified.none
= cannot access the appread
= can see the app and it's content but can cannot contributewrite
= access to the app and is allowed to create content
Example request
curl -X PUT https://{WEAVY_SERVER}/api/apps/acme-chat/members/acme-user
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
--json "{ 'access': 'read' }"
Response codes
204 No Content
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Add members
Add multiple members to an app. Can also be used to update access
of existing members.
POST /api/apps/{app}/members
Path parameters
app
string
requiredApp identifier (
id
oruid
).
Body parameters
array of objects
requiredMembers to add.
Example request
curl https://{WEAVY-SERVER}/api/apps/acme-chat/members
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
--json "[ { 'uid': 'acme-user' }, { 'uid': 'daffy-duck', 'access': 'read' } ]"
Response codes
204 No Content
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
List members
List members of the specified app.
GET /api/apps/{app}/members
Path parameters
app
string
requiredApp identifier (
id
oruid
).
Query parameters
suspended
boolean
Indicates whether to list suspended members or not,
null
returns all members.
q
string
A query used to find matching items.
tag
string
List items with the specified tag.
trashed
boolean
Indicates whether trashed items should be listed (default is
false
). Specifynull
to return both trashed and non-trashed items.
order_by
string
Specifies the sort order and direction for the listing, e.g. "
name
" or "name+desc
"
top
integer
Maximum number of items to return in the listing. Should be a value between
1
and100
. Default is25
.
skip
integer
The number of items to skip. Used together with
top
to return a specific range of items (for pagination).
count_only
boolean
true
to only return the number of matching items; when this is specified the response will only contain thecount
property.
Example request
curl https://{WEAVY-SERVER}/api/apps/acme-chat/members
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
Response codes
200 Success
401 Unauthorized
404 Not Found
Response schema
{
"data": [
{
"id": "integer",
"uid": "string",
"access": "string",
"display_name": "string",
"avatar_url": "string",
"delivered_at": "string",
"marked_at": "string",
"marked_id": "integer",
"presence": "string",
"is_bot": "boolean"
}
],
"start": "integer",
"end": "integer",
"count": "integer"
}
Remove member
Remove an app member.
DELETE /api/apps/{app}/members/{user}
Path parameters
app
string
requiredApp identifier (
id
oruid
).
user
string
requiredUser identifier (
id
oruid
).
Example request
curl -X DELETE https://{WEAVY_SERVER}/api/apps/acme-chat/members/bugs-bunny
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
Response codes
204 No Content
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Remove members
Remove multiple app members.
DELETE /api/apps/{app}/members
Path parameters
app
string
requiredApp identifier (
id
oruid
).
Body parameters
array of strings
requiredUser identifiers (
id
oruid
) of members to remove.
Example request
curl -X DELETE https://{WEAVY_SERVER}/api/apps/acme-chat/members
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
--json "['bugs-bunny', 'daffy-duck']"
Response codes
204 No Content
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Subscribe to app
Subscribe authenticated user to notifications for activity in the app.
POST /api/apps/{app}/subscribe
Path parameters
app
string
requiredApp identifier (
id
oruid
).
Example request
curl -X POST https://{WEAVY_SERVER}/api/apps/acme-chat/subscribe
-H "Authorization: Bearer {ACCESS-TOKEN}"
Response codes
200 Success
401 Unauthorized
404 Not Found
Response schema
{
"id": "integer",
"type": "string",
"uid": "string",
"access": "string",
"directory_id": "integer",
"display_name": "string",
"name": "string",
"description": "string",
"archive_url": "string",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"created_at": "string",
"created_by_id": "integer",
"created_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"modified_at": "string",
"modified_by_id": "integer",
"modified_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"members": {
"data": [
"object"
],
"start": "integer",
"end": "integer",
"count": "integer"
},
"permissions": [
"string"
],
"is_starred": "boolean",
"is_subscribed": "boolean",
"is_trashed": "boolean"
}
Unsubscribe from app
Unsubscribe authenticated user from notifications for activity in the app.
POST /api/apps/{app}/unsubscribe
Path parameters
app
string
requiredApp identifier (
id
oruid
).
Example request
curl -X POST https://{WEAVY_SERVER}/api/apps/acme-chat/unsubscribe
-H "Authorization: Bearer {ACCESS-TOKEN}"
Response codes
200 Success
401 Unauthorized
404 Not Found
Response schema
{
"id": "integer",
"type": "string",
"uid": "string",
"access": "string",
"directory_id": "integer",
"display_name": "string",
"name": "string",
"description": "string",
"archive_url": "string",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"created_at": "string",
"created_by_id": "integer",
"created_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"modified_at": "string",
"modified_by_id": "integer",
"modified_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"members": {
"data": [
"object"
],
"start": "integer",
"end": "integer",
"count": "integer"
},
"permissions": [
"string"
],
"is_starred": "boolean",
"is_subscribed": "boolean",
"is_trashed": "boolean"
}
Trash app
Move an app to the trash.
POST /api/apps/{app}/trash
Path parameters
app
string
requiredApp identifier (
id
oruid
).
Example request
curl -X POST https://{WEAVY_SERVER}/api/apps/acme-chat/trash
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
Response codes
200 Success
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Response schema
{
"id": "integer",
"type": "string",
"uid": "string",
"access": "string",
"directory_id": "integer",
"display_name": "string",
"name": "string",
"description": "string",
"archive_url": "string",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"created_at": "string",
"created_by_id": "integer",
"created_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"modified_at": "string",
"modified_by_id": "integer",
"modified_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"members": {
"data": [
"object"
],
"start": "integer",
"end": "integer",
"count": "integer"
},
"permissions": [
"string"
],
"is_starred": "boolean",
"is_subscribed": "boolean",
"is_trashed": "boolean"
}
Restore app
Restore an app from the trash.
POST /api/apps/{app}/restore
Path parameters
app
string
requiredApp identifier (
id
oruid
).
Example request
curl -X POST https://{WEAVY_SERVER}/api/apps/acme-chat/restore
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
Response codes
200 Success
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Response schema
{
"id": "integer",
"type": "string",
"uid": "string",
"access": "string",
"directory_id": "integer",
"display_name": "string",
"name": "string",
"description": "string",
"archive_url": "string",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"created_at": "string",
"created_by_id": "integer",
"created_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"modified_at": "string",
"modified_by_id": "integer",
"modified_by": {
"id": "integer",
"uid": "string",
"display_name": "string",
"email": "string",
"given_name": "string",
"middle_name": "string",
"name": "string",
"family_name": "string",
"nickname": "string",
"phone_number": "string",
"comment": "string",
"directory_id": "integer",
"picture_id": "integer",
"avatar_url": "string",
"metadata": "object",
"tags": [
"string"
],
"presence": "string",
"created_at": "string",
"modified_at": "string",
"is_bot": "boolean",
"is_suspended": "boolean",
"is_trashed": "boolean"
},
"members": {
"data": [
"object"
],
"start": "integer",
"end": "integer",
"count": "integer"
},
"permissions": [
"string"
],
"is_starred": "boolean",
"is_subscribed": "boolean",
"is_trashed": "boolean"
}
Delete app
Permanently deletes an app and all it's content.
DELETE /api/apps/{app}
Path parameters
app
string
requiredApp identifier (
id
oruid
).
Example request
curl -X DELETE https://{WEAVY_SERVER}/api/apps/acme-chat
-H "Authorization: Bearer {ACCESS-TOKEN | API-KEY}"
Response codes
204 No Content
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found