rozod 4.4.2 → 4.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.
- package/lib/endpoints/accountinformationv1.d.ts +0 -1
- package/lib/endpoints/authv1.d.ts +216 -7
- package/lib/endpoints/authv1.js +3 -2
- package/lib/endpoints/authv2.d.ts +9 -6
- package/lib/endpoints/authv2.js +1 -0
- package/lib/endpoints/authv3.d.ts +12 -1
- package/lib/endpoints/avatarv1.d.ts +3 -1
- package/lib/endpoints/avatarv2.d.ts +1 -1
- package/lib/endpoints/avatarv3.d.ts +1 -1
- package/lib/endpoints/chatv2.js +3 -65
- package/lib/endpoints/developv2.js +2 -2
- package/lib/endpoints/friendsv1.d.ts +117 -1
- package/lib/endpoints/friendsv1.js +117 -1
- package/lib/endpoints/thumbnailsv1.d.ts +4 -19
- package/lib/endpoints/thumbnailsv1.js +3 -20
- package/lib/endpoints/usersv1.d.ts +6 -0
- package/lib/endpoints/usersv1.js +6 -0
- package/lib/index.js +6 -2
- package/package.json +2 -2
|
@@ -32,7 +32,6 @@ const Roblox_AccountInformation_Api_Models_MetadataResponse = z
|
|
|
32
32
|
isPasswordRequiredForAgingDown: z.boolean(),
|
|
33
33
|
shouldUsePersonaForIdVerification: z.boolean(),
|
|
34
34
|
shouldDisplaySessionManagement: z.boolean(),
|
|
35
|
-
shouldUseSecurityReactUI: z.boolean(),
|
|
36
35
|
})
|
|
37
36
|
.passthrough();
|
|
38
37
|
const Roblox_AccountInformation_Api_Models_PhoneResponse = z
|
|
@@ -16,7 +16,7 @@ const Roblox_Authentication_Api_Models_CanSendCredentialsVerificationMessageResp
|
|
|
16
16
|
.passthrough();
|
|
17
17
|
const Roblox_Authentication_Api_Models_SendCredentialsVerificationMessageRequest = z
|
|
18
18
|
.object({
|
|
19
|
-
credentialType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4)]),
|
|
19
|
+
credentialType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]),
|
|
20
20
|
credentialValue: z.string(),
|
|
21
21
|
password: z.string(),
|
|
22
22
|
})
|
|
@@ -78,7 +78,7 @@ const Roblox_Web_Responses_Users_SkinnyUserResponse = z
|
|
|
78
78
|
.passthrough();
|
|
79
79
|
const Roblox_Authentication_Api_Models_TwoStepVerificationSentResponse = z
|
|
80
80
|
.object({
|
|
81
|
-
mediaType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4)]),
|
|
81
|
+
mediaType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]),
|
|
82
82
|
ticket: z.string(),
|
|
83
83
|
})
|
|
84
84
|
.passthrough();
|
|
@@ -153,6 +153,27 @@ const Roblox_Authentication_Api_Models_Request_ExternalLoginRequest = z
|
|
|
153
153
|
additionalInfoPayload: z.record(z.object({}).passthrough()),
|
|
154
154
|
})
|
|
155
155
|
.passthrough();
|
|
156
|
+
const Roblox_Authentication_Api_Models_Request_ExternalLoginAndLinkRequest = z
|
|
157
|
+
.object({
|
|
158
|
+
ctype: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]),
|
|
159
|
+
cvalue: z.string(),
|
|
160
|
+
password: z.string(),
|
|
161
|
+
authenticationProof: z.string(),
|
|
162
|
+
identityProvider: z.union([z.literal(0), z.literal(1), z.literal(2)]),
|
|
163
|
+
additionalInfoPayload: z.record(z.object({}).passthrough()),
|
|
164
|
+
})
|
|
165
|
+
.passthrough();
|
|
166
|
+
const Roblox_Authentication_Api_Models_Request_ExternalSignupRequest = z
|
|
167
|
+
.object({
|
|
168
|
+
username: z.string(),
|
|
169
|
+
password: z.string(),
|
|
170
|
+
birthday: z.string().datetime({ offset: true }),
|
|
171
|
+
locale: z.string(),
|
|
172
|
+
authenticationProof: z.string(),
|
|
173
|
+
identityProvider: z.union([z.literal(0), z.literal(1), z.literal(2)]),
|
|
174
|
+
additionalInfoPayload: z.record(z.object({}).passthrough()),
|
|
175
|
+
})
|
|
176
|
+
.passthrough();
|
|
156
177
|
const Roblox_Authentication_Api_Models_Request_ExternalUnlinkRequest = z
|
|
157
178
|
.object({
|
|
158
179
|
identityProvider: z.union([z.literal(0), z.literal(1), z.literal(2)]),
|
|
@@ -172,7 +193,7 @@ const Roblox_Authentication_Api_Models_Request_SecureAuthenticationIntentModel =
|
|
|
172
193
|
.passthrough();
|
|
173
194
|
const Roblox_Authentication_Api_Models_LoginRequest = z
|
|
174
195
|
.object({
|
|
175
|
-
ctype: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4)]),
|
|
196
|
+
ctype: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]),
|
|
176
197
|
cvalue: z.string(),
|
|
177
198
|
password: z.string(),
|
|
178
199
|
userId: z.number().int(),
|
|
@@ -186,6 +207,28 @@ const Roblox_Authentication_Api_Models_LoginRequest = z
|
|
|
186
207
|
challengeId: z.string(),
|
|
187
208
|
})
|
|
188
209
|
.passthrough();
|
|
210
|
+
const Roblox_Authentication_Api_Models_Request_DeletePasskeysRequest = z
|
|
211
|
+
.object({ credentialNicknames: z.array(z.string()) })
|
|
212
|
+
.passthrough();
|
|
213
|
+
const Roblox_Authentication_Api_Models_Request_FinishPasskeyRegistrationRequest = z
|
|
214
|
+
.object({
|
|
215
|
+
sessionId: z.string(),
|
|
216
|
+
credentialNickname: z.string(),
|
|
217
|
+
attestationResponse: z.string(),
|
|
218
|
+
})
|
|
219
|
+
.passthrough();
|
|
220
|
+
const Roblox_Authentication_Api_Models_Response_PasskeyCredential = z.object({ nickname: z.string() }).passthrough();
|
|
221
|
+
const Roblox_Authentication_Api_Models_Response_ListPasskeyCredentialResponse = z
|
|
222
|
+
.object({
|
|
223
|
+
credentials: z.array(Roblox_Authentication_Api_Models_Response_PasskeyCredential),
|
|
224
|
+
})
|
|
225
|
+
.passthrough();
|
|
226
|
+
const Roblox_Authentication_Api_Models_Response_StartAuthenticationResponse = z
|
|
227
|
+
.object({ authenticationOptions: z.string(), sessionId: z.string() })
|
|
228
|
+
.passthrough();
|
|
229
|
+
const Roblox_Authentication_Api_Models_Response_StartPasskeyRegistrationResponse = z
|
|
230
|
+
.object({ creationOptions: z.string(), sessionId: z.string() })
|
|
231
|
+
.passthrough();
|
|
189
232
|
const Roblox_Authentication_Api_Models_ReferralDataModel = z
|
|
190
233
|
.object({
|
|
191
234
|
acquisitionTime: z.string().datetime({ offset: true }),
|
|
@@ -335,10 +378,18 @@ const schemas = {
|
|
|
335
378
|
Roblox_Authentication_Api_Models_AccountPinResponse,
|
|
336
379
|
Roblox_Web_WebAPI_ApiEmptyResponseModel,
|
|
337
380
|
Roblox_Authentication_Api_Models_Request_ExternalLoginRequest,
|
|
381
|
+
Roblox_Authentication_Api_Models_Request_ExternalLoginAndLinkRequest,
|
|
382
|
+
Roblox_Authentication_Api_Models_Request_ExternalSignupRequest,
|
|
338
383
|
Roblox_Authentication_Api_Models_Request_ExternalUnlinkRequest,
|
|
339
384
|
Roblox_Authentication_Api_Models_Request_IdentityVerificationLoginRequest,
|
|
340
385
|
Roblox_Authentication_Api_Models_Request_SecureAuthenticationIntentModel,
|
|
341
386
|
Roblox_Authentication_Api_Models_LoginRequest,
|
|
387
|
+
Roblox_Authentication_Api_Models_Request_DeletePasskeysRequest,
|
|
388
|
+
Roblox_Authentication_Api_Models_Request_FinishPasskeyRegistrationRequest,
|
|
389
|
+
Roblox_Authentication_Api_Models_Response_PasskeyCredential,
|
|
390
|
+
Roblox_Authentication_Api_Models_Response_ListPasskeyCredentialResponse,
|
|
391
|
+
Roblox_Authentication_Api_Models_Response_StartAuthenticationResponse,
|
|
392
|
+
Roblox_Authentication_Api_Models_Response_StartPasskeyRegistrationResponse,
|
|
342
393
|
Roblox_Authentication_Api_Models_ReferralDataModel,
|
|
343
394
|
Roblox_Authentication_Api_Models_Request_OtpSessionModel,
|
|
344
395
|
Roblox_Authentication_Api_Models_SignupRequest,
|
|
@@ -540,7 +591,7 @@ export const getCredentialsVerification = endpoint({
|
|
|
540
591
|
},
|
|
541
592
|
},
|
|
542
593
|
parameters: {
|
|
543
|
-
CredentialType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4)]),
|
|
594
|
+
CredentialType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]),
|
|
544
595
|
CredentialValue: z.string(),
|
|
545
596
|
Password: z.string(),
|
|
546
597
|
},
|
|
@@ -673,13 +724,19 @@ export const postExternalLogin = endpoint({
|
|
|
673
724
|
/**
|
|
674
725
|
* @api POST https://auth.roblox.com/v1/external/loginAndLink
|
|
675
726
|
* @summary Logins in a user to Roblox, then links the Roblox account to the external provider ID
|
|
727
|
+
* @param body
|
|
676
728
|
*/
|
|
677
729
|
export const postExternalLoginandlink = endpoint({
|
|
678
730
|
method: 'post' as const,
|
|
679
731
|
path: '/v1/external/loginAndLink',
|
|
680
732
|
baseUrl: 'https://auth.roblox.com',
|
|
681
733
|
requestFormat: 'json' as const,
|
|
682
|
-
|
|
734
|
+
serializationMethod: {
|
|
735
|
+
body: {},
|
|
736
|
+
},
|
|
737
|
+
parameters: {},
|
|
738
|
+
body: Roblox_Authentication_Api_Models_Request_ExternalLoginAndLinkRequest,
|
|
739
|
+
response: Roblox_Authentication_Api_Models_LoginResponse,
|
|
683
740
|
errors: [
|
|
684
741
|
{
|
|
685
742
|
status: 403,
|
|
@@ -690,12 +747,18 @@ export const postExternalLoginandlink = endpoint({
|
|
|
690
747
|
/**
|
|
691
748
|
* @api POST https://auth.roblox.com/v1/external/signup
|
|
692
749
|
* @summary Signs a user up for Roblox and links the account to the authenticated external provider ID
|
|
750
|
+
* @param body
|
|
693
751
|
*/
|
|
694
752
|
export const postExternalSignup = endpoint({
|
|
695
753
|
method: 'post' as const,
|
|
696
754
|
path: '/v1/external/signup',
|
|
697
755
|
baseUrl: 'https://auth.roblox.com',
|
|
698
756
|
requestFormat: 'json' as const,
|
|
757
|
+
serializationMethod: {
|
|
758
|
+
body: {},
|
|
759
|
+
},
|
|
760
|
+
parameters: {},
|
|
761
|
+
body: Roblox_Authentication_Api_Models_Request_ExternalSignupRequest,
|
|
699
762
|
response: z.void(),
|
|
700
763
|
errors: [
|
|
701
764
|
{
|
|
@@ -855,6 +918,150 @@ export const getMetadata = endpoint({
|
|
|
855
918
|
response: Roblox_Authentication_Api_Models_MetadataResponse,
|
|
856
919
|
errors: [],
|
|
857
920
|
});
|
|
921
|
+
/**
|
|
922
|
+
* @api POST https://auth.roblox.com/v1/passkey/DeleteCredentialBatch
|
|
923
|
+
* @summary Disables a batch of credentials for the specified user.
|
|
924
|
+
* @param body The request body!:DisableTwoStepVerificationRequest.
|
|
925
|
+
*/
|
|
926
|
+
export const postPasskeyDeletecredentialbatch = endpoint({
|
|
927
|
+
method: 'post' as const,
|
|
928
|
+
path: '/v1/passkey/DeleteCredentialBatch',
|
|
929
|
+
baseUrl: 'https://auth.roblox.com',
|
|
930
|
+
requestFormat: 'json' as const,
|
|
931
|
+
serializationMethod: {
|
|
932
|
+
body: {},
|
|
933
|
+
},
|
|
934
|
+
parameters: {},
|
|
935
|
+
body: Roblox_Authentication_Api_Models_Request_DeletePasskeysRequest,
|
|
936
|
+
response: z.object({}).passthrough(),
|
|
937
|
+
errors: [
|
|
938
|
+
{
|
|
939
|
+
status: 401,
|
|
940
|
+
description: `0: Authorization has been denied for this request.
|
|
941
|
+
0: An unknown error occurred with the request.`,
|
|
942
|
+
},
|
|
943
|
+
{
|
|
944
|
+
status: 403,
|
|
945
|
+
description: `0: Token Validation Failed`,
|
|
946
|
+
},
|
|
947
|
+
{
|
|
948
|
+
status: 503,
|
|
949
|
+
description: `2: Feature disabled.`,
|
|
950
|
+
},
|
|
951
|
+
],
|
|
952
|
+
});
|
|
953
|
+
/**
|
|
954
|
+
* @api POST https://auth.roblox.com/v1/passkey/FinishRegistration
|
|
955
|
+
* @summary Complete Passkey registration by providing credential creation options.
|
|
956
|
+
* @param body The request body.Roblox.Authentication.Api.Models.Request.FinishPasskeyRegistrationRequest.
|
|
957
|
+
*/
|
|
958
|
+
export const postPasskeyFinishregistration = endpoint({
|
|
959
|
+
method: 'post' as const,
|
|
960
|
+
path: '/v1/passkey/FinishRegistration',
|
|
961
|
+
baseUrl: 'https://auth.roblox.com',
|
|
962
|
+
requestFormat: 'json' as const,
|
|
963
|
+
serializationMethod: {
|
|
964
|
+
body: {},
|
|
965
|
+
},
|
|
966
|
+
parameters: {},
|
|
967
|
+
body: Roblox_Authentication_Api_Models_Request_FinishPasskeyRegistrationRequest,
|
|
968
|
+
response: z.object({}).passthrough(),
|
|
969
|
+
errors: [
|
|
970
|
+
{
|
|
971
|
+
status: 400,
|
|
972
|
+
description: `0: An unknown error occurred with the request.
|
|
973
|
+
3: Invalid security key nickname.`,
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
status: 401,
|
|
977
|
+
description: `0: Authorization has been denied for this request.
|
|
978
|
+
0: An unknown error occurred with the request.`,
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
status: 403,
|
|
982
|
+
description: `0: Token Validation Failed
|
|
983
|
+
3: Invalid security key nickname.`,
|
|
984
|
+
},
|
|
985
|
+
{
|
|
986
|
+
status: 503,
|
|
987
|
+
description: `2: Feature disabled.`,
|
|
988
|
+
},
|
|
989
|
+
],
|
|
990
|
+
});
|
|
991
|
+
/**
|
|
992
|
+
* @api POST https://auth.roblox.com/v1/passkey/ListCredentials
|
|
993
|
+
* @summary List a user's registered Passkeys.
|
|
994
|
+
*/
|
|
995
|
+
export const postPasskeyListcredentials = endpoint({
|
|
996
|
+
method: 'post' as const,
|
|
997
|
+
path: '/v1/passkey/ListCredentials',
|
|
998
|
+
baseUrl: 'https://auth.roblox.com',
|
|
999
|
+
requestFormat: 'json' as const,
|
|
1000
|
+
response: Roblox_Authentication_Api_Models_Response_ListPasskeyCredentialResponse,
|
|
1001
|
+
errors: [
|
|
1002
|
+
{
|
|
1003
|
+
status: 401,
|
|
1004
|
+
description: `0: Authorization has been denied for this request.
|
|
1005
|
+
0: An unknown error occurred with the request.`,
|
|
1006
|
+
},
|
|
1007
|
+
{
|
|
1008
|
+
status: 403,
|
|
1009
|
+
description: `0: Token Validation Failed`,
|
|
1010
|
+
},
|
|
1011
|
+
{
|
|
1012
|
+
status: 503,
|
|
1013
|
+
description: `2: Feature disabled.`,
|
|
1014
|
+
},
|
|
1015
|
+
],
|
|
1016
|
+
});
|
|
1017
|
+
/**
|
|
1018
|
+
* @api POST https://auth.roblox.com/v1/passkey/StartAuthentication
|
|
1019
|
+
* @summary Provides a challenge for the Passkey to authenticate.
|
|
1020
|
+
*/
|
|
1021
|
+
export const postPasskeyStartauthentication = endpoint({
|
|
1022
|
+
method: 'post' as const,
|
|
1023
|
+
path: '/v1/passkey/StartAuthentication',
|
|
1024
|
+
baseUrl: 'https://auth.roblox.com',
|
|
1025
|
+
requestFormat: 'json' as const,
|
|
1026
|
+
response: Roblox_Authentication_Api_Models_Response_StartAuthenticationResponse,
|
|
1027
|
+
errors: [
|
|
1028
|
+
{
|
|
1029
|
+
status: 403,
|
|
1030
|
+
description: `0: Token Validation Failed`,
|
|
1031
|
+
},
|
|
1032
|
+
{
|
|
1033
|
+
status: 503,
|
|
1034
|
+
description: `2: Feature disabled.`,
|
|
1035
|
+
},
|
|
1036
|
+
],
|
|
1037
|
+
});
|
|
1038
|
+
/**
|
|
1039
|
+
* @api POST https://auth.roblox.com/v1/passkey/StartRegistration
|
|
1040
|
+
* @summary Initiates Passkey registration by providing credential creation options.
|
|
1041
|
+
*/
|
|
1042
|
+
export const postPasskeyStartregistration = endpoint({
|
|
1043
|
+
method: 'post' as const,
|
|
1044
|
+
path: '/v1/passkey/StartRegistration',
|
|
1045
|
+
baseUrl: 'https://auth.roblox.com',
|
|
1046
|
+
requestFormat: 'json' as const,
|
|
1047
|
+
response: Roblox_Authentication_Api_Models_Response_StartPasskeyRegistrationResponse,
|
|
1048
|
+
errors: [
|
|
1049
|
+
{
|
|
1050
|
+
status: 401,
|
|
1051
|
+
description: `0: Authorization has been denied for this request.
|
|
1052
|
+
0: An unknown error occurred with the request.`,
|
|
1053
|
+
},
|
|
1054
|
+
{
|
|
1055
|
+
status: 403,
|
|
1056
|
+
description: `0: Token Validation Failed
|
|
1057
|
+
1: Reached limit of pass keys registered.`,
|
|
1058
|
+
},
|
|
1059
|
+
{
|
|
1060
|
+
status: 503,
|
|
1061
|
+
description: `2: Feature disabled.`,
|
|
1062
|
+
},
|
|
1063
|
+
],
|
|
1064
|
+
});
|
|
858
1065
|
/**
|
|
859
1066
|
* @api GET https://auth.roblox.com/v1/passwords/validate
|
|
860
1067
|
* @summary Endpoint for checking if a password is valid.
|
|
@@ -1019,7 +1226,8 @@ export const postSignup = endpoint({
|
|
|
1019
1226
|
{
|
|
1020
1227
|
status: 400,
|
|
1021
1228
|
description: `Bad request
|
|
1022
|
-
16: User agreement ids are null
|
|
1229
|
+
16: User agreement ids are null.
|
|
1230
|
+
21: Empty account switch blob required`,
|
|
1023
1231
|
},
|
|
1024
1232
|
{
|
|
1025
1233
|
status: 403,
|
|
@@ -1034,7 +1242,8 @@ export const postSignup = endpoint({
|
|
|
1034
1242
|
10: Email is invalid.
|
|
1035
1243
|
11: Asset is invalid.
|
|
1036
1244
|
12: Too many attempts. Please wait a bit.
|
|
1037
|
-
17: One time Passcode session was not valid
|
|
1245
|
+
17: One time Passcode session was not valid
|
|
1246
|
+
22: Maximum logged in accounts limit reached.`,
|
|
1038
1247
|
},
|
|
1039
1248
|
{
|
|
1040
1249
|
status: 429,
|
package/lib/endpoints/authv1.js
CHANGED
|
@@ -34,6 +34,7 @@ const Roblox_Authentication_Api_Models_MetadataResponse = zod_1.z
|
|
|
34
34
|
IsUserAgreementsSignupIntegrationEnabled: zod_1.z.boolean(),
|
|
35
35
|
IsKoreaIdVerificationEnabled: zod_1.z.boolean(),
|
|
36
36
|
IsPasswordRequiredForUsernameChange: zod_1.z.boolean(),
|
|
37
|
+
IsPasskeyFeatureEnabled: zod_1.z.boolean(),
|
|
37
38
|
})
|
|
38
39
|
.passthrough();
|
|
39
40
|
const Roblox_Authentication_Api_Models_PasswordValidationResponse = zod_1.z
|
|
@@ -210,7 +211,7 @@ const Roblox_Authentication_Api_Models_LoginRequest = zod_1.z
|
|
|
210
211
|
})
|
|
211
212
|
.passthrough();
|
|
212
213
|
const Roblox_Authentication_Api_Models_Request_DeletePasskeysRequest = zod_1.z
|
|
213
|
-
.object({
|
|
214
|
+
.object({ credentialNicknames: zod_1.z.array(zod_1.z.string()) })
|
|
214
215
|
.passthrough();
|
|
215
216
|
const Roblox_Authentication_Api_Models_Request_FinishPasskeyRegistrationRequest = zod_1.z
|
|
216
217
|
.object({
|
|
@@ -229,7 +230,7 @@ const Roblox_Authentication_Api_Models_Response_StartAuthenticationResponse = zo
|
|
|
229
230
|
.object({ authenticationOptions: zod_1.z.string(), sessionId: zod_1.z.string() })
|
|
230
231
|
.passthrough();
|
|
231
232
|
const Roblox_Authentication_Api_Models_Response_StartPasskeyRegistrationResponse = zod_1.z
|
|
232
|
-
.object({
|
|
233
|
+
.object({ creationOptions: zod_1.z.string(), sessionId: zod_1.z.string() })
|
|
233
234
|
.passthrough();
|
|
234
235
|
const Roblox_Authentication_Api_Models_ReferralDataModel = zod_1.z
|
|
235
236
|
.object({
|
|
@@ -9,7 +9,7 @@ const Roblox_Authentication_Api_Models_CanSendCredentialsVerificationMessageResp
|
|
|
9
9
|
.passthrough();
|
|
10
10
|
const Roblox_Authentication_Api_Models_SendCredentialsVerificationMessageRequest = z
|
|
11
11
|
.object({
|
|
12
|
-
credentialType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4)]),
|
|
12
|
+
credentialType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]),
|
|
13
13
|
credentialValue: z.string(),
|
|
14
14
|
password: z.string(),
|
|
15
15
|
})
|
|
@@ -47,6 +47,7 @@ const Roblox_Authentication_Api_Models_PasswordResetModel = z
|
|
|
47
47
|
passwordRepeated: z.string(),
|
|
48
48
|
twoStepVerificationChallengeId: z.string(),
|
|
49
49
|
twoStepVerificationToken: z.string(),
|
|
50
|
+
accountBlob: z.string(),
|
|
50
51
|
})
|
|
51
52
|
.passthrough();
|
|
52
53
|
const Roblox_Web_Responses_Users_SkinnyUserResponse = z
|
|
@@ -54,7 +55,7 @@ const Roblox_Web_Responses_Users_SkinnyUserResponse = z
|
|
|
54
55
|
.passthrough();
|
|
55
56
|
const Roblox_Authentication_Api_Models_TwoStepVerificationSentResponse = z
|
|
56
57
|
.object({
|
|
57
|
-
mediaType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4)]),
|
|
58
|
+
mediaType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]),
|
|
58
59
|
ticket: z.string(),
|
|
59
60
|
})
|
|
60
61
|
.passthrough();
|
|
@@ -152,7 +153,7 @@ const Roblox_Authentication_Api_Models_Request_SecureAuthenticationIntentModel =
|
|
|
152
153
|
.passthrough();
|
|
153
154
|
const Roblox_Authentication_Api_Models_LoginRequest = z
|
|
154
155
|
.object({
|
|
155
|
-
ctype: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4)]),
|
|
156
|
+
ctype: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]),
|
|
156
157
|
cvalue: z.string(),
|
|
157
158
|
password: z.string(),
|
|
158
159
|
userId: z.number().int(),
|
|
@@ -391,7 +392,7 @@ export const getCredentialsVerification = endpoint({
|
|
|
391
392
|
},
|
|
392
393
|
},
|
|
393
394
|
parameters: {
|
|
394
|
-
CredentialType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4)]),
|
|
395
|
+
CredentialType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5)]),
|
|
395
396
|
CredentialValue: z.string(),
|
|
396
397
|
Password: z.string(),
|
|
397
398
|
},
|
|
@@ -982,7 +983,8 @@ export const postSignup = endpoint({
|
|
|
982
983
|
{
|
|
983
984
|
status: 400,
|
|
984
985
|
description: `Bad request
|
|
985
|
-
16: User agreement ids are null
|
|
986
|
+
16: User agreement ids are null.
|
|
987
|
+
21: Empty account switch blob required`,
|
|
986
988
|
},
|
|
987
989
|
{
|
|
988
990
|
status: 403,
|
|
@@ -997,7 +999,8 @@ export const postSignup = endpoint({
|
|
|
997
999
|
10: Email is invalid.
|
|
998
1000
|
11: Asset is invalid.
|
|
999
1001
|
12: Too many attempts. Please wait a bit.
|
|
1000
|
-
17: One time Passcode session was not valid
|
|
1002
|
+
17: One time Passcode session was not valid
|
|
1003
|
+
22: Maximum logged in accounts limit reached.`,
|
|
1001
1004
|
},
|
|
1002
1005
|
{
|
|
1003
1006
|
status: 429,
|
package/lib/endpoints/authv2.js
CHANGED
|
@@ -27,6 +27,7 @@ const Roblox_Authentication_Api_Models_MetadataResponse = zod_1.z
|
|
|
27
27
|
IsUserAgreementsSignupIntegrationEnabled: zod_1.z.boolean(),
|
|
28
28
|
IsKoreaIdVerificationEnabled: zod_1.z.boolean(),
|
|
29
29
|
IsPasswordRequiredForUsernameChange: zod_1.z.boolean(),
|
|
30
|
+
IsPasskeyFeatureEnabled: zod_1.z.boolean(),
|
|
30
31
|
})
|
|
31
32
|
.passthrough();
|
|
32
33
|
const Roblox_Authentication_Api_Models_PasswordStatusResponse = zod_1.z.object({ valid: zod_1.z.boolean() }).passthrough();
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { endpoint } from '..';
|
|
3
3
|
|
|
4
|
+
const Roblox_Authentication_Api_Models_Request_SecureAuthenticationIntentModel = z
|
|
5
|
+
.object({
|
|
6
|
+
clientPublicKey: z.string(),
|
|
7
|
+
clientEpochTimestamp: z.number().int(),
|
|
8
|
+
saiSignature: z.string(),
|
|
9
|
+
serverNonce: z.string(),
|
|
10
|
+
})
|
|
11
|
+
.passthrough();
|
|
4
12
|
const Roblox_Authentication_Api_TwoStepVerificationLoginRequest = z
|
|
5
13
|
.object({
|
|
6
14
|
challengeId: z.string(),
|
|
7
15
|
verificationToken: z.string(),
|
|
8
16
|
rememberDevice: z.boolean(),
|
|
17
|
+
secureAuthenticationIntent: Roblox_Authentication_Api_Models_Request_SecureAuthenticationIntentModel,
|
|
9
18
|
accountBlob: z.string(),
|
|
10
19
|
})
|
|
11
20
|
.passthrough();
|
|
@@ -17,6 +26,7 @@ const Roblox_Authentication_Api_Models_TwoStepVerificationV3LoginResponse = z
|
|
|
17
26
|
.passthrough();
|
|
18
27
|
|
|
19
28
|
const schemas = {
|
|
29
|
+
Roblox_Authentication_Api_Models_Request_SecureAuthenticationIntentModel,
|
|
20
30
|
Roblox_Authentication_Api_TwoStepVerificationLoginRequest,
|
|
21
31
|
Roblox_Authentication_Api_Models_TwoStepVerificationV3LoginResponse,
|
|
22
32
|
};
|
|
@@ -52,7 +62,8 @@ export const postUsersUseridTwoStepVerificationLogin = endpoint({
|
|
|
52
62
|
},
|
|
53
63
|
{
|
|
54
64
|
status: 403,
|
|
55
|
-
description: `0: Token Validation Failed
|
|
65
|
+
description: `0: Token Validation Failed
|
|
66
|
+
11: Maxium logged in accounts limit reached.`,
|
|
56
67
|
},
|
|
57
68
|
],
|
|
58
69
|
});
|
|
@@ -138,6 +138,7 @@ const Roblox_Api_Avatar_Models_GameStartInfoResponse = z
|
|
|
138
138
|
const Roblox_Api_Avatar_Models_OutfitDetailsModel = z
|
|
139
139
|
.object({
|
|
140
140
|
id: z.number().int(),
|
|
141
|
+
universeId: z.number().int(),
|
|
141
142
|
name: z.string(),
|
|
142
143
|
assets: z.array(Roblox_Api_Avatar_Models_AssetModelV2),
|
|
143
144
|
bodyColors: Roblox_Api_Avatar_Models_BodyColorsModel,
|
|
@@ -145,6 +146,7 @@ const Roblox_Api_Avatar_Models_OutfitDetailsModel = z
|
|
|
145
146
|
playerAvatarType: z.string(),
|
|
146
147
|
outfitType: z.string(),
|
|
147
148
|
isEditable: z.boolean(),
|
|
149
|
+
moderationStatus: z.string(),
|
|
148
150
|
})
|
|
149
151
|
.passthrough();
|
|
150
152
|
const Roblox_Api_Avatar_Models_RecentItemModel = z
|
|
@@ -192,7 +194,7 @@ const Roblox_Api_Avatar_Models_OutfitUpdateModelV1 = z
|
|
|
192
194
|
assetIds: z.array(z.number()),
|
|
193
195
|
scale: Roblox_Web_Responses_Avatar_ScaleModel,
|
|
194
196
|
playerAvatarType: z.string(),
|
|
195
|
-
outfitType: z.union([z.literal(0), z.literal(1), z.literal(2)]),
|
|
197
|
+
outfitType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]),
|
|
196
198
|
})
|
|
197
199
|
.passthrough();
|
|
198
200
|
|
|
@@ -100,7 +100,7 @@ const Roblox_Api_Avatar_Models_OutfitUpdateModelV2 = z
|
|
|
100
100
|
assets: z.array(Roblox_Api_Avatar_Models_AssetWearModel),
|
|
101
101
|
scale: Roblox_Web_Responses_Avatar_ScaleModel,
|
|
102
102
|
playerAvatarType: z.string(),
|
|
103
|
-
outfitType: z.union([z.literal(0), z.literal(1), z.literal(2)]),
|
|
103
|
+
outfitType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]),
|
|
104
104
|
})
|
|
105
105
|
.passthrough();
|
|
106
106
|
const Roblox_Web_WebAPI_ApiEmptyResponseModel = z.object({}).passthrough();
|
|
@@ -73,7 +73,7 @@ const Roblox_Api_Avatar_Models_OutfitUpdateModelV3 = z
|
|
|
73
73
|
assets: z.array(Roblox_Api_Avatar_Models_AssetWearModel),
|
|
74
74
|
scale: Roblox_Web_Responses_Avatar_ScaleModel,
|
|
75
75
|
playerAvatarType: z.string(),
|
|
76
|
-
outfitType: z.union([z.literal(0), z.literal(1), z.literal(2)]),
|
|
76
|
+
outfitType: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]),
|
|
77
77
|
})
|
|
78
78
|
.passthrough();
|
|
79
79
|
const Roblox_Web_WebAPI_ApiEmptyResponseModel = z.object({}).passthrough();
|
package/lib/endpoints/chatv2.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.postUpdateUserTypingStatus = exports.postStartOneToOneConversation = exports.postStartGroupConversation = exports.postStartCloudEditConversation = exports.
|
|
3
|
+
exports.postUpdateUserTypingStatus = exports.postStartOneToOneConversation = exports.postStartGroupConversation = exports.postStartCloudEditConversation = exports.postSendMessage = exports.postSendGameLinkMessage = exports.postRenameGroupConversation = exports.postRemoveFromConversation = exports.getMultiGetLatestMessages = exports.getMetadata = exports.postMarkAsSeen = exports.postMarkAsRead = exports.getGetUserConversations = exports.getGetUnreadMessages = exports.getGetUnreadConversations = exports.getGetUnreadConversationCount = exports.getGetRolloutSettings = exports.getGetMessages = exports.getGetConversations = exports.getChatSettings = exports.postAddToConversation = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const __1 = require("..");
|
|
6
6
|
const Roblox_Chat_Api_Models_ChatSettingsResponse = zod_1.z
|
|
@@ -164,10 +164,6 @@ const Roblox_Chat_Api_Models_RenameConversationResponse = zod_1.z
|
|
|
164
164
|
statusMessage: zod_1.z.string(),
|
|
165
165
|
})
|
|
166
166
|
.passthrough();
|
|
167
|
-
const Roblox_Chat_Api_Models_ResetConversationUniverseRequest = zod_1.z
|
|
168
|
-
.object({ conversationId: zod_1.z.number().int() })
|
|
169
|
-
.passthrough();
|
|
170
|
-
const Roblox_Chat_Api_Models_UserVisibleStatusResponse = zod_1.z.object({ statusMessage: zod_1.z.string() }).passthrough();
|
|
171
167
|
const Roblox_Chat_Api_Models_SendGameLinkChatMessageRequest = zod_1.z
|
|
172
168
|
.object({
|
|
173
169
|
universeId: zod_1.z.number().int(),
|
|
@@ -208,9 +204,6 @@ const Roblox_Chat_Api_Models_SendPlainTextChatMessageResponse = zod_1.z
|
|
|
208
204
|
statusMessage: zod_1.z.string(),
|
|
209
205
|
})
|
|
210
206
|
.passthrough();
|
|
211
|
-
const Roblox_Chat_Api_Models_SetConversationUniverseRequest = zod_1.z
|
|
212
|
-
.object({ conversationId: zod_1.z.number().int(), universeId: zod_1.z.number().int() })
|
|
213
|
-
.passthrough();
|
|
214
207
|
const Roblox_Chat_Api_Models_CreateCloudEditConversationRequest = zod_1.z.object({ placeId: zod_1.z.number().int() }).passthrough();
|
|
215
208
|
const Roblox_Chat_Api_Models_StartNewConversationResponse = zod_1.z
|
|
216
209
|
.object({
|
|
@@ -229,6 +222,7 @@ const Roblox_Chat_Api_Models_CreateOneToOneConversationRequest = zod_1.z
|
|
|
229
222
|
const Roblox_Chat_Api_Models_UpdateUserTypingStatusRequest = zod_1.z
|
|
230
223
|
.object({ conversationId: zod_1.z.number().int(), isTyping: zod_1.z.boolean() })
|
|
231
224
|
.passthrough();
|
|
225
|
+
const Roblox_Chat_Api_Models_UserVisibleStatusResponse = zod_1.z.object({ statusMessage: zod_1.z.string() }).passthrough();
|
|
232
226
|
const schemas = {
|
|
233
227
|
Roblox_Chat_Api_Models_ChatSettingsResponse,
|
|
234
228
|
Roblox_Chat_Api_Models_ChatParticipant,
|
|
@@ -256,18 +250,16 @@ const schemas = {
|
|
|
256
250
|
Roblox_Chat_Api_Models_RemoveUserFromConversationResponse,
|
|
257
251
|
Roblox_Chat_Api_Models_RenameGroupConversationRequest,
|
|
258
252
|
Roblox_Chat_Api_Models_RenameConversationResponse,
|
|
259
|
-
Roblox_Chat_Api_Models_ResetConversationUniverseRequest,
|
|
260
|
-
Roblox_Chat_Api_Models_UserVisibleStatusResponse,
|
|
261
253
|
Roblox_Chat_Api_Models_SendGameLinkChatMessageRequest,
|
|
262
254
|
Roblox_Chat_Api_Models_SendLinkChatResponse,
|
|
263
255
|
Roblox_Chat_Api_Models_SendPlainTextChatMessageRequest,
|
|
264
256
|
Roblox_Chat_Api_Models_SendPlainTextChatMessageResponse,
|
|
265
|
-
Roblox_Chat_Api_Models_SetConversationUniverseRequest,
|
|
266
257
|
Roblox_Chat_Api_Models_CreateCloudEditConversationRequest,
|
|
267
258
|
Roblox_Chat_Api_Models_StartNewConversationResponse,
|
|
268
259
|
Roblox_Chat_Api_Models_CreateGroupConversationRequest,
|
|
269
260
|
Roblox_Chat_Api_Models_CreateOneToOneConversationRequest,
|
|
270
261
|
Roblox_Chat_Api_Models_UpdateUserTypingStatusRequest,
|
|
262
|
+
Roblox_Chat_Api_Models_UserVisibleStatusResponse,
|
|
271
263
|
};
|
|
272
264
|
/**
|
|
273
265
|
* @api POST https://chat.roblox.com/v2/add-to-conversation
|
|
@@ -680,33 +672,6 @@ exports.postRenameGroupConversation = (0, __1.endpoint)({
|
|
|
680
672
|
},
|
|
681
673
|
],
|
|
682
674
|
});
|
|
683
|
-
/**
|
|
684
|
-
* @api POST https://chat.roblox.com/v2/reset-conversation-universe
|
|
685
|
-
* @summary Removes universe associated with a conversation
|
|
686
|
-
* @param body
|
|
687
|
-
*/
|
|
688
|
-
exports.postResetConversationUniverse = (0, __1.endpoint)({
|
|
689
|
-
method: 'post',
|
|
690
|
-
path: '/v2/reset-conversation-universe',
|
|
691
|
-
baseUrl: 'https://chat.roblox.com',
|
|
692
|
-
requestFormat: 'json',
|
|
693
|
-
serializationMethod: {
|
|
694
|
-
body: {},
|
|
695
|
-
},
|
|
696
|
-
parameters: {},
|
|
697
|
-
body: zod_1.z.object({ conversationId: zod_1.z.number().int() }).passthrough(),
|
|
698
|
-
response: zod_1.z.object({ statusMessage: zod_1.z.string() }).passthrough(),
|
|
699
|
-
errors: [
|
|
700
|
-
{
|
|
701
|
-
status: 401,
|
|
702
|
-
description: `0: Authorization has been denied for this request.`,
|
|
703
|
-
},
|
|
704
|
-
{
|
|
705
|
-
status: 403,
|
|
706
|
-
description: `0: Token Validation Failed`,
|
|
707
|
-
},
|
|
708
|
-
],
|
|
709
|
-
});
|
|
710
675
|
/**
|
|
711
676
|
* @api POST https://chat.roblox.com/v2/send-game-link-message
|
|
712
677
|
* @param body
|
|
@@ -760,33 +725,6 @@ exports.postSendMessage = (0, __1.endpoint)({
|
|
|
760
725
|
},
|
|
761
726
|
],
|
|
762
727
|
});
|
|
763
|
-
/**
|
|
764
|
-
* @api POST https://chat.roblox.com/v2/set-conversation-universe
|
|
765
|
-
* @summary Adds or updates universe associated with a conversation
|
|
766
|
-
* @param body
|
|
767
|
-
*/
|
|
768
|
-
exports.postSetConversationUniverse = (0, __1.endpoint)({
|
|
769
|
-
method: 'post',
|
|
770
|
-
path: '/v2/set-conversation-universe',
|
|
771
|
-
baseUrl: 'https://chat.roblox.com',
|
|
772
|
-
requestFormat: 'json',
|
|
773
|
-
serializationMethod: {
|
|
774
|
-
body: {},
|
|
775
|
-
},
|
|
776
|
-
parameters: {},
|
|
777
|
-
body: Roblox_Chat_Api_Models_SetConversationUniverseRequest,
|
|
778
|
-
response: zod_1.z.object({ statusMessage: zod_1.z.string() }).passthrough(),
|
|
779
|
-
errors: [
|
|
780
|
-
{
|
|
781
|
-
status: 401,
|
|
782
|
-
description: `0: Authorization has been denied for this request.`,
|
|
783
|
-
},
|
|
784
|
-
{
|
|
785
|
-
status: 403,
|
|
786
|
-
description: `0: Token Validation Failed`,
|
|
787
|
-
},
|
|
788
|
-
],
|
|
789
|
-
});
|
|
790
728
|
/**
|
|
791
729
|
* @api POST https://chat.roblox.com/v2/start-cloud-edit-conversation
|
|
792
730
|
* @summary Creates a new cloud edit conversation
|
|
@@ -389,8 +389,7 @@ exports.patchUniversesUniverseidConfiguration = (0, __1.endpoint)({
|
|
|
389
389
|
22: Invalid asset type.
|
|
390
390
|
23: Invalid value, the min must be less than or equal to the max
|
|
391
391
|
24: Invalid scale value
|
|
392
|
-
28: OptIn/Out Regions Not Supported
|
|
393
|
-
29: Luobu app terms of service user agreement is missing.`,
|
|
392
|
+
28: OptIn/Out Regions Not Supported.`,
|
|
394
393
|
},
|
|
395
394
|
{
|
|
396
395
|
status: 401,
|
|
@@ -401,6 +400,7 @@ exports.patchUniversesUniverseidConfiguration = (0, __1.endpoint)({
|
|
|
401
400
|
description: `0: Token Validation Failed
|
|
402
401
|
2: You are not authorized to configure this universe.
|
|
403
402
|
14: You are not authorized to sell games.
|
|
403
|
+
29: Luobu app terms of service user agreement is missing.
|
|
404
404
|
30: Unknown error while updating Opt in out region.`,
|
|
405
405
|
},
|
|
406
406
|
{
|
|
@@ -95,6 +95,16 @@ const Roblox_Friends_Api_FollowCountResponse = z.object({ count: z.number().int(
|
|
|
95
95
|
const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Friends_Api_Models_Response_UserResponse_ = z
|
|
96
96
|
.object({ data: z.array(Roblox_Friends_Api_Models_Response_UserResponse) })
|
|
97
97
|
.passthrough();
|
|
98
|
+
const Roblox_Friends_Api_Models_Response_FriendResponse = z
|
|
99
|
+
.object({ id: z.number().int(), hasVerifiedBadge: z.boolean() })
|
|
100
|
+
.passthrough();
|
|
101
|
+
const Roblox_Paging_CursoredPagedResult_Roblox_Friends_Api_Models_Response_FriendResponse_ = z
|
|
102
|
+
.object({
|
|
103
|
+
PreviousCursor: z.string(),
|
|
104
|
+
PageItems: z.array(Roblox_Friends_Api_Models_Response_FriendResponse),
|
|
105
|
+
NextCursor: z.string(),
|
|
106
|
+
})
|
|
107
|
+
.passthrough();
|
|
98
108
|
const Roblox_Friends_Api_Models_Response_UserPresenceResponseModel = z
|
|
99
109
|
.object({
|
|
100
110
|
UserPresenceType: z.string(),
|
|
@@ -194,6 +204,8 @@ const schemas = {
|
|
|
194
204
|
Roblox_Web_WebAPI_Models_ApiPageResponse_Roblox_Friends_Api_Models_Response_UserResponse_,
|
|
195
205
|
Roblox_Friends_Api_FollowCountResponse,
|
|
196
206
|
Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Friends_Api_Models_Response_UserResponse_,
|
|
207
|
+
Roblox_Friends_Api_Models_Response_FriendResponse,
|
|
208
|
+
Roblox_Paging_CursoredPagedResult_Roblox_Friends_Api_Models_Response_FriendResponse_,
|
|
197
209
|
Roblox_Friends_Api_Models_Response_UserPresenceResponseModel,
|
|
198
210
|
Roblox_Friends_Api_Models_Response_UserPresenceResponse,
|
|
199
211
|
Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Friends_Api_Models_Response_UserPresenceResponse_,
|
|
@@ -956,7 +968,7 @@ export const getUsersUseridFriends = endpoint({
|
|
|
956
968
|
},
|
|
957
969
|
parameters: {
|
|
958
970
|
userId: z.number().int(),
|
|
959
|
-
userSort: z.union([z.literal(0), z.literal(1), z.literal(2)]).optional(),
|
|
971
|
+
userSort: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]).optional(),
|
|
960
972
|
},
|
|
961
973
|
response: Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Friends_Api_Models_Response_UserResponse_,
|
|
962
974
|
errors: [
|
|
@@ -992,6 +1004,55 @@ export const getUsersUseridFriendsCount = endpoint({
|
|
|
992
1004
|
},
|
|
993
1005
|
],
|
|
994
1006
|
});
|
|
1007
|
+
/**
|
|
1008
|
+
* @api GET https://friends.roblox.com/v1/users/:userId/friends/find
|
|
1009
|
+
* @summary Get a paginated list of all friends for the specified user.
|
|
1010
|
+
* @param userId The user Id to get the friends for.
|
|
1011
|
+
* @param userSort Specifies how to sort the returned friends.
|
|
1012
|
+
* @param cursor The paging cursor for the previous or next page.
|
|
1013
|
+
* @param limit The number of results per request.
|
|
1014
|
+
*/
|
|
1015
|
+
export const getUsersUseridFriendsFind = endpoint({
|
|
1016
|
+
method: 'get' as const,
|
|
1017
|
+
path: '/v1/users/:userId/friends/find',
|
|
1018
|
+
baseUrl: 'https://friends.roblox.com',
|
|
1019
|
+
requestFormat: 'json' as const,
|
|
1020
|
+
serializationMethod: {
|
|
1021
|
+
userId: {
|
|
1022
|
+
style: 'simple',
|
|
1023
|
+
},
|
|
1024
|
+
userSort: {
|
|
1025
|
+
style: 'form',
|
|
1026
|
+
explode: true,
|
|
1027
|
+
},
|
|
1028
|
+
cursor: {
|
|
1029
|
+
style: 'form',
|
|
1030
|
+
explode: true,
|
|
1031
|
+
},
|
|
1032
|
+
limit: {
|
|
1033
|
+
style: 'form',
|
|
1034
|
+
explode: true,
|
|
1035
|
+
},
|
|
1036
|
+
},
|
|
1037
|
+
parameters: {
|
|
1038
|
+
userId: z.number().int(),
|
|
1039
|
+
userSort: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]).optional(),
|
|
1040
|
+
cursor: z.string().optional(),
|
|
1041
|
+
limit: z.number().int().optional().default(50),
|
|
1042
|
+
},
|
|
1043
|
+
response: Roblox_Paging_CursoredPagedResult_Roblox_Friends_Api_Models_Response_FriendResponse_,
|
|
1044
|
+
errors: [
|
|
1045
|
+
{
|
|
1046
|
+
status: 400,
|
|
1047
|
+
description: `1: The target user is invalid or does not exist.
|
|
1048
|
+
6: Invalid parameters.`,
|
|
1049
|
+
},
|
|
1050
|
+
{
|
|
1051
|
+
status: 401,
|
|
1052
|
+
description: `0: Authorization has been denied for this request.`,
|
|
1053
|
+
},
|
|
1054
|
+
],
|
|
1055
|
+
});
|
|
995
1056
|
/**
|
|
996
1057
|
* @api GET https://friends.roblox.com/v1/users/:userId/friends/inactive
|
|
997
1058
|
* @summary Get list of inactive friends for the specified user.
|
|
@@ -1054,6 +1115,61 @@ export const getUsersUseridFriendsOnline = endpoint({
|
|
|
1054
1115
|
},
|
|
1055
1116
|
],
|
|
1056
1117
|
});
|
|
1118
|
+
/**
|
|
1119
|
+
* @api GET https://friends.roblox.com/v1/users/:userId/friends/search
|
|
1120
|
+
* @summary Search for friends by name using a text query.
|
|
1121
|
+
* @param userId The user Id to get the friends for.
|
|
1122
|
+
* @param query The string to search names of friends for.
|
|
1123
|
+
* @param userSort Specifies how to sort the returned friends.
|
|
1124
|
+
* @param cursor The paging cursor for the previous or next page.
|
|
1125
|
+
* @param limit The number of results per request.
|
|
1126
|
+
*/
|
|
1127
|
+
export const getUsersUseridFriendsSearch = endpoint({
|
|
1128
|
+
method: 'get' as const,
|
|
1129
|
+
path: '/v1/users/:userId/friends/search',
|
|
1130
|
+
baseUrl: 'https://friends.roblox.com',
|
|
1131
|
+
requestFormat: 'json' as const,
|
|
1132
|
+
serializationMethod: {
|
|
1133
|
+
userId: {
|
|
1134
|
+
style: 'simple',
|
|
1135
|
+
},
|
|
1136
|
+
query: {
|
|
1137
|
+
style: 'form',
|
|
1138
|
+
explode: true,
|
|
1139
|
+
},
|
|
1140
|
+
userSort: {
|
|
1141
|
+
style: 'form',
|
|
1142
|
+
explode: true,
|
|
1143
|
+
},
|
|
1144
|
+
cursor: {
|
|
1145
|
+
style: 'form',
|
|
1146
|
+
explode: true,
|
|
1147
|
+
},
|
|
1148
|
+
limit: {
|
|
1149
|
+
style: 'form',
|
|
1150
|
+
explode: true,
|
|
1151
|
+
},
|
|
1152
|
+
},
|
|
1153
|
+
parameters: {
|
|
1154
|
+
userId: z.number().int(),
|
|
1155
|
+
query: z.string().optional(),
|
|
1156
|
+
userSort: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]).optional(),
|
|
1157
|
+
cursor: z.string().optional(),
|
|
1158
|
+
limit: z.number().int().optional().default(20),
|
|
1159
|
+
},
|
|
1160
|
+
response: Roblox_Paging_CursoredPagedResult_Roblox_Friends_Api_Models_Response_FriendResponse_,
|
|
1161
|
+
errors: [
|
|
1162
|
+
{
|
|
1163
|
+
status: 400,
|
|
1164
|
+
description: `1: The target user is invalid or does not exist.
|
|
1165
|
+
6: Invalid parameters.`,
|
|
1166
|
+
},
|
|
1167
|
+
{
|
|
1168
|
+
status: 401,
|
|
1169
|
+
description: `0: Authorization has been denied for this request.`,
|
|
1170
|
+
},
|
|
1171
|
+
],
|
|
1172
|
+
});
|
|
1057
1173
|
/**
|
|
1058
1174
|
* @api GET https://friends.roblox.com/v1/users/:userId/friends/statuses
|
|
1059
1175
|
* @summary Gets a list of friend statuses of specified users against the specified user.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUsersUseridFriendsStatuses = exports.getUsersUseridFriendsOnline = exports.getUsersUseridFriendsInactive = exports.getUsersUseridFriendsCount = exports.getUsersUseridFriends = exports.postUsersTargetuseridUnfriend = exports.postUsersTargetuseridUnfollow = exports.postUsersTargetuseridRequestFriendship = exports.postUsersTargetuseridFollowingsRecount = exports.getUsersTargetuseridFollowingsCount = exports.getUsersTargetuseridFollowings = exports.getUsersTargetuseridFollowersCount = exports.getUsersTargetuseridFollowers = exports.postUsersTargetuseridFollow = exports.postUsersSenderuseridAcceptFriendRequestWithToken = exports.postUsersRequesteruseridDeclineFriendRequest = exports.postUsersRequesteruseridAcceptFriendRequest = exports.postUserFriendRequestsDeclineAll = exports.getUserFriendRequestsCount = exports.postUserFollowingExists = exports.getRecommendedUsers = exports.getMyFriendsRequests = exports.getMyFriendsCount = exports.getMetadata = exports.postContactsTargetcontactidRequestFriendship = void 0;
|
|
3
|
+
exports.getUsersUseridFriendsStatuses = exports.getUsersUseridFriendsSearch = exports.getUsersUseridFriendsOnline = exports.getUsersUseridFriendsInactive = exports.getUsersUseridFriendsFind = exports.getUsersUseridFriendsCount = exports.getUsersUseridFriends = exports.postUsersTargetuseridUnfriend = exports.postUsersTargetuseridUnfollow = exports.postUsersTargetuseridRequestFriendship = exports.postUsersTargetuseridFollowingsRecount = exports.getUsersTargetuseridFollowingsCount = exports.getUsersTargetuseridFollowings = exports.getUsersTargetuseridFollowersCount = exports.getUsersTargetuseridFollowers = exports.postUsersTargetuseridFollow = exports.postUsersSenderuseridAcceptFriendRequestWithToken = exports.postUsersRequesteruseridDeclineFriendRequest = exports.postUsersRequesteruseridAcceptFriendRequest = exports.postUserFriendRequestsDeclineAll = exports.getUserFriendRequestsCount = exports.postUserFollowingExists = exports.getRecommendedUsers = exports.getMyFriendsRequests = exports.getMyFriendsCount = exports.getMetadata = exports.postContactsTargetcontactidRequestFriendship = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const __1 = require("..");
|
|
6
6
|
const Roblox_Friends_Api_Models_Response_FriendsPageMetadataResponse = zod_1.z
|
|
@@ -97,6 +97,16 @@ const Roblox_Friends_Api_FollowCountResponse = zod_1.z.object({ count: zod_1.z.n
|
|
|
97
97
|
const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Friends_Api_Models_Response_UserResponse_ = zod_1.z
|
|
98
98
|
.object({ data: zod_1.z.array(Roblox_Friends_Api_Models_Response_UserResponse) })
|
|
99
99
|
.passthrough();
|
|
100
|
+
const Roblox_Friends_Api_Models_Response_FriendResponse = zod_1.z
|
|
101
|
+
.object({ id: zod_1.z.number().int(), hasVerifiedBadge: zod_1.z.boolean() })
|
|
102
|
+
.passthrough();
|
|
103
|
+
const Roblox_Paging_CursoredPagedResult_Roblox_Friends_Api_Models_Response_FriendResponse_ = zod_1.z
|
|
104
|
+
.object({
|
|
105
|
+
PreviousCursor: zod_1.z.string(),
|
|
106
|
+
PageItems: zod_1.z.array(Roblox_Friends_Api_Models_Response_FriendResponse),
|
|
107
|
+
NextCursor: zod_1.z.string(),
|
|
108
|
+
})
|
|
109
|
+
.passthrough();
|
|
100
110
|
const Roblox_Friends_Api_Models_Response_UserPresenceResponseModel = zod_1.z
|
|
101
111
|
.object({
|
|
102
112
|
UserPresenceType: zod_1.z.string(),
|
|
@@ -195,6 +205,8 @@ const schemas = {
|
|
|
195
205
|
Roblox_Web_WebAPI_Models_ApiPageResponse_Roblox_Friends_Api_Models_Response_UserResponse_,
|
|
196
206
|
Roblox_Friends_Api_FollowCountResponse,
|
|
197
207
|
Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Friends_Api_Models_Response_UserResponse_,
|
|
208
|
+
Roblox_Friends_Api_Models_Response_FriendResponse,
|
|
209
|
+
Roblox_Paging_CursoredPagedResult_Roblox_Friends_Api_Models_Response_FriendResponse_,
|
|
198
210
|
Roblox_Friends_Api_Models_Response_UserPresenceResponseModel,
|
|
199
211
|
Roblox_Friends_Api_Models_Response_UserPresenceResponse,
|
|
200
212
|
Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Friends_Api_Models_Response_UserPresenceResponse_,
|
|
@@ -992,6 +1004,55 @@ exports.getUsersUseridFriendsCount = (0, __1.endpoint)({
|
|
|
992
1004
|
},
|
|
993
1005
|
],
|
|
994
1006
|
});
|
|
1007
|
+
/**
|
|
1008
|
+
* @api GET https://friends.roblox.com/v1/users/:userId/friends/find
|
|
1009
|
+
* @summary Get a paginated list of all friends for the specified user.
|
|
1010
|
+
* @param userId The user Id to get the friends for.
|
|
1011
|
+
* @param userSort Specifies how to sort the returned friends.
|
|
1012
|
+
* @param cursor The paging cursor for the previous or next page.
|
|
1013
|
+
* @param limit The number of results per request.
|
|
1014
|
+
*/
|
|
1015
|
+
exports.getUsersUseridFriendsFind = (0, __1.endpoint)({
|
|
1016
|
+
method: 'get',
|
|
1017
|
+
path: '/v1/users/:userId/friends/find',
|
|
1018
|
+
baseUrl: 'https://friends.roblox.com',
|
|
1019
|
+
requestFormat: 'json',
|
|
1020
|
+
serializationMethod: {
|
|
1021
|
+
userId: {
|
|
1022
|
+
style: 'simple',
|
|
1023
|
+
},
|
|
1024
|
+
userSort: {
|
|
1025
|
+
style: 'form',
|
|
1026
|
+
explode: true,
|
|
1027
|
+
},
|
|
1028
|
+
cursor: {
|
|
1029
|
+
style: 'form',
|
|
1030
|
+
explode: true,
|
|
1031
|
+
},
|
|
1032
|
+
limit: {
|
|
1033
|
+
style: 'form',
|
|
1034
|
+
explode: true,
|
|
1035
|
+
},
|
|
1036
|
+
},
|
|
1037
|
+
parameters: {
|
|
1038
|
+
userId: zod_1.z.number().int(),
|
|
1039
|
+
userSort: zod_1.z.literal(0).optional(),
|
|
1040
|
+
cursor: zod_1.z.string().optional(),
|
|
1041
|
+
limit: zod_1.z.number().int().optional().default(50),
|
|
1042
|
+
},
|
|
1043
|
+
response: Roblox_Paging_CursoredPagedResult_Roblox_Friends_Api_Models_Response_FriendResponse_,
|
|
1044
|
+
errors: [
|
|
1045
|
+
{
|
|
1046
|
+
status: 400,
|
|
1047
|
+
description: `1: The target user is invalid or does not exist.
|
|
1048
|
+
6: Invalid parameters.`,
|
|
1049
|
+
},
|
|
1050
|
+
{
|
|
1051
|
+
status: 401,
|
|
1052
|
+
description: `0: Authorization has been denied for this request.`,
|
|
1053
|
+
},
|
|
1054
|
+
],
|
|
1055
|
+
});
|
|
995
1056
|
/**
|
|
996
1057
|
* @api GET https://friends.roblox.com/v1/users/:userId/friends/inactive
|
|
997
1058
|
* @summary Get list of inactive friends for the specified user.
|
|
@@ -1054,6 +1115,61 @@ exports.getUsersUseridFriendsOnline = (0, __1.endpoint)({
|
|
|
1054
1115
|
},
|
|
1055
1116
|
],
|
|
1056
1117
|
});
|
|
1118
|
+
/**
|
|
1119
|
+
* @api GET https://friends.roblox.com/v1/users/:userId/friends/search
|
|
1120
|
+
* @summary Search for friends by name using a text query.
|
|
1121
|
+
* @param userId The user Id to get the friends for.
|
|
1122
|
+
* @param query The string to search names of friends for.
|
|
1123
|
+
* @param userSort Specifies how to sort the returned friends.
|
|
1124
|
+
* @param cursor The paging cursor for the previous or next page.
|
|
1125
|
+
* @param limit The number of results per request.
|
|
1126
|
+
*/
|
|
1127
|
+
exports.getUsersUseridFriendsSearch = (0, __1.endpoint)({
|
|
1128
|
+
method: 'get',
|
|
1129
|
+
path: '/v1/users/:userId/friends/search',
|
|
1130
|
+
baseUrl: 'https://friends.roblox.com',
|
|
1131
|
+
requestFormat: 'json',
|
|
1132
|
+
serializationMethod: {
|
|
1133
|
+
userId: {
|
|
1134
|
+
style: 'simple',
|
|
1135
|
+
},
|
|
1136
|
+
query: {
|
|
1137
|
+
style: 'form',
|
|
1138
|
+
explode: true,
|
|
1139
|
+
},
|
|
1140
|
+
userSort: {
|
|
1141
|
+
style: 'form',
|
|
1142
|
+
explode: true,
|
|
1143
|
+
},
|
|
1144
|
+
cursor: {
|
|
1145
|
+
style: 'form',
|
|
1146
|
+
explode: true,
|
|
1147
|
+
},
|
|
1148
|
+
limit: {
|
|
1149
|
+
style: 'form',
|
|
1150
|
+
explode: true,
|
|
1151
|
+
},
|
|
1152
|
+
},
|
|
1153
|
+
parameters: {
|
|
1154
|
+
userId: zod_1.z.number().int(),
|
|
1155
|
+
query: zod_1.z.string().optional(),
|
|
1156
|
+
userSort: zod_1.z.literal(0).optional(),
|
|
1157
|
+
cursor: zod_1.z.string().optional(),
|
|
1158
|
+
limit: zod_1.z.number().int().optional().default(20),
|
|
1159
|
+
},
|
|
1160
|
+
response: Roblox_Paging_CursoredPagedResult_Roblox_Friends_Api_Models_Response_FriendResponse_,
|
|
1161
|
+
errors: [
|
|
1162
|
+
{
|
|
1163
|
+
status: 400,
|
|
1164
|
+
description: `1: The target user is invalid or does not exist.
|
|
1165
|
+
6: Invalid parameters.`,
|
|
1166
|
+
},
|
|
1167
|
+
{
|
|
1168
|
+
status: 401,
|
|
1169
|
+
description: `0: Authorization has been denied for this request.`,
|
|
1170
|
+
},
|
|
1171
|
+
],
|
|
1172
|
+
});
|
|
1057
1173
|
/**
|
|
1058
1174
|
* @api GET https://friends.roblox.com/v1/users/:userId/friends/statuses
|
|
1059
1175
|
* @summary Gets a list of friend statuses of specified users against the specified user.
|
|
@@ -6,6 +6,7 @@ const Roblox_Web_Responses_Thumbnails_ThumbnailResponse = z
|
|
|
6
6
|
targetId: z.number().int(),
|
|
7
7
|
state: z.enum(['Error', 'Completed', 'InReview', 'Pending', 'Blocked', 'TemporarilyUnavailable']),
|
|
8
8
|
imageUrl: z.string(),
|
|
9
|
+
version: z.string(),
|
|
9
10
|
})
|
|
10
11
|
.passthrough();
|
|
11
12
|
const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_ = z
|
|
@@ -34,12 +35,6 @@ const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Thumbnails_Api_Models_Uni
|
|
|
34
35
|
data: z.array(Roblox_Thumbnails_Api_Models_UniverseThumbnailsResponse),
|
|
35
36
|
})
|
|
36
37
|
.passthrough();
|
|
37
|
-
const Roblox_Thumbnails_Api_Models_ThumbnailMetaDataResponse = z
|
|
38
|
-
.object({
|
|
39
|
-
isWebappUseCacheEnabled: z.boolean(),
|
|
40
|
-
webappCacheExpirationTimspan: z.string(),
|
|
41
|
-
})
|
|
42
|
-
.passthrough();
|
|
43
38
|
const Roblox_Thumbnails_Apis_Models_ThumbnailBatchRequest = z
|
|
44
39
|
.object({
|
|
45
40
|
requestId: z.string(),
|
|
@@ -63,6 +58,7 @@ const Roblox_Thumbnails_Apis_Models_ThumbnailBatchRequest = z
|
|
|
63
58
|
'PlaceIcon',
|
|
64
59
|
'AutoGeneratedGameIcon',
|
|
65
60
|
'ForceAutoGeneratedGameIcon',
|
|
61
|
+
'Look',
|
|
66
62
|
]),
|
|
67
63
|
size: z.string(),
|
|
68
64
|
format: z.string(),
|
|
@@ -77,6 +73,7 @@ const Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse = z
|
|
|
77
73
|
targetId: z.number().int(),
|
|
78
74
|
state: z.enum(['Error', 'Completed', 'InReview', 'Pending', 'Blocked', 'TemporarilyUnavailable']),
|
|
79
75
|
imageUrl: z.string(),
|
|
76
|
+
version: z.string(),
|
|
80
77
|
})
|
|
81
78
|
.passthrough();
|
|
82
79
|
const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse_ = z
|
|
@@ -91,7 +88,6 @@ const schemas = {
|
|
|
91
88
|
Roblox_Web_WebAPI_Models_ApiErrorModel,
|
|
92
89
|
Roblox_Thumbnails_Api_Models_UniverseThumbnailsResponse,
|
|
93
90
|
Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Thumbnails_Api_Models_UniverseThumbnailsResponse_,
|
|
94
|
-
Roblox_Thumbnails_Api_Models_ThumbnailMetaDataResponse,
|
|
95
91
|
Roblox_Thumbnails_Apis_Models_ThumbnailBatchRequest,
|
|
96
92
|
Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse,
|
|
97
93
|
Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse_,
|
|
@@ -306,6 +302,7 @@ export const getBadgesIcons = endpoint({
|
|
|
306
302
|
14. PlaceIcon
|
|
307
303
|
15. AutoGeneratedGameIcon
|
|
308
304
|
16. ForceAutoGeneratedGameIcon
|
|
305
|
+
17. Look
|
|
309
306
|
*/
|
|
310
307
|
export const postBatch = endpoint({
|
|
311
308
|
method: 'post' as const,
|
|
@@ -701,18 +698,6 @@ export const getGroupsIcons = endpoint({
|
|
|
701
698
|
},
|
|
702
699
|
],
|
|
703
700
|
});
|
|
704
|
-
/**
|
|
705
|
-
* @api GET https://thumbnails.roblox.com/v1/metadata
|
|
706
|
-
* @summary Return list of thumbnail meta data.
|
|
707
|
-
*/
|
|
708
|
-
export const getMetadata = endpoint({
|
|
709
|
-
method: 'get' as const,
|
|
710
|
-
path: '/v1/metadata',
|
|
711
|
-
baseUrl: 'https://thumbnails.roblox.com',
|
|
712
|
-
requestFormat: 'json' as const,
|
|
713
|
-
response: Roblox_Thumbnails_Api_Models_ThumbnailMetaDataResponse,
|
|
714
|
-
errors: [],
|
|
715
|
-
});
|
|
716
701
|
/**
|
|
717
702
|
* @api GET https://thumbnails.roblox.com/v1/places/gameicons
|
|
718
703
|
* @summary Fetches game icon URLs for a list of places. Ids that do not correspond to a valid place will be filtered out.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUsersOutfits = exports.getUsersOutfit3d = exports.getUsersAvatarHeadshot = exports.getUsersAvatarBust = exports.getUsersAvatar3d = exports.getUsersAvatar = exports.getPlacesGameicons = exports.
|
|
3
|
+
exports.getUsersOutfits = exports.getUsersOutfit3d = exports.getUsersAvatarHeadshot = exports.getUsersAvatarBust = exports.getUsersAvatar3d = exports.getUsersAvatar = exports.getPlacesGameicons = exports.getGroupsIcons = exports.getGamesMultigetThumbnails = exports.getGamesIcons = exports.getGamesUniverseidThumbnails = exports.getGamePasses = exports.getDeveloperProductsIcons = exports.getBundlesThumbnails = exports.postBatch = exports.getBadgesIcons = exports.getAssetsThumbnail3d = exports.getAssets = exports.getAssetThumbnailAnimated = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const __1 = require("..");
|
|
6
6
|
const Roblox_Web_Responses_Thumbnails_ThumbnailResponse = zod_1.z
|
|
@@ -8,6 +8,7 @@ const Roblox_Web_Responses_Thumbnails_ThumbnailResponse = zod_1.z
|
|
|
8
8
|
targetId: zod_1.z.number().int(),
|
|
9
9
|
state: zod_1.z.enum(['Error', 'Completed', 'InReview', 'Pending', 'Blocked', 'TemporarilyUnavailable']),
|
|
10
10
|
imageUrl: zod_1.z.string(),
|
|
11
|
+
version: zod_1.z.string(),
|
|
11
12
|
})
|
|
12
13
|
.passthrough();
|
|
13
14
|
const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_ = zod_1.z
|
|
@@ -36,12 +37,6 @@ const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Thumbnails_Api_Models_Uni
|
|
|
36
37
|
data: zod_1.z.array(Roblox_Thumbnails_Api_Models_UniverseThumbnailsResponse),
|
|
37
38
|
})
|
|
38
39
|
.passthrough();
|
|
39
|
-
const Roblox_Thumbnails_Api_Models_ThumbnailMetaDataResponse = zod_1.z
|
|
40
|
-
.object({
|
|
41
|
-
isWebappUseCacheEnabled: zod_1.z.boolean(),
|
|
42
|
-
webappCacheExpirationTimspan: zod_1.z.string(),
|
|
43
|
-
})
|
|
44
|
-
.passthrough();
|
|
45
40
|
const Roblox_Thumbnails_Apis_Models_ThumbnailBatchRequest = zod_1.z
|
|
46
41
|
.object({
|
|
47
42
|
requestId: zod_1.z.string(),
|
|
@@ -80,6 +75,7 @@ const Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse = zod_1.z
|
|
|
80
75
|
targetId: zod_1.z.number().int(),
|
|
81
76
|
state: zod_1.z.enum(['Error', 'Completed', 'InReview', 'Pending', 'Blocked', 'TemporarilyUnavailable']),
|
|
82
77
|
imageUrl: zod_1.z.string(),
|
|
78
|
+
version: zod_1.z.string(),
|
|
83
79
|
})
|
|
84
80
|
.passthrough();
|
|
85
81
|
const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse_ = zod_1.z
|
|
@@ -93,7 +89,6 @@ const schemas = {
|
|
|
93
89
|
Roblox_Web_WebAPI_Models_ApiErrorModel,
|
|
94
90
|
Roblox_Thumbnails_Api_Models_UniverseThumbnailsResponse,
|
|
95
91
|
Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Thumbnails_Api_Models_UniverseThumbnailsResponse_,
|
|
96
|
-
Roblox_Thumbnails_Api_Models_ThumbnailMetaDataResponse,
|
|
97
92
|
Roblox_Thumbnails_Apis_Models_ThumbnailBatchRequest,
|
|
98
93
|
Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse,
|
|
99
94
|
Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse_,
|
|
@@ -703,18 +698,6 @@ exports.getGroupsIcons = (0, __1.endpoint)({
|
|
|
703
698
|
},
|
|
704
699
|
],
|
|
705
700
|
});
|
|
706
|
-
/**
|
|
707
|
-
* @api GET https://thumbnails.roblox.com/v1/metadata
|
|
708
|
-
* @summary Return list of thumbnail meta data.
|
|
709
|
-
*/
|
|
710
|
-
exports.getMetadata = (0, __1.endpoint)({
|
|
711
|
-
method: 'get',
|
|
712
|
-
path: '/v1/metadata',
|
|
713
|
-
baseUrl: 'https://thumbnails.roblox.com',
|
|
714
|
-
requestFormat: 'json',
|
|
715
|
-
response: Roblox_Thumbnails_Api_Models_ThumbnailMetaDataResponse,
|
|
716
|
-
errors: [],
|
|
717
|
-
});
|
|
718
701
|
/**
|
|
719
702
|
* @api GET https://thumbnails.roblox.com/v1/places/gameicons
|
|
720
703
|
* @summary Fetches game icon URLs for a list of places. Ids that do not correspond to a valid place will be filtered out.
|
|
@@ -627,6 +627,7 @@ export const getUsersAuthenticatedRoles = endpoint({
|
|
|
627
627
|
* @api GET https://users.roblox.com/v1/users/search
|
|
628
628
|
* @summary Searches for users by keyword.
|
|
629
629
|
* @param keyword The search keyword.
|
|
630
|
+
* @param sessionId
|
|
630
631
|
* @param limit The number of results per request.
|
|
631
632
|
* @param cursor The paging cursor for the previous or next page.
|
|
632
633
|
*/
|
|
@@ -640,6 +641,10 @@ export const getUsersSearch = endpoint({
|
|
|
640
641
|
style: 'form',
|
|
641
642
|
explode: true,
|
|
642
643
|
},
|
|
644
|
+
sessionId: {
|
|
645
|
+
style: 'form',
|
|
646
|
+
explode: true,
|
|
647
|
+
},
|
|
643
648
|
limit: {
|
|
644
649
|
style: 'form',
|
|
645
650
|
explode: true,
|
|
@@ -651,6 +656,7 @@ export const getUsersSearch = endpoint({
|
|
|
651
656
|
},
|
|
652
657
|
parameters: {
|
|
653
658
|
keyword: z.string(),
|
|
659
|
+
sessionId: z.string().optional(),
|
|
654
660
|
limit: z
|
|
655
661
|
.union([z.literal(10), z.literal(25), z.literal(50), z.literal(100)])
|
|
656
662
|
.optional()
|
package/lib/endpoints/usersv1.js
CHANGED
|
@@ -627,6 +627,7 @@ exports.getUsersAuthenticatedRoles = (0, __1.endpoint)({
|
|
|
627
627
|
* @api GET https://users.roblox.com/v1/users/search
|
|
628
628
|
* @summary Searches for users by keyword.
|
|
629
629
|
* @param keyword The search keyword.
|
|
630
|
+
* @param sessionId
|
|
630
631
|
* @param limit The number of results per request.
|
|
631
632
|
* @param cursor The paging cursor for the previous or next page.
|
|
632
633
|
*/
|
|
@@ -640,6 +641,10 @@ exports.getUsersSearch = (0, __1.endpoint)({
|
|
|
640
641
|
style: 'form',
|
|
641
642
|
explode: true,
|
|
642
643
|
},
|
|
644
|
+
sessionId: {
|
|
645
|
+
style: 'form',
|
|
646
|
+
explode: true,
|
|
647
|
+
},
|
|
643
648
|
limit: {
|
|
644
649
|
style: 'form',
|
|
645
650
|
explode: true,
|
|
@@ -651,6 +656,7 @@ exports.getUsersSearch = (0, __1.endpoint)({
|
|
|
651
656
|
},
|
|
652
657
|
parameters: {
|
|
653
658
|
keyword: zod_1.z.string(),
|
|
659
|
+
sessionId: zod_1.z.string().optional(),
|
|
654
660
|
limit: zod_1.z
|
|
655
661
|
.union([zod_1.z.literal(10), zod_1.z.literal(25), zod_1.z.literal(50), zod_1.z.literal(100)])
|
|
656
662
|
.optional()
|
package/lib/index.js
CHANGED
|
@@ -72,8 +72,9 @@ function prepareRequestBody(method, requestFormat, body, headers) {
|
|
|
72
72
|
}
|
|
73
73
|
return body;
|
|
74
74
|
}
|
|
75
|
+
const onRobloxSite = 'document' in globalThis && globalThis.location.href.includes('.roblox.com');
|
|
75
76
|
exports.hbaClient = new roblox_bat_1.HBAClient({
|
|
76
|
-
onSite:
|
|
77
|
+
onSite: onRobloxSite,
|
|
77
78
|
});
|
|
78
79
|
const getSHA256Hash = async (input) => {
|
|
79
80
|
const textAsBuffer = new TextEncoder().encode(input);
|
|
@@ -95,7 +96,10 @@ exports.setHandleGenericChallenge = setHandleGenericChallenge;
|
|
|
95
96
|
const csrfTokenMap = {};
|
|
96
97
|
async function fetch(url, info, challengeData) {
|
|
97
98
|
const headers = new Headers(info?.headers);
|
|
98
|
-
|
|
99
|
+
if (!onRobloxSite) {
|
|
100
|
+
exports.hbaClient.isAuthenticated = headers.get('cookie')?.includes('.ROBLOSECURITY');
|
|
101
|
+
}
|
|
102
|
+
const setHeaders = await exports.hbaClient.generateBaseHeaders(url, info?.credentials === 'include', info?.body);
|
|
99
103
|
for (const key in setHeaders) {
|
|
100
104
|
headers.set(key, setHeaders[key]);
|
|
101
105
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rozod",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.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",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"p-limit": "^3.0.0",
|
|
11
11
|
"parse-roblox-errors": "^1.1.7",
|
|
12
|
-
"roblox-bat": "^0.
|
|
12
|
+
"roblox-bat": "^0.3.3",
|
|
13
13
|
"zod": "^3.21.4"
|
|
14
14
|
},
|
|
15
15
|
"repository": {
|