{
  "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
}