rozod 6.0.0 → 6.0.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 CHANGED
@@ -6,7 +6,7 @@
6
6
  <h4 align="center">Type-safe Roblox API and OpenCloud client for TypeScript</h4>
7
7
 
8
8
  <p align="center">
9
- <a href="https://www.npmjs.com/package/rozod"><img alt="npm bundle size" src="https://img.shields.io/bundlephobia/minzip/rozod?style=for-the-badge"></a>
9
+ <a href="https://www.npmjs.com/package/rozod"><img alt="npm bundle size" src="https://img.shields.io/bundlephobia/min/rozod?style=for-the-badge"></a>
10
10
  <a href="https://www.npmjs.com/package/rozod"><img alt="npm" src="https://img.shields.io/npm/v/rozod?style=for-the-badge"></a>
11
11
  <a href="https://www.npmjs.com/package/rozod"><img alt="npm" src="https://img.shields.io/npm/dt/rozod?style=for-the-badge"></a>
12
12
  </p>
@@ -24,16 +24,22 @@
24
24
  ---
25
25
 
26
26
  ## About
27
- `RoZod` makes working with Roblox APIs simple and type-safe in TypeScript. With just a few lines of code, you can fetch data from both traditional Roblox web APIs and the newer OpenCloud APIs with full type safety.
27
+
28
+ `RoZod` makes working with Roblox APIs simple and type-safe in TypeScript. With **650+ classic Roblox web API endpoints** and **95+ OpenCloud endpoints** (all code-generated from official Roblox documentation), you get comprehensive coverage of virtually every available Roblox API with full type safety.
29
+
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.
28
31
 
29
32
  ## Features
30
33
 
31
34
  - ✨ **Simple Interface** - Easy to understand API with minimal boilerplate
32
35
  - 🔒 **Type Safety** - Complete TypeScript type safety for requests and responses
33
- - 📚 **Comprehensive API Coverage** - Access to both traditional Roblox web APIs and OpenCloud APIs
36
+ - 📚 **750+ Total Endpoints** - 650+ classic web APIs + 95+ OpenCloud APIs, all code-generated from official docs
37
+ - 🚀 **Production Ready** - Battle-tested in applications serving 800,000+ users
34
38
  - 🔄 **Pagination Helpers** - Easy tools for handling paginated responses
35
39
  - 🔁 **Batch Processing** - Split large requests automatically to avoid API limits
40
+ - 🌐 **Universal Runtime Support** - Works seamlessly in NodeJS, Bun, Deno, and browsers
36
41
  - 🔍 **Custom Endpoints** - Define your own endpoints with full type safety
42
+ - 🧩 **Smart Error Handling** - Choose between safe unions or throw-on-error
37
43
 
38
44
  ## Installation
39
45
 
@@ -53,6 +59,9 @@ import { getUsersUserdetails } from 'rozod/lib/endpoints/usersv1';
53
59
 
54
60
  // Fetch user details with full type safety
55
61
  const userInfo = await fetchApi(getUsersUserdetails, { userIds: [1, 123456] });
62
+ if (isAnyErrorResponse(userInfo)) {
63
+ return;
64
+ }
56
65
  console.log(userInfo.data[0].displayName); // Properly typed!
57
66
  ```
58
67
 
@@ -88,8 +97,8 @@ import { getGroupsGroupidWallPosts } from 'rozod/lib/endpoints/groupsv2';
88
97
  // Process pages as they arrive
89
98
  const pages = fetchApiPagesGenerator(getGroupsGroupidWallPosts, { groupId: 11479637 });
90
99
  for await (const page of pages) {
91
- console.log(`Processing page with ${page.data.length} posts`);
92
- // Do something with this page
100
+ console.log(`Processing page with ${page.data.length} posts`);
101
+ // Do something with this page
93
102
  }
94
103
  ```
95
104
 
@@ -101,13 +110,47 @@ import { getGamesIcons } from 'rozod/lib/endpoints/gamesv1';
101
110
 
102
111
  // Will automatically split into smaller batches of 100 universeIds per request
103
112
  const data = await fetchApiSplit(
104
- getGamesIcons,
105
- { universeIds: [1, 2, 3, 4, 5, /* many more IDs */] },
106
- { universeIds: 100 }
113
+ getGamesIcons,
114
+ { universeIds: [1, 2, 3, 4, 5 /* many more IDs */] },
115
+ { universeIds: 100 },
107
116
  );
108
117
  console.log(data);
109
118
  ```
110
119
 
120
+ ### Handling Errors
121
+
122
+ By default, requests return either the success type or a simple `AnyError`. Use the tiny helper to check:
123
+
124
+ ```ts
125
+ import { fetchApi, isAnyErrorResponse } from 'rozod';
126
+ import { getGamesIcons } from 'rozod/lib/endpoints/gamesv1';
127
+
128
+ const res = await fetchApi(getGamesIcons, { universeIds: [1534453623] });
129
+ if (isAnyErrorResponse(res)) {
130
+ console.error(res.message);
131
+ } else {
132
+ console.log(res.data);
133
+ }
134
+ ```
135
+
136
+ Prefer a straight try/catch? Enable throwing:
137
+
138
+ ```ts
139
+ try {
140
+ const res = await fetchApi(getGamesIcons, { universeIds: [1534453623] }, { throwOnError: true });
141
+ console.log(res.data);
142
+ } catch (err) {
143
+ console.error((err as Error).message);
144
+ }
145
+ ```
146
+
147
+ Need the raw Response? Use `returnRaw: true`:
148
+
149
+ ```ts
150
+ const resp = await fetchApi(getGamesIcons, { universeIds: [1534453623] }, { returnRaw: true });
151
+ const json = await resp.json();
152
+ ```
153
+
111
154
  ## OpenCloud
112
155
 
113
156
  RoZod supports Roblox's newer OpenCloud APIs with the same easy interface:
@@ -117,8 +160,8 @@ import { fetchApi } from 'rozod';
117
160
  import { v2 } from 'rozod/lib/opencloud';
118
161
 
119
162
  // Get universe details through OpenCloud
120
- const universeInfo = await fetchApi(v2.getCloudV2UniversesUniverseId, {
121
- universe_id: '123456789'
163
+ const universeInfo = await fetchApi(v2.getCloudV2UniversesUniverseId, {
164
+ universe_id: '123456789',
122
165
  });
123
166
 
124
167
  // Access typed properties
@@ -133,12 +176,110 @@ import { fetchApi } from 'rozod';
133
176
  import { getCloudV2UniversesUniverseIdDataStoresDataStoreIdEntries } from 'rozod/lib/opencloud/v2/cloud';
134
177
 
135
178
  // Get DataStore entries with type safety
136
- const dataStoreEntries = await fetchApi(
137
- getCloudV2UniversesUniverseIdDataStoresDataStoreIdEntries,
138
- {
139
- universe_id: '123456789',
140
- data_store_id: 'MyStore'
179
+ const dataStoreEntries = await fetchApi(getCloudV2UniversesUniverseIdDataStoresDataStoreIdEntries, {
180
+ universe_id: '123456789',
181
+ data_store_id: 'MyStore',
182
+ });
183
+ ```
184
+
185
+ ## Authentication
186
+
187
+ RoZod handles Roblox authentication automatically with comprehensive security features:
188
+
189
+ ### Browser Environments
190
+
191
+ In browsers, authentication works automatically when users are logged into Roblox:
192
+
193
+ ```ts
194
+ import { fetchApi } from 'rozod';
195
+ import { getUsersUserdetails } from 'rozod/lib/endpoints/usersv1';
196
+
197
+ // Cookies are sent automatically - no setup required!
198
+ const userInfo = await fetchApi(getUsersUserdetails, { userIds: [123456] });
199
+ ```
200
+
201
+ ### Server Environments (Node.js/Bun/Deno)
202
+
203
+ For server environments, you need to provide the `.ROBLOSECURITY` cookie manually:
204
+
205
+ ```ts
206
+ import { fetchApi } from 'rozod';
207
+ import { getUsersUserdetails } from 'rozod/lib/endpoints/usersv1';
208
+
209
+ const userInfo = await fetchApi(
210
+ getUsersUserdetails,
211
+ { userIds: [123456] },
212
+ {
213
+ headers: {
214
+ 'Cookie': '.ROBLOSECURITY=your_cookie_here'
215
+ }
216
+ }
217
+ );
218
+ ```
219
+
220
+ ### Security Features
221
+
222
+ RoZod automatically handles advanced Roblox security requirements:
223
+
224
+ - **✅ XCSRF Token Management** - Automatic CSRF token retrieval and caching
225
+ - **✅ Hardware-Backed Authentication** - Full HBA signature support
226
+ - **✅ Challenge Handling** - Captchas, 2FA, and other authentication challenges
227
+ - **✅ Cookie Security** - Secure cookie parsing and validation
228
+
229
+ ### Challenge Handling
230
+
231
+ For advanced authentication challenges (captchas, 2FA), set up a global challenge handler:
232
+
233
+ ```ts
234
+ import { setHandleGenericChallenge } from 'rozod';
235
+
236
+ setHandleGenericChallenge(async (challenge) => {
237
+ // Handle captcha, 2FA, or other challenges
238
+ // Return the challenge response or undefined to skip
239
+ if (challenge.challengeType === 'captcha') {
240
+ const solution = await solveCaptcha(challenge.challengeId);
241
+ return {
242
+ challengeType: challenge.challengeType,
243
+ challengeId: challenge.challengeId,
244
+ challengeBase64Metadata: solution
245
+ };
246
+ }
247
+ });
248
+ ```
249
+
250
+ ### Hardware-Backed Authentication (Advanced)
251
+
252
+ For Node.js environments requiring custom HBA keys:
253
+
254
+ ```ts
255
+ import { changeHBAKeys } from 'rozod';
256
+
257
+ // Provide your own crypto key pair for HBA signatures
258
+ const keyPair = await crypto.subtle.generateKey(
259
+ { name: 'ECDSA', namedCurve: 'P-256' },
260
+ true,
261
+ ['sign', 'verify']
262
+ );
263
+
264
+ changeHBAKeys(keyPair);
265
+ ```
266
+
267
+ ### OpenCloud Authentication
268
+
269
+ OpenCloud APIs require API keys in headers:
270
+
271
+ ```ts
272
+ import { fetchApi } from 'rozod';
273
+ import { v2 } from 'rozod/lib/opencloud';
274
+
275
+ const universeInfo = await fetchApi(
276
+ v2.getCloudV2UniversesUniverseId,
277
+ { universe_id: '123456789' },
278
+ {
279
+ headers: {
280
+ 'x-api-key': 'your_opencloud_api_key_here'
141
281
  }
282
+ }
142
283
  );
143
284
  ```
144
285
 
@@ -156,11 +297,11 @@ const myCustomEndpoint = endpoint({
156
297
  baseUrl: 'https://my-api.example.com',
157
298
  parameters: {
158
299
  customId: z.string(),
159
- optional: z.string().optional()
300
+ optional: z.string().optional(),
160
301
  },
161
302
  response: z.object({
162
303
  success: z.boolean(),
163
- data: z.array(z.string())
304
+ data: z.array(z.string()),
164
305
  }),
165
306
  });
166
307
 
@@ -168,7 +309,9 @@ const response = await fetchApi(myCustomEndpoint, { customId: '123' });
168
309
  ```
169
310
 
170
311
  ## Credits
312
+
171
313
  This repository is maintained by Alrovi ApS, the company behind RoGold.
172
314
 
173
315
  ## Disclaimer
316
+
174
317
  RoZod is not affiliated with, maintained, authorized, endorsed, or sponsored by Roblox Corporation or any of its affiliates.
@@ -344,7 +344,7 @@ export const getSponsoredCampaignsMultiGetCanUserSponsor = endpoint({
344
344
  campaignTargetType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]),
345
345
  campaignTargetIds: z.array(z.number()),
346
346
  },
347
- response: z.record(z.string(), z.boolean()),
347
+ response: z.boolean(),
348
348
  errors: [
349
349
  {
350
350
  status: 400,
@@ -147,7 +147,7 @@ const Roblox_Authentication_Api_Models_Request_ExternalAccessRequest = z
147
147
  .object({
148
148
  authenticationProof: z.string(),
149
149
  identityProviderPlatformType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]),
150
- additionalInfoPayload: z.record(z.string(), z.object({})),
150
+ additionalInfoPayload: z.object({}),
151
151
  })
152
152
  .passthrough();
153
153
  const Roblox_Authentication_Api_Models_Response_ExternalIdentityGateway_ExternalIdentityAccessResponse = z.object({
@@ -169,7 +169,7 @@ const Roblox_Authentication_Api_Models_Request_ExternalLoginRequest = z
169
169
  z.literal(8),
170
170
  z.literal(999),
171
171
  ]),
172
- additionalData: z.record(z.string(), z.object({})),
172
+ additionalData: z.object({}),
173
173
  authenticationProof: z.string(),
174
174
  })
175
175
  .passthrough();
@@ -194,7 +194,7 @@ const Roblox_Authentication_Api_Models_Request_ExternalLoginAndLinkRequest = z
194
194
  password: z.string(),
195
195
  authenticationProof: z.string(),
196
196
  IdentityProviderPlatformType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]),
197
- additionalInfoPayload: z.record(z.string(), z.object({})),
197
+ additionalInfoPayload: z.object({}),
198
198
  })
199
199
  .passthrough();
200
200
  const Roblox_Authentication_Api_Models_Request_ExternalSignupRequest = z
@@ -205,13 +205,13 @@ const Roblox_Authentication_Api_Models_Request_ExternalSignupRequest = z
205
205
  locale: z.string(),
206
206
  authenticationProof: z.string(),
207
207
  IdentityProviderPlatformType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]),
208
- additionalInfoPayload: z.record(z.string(), z.object({})),
208
+ additionalInfoPayload: z.object({}),
209
209
  })
210
210
  .passthrough();
211
211
  const Roblox_Authentication_Api_Models_Request_ExternalUnlinkRequest = z
212
212
  .object({
213
213
  IdentityProviderPlatformType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]),
214
- additionalInfoPayload: z.record(z.string(), z.object({})),
214
+ additionalInfoPayload: z.object({}),
215
215
  })
216
216
  .passthrough();
217
217
  const Roblox_Authentication_Api_Models_Request_IdentityVerificationLoginRequest = z.object({
@@ -523,7 +523,7 @@ export const getAssetToCategory = endpoint({
523
523
  path: '/v1/asset-to-category',
524
524
  baseUrl: 'https://catalog.roblox.com',
525
525
  requestFormat: 'json',
526
- response: z.record(z.string(), z.number().int()),
526
+ response: z.number().int(),
527
527
  errors: [],
528
528
  });
529
529
  /**
@@ -535,7 +535,7 @@ export const getAssetToSubcategory = endpoint({
535
535
  path: '/v1/asset-to-subcategory',
536
536
  baseUrl: 'https://catalog.roblox.com',
537
537
  requestFormat: 'json',
538
- response: z.record(z.string(), z.number().int()),
538
+ response: z.number().int(),
539
539
  errors: [],
540
540
  });
541
541
  /**
@@ -1168,7 +1168,7 @@ export const getSubcategories = endpoint({
1168
1168
  path: '/v1/subcategories',
1169
1169
  baseUrl: 'https://catalog.roblox.com',
1170
1170
  requestFormat: 'json',
1171
- response: z.record(z.string(), z.number().int()),
1171
+ response: z.number().int(),
1172
1172
  errors: [],
1173
1173
  });
1174
1174
  /**
@@ -3,7 +3,7 @@ import { endpoint } from '..';
3
3
 
4
4
  const Roblox_EconomyCreatorStats_Api_Models_StatisticsResponse = z.object({
5
5
  dataGranularity: z.union([z.literal(0), z.literal(1), z.literal(2)]),
6
- data: z.record(z.string(), z.array(z.array(z.number()))),
6
+ data: z.array(z.array(z.number())),
7
7
  });
8
8
 
9
9
  /**
@@ -39,7 +39,7 @@ export const getUniversePayoutHistory = endpoint({
39
39
  startDate: z.string(),
40
40
  endDate: z.string(),
41
41
  },
42
- response: z.record(z.string(), Roblox_EngagementPayouts_Api_PayoutResponseModel),
42
+ response: Roblox_EngagementPayouts_Api_PayoutResponseModel,
43
43
  errors: [
44
44
  {
45
45
  status: 400,
@@ -5,7 +5,7 @@ const Roblox_Followings_Api_Models_FollowsByTypeResponse = z.object({
5
5
  followerType: z.union([z.literal(0), z.literal(1)]),
6
6
  followerId: z.number().int(),
7
7
  sourceType: z.union([z.literal(0), z.literal(1)]),
8
- followedSources: z.record(z.string(), z.string().datetime({ offset: true })),
8
+ followedSources: z.string().datetime({ offset: true }),
9
9
  });
10
10
 
11
11
  /**
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * @api GET https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries
3
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
3
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
4
4
  * @param orderedDataStore The name of the target ordered data store.
5
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
5
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
6
6
  * @param max_page_size The maximum number of entries to return. The service may return fewer than this value. The default value is `10`. The maximum value is `100`, and any input above 100 is coerced to `100`.
7
7
  * @param page_token A page token received from a previous `List` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `List` must match the call providing the page token.
8
8
  * @param order_by The enumeration direction. The order by default is ascending. Input a `desc` suffix for descending.
9
- * @param filter The range of qualifying values of entries to return. See [Filters](../../../cloud/guides/data-store-api-handling.md#filters).
9
+ * @param filter The range of qualifying values of entries to return. See [Filters](../../../cloud/guides/data-stores/request-handling.md#filters).
10
10
  * @description Returns a list of entries from an ordered data store.
11
11
  */
12
12
  export declare const getUniversesUniverseIdOrderedDataStoresOrderedDataStoreScopesScopeEntries: import("../..").EndpointGeneric<{
@@ -28,9 +28,9 @@ export declare const getUniversesUniverseIdOrderedDataStoresOrderedDataStoreScop
28
28
  /**
29
29
  * @api POST https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries
30
30
  * @param body
31
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
31
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
32
32
  * @param orderedDataStore The name of the ordered data store.
33
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
33
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
34
34
  * @param id The name of the entry.
35
35
  * @description Creates a new entry with the content value provided.
36
36
  */
@@ -48,9 +48,9 @@ export declare const postUniversesUniverseIdOrderedDataStoresOrderedDataStoreSco
48
48
  }>;
49
49
  /**
50
50
  * @api GET https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries/:entry
51
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
51
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
52
52
  * @param orderedDataStore The name of the ordered data store.
53
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
53
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
54
54
  * @param entry The entry ID.
55
55
  * @description Gets and returns the specified entry.
56
56
  */
@@ -66,9 +66,9 @@ export declare const getUniversesUniverseIdOrderedDataStoresOrderedDataStoreScop
66
66
  }, undefined>;
67
67
  /**
68
68
  * @api DELETE https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries/:entry
69
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
69
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
70
70
  * @param orderedDataStore The name of the ordered data store.
71
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
71
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
72
72
  * @param entry The entry ID.
73
73
  * @description Deletes the specified entry. Unlike standard data stores, which mark entries for deletion, ordered data store entries are deleted immediately.
74
74
  */
@@ -81,11 +81,11 @@ export declare const deleteUniversesUniverseIdOrderedDataStoresOrderedDataStoreS
81
81
  /**
82
82
  * @api PATCH https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries/:entry
83
83
  * @param body
84
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
84
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
85
85
  * @param orderedDataStore The name of the ordered data store.
86
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
86
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
87
87
  * @param entry The entry ID.
88
- * @param allow_missing The flag to allow the creation of an entry if the entry doesn't exist. See [Allow missing flags](../../../cloud/guides/data-store-api-handling.md#allow-missing-flags).
88
+ * @param allow_missing The flag to allow the creation of an entry if the entry doesn't exist. See [Allow missing flags](../../../cloud/guides/data-stores/request-handling.md.md#allow-missing-flags).
89
89
  * @description Updates an entry value and returns the updated entry.
90
90
  */
91
91
  export declare const patchUniversesUniverseIdOrderedDataStoresOrderedDataStoreScopesScopeEntriesEntry: import("../..").EndpointGeneric<{
@@ -104,9 +104,9 @@ export declare const patchUniversesUniverseIdOrderedDataStoresOrderedDataStoreSc
104
104
  /**
105
105
  * @api POST https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries/:entry:increment
106
106
  * @param body
107
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
107
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
108
108
  * @param orderedDataStore The name of the ordered data store.
109
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
109
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
110
110
  * @param entry The entry ID.
111
111
  * @description Increments the value of the key by the provided amount and returns the updated entry.
112
112
 
@@ -17,13 +17,13 @@ const UpdateEntryRequest = zod_1.z.object({ value: zod_1.z.number().int() });
17
17
  const IncrementEntryRequest = zod_1.z.object({ amount: zod_1.z.number().int() });
18
18
  /**
19
19
  * @api GET https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries
20
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
20
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
21
21
  * @param orderedDataStore The name of the target ordered data store.
22
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
22
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
23
23
  * @param max_page_size The maximum number of entries to return. The service may return fewer than this value. The default value is `10`. The maximum value is `100`, and any input above 100 is coerced to `100`.
24
24
  * @param page_token A page token received from a previous `List` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `List` must match the call providing the page token.
25
25
  * @param order_by The enumeration direction. The order by default is ascending. Input a `desc` suffix for descending.
26
- * @param filter The range of qualifying values of entries to return. See [Filters](../../../cloud/guides/data-store-api-handling.md#filters).
26
+ * @param filter The range of qualifying values of entries to return. See [Filters](../../../cloud/guides/data-stores/request-handling.md#filters).
27
27
  * @description Returns a list of entries from an ordered data store.
28
28
  */
29
29
  exports.getUniversesUniverseIdOrderedDataStoresOrderedDataStoreScopesScopeEntries = (0, __1.endpoint)({
@@ -68,9 +68,9 @@ exports.getUniversesUniverseIdOrderedDataStoresOrderedDataStoreScopesScopeEntrie
68
68
  /**
69
69
  * @api POST https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries
70
70
  * @param body
71
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
71
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
72
72
  * @param orderedDataStore The name of the ordered data store.
73
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
73
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
74
74
  * @param id The name of the entry.
75
75
  * @description Creates a new entry with the content value provided.
76
76
  */
@@ -115,9 +115,9 @@ exports.postUniversesUniverseIdOrderedDataStoresOrderedDataStoreScopesScopeEntri
115
115
  });
116
116
  /**
117
117
  * @api GET https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries/:entry
118
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
118
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
119
119
  * @param orderedDataStore The name of the ordered data store.
120
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
120
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
121
121
  * @param entry The entry ID.
122
122
  * @description Gets and returns the specified entry.
123
123
  */
@@ -160,9 +160,9 @@ exports.getUniversesUniverseIdOrderedDataStoresOrderedDataStoreScopesScopeEntrie
160
160
  });
161
161
  /**
162
162
  * @api DELETE https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries/:entry
163
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
163
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
164
164
  * @param orderedDataStore The name of the ordered data store.
165
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
165
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
166
166
  * @param entry The entry ID.
167
167
  * @description Deletes the specified entry. Unlike standard data stores, which mark entries for deletion, ordered data store entries are deleted immediately.
168
168
  */
@@ -206,11 +206,11 @@ exports.deleteUniversesUniverseIdOrderedDataStoresOrderedDataStoreScopesScopeEnt
206
206
  /**
207
207
  * @api PATCH https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries/:entry
208
208
  * @param body
209
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
209
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
210
210
  * @param orderedDataStore The name of the ordered data store.
211
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
211
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
212
212
  * @param entry The entry ID.
213
- * @param allow_missing The flag to allow the creation of an entry if the entry doesn't exist. See [Allow missing flags](../../../cloud/guides/data-store-api-handling.md#allow-missing-flags).
213
+ * @param allow_missing The flag to allow the creation of an entry if the entry doesn't exist. See [Allow missing flags](../../../cloud/guides/data-stores/request-handling.md.md#allow-missing-flags).
214
214
  * @description Updates an entry value and returns the updated entry.
215
215
  */
216
216
  exports.patchUniversesUniverseIdOrderedDataStoresOrderedDataStoreScopesScopeEntriesEntry = (0, __1.endpoint)({
@@ -261,9 +261,9 @@ exports.patchUniversesUniverseIdOrderedDataStoresOrderedDataStoreScopesScopeEntr
261
261
  /**
262
262
  * @api POST https://apis.roblox.com/cloud/v1/universes/:universeId/orderedDataStores/:orderedDataStore/scopes/:scope/entries/:entry:increment
263
263
  * @param body
264
- * @param universeId The identifier of the experience with ordered data stores that you want to access. See [Universe ID](../../../cloud/guides/data-store-api-handling.md#universe-id) on how to copy it on [Creator Dashboard](https://create.roblox.com/dashboard/creations).
264
+ * @param universeId The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.
265
265
  * @param orderedDataStore The name of the ordered data store.
266
- * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-store-api-handling.md#scopes).
266
+ * @param scope The name of the data store scope. See [Scopes](../../../cloud/guides/data-stores/request-handling.md#scopes).
267
267
  * @param entry The entry ID.
268
268
  * @description Increments the value of the key by the provided amount and returns the updated entry.
269
269