rozod 6.4.2 → 6.5.1
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.
- package/README.md +35 -57
- package/lib/endpoints/authv1.d.ts +4 -1
- package/lib/endpoints/authv1.js +4 -1
- package/lib/endpoints/authv2.d.ts +3 -1
- package/lib/endpoints/authv2.js +3 -1
- package/lib/endpoints/catalogv1.d.ts +1 -0
- package/lib/endpoints/catalogv1.js +1 -0
- package/lib/endpoints/catalogv2.d.ts +1 -0
- package/lib/endpoints/catalogv2.js +1 -0
- package/lib/endpoints/friendsv1.d.ts +6 -1
- package/lib/endpoints/friendsv1.js +6 -1
- package/lib/endpoints/gameinternationalizationv1.d.ts +40 -0
- package/lib/endpoints/gameinternationalizationv1.js +42 -1
- package/lib/endpoints/gamesv1.d.ts +12 -0
- package/lib/endpoints/gamesv1.js +12 -0
- package/lib/endpoints/groupsv1.d.ts +8 -1
- package/lib/endpoints/groupsv1.js +8 -1
- package/lib/endpoints/groupsv2.d.ts +151 -0
- package/lib/endpoints/groupsv2.js +147 -1
- package/lib/endpoints/itemconfigurationv1.d.ts +6 -164
- package/lib/endpoints/itemconfigurationv1.js +7 -165
- package/lib/endpoints/twostepverificationv1.d.ts +2 -0
- package/lib/endpoints/twostepverificationv1.js +2 -0
- package/lib/index.js +1 -1
- package/lib/opencloud/v1/asset-permissions.d.ts +7 -7
- package/lib/opencloud/v1/asset-permissions.js +1 -1
- package/lib/opencloud/v1/assets.d.ts +3 -3
- package/lib/opencloud/v1/assets.js +1 -1
- package/lib/opencloud/v1/datastores-ordered.d.ts +1 -1
- package/lib/opencloud/v1/datastores-ordered.js +1 -1
- package/lib/opencloud/v1/developer-products.d.ts +7 -7
- package/lib/opencloud/v1/developer-products.js +1 -1
- package/lib/opencloud/v1/game-passes.d.ts +6 -6
- package/lib/opencloud/v1/game-passes.js +1 -1
- package/lib/opencloud/v1/messaging.d.ts +2 -0
- package/lib/opencloud/v1/messaging.js +2 -0
- package/lib/opencloud/v1/secrets-store.d.ts +6 -6
- package/lib/opencloud/v1/secrets-store.js +1 -1
- package/lib/opencloud/v2/cloud.d.ts +69 -74
- package/lib/opencloud/v2/cloud.js +11 -16
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
## About
|
|
27
27
|
|
|
28
|
-
`RoZod` makes working with Roblox APIs simple and type-safe in TypeScript. With **
|
|
28
|
+
`RoZod` makes working with Roblox APIs simple and type-safe in TypeScript. With **695+ classic Roblox web API endpoints** and **115+ OpenCloud endpoints** (all code-generated from official Roblox documentation), you get comprehensive coverage of virtually every available Roblox API with full type safety.
|
|
29
29
|
|
|
30
30
|
Perfect for everything from small one-time NodeJS/Bun/Deno scripts to large-scale production applications. RoZod powers [RoGold](https://rogold.live), a browser extension with **800,000+ active users**, handling millions of API requests daily across both frontend extensions and backend workflows.
|
|
31
31
|
|
|
@@ -33,7 +33,7 @@ Perfect for everything from small one-time NodeJS/Bun/Deno scripts to large-scal
|
|
|
33
33
|
|
|
34
34
|
- ✨ **Simple Interface** - Easy to understand API with minimal boilerplate
|
|
35
35
|
- 🔒 **Type Safety** - Complete TypeScript type safety for requests and responses
|
|
36
|
-
- 📚 **
|
|
36
|
+
- 📚 **810+ Total Endpoints** - 695+ classic web APIs + 115+ OpenCloud APIs, all code-generated from official docs
|
|
37
37
|
- 🚀 **Production Ready** - Battle-tested in applications serving 800,000+ users
|
|
38
38
|
- 🔄 **Pagination Helpers** - Easy tools for handling paginated responses
|
|
39
39
|
- 🔁 **Batch Processing** - Split large requests automatically to avoid API limits
|
|
@@ -46,6 +46,8 @@ Perfect for everything from small one-time NodeJS/Bun/Deno scripts to large-scal
|
|
|
46
46
|
```bash
|
|
47
47
|
npm install rozod
|
|
48
48
|
# or
|
|
49
|
+
bun add rozod
|
|
50
|
+
# or
|
|
49
51
|
yarn add rozod
|
|
50
52
|
# or
|
|
51
53
|
pnpm add rozod
|
|
@@ -54,15 +56,15 @@ pnpm add rozod
|
|
|
54
56
|
## Quick Start
|
|
55
57
|
|
|
56
58
|
```ts
|
|
57
|
-
import { fetchApi } from 'rozod';
|
|
58
|
-
import {
|
|
59
|
+
import { fetchApi, isAnyErrorResponse } from 'rozod';
|
|
60
|
+
import { getUsersUserid } from 'rozod/lib/endpoints/usersv1';
|
|
59
61
|
|
|
60
62
|
// Fetch user details with full type safety
|
|
61
|
-
const userInfo = await fetchApi(
|
|
63
|
+
const userInfo = await fetchApi(getUsersUserid, { userId: 1 });
|
|
62
64
|
if (isAnyErrorResponse(userInfo)) {
|
|
63
65
|
return;
|
|
64
66
|
}
|
|
65
|
-
console.log(userInfo.
|
|
67
|
+
console.log(userInfo.displayName); // Properly typed!
|
|
66
68
|
```
|
|
67
69
|
|
|
68
70
|
## Usage
|
|
@@ -70,33 +72,38 @@ console.log(userInfo.data[0].displayName); // Properly typed!
|
|
|
70
72
|
### Fetch a Single Request
|
|
71
73
|
|
|
72
74
|
```ts
|
|
73
|
-
import { fetchApi } from 'rozod';
|
|
74
|
-
import { getGamesIcons } from 'rozod/lib/endpoints/
|
|
75
|
+
import { fetchApi, isAnyErrorResponse } from 'rozod';
|
|
76
|
+
import { getGamesIcons } from 'rozod/lib/endpoints/thumbnailsv1';
|
|
75
77
|
|
|
76
78
|
const response = await fetchApi(getGamesIcons, { universeIds: [1534453623, 65241] });
|
|
77
|
-
|
|
79
|
+
if (!isAnyErrorResponse(response)) {
|
|
80
|
+
console.log(response.data);
|
|
81
|
+
}
|
|
78
82
|
```
|
|
79
83
|
|
|
80
84
|
### Handle Paginated Responses
|
|
81
85
|
|
|
82
86
|
```ts
|
|
83
|
-
import { fetchApiPages } from 'rozod';
|
|
87
|
+
import { fetchApiPages, isAnyErrorResponse } from 'rozod';
|
|
84
88
|
import { getGroupsGroupidWallPosts } from 'rozod/lib/endpoints/groupsv2';
|
|
85
89
|
|
|
86
90
|
// Automatically fetches all pages
|
|
87
|
-
const
|
|
88
|
-
|
|
91
|
+
const pages = await fetchApiPages(getGroupsGroupidWallPosts, { groupId: 11479637 });
|
|
92
|
+
if (!isAnyErrorResponse(pages)) {
|
|
93
|
+
console.log(`Fetched ${pages.length} pages of wall posts`);
|
|
94
|
+
}
|
|
89
95
|
```
|
|
90
96
|
|
|
91
97
|
### Process Pages One at a Time
|
|
92
98
|
|
|
93
99
|
```ts
|
|
94
|
-
import { fetchApiPagesGenerator } from 'rozod';
|
|
100
|
+
import { fetchApiPagesGenerator, isAnyErrorResponse } from 'rozod';
|
|
95
101
|
import { getGroupsGroupidWallPosts } from 'rozod/lib/endpoints/groupsv2';
|
|
96
102
|
|
|
97
103
|
// Process pages as they arrive
|
|
98
104
|
const pages = fetchApiPagesGenerator(getGroupsGroupidWallPosts, { groupId: 11479637 });
|
|
99
105
|
for await (const page of pages) {
|
|
106
|
+
if (isAnyErrorResponse(page)) break;
|
|
100
107
|
console.log(`Processing page with ${page.data.length} posts`);
|
|
101
108
|
// Do something with this page
|
|
102
109
|
}
|
|
@@ -106,7 +113,7 @@ for await (const page of pages) {
|
|
|
106
113
|
|
|
107
114
|
```ts
|
|
108
115
|
import { fetchApiSplit } from 'rozod';
|
|
109
|
-
import { getGamesIcons } from 'rozod/lib/endpoints/
|
|
116
|
+
import { getGamesIcons } from 'rozod/lib/endpoints/thumbnailsv1';
|
|
110
117
|
|
|
111
118
|
// Will automatically split into smaller batches of 100 universeIds per request
|
|
112
119
|
const data = await fetchApiSplit(
|
|
@@ -123,7 +130,7 @@ By default, requests return either the success type or a simple `AnyError`. Use
|
|
|
123
130
|
|
|
124
131
|
```ts
|
|
125
132
|
import { fetchApi, isAnyErrorResponse } from 'rozod';
|
|
126
|
-
import { getGamesIcons } from 'rozod/lib/endpoints/
|
|
133
|
+
import { getGamesIcons } from 'rozod/lib/endpoints/thumbnailsv1';
|
|
127
134
|
|
|
128
135
|
const res = await fetchApi(getGamesIcons, { universeIds: [1534453623] });
|
|
129
136
|
if (isAnyErrorResponse(res)) {
|
|
@@ -156,7 +163,7 @@ const json = await resp.json();
|
|
|
156
163
|
RoZod supports Roblox's newer OpenCloud APIs with the same easy interface:
|
|
157
164
|
|
|
158
165
|
```ts
|
|
159
|
-
import { fetchApi } from 'rozod';
|
|
166
|
+
import { fetchApi, isAnyErrorResponse } from 'rozod';
|
|
160
167
|
import { v2 } from 'rozod/lib/opencloud';
|
|
161
168
|
|
|
162
169
|
// Get universe details through OpenCloud
|
|
@@ -164,9 +171,11 @@ const universeInfo = await fetchApi(v2.getCloudV2UniversesUniverseId, {
|
|
|
164
171
|
universe_id: '123456789',
|
|
165
172
|
});
|
|
166
173
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
console.log(universeInfo.
|
|
174
|
+
if (!isAnyErrorResponse(universeInfo)) {
|
|
175
|
+
// Access typed properties
|
|
176
|
+
console.log(universeInfo.displayName);
|
|
177
|
+
console.log(universeInfo.description);
|
|
178
|
+
}
|
|
170
179
|
```
|
|
171
180
|
|
|
172
181
|
### Access DataStores via OpenCloud
|
|
@@ -192,10 +201,10 @@ In browsers, authentication works automatically when users are logged into Roblo
|
|
|
192
201
|
|
|
193
202
|
```ts
|
|
194
203
|
import { fetchApi } from 'rozod';
|
|
195
|
-
import {
|
|
204
|
+
import { getUsersUserid } from 'rozod/lib/endpoints/usersv1';
|
|
196
205
|
|
|
197
206
|
// Cookies are sent automatically - no setup required!
|
|
198
|
-
const userInfo = await fetchApi(
|
|
207
|
+
const userInfo = await fetchApi(getUsersUserid, { userId: 123456 });
|
|
199
208
|
```
|
|
200
209
|
|
|
201
210
|
### Server Environments (Node.js/Bun/Deno)
|
|
@@ -204,13 +213,13 @@ For server environments, use `configureServer()` to set up authentication once:
|
|
|
204
213
|
|
|
205
214
|
```ts
|
|
206
215
|
import { configureServer, fetchApi } from 'rozod';
|
|
207
|
-
import {
|
|
216
|
+
import { getUsersUserid } from 'rozod/lib/endpoints/usersv1';
|
|
208
217
|
|
|
209
218
|
// Configure once at startup
|
|
210
219
|
configureServer({ cookies: 'your_roblosecurity_cookie_here' });
|
|
211
220
|
|
|
212
221
|
// All subsequent requests automatically include the cookie
|
|
213
|
-
const userInfo = await fetchApi(
|
|
222
|
+
const userInfo = await fetchApi(getUsersUserid, { userId: 123456 });
|
|
214
223
|
```
|
|
215
224
|
|
|
216
225
|
#### Multiple Accounts (Cookie Pool)
|
|
@@ -273,7 +282,7 @@ configureServer({ cookies: '...', userAgents: [] });
|
|
|
273
282
|
For OpenCloud endpoints (`apis.roblox.com`), set your API key once:
|
|
274
283
|
|
|
275
284
|
```ts
|
|
276
|
-
import { configureServer } from 'rozod';
|
|
285
|
+
import { configureServer, fetchApi } from 'rozod';
|
|
277
286
|
import { v2 } from 'rozod/lib/opencloud';
|
|
278
287
|
|
|
279
288
|
// Configure OpenCloud API key
|
|
@@ -315,8 +324,8 @@ You can still pass headers manually per-request if needed:
|
|
|
315
324
|
|
|
316
325
|
```ts
|
|
317
326
|
const userInfo = await fetchApi(
|
|
318
|
-
|
|
319
|
-
{
|
|
327
|
+
getUsersUserid,
|
|
328
|
+
{ userId: 123456 },
|
|
320
329
|
{
|
|
321
330
|
headers: {
|
|
322
331
|
'Cookie': '.ROBLOSECURITY=your_cookie_here'
|
|
@@ -408,37 +417,6 @@ const keyPair = await crypto.subtle.generateKey(
|
|
|
408
417
|
changeHBAKeys(keyPair);
|
|
409
418
|
```
|
|
410
419
|
|
|
411
|
-
### OpenCloud Authentication
|
|
412
|
-
|
|
413
|
-
OpenCloud APIs require API keys. Use `configureServer()` for automatic injection:
|
|
414
|
-
|
|
415
|
-
```ts
|
|
416
|
-
import { configureServer, fetchApi } from 'rozod';
|
|
417
|
-
import { v2 } from 'rozod/lib/opencloud';
|
|
418
|
-
|
|
419
|
-
// Configure once at startup
|
|
420
|
-
configureServer({ cloudKey: 'your_opencloud_api_key_here' });
|
|
421
|
-
|
|
422
|
-
// All OpenCloud requests automatically include x-api-key
|
|
423
|
-
const universeInfo = await fetchApi(v2.getCloudV2UniversesUniverseId, {
|
|
424
|
-
universe_id: '123456789',
|
|
425
|
-
});
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
Or pass headers manually per-request:
|
|
429
|
-
|
|
430
|
-
```ts
|
|
431
|
-
const universeInfo = await fetchApi(
|
|
432
|
-
v2.getCloudV2UniversesUniverseId,
|
|
433
|
-
{ universe_id: '123456789' },
|
|
434
|
-
{
|
|
435
|
-
headers: {
|
|
436
|
-
'x-api-key': 'your_opencloud_api_key_here'
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
);
|
|
440
|
-
```
|
|
441
|
-
|
|
442
420
|
## Custom Endpoints
|
|
443
421
|
|
|
444
422
|
You can define custom endpoints for your specific needs:
|
|
@@ -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() });
|
|
@@ -401,7 +404,7 @@ const Roblox_Authentication_Api_Models_ReferralDataModel = z.object({
|
|
|
401
404
|
});
|
|
402
405
|
const Roblox_Authentication_Api_Models_Request_OtpSessionModel = z.object({
|
|
403
406
|
otpSessionToken: z.string(),
|
|
404
|
-
otpContactType: z.enum(["Unset", "Email"]),
|
|
407
|
+
otpContactType: z.enum(["Unset", "Email", "Phone"]),
|
|
405
408
|
});
|
|
406
409
|
const Roblox_Authentication_Api_Models_Request_AuditContentValue = z.object({
|
|
407
410
|
translationKey: z.string(),
|
package/lib/endpoints/authv1.js
CHANGED
|
@@ -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(),
|
|
@@ -374,7 +377,7 @@ const Roblox_Authentication_Api_Models_ReferralDataModel = zod_1.z.object({
|
|
|
374
377
|
});
|
|
375
378
|
const Roblox_Authentication_Api_Models_Request_OtpSessionModel = zod_1.z.object({
|
|
376
379
|
otpSessionToken: zod_1.z.string(),
|
|
377
|
-
otpContactType: zod_1.z.enum(['Unset', 'Email']),
|
|
380
|
+
otpContactType: zod_1.z.enum(['Unset', 'Email', 'Phone']),
|
|
378
381
|
});
|
|
379
382
|
const Roblox_Authentication_Api_Models_Request_AuditContentValue = zod_1.z.object({
|
|
380
383
|
translationKey: 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([
|
|
@@ -236,7 +238,7 @@ const Roblox_Authentication_Api_Models_ReferralDataModel = z.object({
|
|
|
236
238
|
});
|
|
237
239
|
const Roblox_Authentication_Api_Models_Request_OtpSessionModel = z.object({
|
|
238
240
|
otpSessionToken: z.string(),
|
|
239
|
-
otpContactType: z.enum(["Unset", "Email"]),
|
|
241
|
+
otpContactType: z.enum(["Unset", "Email", "Phone"]),
|
|
240
242
|
});
|
|
241
243
|
const Roblox_Authentication_Api_Models_Request_AuditContentValue = z.object({
|
|
242
244
|
translationKey: z.string(),
|
package/lib/endpoints/authv2.js
CHANGED
|
@@ -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([
|
|
@@ -229,7 +231,7 @@ const Roblox_Authentication_Api_Models_ReferralDataModel = zod_1.z.object({
|
|
|
229
231
|
});
|
|
230
232
|
const Roblox_Authentication_Api_Models_Request_OtpSessionModel = zod_1.z.object({
|
|
231
233
|
otpSessionToken: zod_1.z.string(),
|
|
232
|
-
otpContactType: zod_1.z.enum(['Unset', 'Email']),
|
|
234
|
+
otpContactType: zod_1.z.enum(['Unset', 'Email', 'Phone']),
|
|
233
235
|
});
|
|
234
236
|
const Roblox_Authentication_Api_Models_Request_AuditContentValue = zod_1.z.object({
|
|
235
237
|
translationKey: zod_1.z.string(),
|
|
@@ -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([
|
|
@@ -112,7 +112,6 @@ const Roblox_Friends_Api_Models_Response_UserPresenceResponseModel = z.object({
|
|
|
112
112
|
const Roblox_Friends_Api_Models_Response_UserPresenceResponse = z.object({
|
|
113
113
|
userPresence: Roblox_Friends_Api_Models_Response_UserPresenceResponseModel,
|
|
114
114
|
sortScore: z.number(),
|
|
115
|
-
loggingJoinKey: z.string(),
|
|
116
115
|
id: z.number().int(),
|
|
117
116
|
name: z.string(),
|
|
118
117
|
displayName: z.string(),
|
|
@@ -317,6 +316,7 @@ export const postMyFriendsRefreshQrSession = endpoint({
|
|
|
317
316
|
* @summary Get all users that friend requests with targetUserId using exclusive start paging
|
|
318
317
|
* @param limit The number of results per request.
|
|
319
318
|
* @param cursor The paging cursor for the previous or next page.
|
|
319
|
+
* @param sessionId Optional session identifier.
|
|
320
320
|
* @param friendRequestSort
|
|
321
321
|
*/
|
|
322
322
|
export const getMyFriendsRequests = endpoint({
|
|
@@ -333,6 +333,10 @@ export const getMyFriendsRequests = endpoint({
|
|
|
333
333
|
style: "form",
|
|
334
334
|
explode: true,
|
|
335
335
|
},
|
|
336
|
+
sessionId: {
|
|
337
|
+
style: "form",
|
|
338
|
+
explode: true,
|
|
339
|
+
},
|
|
336
340
|
friendRequestSort: {
|
|
337
341
|
style: "form",
|
|
338
342
|
explode: true,
|
|
@@ -341,6 +345,7 @@ export const getMyFriendsRequests = endpoint({
|
|
|
341
345
|
parameters: {
|
|
342
346
|
limit: z.number().int().optional().default(10),
|
|
343
347
|
cursor: z.string().optional(),
|
|
348
|
+
sessionId: z.string().optional(),
|
|
344
349
|
friendRequestSort: z
|
|
345
350
|
.union([z.literal(0), z.literal(1), z.literal(2)])
|
|
346
351
|
.optional()
|
|
@@ -103,7 +103,6 @@ const Roblox_Friends_Api_Models_Response_UserPresenceResponseModel = zod_1.z.obj
|
|
|
103
103
|
const Roblox_Friends_Api_Models_Response_UserPresenceResponse = zod_1.z.object({
|
|
104
104
|
userPresence: Roblox_Friends_Api_Models_Response_UserPresenceResponseModel,
|
|
105
105
|
sortScore: zod_1.z.number(),
|
|
106
|
-
loggingJoinKey: zod_1.z.string(),
|
|
107
106
|
id: zod_1.z.number().int(),
|
|
108
107
|
name: zod_1.z.string(),
|
|
109
108
|
displayName: zod_1.z.string(),
|
|
@@ -302,6 +301,7 @@ exports.postMyFriendsRefreshQrSession = (0, __1.endpoint)({
|
|
|
302
301
|
* @summary Get all users that friend requests with targetUserId using exclusive start paging
|
|
303
302
|
* @param limit The number of results per request.
|
|
304
303
|
* @param cursor The paging cursor for the previous or next page.
|
|
304
|
+
* @param sessionId Optional session identifier.
|
|
305
305
|
* @param friendRequestSort
|
|
306
306
|
*/
|
|
307
307
|
exports.getMyFriendsRequests = (0, __1.endpoint)({
|
|
@@ -318,6 +318,10 @@ exports.getMyFriendsRequests = (0, __1.endpoint)({
|
|
|
318
318
|
style: 'form',
|
|
319
319
|
explode: true,
|
|
320
320
|
},
|
|
321
|
+
sessionId: {
|
|
322
|
+
style: 'form',
|
|
323
|
+
explode: true,
|
|
324
|
+
},
|
|
321
325
|
friendRequestSort: {
|
|
322
326
|
style: 'form',
|
|
323
327
|
explode: true,
|
|
@@ -326,6 +330,7 @@ exports.getMyFriendsRequests = (0, __1.endpoint)({
|
|
|
326
330
|
parameters: {
|
|
327
331
|
limit: zod_1.z.number().int().optional().default(10),
|
|
328
332
|
cursor: zod_1.z.string().optional(),
|
|
333
|
+
sessionId: zod_1.z.string().optional(),
|
|
329
334
|
friendRequestSort: zod_1.z
|
|
330
335
|
.union([zod_1.z.literal(0), zod_1.z.literal(1), zod_1.z.literal(2)])
|
|
331
336
|
.optional()
|
|
@@ -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),
|
package/lib/endpoints/gamesv1.js
CHANGED
|
@@ -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),
|
|
@@ -44,6 +44,7 @@ const Roblox_Groups_Api_GroupRoleResponse = z.object({
|
|
|
44
44
|
description: z.string(),
|
|
45
45
|
rank: z.number().int(),
|
|
46
46
|
memberCount: z.number().int(),
|
|
47
|
+
isBase: z.boolean(),
|
|
47
48
|
});
|
|
48
49
|
const Roblox_Groups_Api_UserGroupRoleResponse = z.object({
|
|
49
50
|
user: Roblox_Groups_Api_Models_Response_UserModel,
|
|
@@ -249,6 +250,9 @@ const Roblox_Groups_Api_PayoutRequest = z.object({
|
|
|
249
250
|
Recipients: z.array(Roblox_Groups_Api_PayoutRecipientRequest),
|
|
250
251
|
IdempotencyKey: z.string(),
|
|
251
252
|
});
|
|
253
|
+
const Roblox_Groups_Api_OneTimePayoutResponse = z.object({
|
|
254
|
+
status: z.enum(["NotHeld", "Held"]),
|
|
255
|
+
});
|
|
252
256
|
const Roblox_Groups_Api_GroupRelationshipsResponse = z.object({
|
|
253
257
|
groupId: z.number().int(),
|
|
254
258
|
relationshipType: z.enum(["Allies", "Enemies"]),
|
|
@@ -483,6 +487,7 @@ const Roblox_Groups_Api_GroupRoleDetailResponse = z.object({
|
|
|
483
487
|
description: z.string(),
|
|
484
488
|
rank: z.number().int(),
|
|
485
489
|
memberCount: z.number().int(),
|
|
490
|
+
isBase: z.boolean(),
|
|
486
491
|
});
|
|
487
492
|
const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Groups_Api_GroupRoleDetailResponse_ =
|
|
488
493
|
z.object({ data: z.array(Roblox_Groups_Api_GroupRoleDetailResponse) });
|
|
@@ -813,6 +818,8 @@ export const getGroupsGroupidAuditLog = endpoint({
|
|
|
813
818
|
"LeaveGroup",
|
|
814
819
|
"UpdateGroupIcon",
|
|
815
820
|
"UpdateGroupCoverPhoto",
|
|
821
|
+
"AssignRole",
|
|
822
|
+
"UnassignRole",
|
|
816
823
|
])
|
|
817
824
|
.optional(),
|
|
818
825
|
userId: z.number().int().optional(),
|
|
@@ -1989,7 +1996,7 @@ export const postGroupsGroupidPayouts = endpoint({
|
|
|
1989
1996
|
groupId: z.number().int(),
|
|
1990
1997
|
},
|
|
1991
1998
|
body: Roblox_Groups_Api_PayoutRequest,
|
|
1992
|
-
response:
|
|
1999
|
+
response: Roblox_Groups_Api_OneTimePayoutResponse,
|
|
1993
2000
|
errors: [
|
|
1994
2001
|
{
|
|
1995
2002
|
status: 400,
|