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.
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/events
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/events
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/events
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.wellesley.social/_mock/openapi/api/v1/events?groupId=us_01hxcvk1hjexere4pvtrj0ymqq&limit=0&offset=0&organizerId=us_01hxcvk1hjexere4pvtrj0ymqq&username=string&withTranslation=BG' \
-H 'Authorization: YOUR_API_KEY_HERE'OK
Event attendee statuses
- INVITED - a user has been invited to an event (for private events only).
- JOINED - a user has joined and thus attending an event.
- JOINED_TENTATIVELY - a user has tentatively joined / show an interest in an event.
- REJECTED - a user has rejected an event invitation, and won't attend an event (for private events only).
Privacy levels for posts:
- PUBLIC - post is visible to anyone, including people who are not logged in and those who do not follow the user. It appears in the public timelines (home, local, and federated).
- UNLISTED - post is visible to anyone who visits the user's profile, but it does not appear in public timelines. Only followers and those who visit the user's profile directly can see it.
- PRIVATE - post is only visible to the user's followers. It does not appear in public timelines or on the user's profile for non-followers.
- DIRECT - post is visible only to the mentioned users. It functions like a direct message and is not visible on public timelines, the user's profile, or to followers.
- FOLLOW_POST - comment only. Follow parent post visibility
One of account's users. Can be multiple per account
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
[ { "id": "us_01hxcvk1hjexere4pvtrj0ymqq", "uri": "http://example.com", "groupId": "us_01hxcvk1hjexere4pvtrj0ymqq", "name": "string", "startTime": "2022-03-10T16:15:50Z", "endTime": "2022-03-10T16:15:50Z", "ianaTimeZone": "string", "timeZoneOffsetSeconds": 0, "description": "string", "descriptionHtml": "string", "url": "http://example.com", "addressId": 0, "tags": [ … ], "mentions": [ … ], "stats": { … }, "status": "CONFIRMED", "attendeeStatus": "INVITED", "commentCount": 0, "privacy": "PUBLIC", "translation": { … }, "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z", "deletedAt": "2022-03-10T16:15:50Z", "lang": "BG", "organizer": { … }, "cover": { … }, "address": { … }, "emojis": [ … ] } ]
Group id, not required for personal events
Privacy levels for posts:
- PUBLIC - post is visible to anyone, including people who are not logged in and those who do not follow the user. It appears in the public timelines (home, local, and federated).
- UNLISTED - post is visible to anyone who visits the user's profile, but it does not appear in public timelines. Only followers and those who visit the user's profile directly can see it.
- PRIVATE - post is only visible to the user's followers. It does not appear in public timelines or on the user's profile for non-followers.
- DIRECT - post is visible only to the mentioned users. It functions like a direct message and is not visible on public timelines, the user's profile, or to followers.
- FOLLOW_POST - comment only. Follow parent post visibility
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/events
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/events
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/events
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs.wellesley.social/_mock/openapi/api/v1/events \
-H 'Authorization: YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"groupId": "us_01hxcvk1hjexere4pvtrj0ymqq",
"name": "New Event Name",
"startTime": "2024-02-18T15:00:00Z",
"endTime": "2024-02-18T18:00:00Z",
"ianaTimeZone": "Europe/Paris",
"description": "This is a birthday party",
"url": "http://example.com",
"address": {
"formatted": "Adriaen Van Ostadestraat 53, 4703 NT Roosendaal, Netherlands",
"name": "Casa Vacanze",
"country": "USA",
"countryCode": "us",
"region": "Massachusetts",
"regionCode": "MA",
"subRegion": "Newton Heights",
"locality": "Madrid",
"street": "Adriaen Van Ostadestraat",
"postalCode": "4703 NT",
"houseNumber": "23",
"longitude": 4.437564,
"latitude": 51.534581,
"timeZone": "Europe/Amsterdam",
"plusCode": "9F36GCMQ+R2",
"serviceId": "geoapify",
"placeId": "string"
},
"imageId": "us_01hxcvk1hjexere4pvtrj0ymqq",
"status": "CONFIRMED",
"privacy": "PUBLIC",
"invitees": [
"us_01hxcvk1hjexere4pvtrj0ymqq"
]
}'Event object just created
Event attendee statuses
- INVITED - a user has been invited to an event (for private events only).
- JOINED - a user has joined and thus attending an event.
- JOINED_TENTATIVELY - a user has tentatively joined / show an interest in an event.
- REJECTED - a user has rejected an event invitation, and won't attend an event (for private events only).
Privacy levels for posts:
- PUBLIC - post is visible to anyone, including people who are not logged in and those who do not follow the user. It appears in the public timelines (home, local, and federated).
- UNLISTED - post is visible to anyone who visits the user's profile, but it does not appear in public timelines. Only followers and those who visit the user's profile directly can see it.
- PRIVATE - post is only visible to the user's followers. It does not appear in public timelines or on the user's profile for non-followers.
- DIRECT - post is visible only to the mentioned users. It functions like a direct message and is not visible on public timelines, the user's profile, or to followers.
- FOLLOW_POST - comment only. Follow parent post visibility
One of account's users. Can be multiple per account
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
{ "id": "us_01hxcvk1hjexere4pvtrj0ymqq", "uri": "http://example.com", "groupId": "us_01hxcvk1hjexere4pvtrj0ymqq", "name": "string", "startTime": "2022-03-10T16:15:50Z", "endTime": "2022-03-10T16:15:50Z", "ianaTimeZone": "string", "timeZoneOffsetSeconds": 0, "description": "string", "descriptionHtml": "string", "url": "http://example.com", "addressId": 0, "tags": [ "string" ], "mentions": [ "http://example.com" ], "stats": { "interests": 0, "joins": 0 }, "status": "CONFIRMED", "attendeeStatus": "INVITED", "commentCount": 0, "privacy": "PUBLIC", "translation": { "name": "string", "descriptionHtml": "string" }, "createdAt": "2022-03-10T16:15:50Z", "updatedAt": "2022-03-10T16:15:50Z", "deletedAt": "2022-03-10T16:15:50Z", "lang": "BG", "organizer": { "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" }, "cover": { "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" }, "address": { "formatted": "Adriaen Van Ostadestraat 53, 4703 NT Roosendaal, Netherlands", "name": "Casa Vacanze", "country": "USA", "countryCode": "us", "region": "Massachusetts", "regionCode": "MA", "subRegion": "Newton Heights", "locality": "Madrid", "street": "Adriaen Van Ostadestraat", "postalCode": "4703 NT", "houseNumber": "23", "longitude": 4.437564, "latitude": 51.534581, "timeZone": "Europe/Amsterdam", "plusCode": "9F36GCMQ+R2", "serviceId": "geoapify", "placeId": "string" }, "emojis": [ { … } ] }
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/events/calendar/g/{groupname}.ics
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/events/calendar/g/{groupname}.ics
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/events/calendar/g/{groupname}.ics
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.wellesley.social/_mock/openapi/api/v1/events/calendar/g/{groupname}.ics' \
-H 'Authorization: YOUR_API_KEY_HERE'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.
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.