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.
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.
Request
Retrieves the complete list of questions that prospective members must answer when joining the group. Questions are returned in order based on their ordering value (lowest first). This endpoint is not accessible for groups with INVITE_ONLY join mode. Authentication is required to prevent question harvesting.
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/questions
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/questions
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/questions
- 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_01hz1f0kw36f82k9s4nzpc4s92n/questions \
-H 'Authorization: YOUR_API_KEY_HERE'List of group questions sorted by ordering
The question text displayed to users (max 200 characters)
Question type determining the answer format (TEXT, SINGLE_CHOICE, MULTIPLE_CHOICE)
Available choices for SINGLE_CHOICE or MULTIPLE_CHOICE questions. Empty for TEXT questions.
Display order position - questions with lower values appear first
[ { "questionText": "Why do you want to join this group?", "type": "TEXT", "choices": [ … ], "ordering": 1000, "id": "qu_01hz1f0gs9fe4a37jzvzn9m96k" } ]
Request
Adds a new question that prospective members must answer when joining the group. Requires GroupQuestions.Manage permission. Questions can be of type TEXT (free-form answer), SINGLE_CHOICE (one option), or MULTIPLE_CHOICE (multiple options). For choice questions, provide the available options in the choices array. The creation is tracked in the audit log.
RBAC: requires GroupQuestions.Manage
The question text displayed to users (max 200 characters)
Question type determining the answer format (TEXT, SINGLE_CHOICE, MULTIPLE_CHOICE)
Available choices for SINGLE_CHOICE or MULTIPLE_CHOICE questions. Empty for TEXT questions.
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/questions
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/questions
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/questions
- 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_01hz1f0kw36f82k9s4nzpc4s92n/questions \
-H 'Content-Type: application/json' \
-d '{
"questionText": "Why do you want to join this group?",
"type": "TEXT",
"choices": [
{
"text": "I want to learn from others",
"order": 0
}
],
"ordering": 1000
}'Successfully created the new question
The question text displayed to users (max 200 characters)
Question type determining the answer format (TEXT, SINGLE_CHOICE, MULTIPLE_CHOICE)
Available choices for SINGLE_CHOICE or MULTIPLE_CHOICE questions. Empty for TEXT questions.
Display order position - questions with lower values appear first
{ "questionText": "Why do you want to join this group?", "type": "TEXT", "choices": [ { … } ], "ordering": 1000, "id": "qu_01hz1f0gs9fe4a37jzvzn9m96k" }
Request
Submits answers to all required group questions as part of the join process. Returns a token that must be provided when calling the join endpoint. The group must have questions enabled (joinQuestions.show = true) and the user must not already be a member. Answers are validated against the current questions and stored for review by group administrators. The token expires after a configured period.
Complete list of answers corresponding to all group questions
The unique identifier of the question being answered
The type of the question - must match the actual question type
Free-form text answer for TEXT type questions (max 500 characters)
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/questions/answers
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/questions/answers
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/questions/answers
- 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_01hz1f0kw36f82k9s4nzpc4s92n/questions/answers \
-H 'Authorization: YOUR_API_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"answers": [
{
"questionId": "qu_01hz1f0gs9fe4a37jzvzn9m96k",
"questionType": "TEXT",
"textAnswer": "I want to join to share my expertise and learn from others",
"selectedChoices": [
0,
2
]
}
]
}'{ "answerToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "submittedAt": "2024-01-15T10:30:00Z" }
Request
Modifies an existing question's text, type, choices, or ordering. Requires GroupQuestions.Manage permission. When changing question type, ensure the choices array is appropriate (empty for TEXT, populated for SINGLE_CHOICE/MULTIPLE_CHOICE). All fields must be provided in the update. Changes are tracked in the audit log for compliance.
RBAC: requires GroupQuestions.Manage
The unique identifier of the group containing the question
The question text displayed to users (max 200 characters)
Question type determining the answer format (TEXT, SINGLE_CHOICE, MULTIPLE_CHOICE)
Available choices for SINGLE_CHOICE or MULTIPLE_CHOICE questions. Empty for TEXT questions.
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/questions/{questionId}
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/questions/{questionId}
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/questions/{questionId}
- 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_01hz1f0kw36f82k9s4nzpc4s92n/questions/qu_01hz1f0gs9fe4a37jzvzn9m96k \
-H 'Content-Type: application/json' \
-d '{
"questionText": "Why do you want to join this group?",
"type": "TEXT",
"choices": [
{
"text": "I want to learn from others",
"order": 0
}
],
"ordering": 1000
}'Successfully updated the question
The question text displayed to users (max 200 characters)
Question type determining the answer format (TEXT, SINGLE_CHOICE, MULTIPLE_CHOICE)
Available choices for SINGLE_CHOICE or MULTIPLE_CHOICE questions. Empty for TEXT questions.
Display order position - questions with lower values appear first
{ "questionText": "Why do you want to join this group?", "type": "TEXT", "choices": [ { … } ], "ordering": 1000, "id": "qu_01hz1f0gs9fe4a37jzvzn9m96k" }
Request
Permanently removes a question from the group's entry requirements. Requires GroupQuestions.Manage permission. This action cannot be undone. Any existing answers to this question are preserved for audit purposes but will not be evaluated for new join requests. The deletion is recorded in the audit log.
RBAC: requires GroupQuestions.Manage
- Mock serverhttps://docs.wellesley.social/_mock/openapi/api/v1/groups/{groupId}/questions/{questionId}
- Simple setup, all in one. Digital Oceanhttps://dust.allroads.social/api/v1/groups/{groupId}/questions/{questionId}
- Simple setup, db is separate. Digital Oceanhttps://meteor.allroads.social/api/v1/groups/{groupId}/questions/{questionId}
- 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_01hz1f0kw36f82k9s4nzpc4s92n/questions/qu_01hz1f0gs9fe4a37jzvzn9m96kGroup 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.