{ "opencollection": "1.0.0", "info": { "name": "Forithmus Challenge Platform 2fa groups API", "version": "1.0.0" }, "items": [ { "info": { "name": "groups", "type": "folder" }, "items": [ { "info": { "name": "List Groups", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/challenges/:slug/groups", "params": [ { "name": "slug", "value": "", "type": "path" }, { "name": "limit", "value": "", "type": "query" }, { "name": "offset", "value": "", "type": "query" } ] }, "docs": "List all groups in the challenge with member counts." }, { "info": { "name": "Create Group", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/challenges/:slug/groups", "params": [ { "name": "slug", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "Create a new group in the challenge. The creator is auto-added as admin.\nRequires: active participant, not already in a group for this challenge." }, { "info": { "name": "Get My Group", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/challenges/:slug/groups/me", "params": [ { "name": "slug", "value": "", "type": "path" } ] }, "docs": "Get the current user's group in this challenge, with full member list.\nReturns null if the user is not in any group." }, { "info": { "name": "Get Group Detail", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/challenges/:slug/groups/:group_id", "params": [ { "name": "slug", "value": "", "type": "path" }, { "name": "group_id", "value": "", "type": "path" } ] }, "docs": "Get a group's detail with all members.\nFor private challenges, requires the user to be an active member." }, { "info": { "name": "Update Group", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/challenges/:slug/groups/:group_id", "params": [ { "name": "slug", "value": "", "type": "path" }, { "name": "group_id", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "Update group name and/or logo. Group admin only." }, { "info": { "name": "Dissolve Group", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/challenges/:slug/groups/:group_id", "params": [ { "name": "slug", "value": "", "type": "path" }, { "name": "group_id", "value": "", "type": "path" } ] }, "docs": "Dissolve (delete) the group and all memberships. Group admin only." }, { "info": { "name": "Invite Member", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/challenges/:slug/groups/:group_id/invite", "params": [ { "name": "slug", "value": "", "type": "path" }, { "name": "group_id", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" } }, "docs": "Invite a challenge participant to the group. Group admin only.\nThe invited user must be an active participant and not already in a group." }, { "info": { "name": "Accept Invitation", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/challenges/:slug/groups/:group_id/accept", "params": [ { "name": "slug", "value": "", "type": "path" }, { "name": "group_id", "value": "", "type": "path" } ] }, "docs": "Accept a pending group invitation." }, { "info": { "name": "Leave Group", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/challenges/:slug/groups/:group_id/leave", "params": [ { "name": "slug", "value": "", "type": "path" }, { "name": "group_id", "value": "", "type": "path" } ] }, "docs": "Leave the group. If the user is the last admin and no other admin exists,\nthe entire group is dissolved." }, { "info": { "name": "Remove Member", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/challenges/:slug/groups/:group_id/members/:user_id", "params": [ { "name": "slug", "value": "", "type": "path" }, { "name": "group_id", "value": "", "type": "path" }, { "name": "user_id", "value": "", "type": "path" } ] }, "docs": "Remove a member from the group. Group admin only.\nCannot remove yourself: use the leave endpoint instead." }, { "info": { "name": "Request Join", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/challenges/:slug/groups/:group_id/request", "params": [ { "name": "slug", "value": "", "type": "path" }, { "name": "group_id", "value": "", "type": "path" } ] }, "docs": "Request to join a group. The user must be an active challenge participant\nand not already in a group. Group admin must approve." }, { "info": { "name": "Approve Request", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/challenges/:slug/groups/:group_id/approve/:user_id", "params": [ { "name": "slug", "value": "", "type": "path" }, { "name": "group_id", "value": "", "type": "path" }, { "name": "user_id", "value": "", "type": "path" } ] }, "docs": "Approve a join request. Group admin only." }, { "info": { "name": "Reject Request", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/challenges/:slug/groups/:group_id/reject/:user_id", "params": [ { "name": "slug", "value": "", "type": "path" }, { "name": "group_id", "value": "", "type": "path" }, { "name": "user_id", "value": "", "type": "path" } ] }, "docs": "Reject a join request. Group admin only." } ] } ], "bundled": true }