rozod 6.4.2 → 6.5.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.
@@ -100,6 +100,8 @@ const Roblox_Authentication_Api_Models_LoginResponse = z.object({
100
100
  recoveryEmail: z.string(),
101
101
  passkeyRegistrationSucceeded: z.boolean(),
102
102
  shouldAutoLoginFromRecovery: z.boolean(),
103
+ shouldPrompt2svRemoval: z.boolean(),
104
+ shouldPromptPasskeyAddition: z.boolean(),
103
105
  });
104
106
  const Roblox_Authentication_Api_Models_ProviderInfoModel = z.object({
105
107
  provider: z.string(),
@@ -337,6 +339,7 @@ const Roblox_Authentication_Api_Models_Request_FinishARPreAuthPasskeyRegistratio
337
339
  passkeySessionId: z.string(),
338
340
  passkeyRegistrationResponse: z.string(),
339
341
  userId: z.number().int(),
342
+ isPostRecovery: z.boolean(),
340
343
  });
341
344
  const Roblox_Authentication_Api_Models_Request_FinishPasskeyPreauthRegistrationRequest =
342
345
  z.object({ sessionId: z.string(), registrationResponse: z.string() });
@@ -100,6 +100,8 @@ const Roblox_Authentication_Api_Models_LoginResponse = zod_1.z.object({
100
100
  recoveryEmail: zod_1.z.string(),
101
101
  passkeyRegistrationSucceeded: zod_1.z.boolean(),
102
102
  shouldAutoLoginFromRecovery: zod_1.z.boolean(),
103
+ shouldPrompt2svRemoval: zod_1.z.boolean(),
104
+ shouldPromptPasskeyAddition: zod_1.z.boolean(),
103
105
  });
104
106
  const Roblox_Authentication_Api_Models_ProviderInfoModel = zod_1.z.object({
105
107
  provider: zod_1.z.string(),
@@ -303,6 +305,7 @@ const Roblox_Authentication_Api_Models_Request_FinishARPreAuthPasskeyRegistratio
303
305
  passkeySessionId: zod_1.z.string(),
304
306
  passkeyRegistrationResponse: zod_1.z.string(),
305
307
  userId: zod_1.z.number().int(),
308
+ isPostRecovery: zod_1.z.boolean(),
306
309
  });
307
310
  const Roblox_Authentication_Api_Models_Request_FinishPasskeyPreauthRegistrationRequest = zod_1.z.object({
308
311
  sessionId: zod_1.z.string(),
@@ -80,6 +80,8 @@ const Roblox_Authentication_Api_Models_LoginResponse = z.object({
80
80
  recoveryEmail: z.string(),
81
81
  passkeyRegistrationSucceeded: z.boolean(),
82
82
  shouldAutoLoginFromRecovery: z.boolean(),
83
+ shouldPrompt2svRemoval: z.boolean(),
84
+ shouldPromptPasskeyAddition: z.boolean(),
83
85
  });
84
86
  const Roblox_Authentication_Api_Models_PasswordValidationResponse = z.object({
85
87
  code: z.enum([
@@ -78,6 +78,8 @@ const Roblox_Authentication_Api_Models_LoginResponse = zod_1.z.object({
78
78
  recoveryEmail: zod_1.z.string(),
79
79
  passkeyRegistrationSucceeded: zod_1.z.boolean(),
80
80
  shouldAutoLoginFromRecovery: zod_1.z.boolean(),
81
+ shouldPrompt2svRemoval: zod_1.z.boolean(),
82
+ shouldPromptPasskeyAddition: zod_1.z.boolean(),
81
83
  });
82
84
  const Roblox_Authentication_Api_Models_PasswordValidationResponse = zod_1.z.object({
83
85
  code: zod_1.z.enum([
@@ -313,6 +313,7 @@ const Roblox_Catalog_Api_TaxonomyModel = z.object({
313
313
  const Roblox_Catalog_Api_CatalogSearchDetailedResponseItemV2 = z.object({
314
314
  bundledItems: z.array(Roblox_Catalog_Api_BundleItemDetailModelV2),
315
315
  taxonomy: z.array(Roblox_Catalog_Api_TaxonomyModel),
316
+ itemCreatedUtc: z.string().datetime({ offset: true }),
316
317
  id: z.number().int(),
317
318
  itemType: z.enum(["Asset", "Bundle"]),
318
319
  assetType: z.union([
@@ -309,6 +309,7 @@ const Roblox_Catalog_Api_TaxonomyModel = zod_1.z.object({
309
309
  const Roblox_Catalog_Api_CatalogSearchDetailedResponseItemV2 = zod_1.z.object({
310
310
  bundledItems: zod_1.z.array(Roblox_Catalog_Api_BundleItemDetailModelV2),
311
311
  taxonomy: zod_1.z.array(Roblox_Catalog_Api_TaxonomyModel),
312
+ itemCreatedUtc: zod_1.z.string().datetime({ offset: true }),
312
313
  id: zod_1.z.number().int(),
313
314
  itemType: zod_1.z.enum(['Asset', 'Bundle']),
314
315
  assetType: zod_1.z.union([
@@ -31,6 +31,7 @@ const Roblox_Catalog_Api_TimedOption = z.object({
31
31
  const Roblox_Catalog_Api_CatalogSearchDetailedResponseItemV2 = z.object({
32
32
  bundledItems: z.array(Roblox_Catalog_Api_BundleItemDetailModelV2),
33
33
  taxonomy: z.array(Roblox_Catalog_Api_TaxonomyModel),
34
+ itemCreatedUtc: z.string().datetime({ offset: true }),
34
35
  id: z.number().int(),
35
36
  itemType: z.enum(["Asset", "Bundle"]),
36
37
  assetType: z.union([
@@ -33,6 +33,7 @@ const Roblox_Catalog_Api_TimedOption = zod_1.z.object({
33
33
  const Roblox_Catalog_Api_CatalogSearchDetailedResponseItemV2 = zod_1.z.object({
34
34
  bundledItems: zod_1.z.array(Roblox_Catalog_Api_BundleItemDetailModelV2),
35
35
  taxonomy: zod_1.z.array(Roblox_Catalog_Api_TaxonomyModel),
36
+ itemCreatedUtc: zod_1.z.string().datetime({ offset: true }),
36
37
  id: zod_1.z.number().int(),
37
38
  itemType: zod_1.z.enum(['Asset', 'Bundle']),
38
39
  assetType: zod_1.z.union([
@@ -347,6 +347,8 @@ const Roblox_GameInternationalization_Api_GetUiConfigurationsResponse =
347
347
  isGamePassEnabled: z.boolean(),
348
348
  isDeveloperProductEnabled: z.boolean(),
349
349
  });
350
+ const Roblox_GameInternationalization_Api_Models_Response_GetPlayerChoiceUniverseSettingsResponse =
351
+ z.object({ IsPlayerChoiceEnabled: z.boolean() });
350
352
  const Roblox_GameLocalization_Client_UserUniverseLocalizationSettingValue =
351
353
  z.object({
352
354
  settingType: z.enum([
@@ -3279,6 +3281,44 @@ export const getUiConfigurations = endpoint({
3279
3281
  },
3280
3282
  ],
3281
3283
  });
3284
+ /**
3285
+ * @api GET https://gameinternationalization.roblox.com/v1/user-localization-settings/player-choice/:universeId
3286
+ * @summary Get user player choice settings for universe.
3287
+ * @param universeId The universe's ID.
3288
+ */
3289
+ export const getUserLocalizationSettingsPlayerChoiceUniverseid = endpoint({
3290
+ method: "GET",
3291
+ path: "/v1/user-localization-settings/player-choice/:universeId",
3292
+ baseUrl: "https://gameinternationalization.roblox.com",
3293
+ requestFormat: "json",
3294
+ serializationMethod: {
3295
+ universeId: {
3296
+ style: "simple",
3297
+ },
3298
+ },
3299
+ parameters: {
3300
+ universeId: z.number().int(),
3301
+ },
3302
+ response: z.object({ IsPlayerChoiceEnabled: z.boolean() }),
3303
+ errors: [
3304
+ {
3305
+ status: 400,
3306
+ description: `14: Invalid game id`,
3307
+ },
3308
+ {
3309
+ status: 401,
3310
+ description: `0: Authorization has been denied for this request.`,
3311
+ },
3312
+ {
3313
+ status: 500,
3314
+ description: `0: An unknown error occurred.`,
3315
+ },
3316
+ {
3317
+ status: 503,
3318
+ description: `17: Feature is disabled`,
3319
+ },
3320
+ ],
3321
+ });
3282
3322
  /**
3283
3323
  * @api GET https://gameinternationalization.roblox.com/v1/user-localization-settings/universe/:universeId
3284
3324
  * @summary Get user localization settings for universe.
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getSupportedLanguagesGamesGameid = exports.getSourceLanguageGamesGameidLanguageWithLocales = exports.patchSourceLanguageGamesGameid = exports.getSourceLanguageGamesGameid = exports.getNameDescriptionMetadata = exports.postNameDescriptionGamesTranslationHistory = exports.patchNameDescriptionGamesGameid = exports.getNameDescriptionGamesGameid = exports.patchLocalizationtableGametablesGameid = exports.postGameThumbnailsGamesGameidLanguageCodesLanguagecodeImagesOrder = exports.deleteGameThumbnailsGamesGameidLanguageCodesLanguagecodeImagesImageid = exports.postGameThumbnailsGamesGameidLanguageCodesLanguagecodeImage = exports.postGameThumbnailsGamesGameidLanguageCodesLanguagecodeAltText = exports.getGameThumbnailsGamesGameidImages = exports.patchGamePassesGamepassidNameLanguageCodesLanguagecode = exports.patchGamePassesGamepassidNameDescriptionLanguageCodesLanguagecode = exports.deleteGamePassesGamepassidNameDescriptionLanguageCodesLanguagecode = exports.getGamePassesGamepassidNameDescription = exports.deleteGamePassesGamepassidIconsLanguageCodesLanguagecode = exports.postGamePassesGamepassidIconsLanguageCodesLanguagecode = exports.getGamePassesGamepassidIcons = exports.patchGamePassesGamepassidDescriptionLanguageCodesLanguagecode = exports.getGameLocalizationStatusTranslationCountsForLanguageOrLocale = exports.getGameLocalizationStatusGameidTranslationCounts = exports.deleteGameIconGamesGameidLanguageCodesLanguagecode = exports.postGameIconGamesGameidLanguageCodesLanguagecode = exports.getGameIconGamesGameid = exports.patchDeveloperProductsDeveloperproductidNameLanguageCodesLanguagecode = exports.patchDeveloperProductsDeveloperproductidNameDescriptionLanguageCodesLanguagecode = exports.deleteDeveloperProductsDeveloperproductidNameDescriptionLanguageCodesLanguagecode = exports.getDeveloperProductsDeveloperproductidNameDescription = exports.deleteDeveloperProductsDeveloperproductidIconsLanguageCodesLanguagecode = exports.postDeveloperProductsDeveloperproductidIconsLanguageCodesLanguagecode = exports.getDeveloperProductsDeveloperproductidIcons = exports.patchDeveloperProductsDeveloperproductidDescriptionLanguageCodesLanguagecode = exports.patchBadgesBadgeidNameLanguageCodesLanguagecode = exports.patchBadgesBadgeidNameDescriptionLanguageCodesLanguagecode = exports.deleteBadgesBadgeidNameDescriptionLanguageCodesLanguagecode = exports.getBadgesBadgeidNameDescription = exports.deleteBadgesBadgeidIconsLanguageCodesLanguagecode = exports.postBadgesBadgeidIconsLanguageCodesLanguagecode = exports.getBadgesBadgeidIcons = exports.patchBadgesBadgeidDescriptionLanguageCodesLanguagecode = exports.getAutomaticTranslationLanguagesLanguagecodeTargetLanguages = exports.getAutomaticTranslationGamesGameidQuota = exports.getAutomaticTranslationGamesGameidFeatureStatus = exports.getAutolocalizationMetadata = exports.patchAutolocalizationGamesGameidSettings = exports.patchAutolocalizationGamesGameidAutolocalizationtable = exports.postAutolocalizationGamesGameidAutolocalizationtable = void 0;
4
- exports.postUserLocalizationSettingsUniverseUniverseid = exports.getUserLocalizationSettingsUniverseUniverseid = exports.getUiConfigurations = exports.getTranslationAnalyticsMetadata = exports.postTranslationAnalyticsGamesGameidRequestTranslationAnalyticsReport = exports.getTranslationAnalyticsGamesGameidDownloadTranslationAnalyticsReport = exports.getSupportedLanguagesMetadata = exports.getSupportedLanguagesGamesGameidUniverseDisplayInfoAutomaticTranslationSettings = exports.patchSupportedLanguagesGamesGameidLanguagesLanguagecodeUniverseDisplayInfoAutomaticTranslationSettings = exports.patchSupportedLanguagesGamesGameidLanguagesLanguagecodeAutomaticTranslationStatus = exports.getSupportedLanguagesGamesGameidInExperienceLanguageSelection = exports.getSupportedLanguagesGamesGameidAutomaticTranslationStatus = exports.patchSupportedLanguagesGamesGameid = void 0;
4
+ exports.postUserLocalizationSettingsUniverseUniverseid = exports.getUserLocalizationSettingsUniverseUniverseid = exports.getUserLocalizationSettingsPlayerChoiceUniverseid = exports.getUiConfigurations = exports.getTranslationAnalyticsMetadata = exports.postTranslationAnalyticsGamesGameidRequestTranslationAnalyticsReport = exports.getTranslationAnalyticsGamesGameidDownloadTranslationAnalyticsReport = exports.getSupportedLanguagesMetadata = exports.getSupportedLanguagesGamesGameidUniverseDisplayInfoAutomaticTranslationSettings = exports.patchSupportedLanguagesGamesGameidLanguagesLanguagecodeUniverseDisplayInfoAutomaticTranslationSettings = exports.patchSupportedLanguagesGamesGameidLanguagesLanguagecodeAutomaticTranslationStatus = exports.getSupportedLanguagesGamesGameidInExperienceLanguageSelection = exports.getSupportedLanguagesGamesGameidAutomaticTranslationStatus = exports.patchSupportedLanguagesGamesGameid = void 0;
5
5
  const zod_1 = require("zod");
6
6
  const __1 = require("..");
7
7
  const Roblox_GameInternationalization_Api_AutoLocalizationMetadataResponse = zod_1.z.object({
@@ -273,6 +273,9 @@ const Roblox_GameInternationalization_Api_GetUiConfigurationsResponse = zod_1.z.
273
273
  isGamePassEnabled: zod_1.z.boolean(),
274
274
  isDeveloperProductEnabled: zod_1.z.boolean(),
275
275
  });
276
+ const Roblox_GameInternationalization_Api_Models_Response_GetPlayerChoiceUniverseSettingsResponse = zod_1.z.object({
277
+ IsPlayerChoiceEnabled: zod_1.z.boolean(),
278
+ });
276
279
  const Roblox_GameLocalization_Client_UserUniverseLocalizationSettingValue = zod_1.z.object({
277
280
  settingType: zod_1.z.enum(['LanguageFamily', 'SupportedLocale', 'SourceOrTranslation']),
278
281
  settingTargetId: zod_1.z.number().int(),
@@ -3142,6 +3145,44 @@ exports.getUiConfigurations = (0, __1.endpoint)({
3142
3145
  },
3143
3146
  ],
3144
3147
  });
3148
+ /**
3149
+ * @api GET https://gameinternationalization.roblox.com/v1/user-localization-settings/player-choice/:universeId
3150
+ * @summary Get user player choice settings for universe.
3151
+ * @param universeId The universe's ID.
3152
+ */
3153
+ exports.getUserLocalizationSettingsPlayerChoiceUniverseid = (0, __1.endpoint)({
3154
+ method: 'GET',
3155
+ path: '/v1/user-localization-settings/player-choice/:universeId',
3156
+ baseUrl: 'https://gameinternationalization.roblox.com',
3157
+ requestFormat: 'json',
3158
+ serializationMethod: {
3159
+ universeId: {
3160
+ style: 'simple',
3161
+ },
3162
+ },
3163
+ parameters: {
3164
+ universeId: zod_1.z.number().int(),
3165
+ },
3166
+ response: zod_1.z.object({ IsPlayerChoiceEnabled: zod_1.z.boolean() }),
3167
+ errors: [
3168
+ {
3169
+ status: 400,
3170
+ description: `14: Invalid game id`,
3171
+ },
3172
+ {
3173
+ status: 401,
3174
+ description: `0: Authorization has been denied for this request.`,
3175
+ },
3176
+ {
3177
+ status: 500,
3178
+ description: `0: An unknown error occurred.`,
3179
+ },
3180
+ {
3181
+ status: 503,
3182
+ description: `17: Feature is disabled`,
3183
+ },
3184
+ ],
3185
+ });
3145
3186
  /**
3146
3187
  * @api GET https://gameinternationalization.roblox.com/v1/user-localization-settings/universe/:universeId
3147
3188
  * @summary Get user localization settings for universe.
@@ -144,6 +144,16 @@ const Roblox_Games_Api_Models_Response_PlaceDetails = z.object({
144
144
  imageToken: z.string(),
145
145
  fiatPurchaseData: Roblox_Games_Api_Models_Response_PurchaseData,
146
146
  });
147
+ const Roblox_Games_Api_Models_Response_PlayableUxTreatmentData = z.object({
148
+ titleText: z.string(),
149
+ bodyText: z.string(),
150
+ primaryActionText: z.string(),
151
+ secondaryActionText: z.string(),
152
+ });
153
+ const Roblox_Games_Api_Models_Response_PlayableUxTreatment = z.object({
154
+ treatment: z.string(),
155
+ data: Roblox_Games_Api_Models_Response_PlayableUxTreatmentData,
156
+ });
147
157
  const Roblox_Games_Api_Models_Response_PlayabilityStatusResponse = z.object({
148
158
  playabilityStatus: z.enum([
149
159
  "UnplayableOtherReason",
@@ -176,6 +186,7 @@ const Roblox_Games_Api_Models_Response_PlayabilityStatusResponse = z.object({
176
186
  isPlayable: z.boolean(),
177
187
  universeId: z.number().int(),
178
188
  unplayableDisplayText: z.string(),
189
+ playableUxTreatment: Roblox_Games_Api_Models_Response_PlayableUxTreatment,
179
190
  });
180
191
  const Roblox_Games_Api_Models_Response_GameResponseModel = z.object({
181
192
  creatorId: z.number().int(),
@@ -198,6 +209,7 @@ const Roblox_Games_Api_Models_Response_GameResponseModel = z.object({
198
209
  genre: z.string(),
199
210
  minimumAge: z.number().int(),
200
211
  ageRecommendationDisplayName: z.string(),
212
+ canonicalUrlPath: z.string(),
201
213
  });
202
214
  const Roblox_Games_Api_Models_Response_GameRecommendationsResponse = z.object({
203
215
  games: z.array(Roblox_Games_Api_Models_Response_GameResponseModel),
@@ -144,6 +144,16 @@ const Roblox_Games_Api_Models_Response_PlaceDetails = zod_1.z.object({
144
144
  imageToken: zod_1.z.string(),
145
145
  fiatPurchaseData: Roblox_Games_Api_Models_Response_PurchaseData,
146
146
  });
147
+ const Roblox_Games_Api_Models_Response_PlayableUxTreatmentData = zod_1.z.object({
148
+ titleText: zod_1.z.string(),
149
+ bodyText: zod_1.z.string(),
150
+ primaryActionText: zod_1.z.string(),
151
+ secondaryActionText: zod_1.z.string(),
152
+ });
153
+ const Roblox_Games_Api_Models_Response_PlayableUxTreatment = zod_1.z.object({
154
+ treatment: zod_1.z.string(),
155
+ data: Roblox_Games_Api_Models_Response_PlayableUxTreatmentData,
156
+ });
147
157
  const Roblox_Games_Api_Models_Response_PlayabilityStatusResponse = zod_1.z.object({
148
158
  playabilityStatus: zod_1.z.enum([
149
159
  'UnplayableOtherReason',
@@ -176,6 +186,7 @@ const Roblox_Games_Api_Models_Response_PlayabilityStatusResponse = zod_1.z.objec
176
186
  isPlayable: zod_1.z.boolean(),
177
187
  universeId: zod_1.z.number().int(),
178
188
  unplayableDisplayText: zod_1.z.string(),
189
+ playableUxTreatment: Roblox_Games_Api_Models_Response_PlayableUxTreatment,
179
190
  });
180
191
  const Roblox_Games_Api_Models_Response_GameResponseModel = zod_1.z.object({
181
192
  creatorId: zod_1.z.number().int(),
@@ -198,6 +209,7 @@ const Roblox_Games_Api_Models_Response_GameResponseModel = zod_1.z.object({
198
209
  genre: zod_1.z.string(),
199
210
  minimumAge: zod_1.z.number().int(),
200
211
  ageRecommendationDisplayName: zod_1.z.string(),
212
+ canonicalUrlPath: zod_1.z.string(),
201
213
  });
202
214
  const Roblox_Games_Api_Models_Response_GameRecommendationsResponse = zod_1.z.object({
203
215
  games: zod_1.z.array(Roblox_Games_Api_Models_Response_GameResponseModel),
@@ -813,6 +813,8 @@ export const getGroupsGroupidAuditLog = endpoint({
813
813
  "LeaveGroup",
814
814
  "UpdateGroupIcon",
815
815
  "UpdateGroupCoverPhoto",
816
+ "AssignRole",
817
+ "UnassignRole",
816
818
  ])
817
819
  .optional(),
818
820
  userId: z.number().int().optional(),
@@ -787,6 +787,8 @@ exports.getGroupsGroupidAuditLog = (0, __1.endpoint)({
787
787
  'LeaveGroup',
788
788
  'UpdateGroupIcon',
789
789
  'UpdateGroupCoverPhoto',
790
+ 'AssignRole',
791
+ 'UnassignRole',
790
792
  ])
791
793
  .optional(),
792
794
  userId: zod_1.z.number().int().optional(),
@@ -142,6 +142,39 @@ const Roblox_Groups_Api_Models_Response_UserModel = z.object({
142
142
  username: z.string(),
143
143
  displayName: z.string(),
144
144
  });
145
+ const Roblox_Groups_Api_ShoutResponse = z.object({
146
+ body: z.string(),
147
+ poster: Roblox_Groups_Api_Models_Response_UserModel,
148
+ created: z.string().datetime({ offset: true }),
149
+ updated: z.string().datetime({ offset: true }),
150
+ });
151
+ const Roblox_Groups_Api_GroupDetailResponse = z.object({
152
+ id: z.number().int(),
153
+ name: z.string(),
154
+ description: z.string(),
155
+ owner: Roblox_Groups_Api_Models_Response_UserModel,
156
+ shout: Roblox_Groups_Api_ShoutResponse,
157
+ memberCount: z.number().int(),
158
+ isBuildersClubOnly: z.boolean(),
159
+ publicEntryAllowed: z.boolean(),
160
+ isLocked: z.boolean(),
161
+ hasVerifiedBadge: z.boolean(),
162
+ hasSocialModules: z.boolean(),
163
+ });
164
+ const Roblox_Web_WebAPI_Models_ApiPageResponse_Roblox_Groups_Api_GroupDetailResponse_ =
165
+ z.object({
166
+ previousPageCursor: z.string(),
167
+ nextPageCursor: z.string(),
168
+ data: z.array(Roblox_Groups_Api_GroupDetailResponse),
169
+ });
170
+ const Roblox_Groups_Api_Models_Response_GroupRelationshipsV2Response = z.object(
171
+ {
172
+ groupId: z.number().int(),
173
+ relationshipType: z.enum(["Allies", "Enemies"]),
174
+ groupResponses:
175
+ Roblox_Web_WebAPI_Models_ApiPageResponse_Roblox_Groups_Api_GroupDetailResponse_,
176
+ }
177
+ );
145
178
  const Roblox_Groups_Api_GroupRoleResponse = z.object({
146
179
  id: z.number().int(),
147
180
  name: z.string(),
@@ -293,6 +326,123 @@ export const getGroupsGroupidExperiences = endpoint({
293
326
  },
294
327
  ],
295
328
  });
329
+ /**
330
+ * @api GET https://groups.roblox.com/v2/groups/:groupId/relationships/:groupRelationshipType
331
+ * @summary Gets a group's relationships with cursor-based pagination.
332
+ * @param groupId The group Id.
333
+ * @param groupRelationshipType The group relationship type, enemies or allies.
334
+ * @param limit The number of results per request.
335
+ * @param cursor The paging cursor for the previous or next page.
336
+ * @param sortOrder The order the results are sorted in.
337
+ */
338
+ export const getGroupsGroupidRelationshipsGrouprelationshiptype = endpoint({
339
+ method: "GET",
340
+ path: "/v2/groups/:groupId/relationships/:groupRelationshipType",
341
+ baseUrl: "https://groups.roblox.com",
342
+ requestFormat: "json",
343
+ serializationMethod: {
344
+ groupId: {
345
+ style: "simple",
346
+ },
347
+ groupRelationshipType: {
348
+ style: "simple",
349
+ },
350
+ limit: {
351
+ style: "form",
352
+ explode: true,
353
+ },
354
+ cursor: {
355
+ style: "form",
356
+ explode: true,
357
+ },
358
+ sortOrder: {
359
+ style: "form",
360
+ explode: true,
361
+ },
362
+ },
363
+ parameters: {
364
+ groupId: z.number().int(),
365
+ groupRelationshipType: z.string(),
366
+ limit: z
367
+ .union([z.literal(10), z.literal(25), z.literal(50), z.literal(100)])
368
+ .optional()
369
+ .default(10),
370
+ cursor: z.string().optional(),
371
+ sortOrder: z.enum(["Asc", "Desc"]).optional().default("Asc"),
372
+ },
373
+ response: Roblox_Groups_Api_Models_Response_GroupRelationshipsV2Response,
374
+ errors: [
375
+ {
376
+ status: 400,
377
+ description: `1: Group is invalid or does not exist.
378
+ 4: Group relationship type or request type is invalid.
379
+ 8: Invalid or missing pagination parameters`,
380
+ },
381
+ ],
382
+ });
383
+ /**
384
+ * @api GET https://groups.roblox.com/v2/groups/:groupId/relationships/:groupRelationshipType/requests
385
+ * @summary Gets a group's relationship requests with cursor-based pagination.
386
+ * @param groupId The group Id.
387
+ * @param groupRelationshipType The group relationship type of the request, only allies are supported.
388
+ * @param limit The number of results per request.
389
+ * @param cursor The paging cursor for the previous or next page.
390
+ * @param sortOrder The order the results are sorted in.
391
+ */
392
+ export const getGroupsGroupidRelationshipsGrouprelationshiptypeRequests =
393
+ endpoint({
394
+ method: "GET",
395
+ path: "/v2/groups/:groupId/relationships/:groupRelationshipType/requests",
396
+ baseUrl: "https://groups.roblox.com",
397
+ requestFormat: "json",
398
+ serializationMethod: {
399
+ groupId: {
400
+ style: "simple",
401
+ },
402
+ groupRelationshipType: {
403
+ style: "simple",
404
+ },
405
+ limit: {
406
+ style: "form",
407
+ explode: true,
408
+ },
409
+ cursor: {
410
+ style: "form",
411
+ explode: true,
412
+ },
413
+ sortOrder: {
414
+ style: "form",
415
+ explode: true,
416
+ },
417
+ },
418
+ parameters: {
419
+ groupId: z.number().int(),
420
+ groupRelationshipType: z.string(),
421
+ limit: z
422
+ .union([z.literal(10), z.literal(25), z.literal(50), z.literal(100)])
423
+ .optional()
424
+ .default(10),
425
+ cursor: z.string().optional(),
426
+ sortOrder: z.enum(["Asc", "Desc"]).optional().default("Asc"),
427
+ },
428
+ response: Roblox_Groups_Api_Models_Response_GroupRelationshipsV2Response,
429
+ errors: [
430
+ {
431
+ status: 400,
432
+ description: `1: Group is invalid or does not exist.
433
+ 4: Group relationship type or request type is invalid.
434
+ 8: Invalid or missing pagination parameters`,
435
+ },
436
+ {
437
+ status: 401,
438
+ description: `0: Authorization has been denied for this request.`,
439
+ },
440
+ {
441
+ status: 403,
442
+ description: `5: You don't have permission to manage this group's relationships.`,
443
+ },
444
+ ],
445
+ });
296
446
  /**
297
447
  * @api GET https://groups.roblox.com/v2/groups/:groupId/wall/posts
298
448
  * @summary Gets a list of group wall posts.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUsersUseridGroupsRoles = exports.postGroupsGroupidWallPosts = exports.getGroupsGroupidWallPosts = exports.getGroupsGroupidExperiences = exports.getGroups = void 0;
3
+ exports.getUsersUseridGroupsRoles = exports.postGroupsGroupidWallPosts = exports.getGroupsGroupidWallPosts = exports.getGroupsGroupidRelationshipsGrouprelationshiptypeRequests = exports.getGroupsGroupidRelationshipsGrouprelationshiptype = exports.getGroupsGroupidExperiences = exports.getGroups = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const __1 = require("..");
6
6
  const Roblox_Web_Responses_RelatedEntityTypeResponse_Roblox_Web_Responses_Groups_GroupOwnerType_ = zod_1.z.object({
@@ -136,6 +136,35 @@ const Roblox_Groups_Api_Models_Response_UserModel = zod_1.z.object({
136
136
  username: zod_1.z.string(),
137
137
  displayName: zod_1.z.string(),
138
138
  });
139
+ const Roblox_Groups_Api_ShoutResponse = zod_1.z.object({
140
+ body: zod_1.z.string(),
141
+ poster: Roblox_Groups_Api_Models_Response_UserModel,
142
+ created: zod_1.z.string().datetime({ offset: true }),
143
+ updated: zod_1.z.string().datetime({ offset: true }),
144
+ });
145
+ const Roblox_Groups_Api_GroupDetailResponse = zod_1.z.object({
146
+ id: zod_1.z.number().int(),
147
+ name: zod_1.z.string(),
148
+ description: zod_1.z.string(),
149
+ owner: Roblox_Groups_Api_Models_Response_UserModel,
150
+ shout: Roblox_Groups_Api_ShoutResponse,
151
+ memberCount: zod_1.z.number().int(),
152
+ isBuildersClubOnly: zod_1.z.boolean(),
153
+ publicEntryAllowed: zod_1.z.boolean(),
154
+ isLocked: zod_1.z.boolean(),
155
+ hasVerifiedBadge: zod_1.z.boolean(),
156
+ hasSocialModules: zod_1.z.boolean(),
157
+ });
158
+ const Roblox_Web_WebAPI_Models_ApiPageResponse_Roblox_Groups_Api_GroupDetailResponse_ = zod_1.z.object({
159
+ previousPageCursor: zod_1.z.string(),
160
+ nextPageCursor: zod_1.z.string(),
161
+ data: zod_1.z.array(Roblox_Groups_Api_GroupDetailResponse),
162
+ });
163
+ const Roblox_Groups_Api_Models_Response_GroupRelationshipsV2Response = zod_1.z.object({
164
+ groupId: zod_1.z.number().int(),
165
+ relationshipType: zod_1.z.enum(['Allies', 'Enemies']),
166
+ groupResponses: Roblox_Web_WebAPI_Models_ApiPageResponse_Roblox_Groups_Api_GroupDetailResponse_,
167
+ });
139
168
  const Roblox_Groups_Api_GroupRoleResponse = zod_1.z.object({
140
169
  id: zod_1.z.number().int(),
141
170
  name: zod_1.z.string(),
@@ -282,6 +311,122 @@ exports.getGroupsGroupidExperiences = (0, __1.endpoint)({
282
311
  },
283
312
  ],
284
313
  });
314
+ /**
315
+ * @api GET https://groups.roblox.com/v2/groups/:groupId/relationships/:groupRelationshipType
316
+ * @summary Gets a group's relationships with cursor-based pagination.
317
+ * @param groupId The group Id.
318
+ * @param groupRelationshipType The group relationship type, enemies or allies.
319
+ * @param limit The number of results per request.
320
+ * @param cursor The paging cursor for the previous or next page.
321
+ * @param sortOrder The order the results are sorted in.
322
+ */
323
+ exports.getGroupsGroupidRelationshipsGrouprelationshiptype = (0, __1.endpoint)({
324
+ method: 'GET',
325
+ path: '/v2/groups/:groupId/relationships/:groupRelationshipType',
326
+ baseUrl: 'https://groups.roblox.com',
327
+ requestFormat: 'json',
328
+ serializationMethod: {
329
+ groupId: {
330
+ style: 'simple',
331
+ },
332
+ groupRelationshipType: {
333
+ style: 'simple',
334
+ },
335
+ limit: {
336
+ style: 'form',
337
+ explode: true,
338
+ },
339
+ cursor: {
340
+ style: 'form',
341
+ explode: true,
342
+ },
343
+ sortOrder: {
344
+ style: 'form',
345
+ explode: true,
346
+ },
347
+ },
348
+ parameters: {
349
+ groupId: zod_1.z.number().int(),
350
+ groupRelationshipType: zod_1.z.string(),
351
+ limit: zod_1.z
352
+ .union([zod_1.z.literal(10), zod_1.z.literal(25), zod_1.z.literal(50), zod_1.z.literal(100)])
353
+ .optional()
354
+ .default(10),
355
+ cursor: zod_1.z.string().optional(),
356
+ sortOrder: zod_1.z.enum(['Asc', 'Desc']).optional().default('Asc'),
357
+ },
358
+ response: Roblox_Groups_Api_Models_Response_GroupRelationshipsV2Response,
359
+ errors: [
360
+ {
361
+ status: 400,
362
+ description: `1: Group is invalid or does not exist.
363
+ 4: Group relationship type or request type is invalid.
364
+ 8: Invalid or missing pagination parameters`,
365
+ },
366
+ ],
367
+ });
368
+ /**
369
+ * @api GET https://groups.roblox.com/v2/groups/:groupId/relationships/:groupRelationshipType/requests
370
+ * @summary Gets a group's relationship requests with cursor-based pagination.
371
+ * @param groupId The group Id.
372
+ * @param groupRelationshipType The group relationship type of the request, only allies are supported.
373
+ * @param limit The number of results per request.
374
+ * @param cursor The paging cursor for the previous or next page.
375
+ * @param sortOrder The order the results are sorted in.
376
+ */
377
+ exports.getGroupsGroupidRelationshipsGrouprelationshiptypeRequests = (0, __1.endpoint)({
378
+ method: 'GET',
379
+ path: '/v2/groups/:groupId/relationships/:groupRelationshipType/requests',
380
+ baseUrl: 'https://groups.roblox.com',
381
+ requestFormat: 'json',
382
+ serializationMethod: {
383
+ groupId: {
384
+ style: 'simple',
385
+ },
386
+ groupRelationshipType: {
387
+ style: 'simple',
388
+ },
389
+ limit: {
390
+ style: 'form',
391
+ explode: true,
392
+ },
393
+ cursor: {
394
+ style: 'form',
395
+ explode: true,
396
+ },
397
+ sortOrder: {
398
+ style: 'form',
399
+ explode: true,
400
+ },
401
+ },
402
+ parameters: {
403
+ groupId: zod_1.z.number().int(),
404
+ groupRelationshipType: zod_1.z.string(),
405
+ limit: zod_1.z
406
+ .union([zod_1.z.literal(10), zod_1.z.literal(25), zod_1.z.literal(50), zod_1.z.literal(100)])
407
+ .optional()
408
+ .default(10),
409
+ cursor: zod_1.z.string().optional(),
410
+ sortOrder: zod_1.z.enum(['Asc', 'Desc']).optional().default('Asc'),
411
+ },
412
+ response: Roblox_Groups_Api_Models_Response_GroupRelationshipsV2Response,
413
+ errors: [
414
+ {
415
+ status: 400,
416
+ description: `1: Group is invalid or does not exist.
417
+ 4: Group relationship type or request type is invalid.
418
+ 8: Invalid or missing pagination parameters`,
419
+ },
420
+ {
421
+ status: 401,
422
+ description: `0: Authorization has been denied for this request.`,
423
+ },
424
+ {
425
+ status: 403,
426
+ description: `5: You don't have permission to manage this group's relationships.`,
427
+ },
428
+ ],
429
+ });
285
430
  /**
286
431
  * @api GET https://groups.roblox.com/v2/groups/:groupId/wall/posts
287
432
  * @summary Gets a list of group wall posts.
@@ -29,9 +29,11 @@ const Roblox_TwoStepVerification_Api_MetadataResponse = z.object({
29
29
  isSettingsTabRedesignEnabled: z.boolean(),
30
30
  twoStepCopyTextEnrollmentStatus: z.number().int(),
31
31
  isEppUIEnabled: z.boolean(),
32
+ isEppRecoveryCodesEnabled: z.boolean(),
32
33
  maskedUserEmail: z.string(),
33
34
  isUserU13: z.boolean(),
34
35
  isDelayedUiEnabled: z.boolean(),
36
+ is2svRecoveryEnabled: z.boolean(),
35
37
  });
36
38
  const Roblox_TwoStepVerification_Api_UserConfigurationMethod = z.object({
37
39
  mediaType: z.enum([
@@ -31,9 +31,11 @@ const Roblox_TwoStepVerification_Api_MetadataResponse = zod_1.z.object({
31
31
  isSettingsTabRedesignEnabled: zod_1.z.boolean(),
32
32
  twoStepCopyTextEnrollmentStatus: zod_1.z.number().int(),
33
33
  isEppUIEnabled: zod_1.z.boolean(),
34
+ isEppRecoveryCodesEnabled: zod_1.z.boolean(),
34
35
  maskedUserEmail: zod_1.z.string(),
35
36
  isUserU13: zod_1.z.boolean(),
36
37
  isDelayedUiEnabled: zod_1.z.boolean(),
38
+ is2svRecoveryEnabled: zod_1.z.boolean(),
37
39
  });
38
40
  const Roblox_TwoStepVerification_Api_UserConfigurationMethod = zod_1.z.object({
39
41
  mediaType: zod_1.z.enum([
package/lib/index.js CHANGED
@@ -67,7 +67,7 @@ function prepareRequestUrl(endpoint, extendedParams) {
67
67
  const pathParamPattern = new RegExp(`:${key}`);
68
68
  // Check if this is a path parameter
69
69
  if (pathParamPattern.test(processedPath)) {
70
- processedPath = processedPath.replace(pathParamPattern, String(value));
70
+ processedPath = processedPath.replace(pathParamPattern, encodeURIComponent(String(value)));
71
71
  usedPathParams.add(key);
72
72
  }
73
73
  }
@@ -8,6 +8,8 @@
8
8
  * @param body
9
9
  * @param universeId The identifier of the experience in which you want to send your messages to. You can [copy your experience's Universe ID](/cloud/guides/usage-messaging.md#publishing-messages-to-live-servers) on **Creator Dashboard**.
10
10
  * @param topic The topic that you want to publish your message to, with up to 80 characters.
11
+ * @see POST https://apis.roblox.com/cloud/v2/universes/{universe_id}:publishMessage
12
+ * @deprecated Prefer the v2 alternative(s) listed above.
11
13
  */
12
14
  export declare const postUniversesUniverseIdTopicsTopic: import("../..").EndpointGeneric<{
13
15
  universeId: number;
@@ -14,6 +14,8 @@ const PublishRequest = zod_1.z.object({ message: zod_1.z.string().nullable() });
14
14
  * @param body
15
15
  * @param universeId The identifier of the experience in which you want to send your messages to. You can [copy your experience's Universe ID](/cloud/guides/usage-messaging.md#publishing-messages-to-live-servers) on **Creator Dashboard**.
16
16
  * @param topic The topic that you want to publish your message to, with up to 80 characters.
17
+ * @see POST https://apis.roblox.com/cloud/v2/universes/{universe_id}:publishMessage
18
+ * @deprecated Prefer the v2 alternative(s) listed above.
17
19
  */
18
20
  exports.postUniversesUniverseIdTopicsTopic = (0, __1.endpoint)({
19
21
  method: 'POST',
@@ -3313,11 +3313,6 @@ scopes it has or who created it.
3313
3313
  * Their inventory can still be viewed with an OAuth2 token if the target
3314
3314
  user authorizes an app requesting permissions for the
3315
3315
  `user.inventory-item:read` scope.
3316
-
3317
- Rate Limits:
3318
- * API Keys - 100 requests/minute per API key owner (can be user or group).
3319
- Rate limits are enforced across all of an owner's API keys.
3320
- * OAuth2 Tokens - 20 requests/minute per OAuth2 access token
3321
3316
  *
3322
3317
  * **Scopes:** `user.inventory-item:read`
3323
3318
  * **Engine:** Usable with HttpService
@@ -3883,11 +3883,6 @@ scopes it has or who created it.
3883
3883
  * Their inventory can still be viewed with an OAuth2 token if the target
3884
3884
  user authorizes an app requesting permissions for the
3885
3885
  `user.inventory-item:read` scope.
3886
-
3887
- Rate Limits:
3888
- * API Keys - 100 requests/minute per API key owner (can be user or group).
3889
- Rate limits are enforced across all of an owner's API keys.
3890
- * OAuth2 Tokens - 20 requests/minute per OAuth2 access token
3891
3886
  *
3892
3887
  * **Scopes:** `user.inventory-item:read`
3893
3888
  * **Engine:** Usable with HttpService
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rozod",
3
- "version": "6.4.2",
3
+ "version": "6.5.0",
4
4
  "description": "A TypeScript wrapper for the Roblox API",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",