rozod 6.5.1 → 6.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -45,6 +45,25 @@ const Roblox_Groups_Api_GroupRoleResponse = z.object({
45
45
  rank: z.number().int(),
46
46
  memberCount: z.number().int(),
47
47
  isBase: z.boolean(),
48
+ color: z.enum([
49
+ "Invalid",
50
+ "Blue",
51
+ "Green",
52
+ "Purple",
53
+ "Yellow",
54
+ "Orange",
55
+ "Red",
56
+ "Magenta",
57
+ "Teal",
58
+ "Turquoise",
59
+ "Rust",
60
+ "Pistachio",
61
+ "Midnight",
62
+ "Lavender",
63
+ "Pink",
64
+ "Crimson",
65
+ "Plum",
66
+ ]),
48
67
  });
49
68
  const Roblox_Groups_Api_UserGroupRoleResponse = z.object({
50
69
  user: Roblox_Groups_Api_Models_Response_UserModel,
@@ -115,6 +134,29 @@ const Roblox_Groups_Client_EmoteSetModel = z.object({
115
134
  const Roblox_Groups_Client_GetGroupEmoteSetsResponse = z.object({
116
135
  emoteSets: z.array(Roblox_Groups_Client_EmoteSetModel),
117
136
  });
137
+ const Roblox_Groups_Api_GroupFeatureResponse = z.object({
138
+ feature: z.enum([
139
+ "Payouts",
140
+ "ContentUpload",
141
+ "GroupOwnershipTransfer",
142
+ "GameOwnershipTransfer",
143
+ ]),
144
+ isFeatureBlocked: z.boolean(),
145
+ expiration: z.string().datetime({ offset: true }),
146
+ });
147
+ const Roblox_Groups_Api_GetGroupFeaturesResponse = z.object({
148
+ isLocked: z.boolean(),
149
+ features: z.array(Roblox_Groups_Api_GroupFeatureResponse),
150
+ });
151
+ const Roblox_Groups_Api_SetFeaturesRequestModel = z.object({
152
+ Features: z.object({}),
153
+ });
154
+ const Roblox_Groups_Api_SetFeaturesResponseModel = z.object({
155
+ Updated: z.boolean(),
156
+ });
157
+ const Roblox_Groups_Api_HasGroupFeaturesBlockedResponse = z.object({
158
+ hasFeaturesBlocked: z.boolean(),
159
+ });
118
160
  const Roblox_Groups_Api_GroupJoinRequestResponse = z.object({
119
161
  requester: Roblox_Groups_Api_Models_Response_UserModel,
120
162
  created: z.string().datetime({ offset: true }),
@@ -160,6 +202,7 @@ const Roblox_Groups_Api_GroupManagementPermissionsModel = z.object({
160
202
  manageClan: z.boolean(),
161
203
  viewAuditLogs: z.boolean(),
162
204
  bypassSlowmode: z.boolean(),
205
+ viewCommunityAnalytics: z.boolean(),
163
206
  });
164
207
  const Roblox_Groups_Api_GroupEconomyPermissionsModel = z.object({
165
208
  spendGroupFunds: z.boolean(),
@@ -488,6 +531,25 @@ const Roblox_Groups_Api_GroupRoleDetailResponse = z.object({
488
531
  rank: z.number().int(),
489
532
  memberCount: z.number().int(),
490
533
  isBase: z.boolean(),
534
+ color: z.enum([
535
+ "Invalid",
536
+ "Blue",
537
+ "Green",
538
+ "Purple",
539
+ "Yellow",
540
+ "Orange",
541
+ "Red",
542
+ "Magenta",
543
+ "Teal",
544
+ "Turquoise",
545
+ "Rust",
546
+ "Pistachio",
547
+ "Midnight",
548
+ "Lavender",
549
+ "Pink",
550
+ "Crimson",
551
+ "Plum",
552
+ ]),
491
553
  });
492
554
  const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Groups_Api_GroupRoleDetailResponse_ =
493
555
  z.object({ data: z.array(Roblox_Groups_Api_GroupRoleDetailResponse) });
@@ -579,6 +641,7 @@ const Roblox_Groups_Api_Models_Request_UpdateRoleSetRequest = z.object({
579
641
  name: z.string(),
580
642
  description: z.string(),
581
643
  rank: z.number().int(),
644
+ color: z.number().int(),
582
645
  });
583
646
  const Roblox_Groups_Api_PostGroupStatusRequest = z.object({
584
647
  message: z.string(),
@@ -1456,6 +1519,117 @@ export const getGroupsGroupidEmotes = endpoint({
1456
1519
  response: Roblox_Groups_Client_GetGroupEmoteSetsResponse,
1457
1520
  errors: [],
1458
1521
  });
1522
+ /**
1523
+ * @api GET https://groups.roblox.com/v1/groups/:groupId/features
1524
+ * @summary Gets the freeze status of all features and the lock status for a group.
1525
+ * @param groupId
1526
+ */
1527
+ export const getGroupsGroupidFeatures = endpoint({
1528
+ method: "GET",
1529
+ path: "/v1/groups/:groupId/features",
1530
+ baseUrl: "https://groups.roblox.com",
1531
+ requestFormat: "json",
1532
+ serializationMethod: {
1533
+ groupId: {
1534
+ style: "simple",
1535
+ },
1536
+ },
1537
+ parameters: {
1538
+ groupId: z.number().int(),
1539
+ },
1540
+ response: Roblox_Groups_Api_GetGroupFeaturesResponse,
1541
+ errors: [
1542
+ {
1543
+ status: 400,
1544
+ description: `1: Group is invalid or does not exist.`,
1545
+ },
1546
+ {
1547
+ status: 401,
1548
+ description: `0: Authorization has been denied for this request.`,
1549
+ },
1550
+ {
1551
+ status: 403,
1552
+ description: `23: Insufficient permissions to complete the request.
1553
+ 49: User is invalid or does not exist`,
1554
+ },
1555
+ ],
1556
+ });
1557
+ /**
1558
+ * @api PATCH https://groups.roblox.com/v1/groups/:groupId/features
1559
+ * @summary Sets the desired status of group features.
1560
+ Currently only removes active freezes for features set to Roblox.Groups.Api.FeatureStatus.On.
1561
+ * @param body
1562
+ * @param groupId
1563
+ */
1564
+ export const patchGroupsGroupidFeatures = endpoint({
1565
+ method: "PATCH",
1566
+ path: "/v1/groups/:groupId/features",
1567
+ baseUrl: "https://groups.roblox.com",
1568
+ requestFormat: "json",
1569
+ serializationMethod: {
1570
+ body: {},
1571
+ groupId: {
1572
+ style: "simple",
1573
+ },
1574
+ },
1575
+ parameters: {
1576
+ groupId: z.number().int(),
1577
+ },
1578
+ body: z.object({ Features: z.object({}) }),
1579
+ response: z.object({ Updated: z.boolean() }),
1580
+ errors: [
1581
+ {
1582
+ status: 400,
1583
+ description: `1: Group is invalid or does not exist.`,
1584
+ },
1585
+ {
1586
+ status: 401,
1587
+ description: `0: Authorization has been denied for this request.`,
1588
+ },
1589
+ {
1590
+ status: 403,
1591
+ description: `0: Token Validation Failed
1592
+ 23: Insufficient permissions to complete the request.
1593
+ 49: User is invalid or does not exist`,
1594
+ },
1595
+ ],
1596
+ });
1597
+ /**
1598
+ * @api GET https://groups.roblox.com/v1/groups/:groupId/features/status
1599
+ * @summary Checks whether a group has ANY feature disabled (includes feature freezes and group lock).
1600
+ Used to display a banner on Creator Hub/Studio to inform group members that some features may not be available.
1601
+ * @param groupId
1602
+ */
1603
+ export const getGroupsGroupidFeaturesStatus = endpoint({
1604
+ method: "GET",
1605
+ path: "/v1/groups/:groupId/features/status",
1606
+ baseUrl: "https://groups.roblox.com",
1607
+ requestFormat: "json",
1608
+ serializationMethod: {
1609
+ groupId: {
1610
+ style: "simple",
1611
+ },
1612
+ },
1613
+ parameters: {
1614
+ groupId: z.number().int(),
1615
+ },
1616
+ response: z.object({ hasFeaturesBlocked: z.boolean() }),
1617
+ errors: [
1618
+ {
1619
+ status: 400,
1620
+ description: `1: Group is invalid or does not exist.`,
1621
+ },
1622
+ {
1623
+ status: 401,
1624
+ description: `0: Authorization has been denied for this request.`,
1625
+ },
1626
+ {
1627
+ status: 403,
1628
+ description: `23: Insufficient permissions to complete the request.
1629
+ 49: User is invalid or does not exist`,
1630
+ },
1631
+ ],
1632
+ });
1459
1633
  /**
1460
1634
  * @api GET https://groups.roblox.com/v1/groups/:groupId/join-requests
1461
1635
  * @summary Gets a page of Group Join Requests for a group.
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getGroupsGroupidSettings = exports.postGroupsGroupidRolesetsCreate = exports.patchGroupsGroupidRolesetsRolesetid = exports.deleteGroupsGroupidRolesetsRolesetid = exports.getGroupsGroupidRolesPermissions = exports.getGroupsGroupidRolesGuestPermissions = exports.getGroupsGroupidRolesRolesetidUsers = exports.patchGroupsGroupidRolesRolesetidPermissions = exports.getGroupsGroupidRolesRolesetidPermissions = exports.getGroupsGroupidRoles = exports.deleteGroupsGroupidRelationshipsGrouprelationshiptypeRequestsRelatedgroupid = exports.postGroupsGroupidRelationshipsGrouprelationshiptypeRequestsRelatedgroupid = exports.deleteGroupsGroupidRelationshipsGrouprelationshiptypeRequests = exports.postGroupsGroupidRelationshipsGrouprelationshiptypeRequests = exports.getGroupsGroupidRelationshipsGrouprelationshiptypeRequests = exports.deleteGroupsGroupidRelationshipsGrouprelationshiptypeRelatedgroupid = exports.postGroupsGroupidRelationshipsGrouprelationshiptypeRelatedgroupid = exports.getGroupsGroupidRelationshipsGrouprelationshiptype = exports.postGroupsGroupidPayoutsRecurring = exports.postGroupsGroupidPayouts = exports.getGroupsGroupidPayouts = exports.getGroupsGroupidPayoutRestriction = exports.patchGroupsGroupidNotificationPreference = exports.getGroupsGroupidNameHistory = exports.patchGroupsGroupidName = exports.getGroupsGroupidMembership = exports.deleteGroupsGroupidJoinRequestsUsersUserid = exports.postGroupsGroupidJoinRequestsUsersUserid = exports.getGroupsGroupidJoinRequestsUsersUserid = exports.deleteGroupsGroupidJoinRequests = exports.postGroupsGroupidJoinRequests = exports.getGroupsGroupidJoinRequests = exports.getGroupsGroupidEmotes = exports.patchGroupsGroupidDescription = exports.getGroupsGroupidConfiguration = exports.postGroupsGroupidClaimOwnership = exports.postGroupsGroupidChangeOwner = exports.patchGroupsGroupidBlockedKeywordsKeywordid = exports.deleteGroupsGroupidBlockedKeywordsKeywordid = exports.postGroupsGroupidBlockedKeywords = exports.getGroupsGroupidBlockedKeywords = exports.deleteGroupsGroupidBansUserid = exports.postGroupsGroupidBansUserid = exports.getGroupsGroupidBansUserid = exports.getGroupsGroupidBans = exports.getGroupsGroupidAuditLog = exports.getGroupsGroupid = exports.deleteFeaturedContentEvent = exports.postFeaturedContentEvent = exports.getFeaturedContentEvent = void 0;
4
- exports.getUsersUseridGroupsRoles = exports.getUsersUseridGroupsPrimaryRole = exports.getUsersUseridFriendsGroupsRoles = exports.deleteUserGroupsPrimary = exports.postUserGroupsPrimary = exports.getUserGroupsPending = exports.getRoles = exports.getGroupsSearchMetadata = exports.getGroupsSearchLookup = exports.getGroupsSearch = exports.postGroupsPolicies = exports.getGroupsMetadata = exports.patchGroupsIcon = exports.postGroupsCreate = exports.getGroupsConfigurationMetadata = exports.deleteGroupsGroupidWallUsersUseridPosts = exports.postGroupsGroupidWallSubscribe = exports.deleteGroupsGroupidWallPostsPostid = exports.postGroupsGroupidWallPosts = exports.getGroupsGroupidWallPosts = exports.getGroupsGroupidUsersUseridPermissions = exports.patchGroupsGroupidUsersUserid = exports.deleteGroupsGroupidUsersUserid = exports.postGroupsGroupidUsers = exports.getGroupsGroupidUsers = exports.patchGroupsGroupidStatus = exports.patchGroupsGroupidSocialLinksSociallinkid = exports.deleteGroupsGroupidSocialLinksSociallinkid = exports.postGroupsGroupidSocialLinks = exports.getGroupsGroupidSocialLinks = exports.patchGroupsGroupidSettings = void 0;
3
+ exports.deleteGroupsGroupidRolesetsRolesetid = exports.getGroupsGroupidRolesPermissions = exports.getGroupsGroupidRolesGuestPermissions = exports.getGroupsGroupidRolesRolesetidUsers = exports.patchGroupsGroupidRolesRolesetidPermissions = exports.getGroupsGroupidRolesRolesetidPermissions = exports.getGroupsGroupidRoles = exports.deleteGroupsGroupidRelationshipsGrouprelationshiptypeRequestsRelatedgroupid = exports.postGroupsGroupidRelationshipsGrouprelationshiptypeRequestsRelatedgroupid = exports.deleteGroupsGroupidRelationshipsGrouprelationshiptypeRequests = exports.postGroupsGroupidRelationshipsGrouprelationshiptypeRequests = exports.getGroupsGroupidRelationshipsGrouprelationshiptypeRequests = exports.deleteGroupsGroupidRelationshipsGrouprelationshiptypeRelatedgroupid = exports.postGroupsGroupidRelationshipsGrouprelationshiptypeRelatedgroupid = exports.getGroupsGroupidRelationshipsGrouprelationshiptype = exports.postGroupsGroupidPayoutsRecurring = exports.postGroupsGroupidPayouts = exports.getGroupsGroupidPayouts = exports.getGroupsGroupidPayoutRestriction = exports.patchGroupsGroupidNotificationPreference = exports.getGroupsGroupidNameHistory = exports.patchGroupsGroupidName = exports.getGroupsGroupidMembership = exports.deleteGroupsGroupidJoinRequestsUsersUserid = exports.postGroupsGroupidJoinRequestsUsersUserid = exports.getGroupsGroupidJoinRequestsUsersUserid = exports.deleteGroupsGroupidJoinRequests = exports.postGroupsGroupidJoinRequests = exports.getGroupsGroupidJoinRequests = exports.getGroupsGroupidFeaturesStatus = exports.patchGroupsGroupidFeatures = exports.getGroupsGroupidFeatures = exports.getGroupsGroupidEmotes = exports.patchGroupsGroupidDescription = exports.getGroupsGroupidConfiguration = exports.postGroupsGroupidClaimOwnership = exports.postGroupsGroupidChangeOwner = exports.patchGroupsGroupidBlockedKeywordsKeywordid = exports.deleteGroupsGroupidBlockedKeywordsKeywordid = exports.postGroupsGroupidBlockedKeywords = exports.getGroupsGroupidBlockedKeywords = exports.deleteGroupsGroupidBansUserid = exports.postGroupsGroupidBansUserid = exports.getGroupsGroupidBansUserid = exports.getGroupsGroupidBans = exports.getGroupsGroupidAuditLog = exports.getGroupsGroupid = exports.deleteFeaturedContentEvent = exports.postFeaturedContentEvent = exports.getFeaturedContentEvent = void 0;
4
+ exports.getUsersUseridGroupsRoles = exports.getUsersUseridGroupsPrimaryRole = exports.getUsersUseridFriendsGroupsRoles = exports.deleteUserGroupsPrimary = exports.postUserGroupsPrimary = exports.getUserGroupsPending = exports.getRoles = exports.getGroupsSearchMetadata = exports.getGroupsSearchLookup = exports.getGroupsSearch = exports.postGroupsPolicies = exports.getGroupsMetadata = exports.patchGroupsIcon = exports.postGroupsCreate = exports.getGroupsConfigurationMetadata = exports.deleteGroupsGroupidWallUsersUseridPosts = exports.postGroupsGroupidWallSubscribe = exports.deleteGroupsGroupidWallPostsPostid = exports.postGroupsGroupidWallPosts = exports.getGroupsGroupidWallPosts = exports.getGroupsGroupidUsersUseridPermissions = exports.patchGroupsGroupidUsersUserid = exports.deleteGroupsGroupidUsersUserid = exports.postGroupsGroupidUsers = exports.getGroupsGroupidUsers = exports.patchGroupsGroupidStatus = exports.patchGroupsGroupidSocialLinksSociallinkid = exports.deleteGroupsGroupidSocialLinksSociallinkid = exports.postGroupsGroupidSocialLinks = exports.getGroupsGroupidSocialLinks = exports.patchGroupsGroupidSettings = exports.getGroupsGroupidSettings = exports.postGroupsGroupidRolesetsCreate = exports.patchGroupsGroupidRolesetsRolesetid = void 0;
5
5
  const zod_1 = require("zod");
6
6
  const __1 = require("..");
7
7
  const Roblox_Groups_Client_GroupFeaturedContentResponse = zod_1.z.object({
@@ -42,6 +42,25 @@ const Roblox_Groups_Api_GroupRoleResponse = zod_1.z.object({
42
42
  rank: zod_1.z.number().int(),
43
43
  memberCount: zod_1.z.number().int(),
44
44
  isBase: zod_1.z.boolean(),
45
+ color: zod_1.z.enum([
46
+ 'Invalid',
47
+ 'Blue',
48
+ 'Green',
49
+ 'Purple',
50
+ 'Yellow',
51
+ 'Orange',
52
+ 'Red',
53
+ 'Magenta',
54
+ 'Teal',
55
+ 'Turquoise',
56
+ 'Rust',
57
+ 'Pistachio',
58
+ 'Midnight',
59
+ 'Lavender',
60
+ 'Pink',
61
+ 'Crimson',
62
+ 'Plum',
63
+ ]),
45
64
  });
46
65
  const Roblox_Groups_Api_UserGroupRoleResponse = zod_1.z.object({
47
66
  user: Roblox_Groups_Api_Models_Response_UserModel,
@@ -109,6 +128,24 @@ const Roblox_Groups_Client_EmoteSetModel = zod_1.z.object({
109
128
  const Roblox_Groups_Client_GetGroupEmoteSetsResponse = zod_1.z.object({
110
129
  emoteSets: zod_1.z.array(Roblox_Groups_Client_EmoteSetModel),
111
130
  });
131
+ const Roblox_Groups_Api_GroupFeatureResponse = zod_1.z.object({
132
+ feature: zod_1.z.enum(['Payouts', 'ContentUpload', 'GroupOwnershipTransfer', 'GameOwnershipTransfer']),
133
+ isFeatureBlocked: zod_1.z.boolean(),
134
+ expiration: zod_1.z.string().datetime({ offset: true }),
135
+ });
136
+ const Roblox_Groups_Api_GetGroupFeaturesResponse = zod_1.z.object({
137
+ isLocked: zod_1.z.boolean(),
138
+ features: zod_1.z.array(Roblox_Groups_Api_GroupFeatureResponse),
139
+ });
140
+ const Roblox_Groups_Api_SetFeaturesRequestModel = zod_1.z.object({
141
+ Features: zod_1.z.object({}),
142
+ });
143
+ const Roblox_Groups_Api_SetFeaturesResponseModel = zod_1.z.object({
144
+ Updated: zod_1.z.boolean(),
145
+ });
146
+ const Roblox_Groups_Api_HasGroupFeaturesBlockedResponse = zod_1.z.object({
147
+ hasFeaturesBlocked: zod_1.z.boolean(),
148
+ });
112
149
  const Roblox_Groups_Api_GroupJoinRequestResponse = zod_1.z.object({
113
150
  requester: Roblox_Groups_Api_Models_Response_UserModel,
114
151
  created: zod_1.z.string().datetime({ offset: true }),
@@ -153,6 +190,7 @@ const Roblox_Groups_Api_GroupManagementPermissionsModel = zod_1.z.object({
153
190
  manageClan: zod_1.z.boolean(),
154
191
  viewAuditLogs: zod_1.z.boolean(),
155
192
  bypassSlowmode: zod_1.z.boolean(),
193
+ viewCommunityAnalytics: zod_1.z.boolean(),
156
194
  });
157
195
  const Roblox_Groups_Api_GroupEconomyPermissionsModel = zod_1.z.object({
158
196
  spendGroupFunds: zod_1.z.boolean(),
@@ -459,6 +497,25 @@ const Roblox_Groups_Api_GroupRoleDetailResponse = zod_1.z.object({
459
497
  rank: zod_1.z.number().int(),
460
498
  memberCount: zod_1.z.number().int(),
461
499
  isBase: zod_1.z.boolean(),
500
+ color: zod_1.z.enum([
501
+ 'Invalid',
502
+ 'Blue',
503
+ 'Green',
504
+ 'Purple',
505
+ 'Yellow',
506
+ 'Orange',
507
+ 'Red',
508
+ 'Magenta',
509
+ 'Teal',
510
+ 'Turquoise',
511
+ 'Rust',
512
+ 'Pistachio',
513
+ 'Midnight',
514
+ 'Lavender',
515
+ 'Pink',
516
+ 'Crimson',
517
+ 'Plum',
518
+ ]),
462
519
  });
463
520
  const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Groups_Api_GroupRoleDetailResponse_ = zod_1.z.object({
464
521
  data: zod_1.z.array(Roblox_Groups_Api_GroupRoleDetailResponse),
@@ -554,6 +611,7 @@ const Roblox_Groups_Api_Models_Request_UpdateRoleSetRequest = zod_1.z.object({
554
611
  name: zod_1.z.string(),
555
612
  description: zod_1.z.string(),
556
613
  rank: zod_1.z.number().int(),
614
+ color: zod_1.z.number().int(),
557
615
  });
558
616
  const Roblox_Groups_Api_PostGroupStatusRequest = zod_1.z.object({
559
617
  message: zod_1.z.string(),
@@ -1427,6 +1485,117 @@ exports.getGroupsGroupidEmotes = (0, __1.endpoint)({
1427
1485
  response: Roblox_Groups_Client_GetGroupEmoteSetsResponse,
1428
1486
  errors: [],
1429
1487
  });
1488
+ /**
1489
+ * @api GET https://groups.roblox.com/v1/groups/:groupId/features
1490
+ * @summary Gets the freeze status of all features and the lock status for a group.
1491
+ * @param groupId
1492
+ */
1493
+ exports.getGroupsGroupidFeatures = (0, __1.endpoint)({
1494
+ method: 'GET',
1495
+ path: '/v1/groups/:groupId/features',
1496
+ baseUrl: 'https://groups.roblox.com',
1497
+ requestFormat: 'json',
1498
+ serializationMethod: {
1499
+ groupId: {
1500
+ style: 'simple',
1501
+ },
1502
+ },
1503
+ parameters: {
1504
+ groupId: zod_1.z.number().int(),
1505
+ },
1506
+ response: Roblox_Groups_Api_GetGroupFeaturesResponse,
1507
+ errors: [
1508
+ {
1509
+ status: 400,
1510
+ description: `1: Group is invalid or does not exist.`,
1511
+ },
1512
+ {
1513
+ status: 401,
1514
+ description: `0: Authorization has been denied for this request.`,
1515
+ },
1516
+ {
1517
+ status: 403,
1518
+ description: `23: Insufficient permissions to complete the request.
1519
+ 49: User is invalid or does not exist`,
1520
+ },
1521
+ ],
1522
+ });
1523
+ /**
1524
+ * @api PATCH https://groups.roblox.com/v1/groups/:groupId/features
1525
+ * @summary Sets the desired status of group features.
1526
+ Currently only removes active freezes for features set to Roblox.Groups.Api.FeatureStatus.On.
1527
+ * @param body
1528
+ * @param groupId
1529
+ */
1530
+ exports.patchGroupsGroupidFeatures = (0, __1.endpoint)({
1531
+ method: 'PATCH',
1532
+ path: '/v1/groups/:groupId/features',
1533
+ baseUrl: 'https://groups.roblox.com',
1534
+ requestFormat: 'json',
1535
+ serializationMethod: {
1536
+ body: {},
1537
+ groupId: {
1538
+ style: 'simple',
1539
+ },
1540
+ },
1541
+ parameters: {
1542
+ groupId: zod_1.z.number().int(),
1543
+ },
1544
+ body: zod_1.z.object({ Features: zod_1.z.object({}) }),
1545
+ response: zod_1.z.object({ Updated: zod_1.z.boolean() }),
1546
+ errors: [
1547
+ {
1548
+ status: 400,
1549
+ description: `1: Group is invalid or does not exist.`,
1550
+ },
1551
+ {
1552
+ status: 401,
1553
+ description: `0: Authorization has been denied for this request.`,
1554
+ },
1555
+ {
1556
+ status: 403,
1557
+ description: `0: Token Validation Failed
1558
+ 23: Insufficient permissions to complete the request.
1559
+ 49: User is invalid or does not exist`,
1560
+ },
1561
+ ],
1562
+ });
1563
+ /**
1564
+ * @api GET https://groups.roblox.com/v1/groups/:groupId/features/status
1565
+ * @summary Checks whether a group has ANY feature disabled (includes feature freezes and group lock).
1566
+ Used to display a banner on Creator Hub/Studio to inform group members that some features may not be available.
1567
+ * @param groupId
1568
+ */
1569
+ exports.getGroupsGroupidFeaturesStatus = (0, __1.endpoint)({
1570
+ method: 'GET',
1571
+ path: '/v1/groups/:groupId/features/status',
1572
+ baseUrl: 'https://groups.roblox.com',
1573
+ requestFormat: 'json',
1574
+ serializationMethod: {
1575
+ groupId: {
1576
+ style: 'simple',
1577
+ },
1578
+ },
1579
+ parameters: {
1580
+ groupId: zod_1.z.number().int(),
1581
+ },
1582
+ response: zod_1.z.object({ hasFeaturesBlocked: zod_1.z.boolean() }),
1583
+ errors: [
1584
+ {
1585
+ status: 400,
1586
+ description: `1: Group is invalid or does not exist.`,
1587
+ },
1588
+ {
1589
+ status: 401,
1590
+ description: `0: Authorization has been denied for this request.`,
1591
+ },
1592
+ {
1593
+ status: 403,
1594
+ description: `23: Insufficient permissions to complete the request.
1595
+ 49: User is invalid or does not exist`,
1596
+ },
1597
+ ],
1598
+ });
1430
1599
  /**
1431
1600
  * @api GET https://groups.roblox.com/v1/groups/:groupId/join-requests
1432
1601
  * @summary Gets a page of Group Join Requests for a group.
@@ -108,6 +108,7 @@ const Roblox_Web_Responses_RelatedEntityTypeResponse_Roblox_Platform_Assets_Asse
108
108
  "FaceMakeup",
109
109
  "LipMakeup",
110
110
  "EyeMakeup",
111
+ "VoxelFragment",
111
112
  ]),
112
113
  name: z.string(),
113
114
  });
@@ -182,6 +183,25 @@ const Roblox_Groups_Api_GroupRoleResponse = z.object({
182
183
  rank: z.number().int(),
183
184
  memberCount: z.number().int(),
184
185
  isBase: z.boolean(),
186
+ color: z.enum([
187
+ "Invalid",
188
+ "Blue",
189
+ "Green",
190
+ "Purple",
191
+ "Yellow",
192
+ "Orange",
193
+ "Red",
194
+ "Magenta",
195
+ "Teal",
196
+ "Turquoise",
197
+ "Rust",
198
+ "Pistachio",
199
+ "Midnight",
200
+ "Lavender",
201
+ "Pink",
202
+ "Crimson",
203
+ "Plum",
204
+ ]),
185
205
  });
186
206
  const Roblox_Groups_Api_UserGroupRoleResponse = z.object({
187
207
  user: Roblox_Groups_Api_Models_Response_UserModel,
@@ -111,6 +111,7 @@ const Roblox_Web_Responses_RelatedEntityTypeResponse_Roblox_Platform_Assets_Asse
111
111
  'FaceMakeup',
112
112
  'LipMakeup',
113
113
  'EyeMakeup',
114
+ 'VoxelFragment',
114
115
  ]),
115
116
  name: zod_1.z.string(),
116
117
  });
@@ -172,6 +173,25 @@ const Roblox_Groups_Api_GroupRoleResponse = zod_1.z.object({
172
173
  rank: zod_1.z.number().int(),
173
174
  memberCount: zod_1.z.number().int(),
174
175
  isBase: zod_1.z.boolean(),
176
+ color: zod_1.z.enum([
177
+ 'Invalid',
178
+ 'Blue',
179
+ 'Green',
180
+ 'Purple',
181
+ 'Yellow',
182
+ 'Orange',
183
+ 'Red',
184
+ 'Magenta',
185
+ 'Teal',
186
+ 'Turquoise',
187
+ 'Rust',
188
+ 'Pistachio',
189
+ 'Midnight',
190
+ 'Lavender',
191
+ 'Pink',
192
+ 'Crimson',
193
+ 'Plum',
194
+ ]),
175
195
  });
176
196
  const Roblox_Groups_Api_UserGroupRoleResponse = zod_1.z.object({
177
197
  user: Roblox_Groups_Api_Models_Response_UserModel,
package/lib/index.js CHANGED
@@ -695,14 +695,38 @@ function changeHBAKeys(keys) {
695
695
  }
696
696
  async function handleRetryFetch(url, requestOptions, retries, retryDelay, body, method) {
697
697
  let response = undefined;
698
- while (response === undefined) {
698
+ while (true) {
699
699
  try {
700
700
  response = await fetch(url, {
701
701
  method,
702
702
  body,
703
703
  ...requestOptions,
704
704
  });
705
- break;
705
+ const retryable = response.status === 429 ||
706
+ response.status === 500 ||
707
+ response.status === 502 ||
708
+ response.status === 503 ||
709
+ response.status === 504;
710
+ if (retryable && retries > 0) {
711
+ retries--;
712
+ const retryAfterHeader = response.headers.get('retry-after');
713
+ let delay = retryDelay;
714
+ if (retryAfterHeader) {
715
+ const secs = Number(retryAfterHeader);
716
+ if (Number.isFinite(secs) && secs > 0) {
717
+ delay = secs * 1000;
718
+ }
719
+ else {
720
+ const dateMs = Date.parse(retryAfterHeader);
721
+ if (Number.isFinite(dateMs)) {
722
+ delay = Math.max(0, dateMs - Date.now());
723
+ }
724
+ }
725
+ }
726
+ await new Promise((resolve) => setTimeout(resolve, delay));
727
+ continue;
728
+ }
729
+ return response;
706
730
  }
707
731
  catch (error) {
708
732
  if (retries <= 0) {
@@ -712,7 +736,6 @@ async function handleRetryFetch(url, requestOptions, retries, retryDelay, body,
712
736
  await new Promise((resolve) => setTimeout(resolve, retryDelay));
713
737
  }
714
738
  }
715
- return response;
716
739
  }
717
740
  const localStorageCache = new cache_1.Cache(new cache_1.LocalStorageStore());
718
741
  const chromeStorageCache = new cache_1.Cache(new cache_1.ChromeStore());
@@ -478,13 +478,15 @@ export declare const getCloudV2GroupsGroupIdMemberships: import("../..").Endpoin
478
478
  updateTime: string;
479
479
  user: string;
480
480
  role: string;
481
+ roles: string[];
481
482
  }[];
482
483
  nextPageToken: string;
483
484
  }, undefined>;
484
485
  /**
485
486
  * `BETA`
486
487
  *
487
- * Updates the group membership for a particular group member. This action
488
+ * **Deprecated.** Use AssignGroupRole and UnassignGroupRole instead.
489
+ Updates the group membership for a particular group member. This action
488
490
  requires the requester to be able to manage lower ranked members. Guest or
489
491
  Owner ranks cannot be assigned, and a requester cannot change their own
490
492
  rank.
@@ -505,12 +507,66 @@ export declare const patchCloudV2GroupsGroupIdMembershipsMembershipId: import(".
505
507
  updateTime: string;
506
508
  user: string;
507
509
  role: string;
510
+ roles: string[];
508
511
  }, {
509
512
  path?: string | undefined;
510
513
  createTime?: string | undefined;
511
514
  updateTime?: string | undefined;
512
515
  user?: string | undefined;
513
516
  role?: string | undefined;
517
+ roles?: string[] | undefined;
518
+ }>;
519
+ /**
520
+ * `BETA`
521
+ *
522
+ * Assigns a specific role to a user within a group. If the user already
523
+ holds the specified role, no action is taken.
524
+ *
525
+ * **Scopes:** `group:write`
526
+ * **Engine:** Usable with HttpService
527
+ *
528
+ * @param body
529
+ * @param group_id The group ID.
530
+ * @param membership_id The membership ID.
531
+ */
532
+ export declare const postCloudV2GroupsGroupIdMembershipsMembershipIdAssignRole: import("../..").EndpointGeneric<{
533
+ group_id: string;
534
+ membership_id: string;
535
+ }, {
536
+ path: string;
537
+ createTime: string;
538
+ updateTime: string;
539
+ user: string;
540
+ role: string;
541
+ roles: string[];
542
+ }, {
543
+ role: string;
544
+ }>;
545
+ /**
546
+ * `BETA`
547
+ *
548
+ * Unassigns a specific role from a user within a group. If the user does
549
+ not hold the specified role, no action is taken.
550
+ *
551
+ * **Scopes:** `group:write`
552
+ * **Engine:** Usable with HttpService
553
+ *
554
+ * @param body
555
+ * @param group_id The group ID.
556
+ * @param membership_id The membership ID.
557
+ */
558
+ export declare const postCloudV2GroupsGroupIdMembershipsMembershipIdUnassignRole: import("../..").EndpointGeneric<{
559
+ group_id: string;
560
+ membership_id: string;
561
+ }, {
562
+ path: string;
563
+ createTime: string;
564
+ updateTime: string;
565
+ user: string;
566
+ role: string;
567
+ roles: string[];
568
+ }, {
569
+ role: string;
514
570
  }>;
515
571
  /**
516
572
  * `BETA`
@@ -645,31 +701,6 @@ export declare const getCloudV2GroupsGroupIdRolesRoleId: import("../..").Endpoin
645
701
  bypassSlowMode: boolean;
646
702
  };
647
703
  }, undefined>;
648
- /**
649
- * `BETA`
650
- *
651
- * Gets the group shout.
652
-
653
- If a guest can view the group shout, this is always retrievable.
654
-
655
- If a guest cannot, a member who has the permissions to view the group
656
- shout, along with the `group:read` scope, will be able to read the group
657
- shout.
658
- *
659
- * **Scopes:** `group:read`
660
- * **Engine:** Usable with HttpService
661
- *
662
- * @param group_id The group ID.
663
- */
664
- export declare const getCloudV2GroupsGroupIdShout: import("../..").EndpointGeneric<{
665
- group_id: string;
666
- }, {
667
- path: string;
668
- createTime: string;
669
- updateTime: string;
670
- content: string;
671
- poster: string;
672
- }, undefined>;
673
704
  /**
674
705
  * `STABLE`
675
706
  *
@@ -2977,7 +3008,7 @@ export declare const getCloudV2UniversesUniverseIdSubscriptionProductsSubscripti
2977
3008
  reason: "EXPIRATION_REASON_UNSPECIFIED" | "PRODUCT_INACTIVE" | "PRODUCT_DELETED" | "SUBSCRIBER_CANCELLED" | "SUBSCRIBER_REFUNDED" | "LAPSED";
2978
3009
  };
2979
3010
  purchasePlatform: "PURCHASE_PLATFORM_UNSPECIFIED" | "DESKTOP" | "MOBILE";
2980
- paymentProvider: "PAYMENT_PROVIDER_UNSPECIFIED" | "STRIPE" | "APPLE" | "GOOGLE" | "ROBLOX_CREDIT";
3011
+ paymentProvider: "PAYMENT_PROVIDER_UNSPECIFIED" | "STRIPE" | "APPLE" | "GOOGLE" | "ROBLOX_CREDIT" | "ROBUX";
2981
3012
  user: string;
2982
3013
  }, undefined>;
2983
3014
  /**