@@ -9,7 +9,7 @@ import { readFile } from "../../../file"
99import type { Identifier , UnionToArray , ArrayNonEmptyIfConst } from "typeforge"
1010
1111import type { ApiMethod } from "../../apiGroup"
12- import type { AddGroupSocialLinkData , AuthenticatedUserGroupMembershipInfoData , FormattedAllGroupRolesForUserData_V1 , GroupAuditLogActionType , GroupPayoutRestrictionsInfoData , GroupRelationshipType , GroupRolePermissions , GroupRolePermissionsData , GroupsConfigMetadataData , GroupSettingsData , GroupsMetadataData , NewSocialLinkRequest , PrettifiedAllGroupRolesForUserData_V2 , PrettifiedAllRolesForGroupData , PrettifiedAuthenticatedUserPendingGroupsData , PrettifiedGroupAuditLogsData , PrettifiedGroupIdsToGroupsInfoData , PrettifiedGroupInfoData , PrettifiedGroupJoinRequestForUser , PrettifiedGroupJoinRequests , PrettifiedGroupLookupSearch , PrettifiedGroupMembersData , PrettifiedGroupMembersWithRoleData , PrettifiedGroupNameHistoryData , PrettifiedGroupPayoutsInfoData , PrettifiedGroupPermissionsForAllRoles , PrettifiedGroupPolicyInfoData , PrettifiedGroupRelationshipsData , PrettifiedGroupRolesFromIdsData , PrettifiedGroupSearchData , PrettifiedGroupSearchMetadata , PrettifiedGroupShoutData , PrettifiedGroupSocialLinksData , PrettifiedGroupsThatUsersFriendsAreInData , PrettifiedGroupWallPostsData_V1 , PrettifiedGroupWallPostsData_V2 , PrettifiedPrimaryGroupForUserData , RawAllGroupRolesForUserData_V1 , RawAllGroupRolesForUserData_V2 , RawAllRolesForGroupData , RawAuthenticatedUserPendingGroupsData , RawGroupAuditLogsData , RawGroupIdsToGroupsInfoData , RawGroupInfoData , RawGroupJoinRequestForUser , RawGroupJoinRequests , RawGroupLookupSearch , RawGroupMembersData , RawGroupMembersWithRoleData , RawGroupNameHistoryData , RawGroupPayoutsInfoData , RawGroupPermissionsForAllRoles , RawGroupPolicyInfoData , RawGroupRelationshipsData , RawGroupRolesFromIdsData , RawGroupSearchData , RawGroupSearchMetadata , RawGroupShoutData , RawGroupSocialLinksData , RawGroupsThatUsersFriendsAreInData , RawGroupWallPostsData_V1 , RawGroupWallPostsData_V2 , RawPrimaryGroupForUserData , UpdateRoleSetData , UpdateRoleSetRequest } from "./groups.types"
12+ import type { AddGroupSocialLinkData , AuthenticatedUserGroupMembershipInfoData , BanGroupMemberData , FormattedAllGroupRolesForUserData_V1 , GroupAuditLogActionType , GroupPayoutRestrictionsInfoData , GroupRelationshipType , GroupRolePermissions , GroupRolePermissionsData , GroupsConfigMetadataData , GroupSettingsData , GroupsMetadataData , NewSocialLinkRequest , PrettifiedAllGroupRolesForUserData_V2 , PrettifiedAllRolesForGroupData , PrettifiedAuthenticatedUserPendingGroupsData , PrettifiedGroupAuditLogsData , PrettifiedGroupBansData , PrettifiedGroupIdsToGroupsInfoData , PrettifiedGroupInfoData , PrettifiedGroupJoinRequestForUser , PrettifiedGroupJoinRequests , PrettifiedGroupLookupSearch , PrettifiedGroupMembersData , PrettifiedGroupMembersWithRoleData , PrettifiedGroupNameHistoryData , PrettifiedGroupPayoutsInfoData , PrettifiedGroupPermissionsForAllRoles , PrettifiedGroupPolicyInfoData , PrettifiedGroupRelationshipsData , PrettifiedGroupRolesFromIdsData , PrettifiedGroupSearchData , PrettifiedGroupSearchMetadata , PrettifiedGroupShoutData , PrettifiedGroupSocialLinksData , PrettifiedGroupsThatUsersFriendsAreInData , PrettifiedGroupWallPostsData_V1 , PrettifiedGroupWallPostsData_V2 , PrettifiedPrimaryGroupForUserData , RawAllGroupRolesForUserData_V1 , RawAllGroupRolesForUserData_V2 , RawAllRolesForGroupData , RawAuthenticatedUserPendingGroupsData , RawGroupAuditLogsData , RawGroupBansData , RawGroupIdsToGroupsInfoData , RawGroupInfoData , RawGroupJoinRequestForUser , RawGroupJoinRequests , RawGroupLookupSearch , RawGroupMembersData , RawGroupMembersWithRoleData , RawGroupNameHistoryData , RawGroupPayoutsInfoData , RawGroupPermissionsForAllRoles , RawGroupPolicyInfoData , RawGroupRelationshipsData , RawGroupRolesFromIdsData , RawGroupSearchData , RawGroupSearchMetadata , RawGroupShoutData , RawGroupSocialLinksData , RawGroupsThatUsersFriendsAreInData , RawGroupWallPostsData_V1 , RawGroupWallPostsData_V2 , RawPrimaryGroupForUserData , UpdateRoleSetData , UpdateRoleSetRequest } from "./groups.types"
1313import type { SortOrder } from "../../../utils/utils.types"
1414//////////////////////////////////////////////////////////////////////////////////
1515
@@ -1621,4 +1621,75 @@ export const groupWallPosts_V2 = createApiMethod(async (
16211621 wallPost . updated = new Date ( wallPost . updated )
16221622 } ) )
16231623} ) )
1624+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1625+
1626+
1627+ // [ BANS ] //////////////////////////////////////////////////////////////////////////////////////////////////////////
1628+ /**
1629+ * Gets a list of group bans.
1630+ * @category Bans
1631+ * @endpoint GET /v1/groups/{groupId}/bans
1632+ *
1633+ * @param groupId The id of the group to get bans for.
1634+ * @param limit The number of results to be returned.
1635+ * @param sortOrder The order that the results are sorted in.
1636+ * @param cursor The paging cursor for the previous or next page.
1637+ *
1638+ * @example const { data:bans } = await ClassicGroupsApi.groupBans({ groupId: 5850082 })
1639+ * @exampleData [{"user":{"hasVerifiedBadge":false,"userId":1599940985,"username":"TheNamelessBot","displayName":"TheNamelessBot"},"actingUser":{"user":{"hasVerifiedBadge":false,"userId":45348281,"username":"MightyPart","displayName":"Mighty"},"role":{"id":38353811,"name":"NamelessGuy2005 - Scriptor","rank":255}},"created":"2025-05-17T17:04:15.646Z" }]
1640+ * @exampleRawBody {"previousPageCursor":null,"nextPageCursor":null,"data":[{"user":{"hasVerifiedBadge":false,"userId":1599940985,"username":"TheNamelessBot","displayName":"TheNamelessBot"},"actingUser":{"user":{"hasVerifiedBadge":false,"userId":45348281,"username":"MightyPart","displayName":"Mighty"},"role":{"id":38353811,"name":"NamelessGuy2005 - Scriptor","rank":255}},"created":"2025-05-17T17:04:15.646Z" }] }
1641+ */
1642+ export const groupBans = createApiMethod ( async (
1643+ { groupId, limit, sortOrder, cursor } :
1644+ { groupId : Identifier , limit ?: number , sortOrder ?: "Asc" | "Desc" , cursor ?: string }
1645+ ) : ApiMethod < RawGroupBansData , PrettifiedGroupBansData > => ( {
1646+ method : "GET" ,
1647+ path : `/v1/groups/${ groupId } /bans` ,
1648+ searchParams : { limit, sortOrder, cursor } ,
1649+ name : "groupBans" ,
1650+
1651+ formatRawDataFn : ( { data } ) => data
1652+ } ) )
1653+
1654+ /**
1655+ * Bans a member from a group.
1656+ * @category Bans
1657+ * @endpoint POST /v1/groups/{groupId}/bans/{userId}
1658+ *
1659+ * @param groupId The id of the group to ban a member from.
1660+ * @param userId The id of the member to ban.
1661+ *
1662+ * @example const { data:banInfo } = await ClassicGroupsApi.banGroupMember({ groupId: 5850082, userId: 1599940985 })
1663+ * @exampleData {"user":{"hasVerifiedBadge":false,"userId":1599940985,"username":"TheNamelessBot","displayName":"TheNamelessBot"},"actingUser":{"user":{"hasVerifiedBadge":false,"userId":45348281,"username":"MightyPart","displayName":"Mighty"},"role":{"id":38353811,"name":"NamelessGuy2005 - Scriptor","rank":255}},"created":"2025-05-17T17:04:15.646Z" }
1664+ * @exampleRawBody {"user":{"hasVerifiedBadge":false,"userId":1599940985,"username":"TheNamelessBot","displayName":"TheNamelessBot"},"actingUser":{"user":{"hasVerifiedBadge":false,"userId":45348281,"username":"MightyPart","displayName":"Mighty"},"role":{"id":38353811,"name":"NamelessGuy2005 - Scriptor","rank":255}},"created":"2025-05-17T17:04:15.646Z" }
1665+ */
1666+ export const banGroupMember = createApiMethod ( async < UserId extends Identifier > (
1667+ { groupId, userId } : { groupId : Identifier , userId : UserId }
1668+ ) : ApiMethod < BanGroupMemberData < UserId > > => ( {
1669+ method : "POST" ,
1670+ path : `/v1/groups/${ groupId } /bans/${ userId } ` ,
1671+ name : "banGroupMember"
1672+ } ) )
1673+
1674+ /**
1675+ * Unbans a member from a group.
1676+ * @category Bans
1677+ * @endpoint DELETE /v1/groups/{groupId}/bans/{userId}
1678+ *
1679+ * @param groupId The id of the group to unban a member from.
1680+ * @param userId The id of the member to unban.
1681+ *
1682+ * @example const { data:success } = await ClassicGroupsApi.unbanGroupMember({ groupId: 5850082, userId: 1599940985 })
1683+ * @exampleData true
1684+ * @exampleRawBody {}
1685+ */
1686+ export const unbanGroupMember = createApiMethod ( async < UserId extends Identifier > (
1687+ { groupId, userId } : { groupId : Identifier , userId : UserId }
1688+ ) : ApiMethod < boolean , { } > => ( {
1689+ method : "DELETE" ,
1690+ path : `/v1/groups/${ groupId } /bans/${ userId } ` ,
1691+ name : "unbanGroupMember" ,
1692+
1693+ formatRawDataFn : dataIsSuccess
1694+ } ) )
16241695//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
0 commit comments