rozod 6.7.0 → 6.8.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.
Files changed (70) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +75 -451
  3. package/lib/endpoints/accountinformationv1.d.ts +50 -87
  4. package/lib/endpoints/accountinformationv1.js +46 -90
  5. package/lib/endpoints/assetdeliveryv1.d.ts +39 -0
  6. package/lib/endpoints/assetdeliveryv1.js +39 -0
  7. package/lib/endpoints/assetdeliveryv2.d.ts +27 -0
  8. package/lib/endpoints/assetdeliveryv2.js +27 -0
  9. package/lib/endpoints/authv1.d.ts +71 -3
  10. package/lib/endpoints/authv1.js +70 -4
  11. package/lib/endpoints/authv2.d.ts +22 -1
  12. package/lib/endpoints/authv2.js +23 -2
  13. package/lib/endpoints/avatarv1.d.ts +9 -6
  14. package/lib/endpoints/avatarv1.js +9 -6
  15. package/lib/endpoints/avatarv2.d.ts +11 -5
  16. package/lib/endpoints/avatarv2.js +11 -5
  17. package/lib/endpoints/avatarv3.d.ts +16 -7
  18. package/lib/endpoints/avatarv3.js +16 -7
  19. package/lib/endpoints/badgesv1.d.ts +4 -0
  20. package/lib/endpoints/badgesv1.js +4 -0
  21. package/lib/endpoints/catalogv1.d.ts +25 -3
  22. package/lib/endpoints/catalogv1.js +21 -3
  23. package/lib/endpoints/catalogv2.d.ts +294 -50
  24. package/lib/endpoints/catalogv2.js +256 -24
  25. package/lib/endpoints/clientsettingsv2.d.ts +6 -0
  26. package/lib/endpoints/clientsettingsv2.js +6 -0
  27. package/lib/endpoints/contactsv1.d.ts +18 -22
  28. package/lib/endpoints/contactsv1.js +14 -22
  29. package/lib/endpoints/developv1.d.ts +36 -1
  30. package/lib/endpoints/developv1.js +12 -3
  31. package/lib/endpoints/developv2.d.ts +32 -3
  32. package/lib/endpoints/developv2.js +16 -5
  33. package/lib/endpoints/friendsv1.d.ts +222 -314
  34. package/lib/endpoints/friendsv1.js +213 -313
  35. package/lib/endpoints/gameinternationalizationv1.d.ts +59 -0
  36. package/lib/endpoints/gameinternationalizationv1.js +57 -1
  37. package/lib/endpoints/gamesv1.d.ts +79 -0
  38. package/lib/endpoints/gamesv1.js +70 -97
  39. package/lib/endpoints/gamesv2.d.ts +12 -0
  40. package/lib/endpoints/gamesv2.js +10 -0
  41. package/lib/endpoints/groupsv1.d.ts +49 -4
  42. package/lib/endpoints/groupsv1.js +55 -7
  43. package/lib/endpoints/groupsv2.d.ts +2 -0
  44. package/lib/endpoints/groupsv2.js +2 -0
  45. package/lib/endpoints/inventoryv1.d.ts +3 -1
  46. package/lib/endpoints/inventoryv1.js +3 -1
  47. package/lib/endpoints/inventoryv2.d.ts +70 -0
  48. package/lib/endpoints/inventoryv2.js +68 -1
  49. package/lib/endpoints/localev1.d.ts +27 -0
  50. package/lib/endpoints/localev1.js +28 -1
  51. package/lib/endpoints/publishv1.d.ts +3 -6
  52. package/lib/endpoints/publishv1.js +3 -6
  53. package/lib/endpoints/thumbnailsv1.d.ts +44 -87
  54. package/lib/endpoints/thumbnailsv1.js +25 -0
  55. package/lib/index.d.ts +96 -3
  56. package/lib/index.js +114 -1
  57. package/lib/opencloud/v1/asset-permissions.d.ts +1 -1
  58. package/lib/opencloud/v1/assets.d.ts +9 -9
  59. package/lib/opencloud/v1/datastores-ordered.d.ts +6 -6
  60. package/lib/opencloud/v1/datastores.d.ts +8 -8
  61. package/lib/opencloud/v1/developer-products.d.ts +4 -4
  62. package/lib/opencloud/v1/game-passes.d.ts +4 -4
  63. package/lib/opencloud/v1/messaging.d.ts +1 -1
  64. package/lib/opencloud/v1/open-eval.d.ts +2 -2
  65. package/lib/opencloud/v1/secrets-store.d.ts +5 -5
  66. package/lib/opencloud/v1/toolbox.d.ts +2 -2
  67. package/lib/opencloud/v1/universes.d.ts +1 -1
  68. package/lib/opencloud/v2/cloud.d.ts +197 -87
  69. package/lib/opencloud/v2/cloud.js +68 -15
  70. package/package.json +108 -108
@@ -1,39 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { endpoint } from "..";
3
3
 
4
- const Roblox_Web_Responses_Thumbnails_ThumbnailResponse = z.object({
5
- targetId: z.number().int(),
6
- state: z.enum([
7
- "Error",
8
- "Completed",
9
- "InReview",
10
- "Pending",
11
- "Blocked",
12
- "TemporarilyUnavailable",
13
- ]),
14
- imageUrl: z.string(),
15
- version: z.string(),
16
- });
17
- const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_ =
18
- z.object({
19
- data: z.array(Roblox_Web_Responses_Thumbnails_ThumbnailResponse),
20
- });
21
- const Roblox_Web_WebAPI_Models_ApiErrorModel = z.object({
22
- code: z.number().int(),
23
- message: z.string(),
24
- userFacingMessage: z.string(),
25
- field: z.string(),
26
- fieldData: z.object({}),
27
- });
28
- const Roblox_Thumbnails_Api_Models_UniverseThumbnailsResponse = z.object({
29
- universeId: z.number().int(),
30
- error: Roblox_Web_WebAPI_Models_ApiErrorModel,
31
- thumbnails: z.array(Roblox_Web_Responses_Thumbnails_ThumbnailResponse),
32
- });
33
- const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Thumbnails_Api_Models_UniverseThumbnailsResponse_ =
34
- z.object({
35
- data: z.array(Roblox_Thumbnails_Api_Models_UniverseThumbnailsResponse),
36
- });
37
4
  const Roblox_Thumbnails_Apis_Models_ThumbnailBatchRequest = z.object({
38
5
  requestId: z.string(),
39
6
  targetId: z.number().int(),
@@ -65,27 +32,8 @@ const Roblox_Thumbnails_Apis_Models_ThumbnailBatchRequest = z.object({
65
32
  isCircular: z.boolean(),
66
33
  accessContext: z.string(),
67
34
  headShape: z.string(),
35
+ includeBackground: z.boolean(),
68
36
  });
69
- const Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse = z.object({
70
- requestId: z.string(),
71
- errorCode: z.number().int(),
72
- errorMessage: z.string(),
73
- targetId: z.number().int(),
74
- state: z.enum([
75
- "Error",
76
- "Completed",
77
- "InReview",
78
- "Pending",
79
- "Blocked",
80
- "TemporarilyUnavailable",
81
- ]),
82
- imageUrl: z.string(),
83
- version: z.string(),
84
- });
85
- const Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse_ =
86
- z.object({
87
- data: z.array(Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse),
88
- });
89
37
 
90
38
  /**
91
39
  * @api GET https://thumbnails.roblox.com/v1/asset-thumbnail-animated
@@ -111,7 +59,7 @@ export const getAssetThumbnailAnimated = endpoint({
111
59
  assetId: z.number().int(),
112
60
  "Roblox-Place-Id": z.number().int().optional(),
113
61
  },
114
- response: Roblox_Web_Responses_Thumbnails_ThumbnailResponse,
62
+ response: z.void(),
115
63
  errors: [
116
64
  {
117
65
  status: 400,
@@ -208,8 +156,7 @@ export const getAssets = endpoint({
208
156
  format: z.enum(["Png", "Jpeg", "Webp"]).optional().default("Png"),
209
157
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
210
158
  },
211
- response:
212
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
159
+ response: z.void(),
213
160
  errors: [
214
161
  {
215
162
  status: 400,
@@ -256,7 +203,7 @@ export const getAssetsThumbnail3d = endpoint({
256
203
  useGltf: z.boolean().optional(),
257
204
  "Roblox-Place-Id": z.number().int().optional(),
258
205
  },
259
- response: Roblox_Web_Responses_Thumbnails_ThumbnailResponse,
206
+ response: z.void(),
260
207
  errors: [
261
208
  {
262
209
  status: 400,
@@ -300,8 +247,7 @@ export const getBadgesIcons = endpoint({
300
247
  format: z.enum(["Png", "Webp"]).optional().default("Png"),
301
248
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
302
249
  },
303
- response:
304
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
250
+ response: z.void(),
305
251
  errors: [
306
252
  {
307
253
  status: 400,
@@ -353,8 +299,7 @@ export const postBatch = endpoint({
353
299
  "Roblox-Place-Id": z.number().int().optional(),
354
300
  },
355
301
  body: z.array(Roblox_Thumbnails_Apis_Models_ThumbnailBatchRequest),
356
- response:
357
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse_,
302
+ response: z.void(),
358
303
  errors: [
359
304
  {
360
305
  status: 400,
@@ -406,8 +351,7 @@ export const getBundlesThumbnails = endpoint({
406
351
  format: z.enum(["Png", "Webp"]).optional().default("Png"),
407
352
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
408
353
  },
409
- response:
410
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
354
+ response: z.void(),
411
355
  errors: [
412
356
  {
413
357
  status: 400,
@@ -455,8 +399,7 @@ export const getDeveloperProductsIcons = endpoint({
455
399
  format: z.enum(["Png", "Webp"]).optional().default("Png"),
456
400
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
457
401
  },
458
- response:
459
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
402
+ response: z.void(),
460
403
  errors: [
461
404
  {
462
405
  status: 400,
@@ -504,8 +447,7 @@ export const getGamePasses = endpoint({
504
447
  format: z.enum(["Png", "Webp"]).optional().default("Png"),
505
448
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
506
449
  },
507
- response:
508
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
450
+ response: z.void(),
509
451
  errors: [
510
452
  {
511
453
  status: 400,
@@ -561,8 +503,7 @@ export const getGamesUniverseidThumbnails = endpoint({
561
503
  format: z.enum(["Png", "Jpeg", "Webp"]).optional().default("Png"),
562
504
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
563
505
  },
564
- response:
565
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
506
+ response: z.void(),
566
507
  errors: [
567
508
  {
568
509
  status: 400,
@@ -633,8 +574,7 @@ export const getGamesIcons = endpoint({
633
574
  format: z.enum(["Png", "Jpeg", "Webp"]).optional().default("Png"),
634
575
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
635
576
  },
636
- response:
637
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
577
+ response: z.void(),
638
578
  errors: [
639
579
  {
640
580
  status: 400,
@@ -702,8 +642,7 @@ export const getGamesMultigetThumbnails = endpoint({
702
642
  format: z.enum(["Png", "Jpeg", "Webp"]).optional().default("Png"),
703
643
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
704
644
  },
705
- response:
706
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Thumbnails_Api_Models_UniverseThumbnailsResponse_,
645
+ response: z.void(),
707
646
  errors: [
708
647
  {
709
648
  status: 400,
@@ -751,8 +690,7 @@ export const getGroupsIcons = endpoint({
751
690
  format: z.enum(["Png", "Webp"]).optional().default("Png"),
752
691
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
753
692
  },
754
- response:
755
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
693
+ response: z.void(),
756
694
  errors: [
757
695
  {
758
696
  status: 400,
@@ -817,8 +755,7 @@ export const getPlacesGameicons = endpoint({
817
755
  format: z.enum(["Png", "Jpeg", "Webp"]).optional().default("Png"),
818
756
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
819
757
  },
820
- response:
821
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
758
+ response: z.void(),
822
759
  errors: [
823
760
  {
824
761
  status: 400,
@@ -839,6 +776,7 @@ export const getPlacesGameicons = endpoint({
839
776
  * @api GET https://thumbnails.roblox.com/v1/users/avatar
840
777
  * @summary Get Avatar Full body shots for the given CSV of userIds
841
778
  * @param userIds CSV for the userIds to get avatar full body shots
779
+ * @param includeBackground Whether to include a background in the thumbnail (defaults to false)
842
780
  * @param size The thumbnail size, formatted widthxheight
843
781
  * @param format The thumbnail format
844
782
  * @param isCircular The circle thumbnail output parameter, true or false
@@ -852,6 +790,10 @@ export const getUsersAvatar = endpoint({
852
790
  userIds: {
853
791
  style: "form",
854
792
  },
793
+ includeBackground: {
794
+ style: "form",
795
+ explode: true,
796
+ },
855
797
  size: {
856
798
  style: "form",
857
799
  explode: true,
@@ -867,6 +809,7 @@ export const getUsersAvatar = endpoint({
867
809
  },
868
810
  parameters: {
869
811
  userIds: z.array(z.number()),
812
+ includeBackground: z.boolean().optional(),
870
813
  size: z
871
814
  .enum([
872
815
  "30x30",
@@ -889,8 +832,7 @@ export const getUsersAvatar = endpoint({
889
832
  format: z.enum(["Png", "Jpeg", "Webp"]).optional().default("Png"),
890
833
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
891
834
  },
892
- response:
893
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
835
+ response: z.void(),
894
836
  errors: [
895
837
  {
896
838
  status: 400,
@@ -921,7 +863,7 @@ export const getUsersAvatar3d = endpoint({
921
863
  parameters: {
922
864
  userId: z.number().int(),
923
865
  },
924
- response: Roblox_Web_Responses_Thumbnails_ThumbnailResponse,
866
+ response: z.void(),
925
867
  errors: [
926
868
  {
927
869
  status: 400,
@@ -933,6 +875,7 @@ export const getUsersAvatar3d = endpoint({
933
875
  * @api GET https://thumbnails.roblox.com/v1/users/avatar-bust
934
876
  * @summary Get Avatar Busts for the given CSV of userIds
935
877
  * @param userIds CSV for the userIds to get avatar headshots
878
+ * @param includeBackground Whether to include a background in the thumbnail (defaults to false)
936
879
  * @param size The thumbnail size, formatted widthxheight
937
880
  * @param format The thumbnail format
938
881
  * @param isCircular The circle thumbnail output parameter, true or false
@@ -946,6 +889,10 @@ export const getUsersAvatarBust = endpoint({
946
889
  userIds: {
947
890
  style: "form",
948
891
  },
892
+ includeBackground: {
893
+ style: "form",
894
+ explode: true,
895
+ },
949
896
  size: {
950
897
  style: "form",
951
898
  explode: true,
@@ -961,6 +908,7 @@ export const getUsersAvatarBust = endpoint({
961
908
  },
962
909
  parameters: {
963
910
  userIds: z.array(z.number()),
911
+ includeBackground: z.boolean().optional(),
964
912
  size: z
965
913
  .enum([
966
914
  "48x48",
@@ -978,8 +926,7 @@ export const getUsersAvatarBust = endpoint({
978
926
  format: z.enum(["Png", "Webp"]).optional().default("Png"),
979
927
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
980
928
  },
981
- response:
982
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
929
+ response: z.void(),
983
930
  errors: [
984
931
  {
985
932
  status: 400,
@@ -995,6 +942,7 @@ export const getUsersAvatarBust = endpoint({
995
942
  * @api GET https://thumbnails.roblox.com/v1/users/avatar-headshot
996
943
  * @summary Get Avatar Headshots for the given CSV of userIds
997
944
  * @param userIds CSV for the userIds to get avatar headshots
945
+ * @param includeBackground Whether to include a background in the thumbnail (defaults to false)
998
946
  * @param size The thumbnail size, formatted widthxheight
999
947
  * @param format The thumbnail format
1000
948
  * @param isCircular The circle thumbnail output parameter, true or false
@@ -1008,6 +956,10 @@ export const getUsersAvatarHeadshot = endpoint({
1008
956
  userIds: {
1009
957
  style: "form",
1010
958
  },
959
+ includeBackground: {
960
+ style: "form",
961
+ explode: true,
962
+ },
1011
963
  size: {
1012
964
  style: "form",
1013
965
  explode: true,
@@ -1023,6 +975,7 @@ export const getUsersAvatarHeadshot = endpoint({
1023
975
  },
1024
976
  parameters: {
1025
977
  userIds: z.array(z.number()),
978
+ includeBackground: z.boolean().optional(),
1026
979
  size: z
1027
980
  .enum([
1028
981
  "48x48",
@@ -1042,8 +995,7 @@ export const getUsersAvatarHeadshot = endpoint({
1042
995
  format: z.enum(["Png", "Jpeg", "Webp"]).optional().default("Png"),
1043
996
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
1044
997
  },
1045
- response:
1046
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
998
+ response: z.void(),
1047
999
  errors: [
1048
1000
  {
1049
1001
  status: 400,
@@ -1074,13 +1026,14 @@ export const getUsersOutfit3d = endpoint({
1074
1026
  parameters: {
1075
1027
  outfitId: z.number().int(),
1076
1028
  },
1077
- response: Roblox_Web_Responses_Thumbnails_ThumbnailResponse,
1029
+ response: z.void(),
1078
1030
  errors: [],
1079
1031
  });
1080
1032
  /**
1081
1033
  * @api GET https://thumbnails.roblox.com/v1/users/outfits
1082
1034
  * @summary Get outfits for the given CSV of userOutfitIds
1083
1035
  * @param userOutfitIds CSV for the userOutfitIds to get user outfits
1036
+ * @param includeBackground Whether to include a background in the thumbnail (defaults to false)
1084
1037
  * @param size The thumbnail size, formatted widthxheight
1085
1038
  * @param format The thumbnail format
1086
1039
  * @param isCircular The circle thumbnail output parameter, true or false
@@ -1094,6 +1047,10 @@ export const getUsersOutfits = endpoint({
1094
1047
  userOutfitIds: {
1095
1048
  style: "form",
1096
1049
  },
1050
+ includeBackground: {
1051
+ style: "form",
1052
+ explode: true,
1053
+ },
1097
1054
  size: {
1098
1055
  style: "form",
1099
1056
  explode: true,
@@ -1109,12 +1066,12 @@ export const getUsersOutfits = endpoint({
1109
1066
  },
1110
1067
  parameters: {
1111
1068
  userOutfitIds: z.array(z.number()),
1069
+ includeBackground: z.boolean().optional(),
1112
1070
  size: z.enum(["150x150", "420x420"]).optional().default("150x150"),
1113
1071
  format: z.enum(["Png", "Webp"]).optional().default("Png"),
1114
1072
  isCircular: z.union([z.literal(true), z.literal(false)]).optional(),
1115
1073
  },
1116
- response:
1117
- Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
1074
+ response: z.void(),
1118
1075
  errors: [
1119
1076
  {
1120
1077
  status: 400,
@@ -58,6 +58,7 @@ const Roblox_Thumbnails_Apis_Models_ThumbnailBatchRequest = zod_1.z.object({
58
58
  isCircular: zod_1.z.boolean(),
59
59
  accessContext: zod_1.z.string(),
60
60
  headShape: zod_1.z.string(),
61
+ includeBackground: zod_1.z.boolean(),
61
62
  });
62
63
  const Roblox_Web_Responses_Thumbnails_ThumbnailBatchResponse = zod_1.z.object({
63
64
  requestId: zod_1.z.string(),
@@ -788,6 +789,7 @@ exports.getPlacesGameicons = (0, __1.endpoint)({
788
789
  * @param size The thumbnail size, formatted widthxheight
789
790
  * @param format The thumbnail format
790
791
  * @param isCircular The circle thumbnail output parameter, true or false
792
+ * @param includeBackground Whether to include a background in the thumbnail (defaults to false)
791
793
  */
792
794
  exports.getUsersAvatar = (0, __1.endpoint)({
793
795
  method: 'GET',
@@ -810,6 +812,10 @@ exports.getUsersAvatar = (0, __1.endpoint)({
810
812
  style: 'form',
811
813
  explode: true,
812
814
  },
815
+ includeBackground: {
816
+ style: 'form',
817
+ explode: true,
818
+ },
813
819
  },
814
820
  parameters: {
815
821
  userIds: zod_1.z.array(zod_1.z.number()),
@@ -834,6 +840,7 @@ exports.getUsersAvatar = (0, __1.endpoint)({
834
840
  .default('30x30'),
835
841
  format: zod_1.z.enum(['Png', 'Jpeg', 'Webp']).optional().default('Png'),
836
842
  isCircular: zod_1.z.union([zod_1.z.literal(true), zod_1.z.literal(false)]).optional(),
843
+ includeBackground: zod_1.z.boolean().optional(),
837
844
  },
838
845
  response: Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
839
846
  errors: [
@@ -881,6 +888,7 @@ exports.getUsersAvatar3d = (0, __1.endpoint)({
881
888
  * @param size The thumbnail size, formatted widthxheight
882
889
  * @param format The thumbnail format
883
890
  * @param isCircular The circle thumbnail output parameter, true or false
891
+ * @param includeBackground Whether to include a background in the thumbnail (defaults to false)
884
892
  */
885
893
  exports.getUsersAvatarBust = (0, __1.endpoint)({
886
894
  method: 'GET',
@@ -903,6 +911,10 @@ exports.getUsersAvatarBust = (0, __1.endpoint)({
903
911
  style: 'form',
904
912
  explode: true,
905
913
  },
914
+ includeBackground: {
915
+ style: 'form',
916
+ explode: true,
917
+ },
906
918
  },
907
919
  parameters: {
908
920
  userIds: zod_1.z.array(zod_1.z.number()),
@@ -912,6 +924,7 @@ exports.getUsersAvatarBust = (0, __1.endpoint)({
912
924
  .default('48x48'),
913
925
  format: zod_1.z.enum(['Png', 'Webp']).optional().default('Png'),
914
926
  isCircular: zod_1.z.union([zod_1.z.literal(true), zod_1.z.literal(false)]).optional(),
927
+ includeBackground: zod_1.z.boolean().optional(),
915
928
  },
916
929
  response: Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
917
930
  errors: [
@@ -932,6 +945,7 @@ exports.getUsersAvatarBust = (0, __1.endpoint)({
932
945
  * @param size The thumbnail size, formatted widthxheight
933
946
  * @param format The thumbnail format
934
947
  * @param isCircular The circle thumbnail output parameter, true or false
948
+ * @param includeBackground Whether to include a background in the thumbnail (defaults to false)
935
949
  */
936
950
  exports.getUsersAvatarHeadshot = (0, __1.endpoint)({
937
951
  method: 'GET',
@@ -954,6 +968,10 @@ exports.getUsersAvatarHeadshot = (0, __1.endpoint)({
954
968
  style: 'form',
955
969
  explode: true,
956
970
  },
971
+ includeBackground: {
972
+ style: 'form',
973
+ explode: true,
974
+ },
957
975
  },
958
976
  parameters: {
959
977
  userIds: zod_1.z.array(zod_1.z.number()),
@@ -975,6 +993,7 @@ exports.getUsersAvatarHeadshot = (0, __1.endpoint)({
975
993
  .default('48x48'),
976
994
  format: zod_1.z.enum(['Png', 'Jpeg', 'Webp']).optional().default('Png'),
977
995
  isCircular: zod_1.z.union([zod_1.z.literal(true), zod_1.z.literal(false)]).optional(),
996
+ includeBackground: zod_1.z.boolean().optional(),
978
997
  },
979
998
  response: Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
980
999
  errors: [
@@ -1017,6 +1036,7 @@ exports.getUsersOutfit3d = (0, __1.endpoint)({
1017
1036
  * @param size The thumbnail size, formatted widthxheight
1018
1037
  * @param format The thumbnail format
1019
1038
  * @param isCircular The circle thumbnail output parameter, true or false
1039
+ * @param includeBackground Whether to include a background in the thumbnail (defaults to false)
1020
1040
  */
1021
1041
  exports.getUsersOutfits = (0, __1.endpoint)({
1022
1042
  method: 'GET',
@@ -1039,12 +1059,17 @@ exports.getUsersOutfits = (0, __1.endpoint)({
1039
1059
  style: 'form',
1040
1060
  explode: true,
1041
1061
  },
1062
+ includeBackground: {
1063
+ style: 'form',
1064
+ explode: true,
1065
+ },
1042
1066
  },
1043
1067
  parameters: {
1044
1068
  userOutfitIds: zod_1.z.array(zod_1.z.number()),
1045
1069
  size: zod_1.z.enum(['150x150', '420x420']).optional().default('150x150'),
1046
1070
  format: zod_1.z.enum(['Png', 'Webp']).optional().default('Png'),
1047
1071
  isCircular: zod_1.z.union([zod_1.z.literal(true), zod_1.z.literal(false)]).optional(),
1072
+ includeBackground: zod_1.z.boolean().optional(),
1048
1073
  },
1049
1074
  response: Roblox_Web_WebAPI_Models_ApiArrayResponse_Roblox_Web_Responses_Thumbnails_ThumbnailResponse_,
1050
1075
  errors: [
package/lib/index.d.ts CHANGED
@@ -24,15 +24,22 @@ export type EndpointSchema = EndpointBase & {
24
24
  parameters?: any;
25
25
  body?: any;
26
26
  response: any;
27
+ /**
28
+ * For long-running-operation endpoints (response is an `Operation`), the schema of the
29
+ * completed operation's `response` payload. Lets {@link pollOperation}/{@link fetchApiOperation}
30
+ * validate and type the result without an explicit schema. Populated by codegen.
31
+ */
32
+ resultResponse?: any;
27
33
  };
28
34
  /**
29
35
  * This is a hack to allow us to show the parameters and response types of an endpoint
30
36
  * as the inferred types of the parameters and response properties.
31
37
  */
32
- export type EndpointGeneric<T, U, E> = EndpointBase & {
38
+ export type EndpointGeneric<T, U, E, RR = undefined> = EndpointBase & {
33
39
  parameters?: T;
34
40
  body?: E;
35
41
  response: U;
42
+ resultResponse?: RR;
36
43
  };
37
44
  type InferZodObjectOptional<T extends z.ZodRawShape> = {
38
45
  [K in keyof T]: T[K] extends z.ZodOptional<any> | z.ZodDefault<any> ? K : never;
@@ -48,7 +55,7 @@ type InferNonEmpty<T extends Record<string, z.Schema<any>>> = Merge<{
48
55
  }, {
49
56
  [K in InferZodObjectOptional<T>]?: z.infer<T[K]>;
50
57
  }>;
51
- declare const endpoint: <T extends Record<string, z.Schema<any>>, U extends z.ZodTypeAny, E extends z.ZodTypeAny | undefined = undefined>(endpoint: EndpointGeneric<T, U, E>) => EndpointGeneric<InferNonEmpty<T>, z.infer<U>, E extends z.ZodTypeAny ? z.infer<E> : undefined>;
58
+ declare const endpoint: <T extends Record<string, z.Schema<any>>, U extends z.ZodTypeAny, E extends z.ZodTypeAny | undefined = undefined, RR extends z.ZodTypeAny | undefined = undefined>(endpoint: EndpointGeneric<T, U, E, RR>) => EndpointGeneric<InferNonEmpty<T>, z.infer<U>, E extends z.ZodTypeAny ? z.infer<E> : undefined, RR extends z.ZodTypeAny ? z.infer<RR> : undefined>;
52
59
  type IsExactlyUndefined<T> = [T] extends [undefined] ? ([undefined] extends [T] ? true : false) : false;
53
60
  type ExtractParams<S extends EndpointGeneric<any, any, any>> = S['parameters'] extends undefined ? IsExactlyUndefined<S['body']> extends true ? undefined : {
54
61
  body: S['body'];
@@ -56,6 +63,7 @@ type ExtractParams<S extends EndpointGeneric<any, any, any>> = S['parameters'] e
56
63
  body: S['body'];
57
64
  };
58
65
  type ExtractResponse<S extends EndpointGeneric<any, any, any>> = S['response'];
66
+ type ExtractOperationResult<S extends EndpointSchema> = [S['resultResponse']] extends [undefined] ? unknown : NonNullable<S['resultResponse']>;
59
67
  type RetryOptions = {
60
68
  retries?: number;
61
69
  retryDelay?: number;
@@ -386,4 +394,89 @@ declare function fetchApiPages<S extends EndpointSchema>(endpoint: S, initialPar
386
394
  * ```
387
395
  */
388
396
  declare function fetchApiPagesGenerator<S extends EndpointSchema, R extends boolean>(endpoint: S, initialParams: ExtractParams<S>, requestOptions?: RequestOptions<R>, limit?: number): AsyncGenerator<ExtractResponse<S> | AnyError, void, unknown>;
389
- export { fetchApi, fetchApiSplit, fetchApiPages, fetchApiPagesGenerator, ExtractResponse, ExtractParams, endpoint };
397
+ /**
398
+ * Roblox Open Cloud long-running operation envelope. Endpoints such as
399
+ * `generateThumbnail` / `generateAsset` return this instead of the final
400
+ * result: `done` is false until the work completes, at which point `response`
401
+ * holds the payload. Fields are optional because the API omits `response`
402
+ * (and sometimes `done`) while the operation is still in progress.
403
+ */
404
+ export declare const OperationSchema: z.ZodObject<{
405
+ path: z.ZodString;
406
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
407
+ done: z.ZodOptional<z.ZodBoolean>;
408
+ error: z.ZodOptional<z.ZodObject<{
409
+ code: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
410
+ message: z.ZodOptional<z.ZodOptional<z.ZodString>>;
411
+ details: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodAny>>>;
412
+ }, z.core.$strip>>;
413
+ response: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
414
+ }, z.core.$strip>;
415
+ export type Operation = z.infer<typeof OperationSchema>;
416
+ /** Minimal shape accepted by {@link pollOperation} — assignable from any generated Operation response. */
417
+ type OperationLike = {
418
+ path: string;
419
+ done?: boolean;
420
+ response?: unknown;
421
+ error?: {
422
+ code?: number;
423
+ message?: string;
424
+ } | null;
425
+ };
426
+ type PollOperationOptions<R extends boolean = false> = {
427
+ /** Delay between polls in milliseconds. Default 1000. */
428
+ interval?: number;
429
+ /** Give up after this many milliseconds and throw. Default 30000. */
430
+ timeout?: number;
431
+ /** Abort the poll early; rejects with the signal's reason. */
432
+ signal?: AbortSignal;
433
+ /** Override the base URL the operation path is resolved against. Defaults to the originating endpoint's `baseUrl`. */
434
+ baseUrl?: string;
435
+ /**
436
+ * Override the API-version prefix inserted between the base URL and the
437
+ * operation path (e.g. `/assets/v1`). By default it is derived from the
438
+ * originating endpoint's path, which works for operations whose path is
439
+ * relative to the endpoint's own version (e.g. `users/123/operations/…`).
440
+ */
441
+ pathPrefix?: string;
442
+ /** Forwarded to each poll request (headers such as the API key, retries, credentials, …). */
443
+ requestOptions?: RequestOptions<R>;
444
+ };
445
+ /**
446
+ * Polls a Roblox Open Cloud long-running {@link Operation} until it completes,
447
+ * then returns its final `response` payload.
448
+ *
449
+ * Generate-style endpoints (e.g. `getCloudV2UsersUserIdGenerateThumbnail`)
450
+ * return an {@link Operation} rather than the result itself. When the result
451
+ * isn't cached, `done` is false and you must GET the operation's `path` until
452
+ * it flips true. This helper does that, resolving the path against the
453
+ * originating endpoint's base URL and version prefix.
454
+ *
455
+ * The result is validated against `resultSchema` if given; otherwise it falls
456
+ * back to the endpoint's codegen'd `resultResponse` schema (so generated
457
+ * operation endpoints need no explicit schema). With neither, the raw payload
458
+ * is returned as `unknown`.
459
+ *
460
+ * @example
461
+ * // Typed automatically from the endpoint's result schema:
462
+ * const { imageUri } = await pollOperation(getCloudV2UsersUserIdGenerateThumbnail, op);
463
+ * // Or with an explicit schema for custom/unknown payloads:
464
+ * const result = await pollOperation(customEndpoint, op, z.object({ imageUri: z.string() }));
465
+ */
466
+ declare function pollOperation<S extends EndpointSchema, T extends z.ZodTypeAny>(endpoint: S, operation: OperationLike, resultSchema: T, options?: PollOperationOptions): Promise<z.infer<T>>;
467
+ declare function pollOperation<S extends EndpointSchema>(endpoint: S, operation: OperationLike, options?: PollOperationOptions): Promise<ExtractOperationResult<S>>;
468
+ /**
469
+ * Fires a long-running-operation endpoint and waits for its result in one call —
470
+ * `fetchApi` followed by {@link pollOperation}, using a single endpoint reference.
471
+ *
472
+ * The result is typed from the endpoint's codegen'd `resultResponse` schema when
473
+ * present; pass an explicit `resultSchema` for custom endpoints or to override it.
474
+ *
475
+ * @example
476
+ * const { imageUri } = await fetchApiOperation(getCloudV2UsersUserIdGenerateThumbnail, {
477
+ * user_id: robloxId, shape: 'SQUARE', format: 'PNG',
478
+ * });
479
+ */
480
+ declare function fetchApiOperation<S extends EndpointSchema, T extends z.ZodTypeAny>(endpoint: S, params: ExtractParams<S>, resultSchema: T, options?: PollOperationOptions): Promise<z.infer<T>>;
481
+ declare function fetchApiOperation<S extends EndpointSchema>(endpoint: S, params: ExtractParams<S>, options?: PollOperationOptions): Promise<ExtractOperationResult<S>>;
482
+ export { fetchApi, fetchApiSplit, fetchApiPages, fetchApiPagesGenerator, pollOperation, fetchApiOperation, ExtractResponse, ExtractParams, endpoint, };