Open Foorack opened 2 years ago
Name and shortcode follow standard sanitation functions:
{
"error": {
"message": "name did not pass sanitization‚ shortCode did not pass sanitization",
"status_code": 400
}
}
/groups/<group-id>/galleries
{name: "E1", description: "E2", membersOnly: false}
name - required
Keeping this open as groups/<groupId>/instances
is missing, but that is broken.
And /groups/strictsearch?query=abc
All GroupMember examples in the documentation have "membershipStatus": "member"
. The GroupMember examples displayed for the respective endpoints should be updated to display:
"membershipStatus": "requested"
."membershipStatus": "invited"
"membershipStatus": "banned"
(all of these have been tested.)
Maybe one more thing: They changed recently that you can create multiple announcements, so Endpoint /groups/{groupId}/announcement
is not used by VRC anymore (at least on website) instead they have new Posts Apis:
GET /groups/{groupId}/posts?n=10&offset=0&publicOnly=false
Reponse looks like:
{
"total": 2,
"posts": [
{
"id": "not_163d458f-f9a5-4ff8-9ce7-5879777997b4",
"groupId": "grp_03c380ba-812a-4b3a-ae65-f0da222fc103",
"authorId": "usr_362cdd9f-3b2d-4ff5-afa7-65a2d3f8435d",
"editorId": null,
"visibility": "public",
"roleIds": [],
"title": "asd",
"text": "asd",
"imageId": null,
"imageUrl": null,
"createdAt": "2024-03-31T14:07:53.188Z",
"updatedAt": "2024-03-31T14:07:53.188Z"
},
{
"id": "not_ec21137e-2271-4e8a-8216-f0a008033f1d",
"groupId": "grp_03c380ba-812a-4b3a-ae65-f0da222fc103",
"authorId": "usr_362cdd9f-3b2d-4ff5-afa7-65a2d3f8435d",
"editorId": null,
"visibility": "group",
"roleIds": [],
"title": "test",
"text": "test please ignore",
"imageId": null,
"imageUrl": null,
"createdAt": "2024-03-31T14:07:37.504Z",
"updatedAt": "2024-03-31T14:07:37.504Z"
}
]
}
POST /groups/{groupId}/posts
Body:
{
"text":"test",
"title":"Yeah I am sry need one more test",
"imageId":null,
"sendNotification":true,
"roleIds":["grol_a1be5571-4a46-42c7-ae84-7a1e1262ee68","grol_e1ec0583-a87b-4b46-a0e0-86b4dfc1361b"],
"visibility":"group"
}
Response:
{
"id": "not_a9f5f5d8-c1c7-4d1c-a228-f1b6140d29b5",
"groupId": "grp_03c380ba-812a-4b3a-ae65-f0da222fc103",
"authorId": "usr_362cdd9f-3b2d-4ff5-afa7-65a2d3f8435d",
"editorId": null,
"visibility": "group",
"roleIds": [
"grol_a1be5571-4a46-42c7-ae84-7a1e1262ee68",
"grol_e1ec0583-a87b-4b46-a0e0-86b4dfc1361b"
],
"title": "Yeah I am sry need one more test",
"text": "test",
"imageId": null,
"imageUrl": null,
"createdAt": "2024-03-31T14:11:41.923Z",
"updatedAt": "2024-03-31T14:11:41.923Z"
}
DELETE /groups/{groupId}/posts/not_a9f5f5d8-c1c7-4d1c-a228-f1b6140d29b5
Reponse:
{
"success": {
"message":"Group post was deleted!",
"status_code":200
}
}
Note: only GET /groups/roleTemplates and /users/
Note: only GET /groups/roleTemplates and /users//feedback?contentId=&metadata=true seem to be missing
/users/{userId}/feedback
is addressed in #413
Oh, true
Written by @ariesclark and @Miner28. Moving to an Issue to better track information across PR's.
Group API
Research Stage
List User Groups
GET /users/<user-id>/groups
Response (example)
Create Group
POST /groups
Body (example)
name
must be at least 3 characters.shortCode
must be at least 3 characters.joinState
one ofclosed
,invite
,request
,open
.privacy
one ofdefault
,private
.roleTemplate
one ofdefault
,managedFree
,managedInvite
,managedRequest
.Response
Group Object
Get Group
GET groups/<group-id>
Query parameters
includeRoles
optional boolean, default false.Response (example)
Update Group
PUT groups/<group-id>
Body
Response
Group Object
Delete Group
DELETE groups/<group-id>
Response
List Group Galleries
GET /groups/<group-id>/galleries/<group-gallery-id>
Query parameters
looks like the website sends a duplicate parameter
galleryId
typical pagination:n
,offset
.Response (example)
List Group Roles
GET /groups/<group-id>/roles
Response (example)
Create Group Role
POST /groups/<group-id>/roles
Body (example)
Response
Group Role Object
Update Group Role
PUT /groups/<group-id>/roles/<group-role-id>
Body
assuming same properties as creation.
Response
Array of existing role objects.
Delete Group Role
DELETE /groups/<group-id>/roles/<group-role-id>
Body (example)
Response
Array of existing role objects.
List Group Invites
GET /groups/<group-id>/invites
Query parameters
typical pagination:
n
,offset
.Response (example)
Create Group Invite
POST /groups/<group-id>/invites
Body (example)
Delete Group Invite
DELETE /groups/<group-id>/invites/<user-id>
Response
List Group Requests
GET /groups/<group-id>/requests
Query parameters
typical pagination:
n
,offset
.List Group Members
GET /groups/<group-id>/members
Query parameters
typical pagination:
n
,offset
.Response (example)
List Group Audit Log
GET /groups/<group-id>/auditLogs
Query parameters
typical pagination:
n
,offset
.Response (example)
List Group Permissions
GET /groups/<group-id>/permissions
Response (example)
Get Group Announcement
GET /groups/<group-id>/announcement
Response (example)
Empty object when no announcement or
Set Group Announcement
POST /groups/<group-id>/announcement
Body
Response
Group Announcement Object
List Group Instances
GET /groups/<group-id>/instances
Delete Join Request
DELETE /groups/<group-id>/requests
Create Join Request
POST /groups/<group-id>/join
List Group Role Templates
GET /groups/roleTemplates
Feedback API?
/users/<user-id>/feedback?contentId=<group-id>&metadata=true
POST
/feedbacks/group/<group-id>
RESPONSE
PUT
/groups/<groupId>/requests/<userId>
ACCEPT RESPONSE
REJECT RESPONSE