Assign and list group AI agent assignments
Wellesley Platform API (1.0)
Admin Domain Blocks
Administrative APIs for managing domain blocks. Provides endpoints to block specific domains with different severity levels (SUSPEND, LIMIT, NOOP), update existing blocks, unblock domains, and list currently blocked domains. Domain blocks prevent or limit federation with specified domains.
Group Channels
API endpoints for managing channels within groups. Channels are specialized accounts that enable organized content distribution within groups. They support hierarchical organization with main and default channels, privacy controls inherited from parent groups, and both scoped (group-specific) and global usernames for discovery. Group administrators manage channels while members can follow them.
Group Members
API endpoints for managing group membership. Provides functionality to add, update, and remove members from groups, as well as retrieve membership information. Supports both local and federated groups through ActivityPub protocol. Access control is enforced based on group privacy settings and user permissions.
Request
Retrieves all groups that the currently authenticated user is a member of. Returns both public and private groups since the user is requesting their own memberships. Returns full Group objects with complete group details. Results are paginated. This is a convenience endpoint equivalent to calling /groups/member/{userId}/groups with your own user ID.
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.wellesley.social/_mock/openapi/api/v1/groups?lastId=%3FlastId%3D%24{data.last%28%29.id}&limit=0&offset=0&sortBy=string&sortOrder=string&untilId=%3FuntilId%3D%24{data.first%28%29.id}' \
-H 'Authorization: YOUR_API_KEY_HERE'List of groups the current user is a member of
group metadata including color
- PUBLIC - Open Content. Content and membership are viewable by anyone.
- PRIVATE - Members-Only Content. Outsiders cannot see posts or members unless they join.
- VISIBLE - The group is listed openly. It shows up in search results or directory listings.
- UNLISTED - The group does not appear in public lists but is accessible via direct link.
- HIDDEN - The group is completely hidden and invite-only. Shared links will return 404 for non-members.
- OPEN - Anyone can join the group immediately without approval.
- APPROVAL - User requests must be approved by a group admin or moderator.
- INVITE_ONLY - Only users with an invitation from a member can join.
ID of the forum associated with this group
Custom fields for the group
[ { "meta": { … }, "privacy": "PUBLIC", "visibility": "VISIBLE", "joinMode": "OPEN", "location": { … }, "timezone": { … }, "groupId": "us_01hxcvk1hjexere4pvtrj0ymqq", "groupName": "string", "domain": "string", "displayName": "string", "summary": "string", "uri": "http://example.com", "publicKey": "string", "privateKey": "string", "forumId": "us_01hxcvk1hjexere4pvtrj0ymqq", "stats": { … }, "fields": { … }, "type": "CHANNEL", "membersUrl": "string", "banner": { … }, "avatar": { … }, "deletedAt": "2022-03-10T16:15:50Z", "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z", "membersCount": 0 } ]
Request
Retrieves all groups that were created by the currently authenticated user account. This returns groups where the user is the owner/administrator, not just a member. A single user account can own and manage multiple groups. Returns full Group objects with complete group details including private groups owned by the user. Results are paginated.
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/account
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/account
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/account
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.wellesley.social/_mock/openapi/api/v1/groups/account?lastId=%3FlastId%3D%24{data.last%28%29.id}&limit=0&offset=0&sortBy=string&sortOrder=string&untilId=%3FuntilId%3D%24{data.first%28%29.id}' \
-H 'Authorization: YOUR_API_KEY_HERE'List of groups owned by the current user
group metadata including color
- PUBLIC - Open Content. Content and membership are viewable by anyone.
- PRIVATE - Members-Only Content. Outsiders cannot see posts or members unless they join.
- VISIBLE - The group is listed openly. It shows up in search results or directory listings.
- UNLISTED - The group does not appear in public lists but is accessible via direct link.
- HIDDEN - The group is completely hidden and invite-only. Shared links will return 404 for non-members.
- OPEN - Anyone can join the group immediately without approval.
- APPROVAL - User requests must be approved by a group admin or moderator.
- INVITE_ONLY - Only users with an invitation from a member can join.
ID of the forum associated with this group
Custom fields for the group
[ { "meta": { … }, "privacy": "PUBLIC", "visibility": "VISIBLE", "joinMode": "OPEN", "location": { … }, "timezone": { … }, "groupId": "us_01hxcvk1hjexere4pvtrj0ymqq", "groupName": "string", "domain": "string", "displayName": "string", "summary": "string", "uri": "http://example.com", "publicKey": "string", "privateKey": "string", "forumId": "us_01hxcvk1hjexere4pvtrj0ymqq", "stats": { … }, "fields": { … }, "type": "CHANNEL", "membersUrl": "string", "banner": { … }, "avatar": { … }, "deletedAt": "2022-03-10T16:15:50Z", "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z", "membersCount": 0 } ]
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/member/{userId}
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/member/{userId}
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/member/{userId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.wellesley.social/_mock/openapi/api/v1/groups/member/us_01hz1f0kw36f82k9s4nzpc4s92n?lastId=%3FlastId%3D%24{data.last%28%29.id}&limit=0&offset=0&sortBy=string&sortOrder=string&untilId=%3FuntilId%3D%24{data.first%28%29.id}' \
-H 'Authorization: YOUR_API_KEY_HERE'[ { "groupName": "string", "groupDisplayName": "string", "userName": "string", "userDisplayName": "string", "userDomain": "string", "groupAvatar": { … }, "userAvatar": { … }, "groupId": "us_01hxcvk1hjexere4pvtrj0ymqq", "memberId": "us_01hxcvk1hjexere4pvtrj0ymqq", "role": "string", "meta": { … }, "status": "INVITED", "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z" } ]
Request
Retrieves all groups where the specified user is a member. Privacy rules apply: requesting your own groups returns all groups (public and private), while requesting another user's groups returns only their public group memberships. Returns full Group objects rather than membership records. Results are paginated.
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/member/{userId}/groups
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/member/{userId}/groups
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/member/{userId}/groups
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.wellesley.social/_mock/openapi/api/v1/groups/member/us_01hz1f0kw36f82k9s4nzpc4s92n/groups?lastId=%3FlastId%3D%24{data.last%28%29.id}&limit=0&offset=0&sortBy=string&sortOrder=string&untilId=%3FuntilId%3D%24{data.first%28%29.id}' \
-H 'Authorization: YOUR_API_KEY_HERE'List of groups the user is a member of
group metadata including color
- PUBLIC - Open Content. Content and membership are viewable by anyone.
- PRIVATE - Members-Only Content. Outsiders cannot see posts or members unless they join.
- VISIBLE - The group is listed openly. It shows up in search results or directory listings.
- UNLISTED - The group does not appear in public lists but is accessible via direct link.
- HIDDEN - The group is completely hidden and invite-only. Shared links will return 404 for non-members.
- OPEN - Anyone can join the group immediately without approval.
- APPROVAL - User requests must be approved by a group admin or moderator.
- INVITE_ONLY - Only users with an invitation from a member can join.
ID of the forum associated with this group
Custom fields for the group
[ { "meta": { … }, "privacy": "PUBLIC", "visibility": "VISIBLE", "joinMode": "OPEN", "location": { … }, "timezone": { … }, "groupId": "us_01hxcvk1hjexere4pvtrj0ymqq", "groupName": "string", "domain": "string", "displayName": "string", "summary": "string", "uri": "http://example.com", "publicKey": "string", "privateKey": "string", "forumId": "us_01hxcvk1hjexere4pvtrj0ymqq", "stats": { … }, "fields": { … }, "type": "CHANNEL", "membersUrl": "string", "banner": { … }, "avatar": { … }, "deletedAt": "2022-03-10T16:15:50Z", "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z", "membersCount": 0 } ]
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/members
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/members
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/members
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.wellesley.social/_mock/openapi/api/v1/groups/gr_01hz1f0kw36f82k9s4nzpc4s33n/members?lastId=%3FlastId%3D%24{data.last%28%29.id}&limit=0&offset=0&order=ASC&role=MEMBER&sort=JOIN&sortBy=string&sortOrder=string&untilId=%3FuntilId%3D%24{data.first%28%29.id}'List of group members with their membership details
The role identifier that determines the member's permissions within the group. Common roles include GROUP_VIEWER, GROUP_EDITOR, GROUP_ADMIN
Current status of the membership (INVITED, MEMBER, or PENDING)
[ { "groupName": "string", "groupDisplayName": "string", "userName": "string", "userDisplayName": "string", "userDomain": "string", "groupAvatar": { … }, "userAvatar": { … }, "groupId": "us_01hxcvk1hjexere4pvtrj0ymqq", "memberId": "us_01hxcvk1hjexere4pvtrj0ymqq", "role": "string", "meta": { … }, "status": "INVITED", "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z" } ]
Request
Adds a user as a member of the specified group. For local groups, the membership is created immediately. For federated groups, an ActivityPub message is sent to the remote server. The requesting user must have GroupMembers.Manage permission for the target group. The groupId is provided in the URL path.
RBAC: requires GroupMembers.Manage
User who will be added as a member of the group
The initial role to assign to the new member. Defaults to GROUP_VIEWER if not specified
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/members
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/members
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/members
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs.wellesley.social/_mock/openapi/api/v1/groups/gr_01hz1f0kw36f82k9s4nzpc4s33n/members \
-H 'Authorization: YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"memberId": "us_01hxcvk1hjexere4pvtrj0ymqq",
"role": "string",
"meta": {
"description": "string"
},
"status": "INVITED"
}'{ "groupName": "string", "groupDisplayName": "string", "userName": "string", "userDisplayName": "string", "userDomain": "string", "groupAvatar": { "uploadId": "up_kjhwieuy2387928371", "userId": "us_97234khddqdkuhqwij", "uploadType": "video", "meta": { … }, "size": 0, "files": [ … ], "tags": [ … ], "error": "string", "cached": true, "logs": "string", "remote": true, "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z" }, "userAvatar": { "uploadId": "up_kjhwieuy2387928371", "userId": "us_97234khddqdkuhqwij", "uploadType": "video", "meta": { … }, "size": 0, "files": [ … ], "tags": [ … ], "error": "string", "cached": true, "logs": "string", "remote": true, "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z" }, "groupId": "us_01hxcvk1hjexere4pvtrj0ymqq", "memberId": "us_01hxcvk1hjexere4pvtrj0ymqq", "role": "string", "meta": { "description": "string" }, "status": "INVITED", "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z" }
Request
Updates the role, status, or metadata of an existing group member. For local groups, the update is applied immediately. For federated groups, an ActivityPub message is sent to the remote server to request the update. Requires GroupMembers.Manage permission for the target group.
RBAC: requires GroupMembers.Manage
The unique identifier of the user whose membership is being updated
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/members/{memberId}
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/members/{memberId}
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/members/{memberId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
https://docs.wellesley.social/_mock/openapi/api/v1/groups/gr_01hz1f0kw36f82k9s4nzpc4s33n/members/us_01hz1f0kw36f82k9s4nzpc4s92n \
-H 'Content-Type: application/json' \
-d '{
"role": "string",
"meta": {
"description": "string"
},
"status": "INVITED"
}'{ "groupName": "string", "groupDisplayName": "string", "userName": "string", "userDisplayName": "string", "userDomain": "string", "groupAvatar": { "uploadId": "up_kjhwieuy2387928371", "userId": "us_97234khddqdkuhqwij", "uploadType": "video", "meta": { … }, "size": 0, "files": [ … ], "tags": [ … ], "error": "string", "cached": true, "logs": "string", "remote": true, "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z" }, "userAvatar": { "uploadId": "up_kjhwieuy2387928371", "userId": "us_97234khddqdkuhqwij", "uploadType": "video", "meta": { … }, "size": 0, "files": [ … ], "tags": [ … ], "error": "string", "cached": true, "logs": "string", "remote": true, "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z" }, "groupId": "us_01hxcvk1hjexere4pvtrj0ymqq", "memberId": "us_01hxcvk1hjexere4pvtrj0ymqq", "role": "string", "meta": { "description": "string" }, "status": "INVITED", "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z" }
Request
Removes the specified user from the group. For local groups, the membership is deleted immediately. For federated groups, an ActivityPub message is sent to request removal. Requires GroupMembers.Manage permission. An optional reason can be provided for audit logging.
RBAC: requires GroupMembers.Manage
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/members/{memberId}
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/members/{memberId}
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/members/{memberId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
'https://docs.wellesley.social/_mock/openapi/api/v1/groups/gr_01hz1f0kw36f82k9s4nzpc4s33n/members/us_01hz1f0kw36f82k9s4nzpc4s92n?reason=Violation+of+community+guidelines'true
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/membership
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/membership
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/membership
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
https://docs.wellesley.social/_mock/openapi/api/v1/groups/gr_01hz1f0kw36f82k9s4nzpc4s33n/membership \
-H 'Authorization: YOUR_API_KEY_HERE'- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/membership
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/membership
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/membership
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://docs.wellesley.social/_mock/openapi/api/v1/groups/gr_01hz1f0kw36f82k9s4nzpc4s33n/membership \
-H 'Authorization: YOUR_API_KEY_HERE'{ "groupName": "string", "groupDisplayName": "string", "userName": "string", "userDisplayName": "string", "userDomain": "string", "groupAvatar": { "uploadId": "up_kjhwieuy2387928371", "userId": "us_97234khddqdkuhqwij", "uploadType": "video", "meta": { … }, "size": 0, "files": [ … ], "tags": [ … ], "error": "string", "cached": true, "logs": "string", "remote": true, "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z" }, "userAvatar": { "uploadId": "up_kjhwieuy2387928371", "userId": "us_97234khddqdkuhqwij", "uploadType": "video", "meta": { … }, "size": 0, "files": [ … ], "tags": [ … ], "error": "string", "cached": true, "logs": "string", "remote": true, "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z" }, "groupId": "us_01hxcvk1hjexere4pvtrj0ymqq", "memberId": "us_01hxcvk1hjexere4pvtrj0ymqq", "role": "string", "meta": { "description": "string" }, "status": "INVITED", "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z" }
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/users
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/users
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/users
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.wellesley.social/_mock/openapi/api/v1/groups/gr_01hz1f0kw36f82k9s4nzpc4s33n/users?lastId=%3FlastId%3D%24{data.last%28%29.id}&limit=0&offset=0&order=ASC&role=MEMBER&sort=JOIN&sortBy=string&sortOrder=string&untilId=%3FuntilId%3D%24{data.first%28%29.id}'List of users who are members of the group
Registration mode:
- REGULAR - just regular state
- SENSITIVE - all media attachments are flagged as sensitive, i.e. all user's posts should be marked as sensitive, old posts and all future ones.
- LIMITED - all user's old and future posts should be set maximum to followers only unless user set it to direct himself. non-followers should not be notified, i.e. if user mentions non-follower we do not create notification.
- SUSPENDED - User can login, but cannot do anything in his account except to read, cannot change anything, cannot create new posts or comments etc. All his posts are marked as deleted, but we do not delete them just yet. User is scheduled to be deleted in one month. During this month it is possible to restore it via admin.
- PUBLIC - Channel is visible to everyone and can be followed by anyone.
- PRIVATE - Channel is visible only to group members and can only be followed by group members.
Types that an Actor can be assigned. Coincide with ActivityPub Actor types:
- APPLICATION: Apps will have this type
- GROUP: Interest Groups and Generic Groups wil have this type
- ORGANIZATION: Formal Organizations such as Companies, Institutions, etc. will have this type
- PERSON: Individual people will have this type
- SERVICE: Bots, Services, and other automated tools which are not also Apps will have this type
[ { "groupUserName": "string", "id": "us_01hxcvk1hjexere4pvtrj0ymqq", "username": "john_smith", "domain": "wlsly1.net", "displayName": "John Smith", "uri": "https://wlsly1.net/users/john_smith", "avatar": { … }, "createdAt": "2022-03-10T16:15:50Z", "deleted": true, "state": "REGULAR", "relationship": { … }, "channel": true, "groupId": "us_01hxcvk1hjexere4pvtrj0ymqq", "groupPrivacy": "PUBLIC", "groupMain": true, "groupDefault": true, "actorType": "Application" } ]
Group Questions
API endpoints for managing group entry questions. Groups can require prospective members to answer questions before joining. Questions support multiple types (text, single choice, multiple choice) and are used to screen members when the group's join mode is set to QUESTIONS. Answers are validated and generate a token that can be used during the join process.
Group Rules
API endpoints for managing community rules within groups. Rules define the expected conduct and content policies that members must follow. Each rule consists of text (the rule itself), a hint (explanation or context), and an ordering value for display sequence. Rules are scoped to specific groups and can be managed by users with appropriate permissions.
Platform Data
Endpoints for managing platform-wide and group-specific data storage. Unlike application data, this provides direct data management not tied to specific applications. Supports flexible ownership models including platform-level, group-level, and user-level data with appropriate access controls.
RBAC
Endpoints for retrieving Role-Based Access Control (RBAC) configurations and managing roles, resources, permissions and role-to-user assignments. Scoped Role Definition (RBACRole):
- Represents roles within the RBAC system.
- Each role has a unique
roleId, aname, an optionaldescription, and ascope. - The
scopedefines the domain or area in which the role is valid. - The
scopecan be Global (hardcoded), currently the only one is "System" - The
scopealso can be dynamic, currently we use Group Ids, like "gr_05hxcvk1hjexere4pvtrj0hggt" - Roles come with assigned permissions (
RBACPermissions) that define what actions the role can perform on system resources. - Metadata such as
createdAtandupdatedAttimestamps track the role's lifecycle events.
Permissions** (RBACPermissions):
- Encapsulates resource-specific access controls.
- Each permission object specifies the
resource(e.g., "user", "document") and an associated list of allowedRBACAccesstypes. RBACAccessenumerates the supported actions:Read,Add,Modify,Delete.
Role Assignments to Actors (RBACActorRole):
- Maps actors (e.g., users, services) to specific roles.
- Tracks the association through
actorId(representing the unique entity being assigned) androleId(specific role ID). - Includes timestamps to record when the assignment was created or updated.