@jacobhumston/roblox-openapi-ts 1.0.43 → 1.0.44

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 (2) hide show
  1. package/dist/types.d.ts +2153 -15
  2. package/package.json +1 -1
package/dist/types.d.ts CHANGED
@@ -3796,6 +3796,175 @@ export interface paths {
3796
3796
  patch?: never;
3797
3797
  trace?: never;
3798
3798
  };
3799
+ "/creator-configs-public-api/v1/experimentation/universes/{universeId}/experiments": {
3800
+ parameters: {
3801
+ query?: never;
3802
+ header?: never;
3803
+ path?: never;
3804
+ cookie?: never;
3805
+ };
3806
+ /**
3807
+ * Lists experiments for a universe.
3808
+ * @description Pagination is offset-based (`maxPageSize` + `skip`). The response carries the page slice plus the unpaginated total
3809
+ * matching the filters. Request includes optional pagination, search, and filters.
3810
+ */
3811
+ get: operations["PublicExperimentation_ListExperiments"];
3812
+ put?: never;
3813
+ /**
3814
+ * Creates a new experiment for a universe.
3815
+ * @description Returns an ExperimentOperation describing the async create call.
3816
+ */
3817
+ post: operations["PublicExperimentation_CreateExperiment"];
3818
+ delete?: never;
3819
+ options?: never;
3820
+ head?: never;
3821
+ patch?: never;
3822
+ trace?: never;
3823
+ };
3824
+ "/creator-configs-public-api/v1/experimentation/universes/{universeId}/experiments/{experimentId}": {
3825
+ parameters: {
3826
+ query?: never;
3827
+ header?: never;
3828
+ path?: never;
3829
+ cookie?: never;
3830
+ };
3831
+ /**
3832
+ * Gets an experiment by ID.
3833
+ * @description Returns the `experiment`. Returns 404 if the experiment doesn't exist for the universe.
3834
+ */
3835
+ get: operations["PublicExperimentation_GetExperiment"];
3836
+ put?: never;
3837
+ post?: never;
3838
+ /**
3839
+ * Discards an experiment.
3840
+ * @description The experiment record is retained with state Deleted.
3841
+ */
3842
+ delete: operations["PublicExperimentation_DiscardExperiment"];
3843
+ options?: never;
3844
+ head?: never;
3845
+ /**
3846
+ * Updates an existing experiment.
3847
+ * @description The payload is a full replacement of the mutable experiment fields. Returns an
3848
+ * ExperimentOperation describing the async update.
3849
+ */
3850
+ patch: operations["PublicExperimentation_UpdateExperiment"];
3851
+ trace?: never;
3852
+ };
3853
+ "/creator-configs-public-api/v1/experimentation/universes/{universeId}/experiments/{experimentId}/stats": {
3854
+ parameters: {
3855
+ query?: never;
3856
+ header?: never;
3857
+ path?: never;
3858
+ cookie?: never;
3859
+ };
3860
+ /** Gets diagnostic stats for an experiment. */
3861
+ get: operations["PublicExperimentation_GetExperimentStats"];
3862
+ put?: never;
3863
+ post?: never;
3864
+ delete?: never;
3865
+ options?: never;
3866
+ head?: never;
3867
+ patch?: never;
3868
+ trace?: never;
3869
+ };
3870
+ "/creator-configs-public-api/v1/experimentation/universes/{universeId}/experiments/{experimentId}:complete": {
3871
+ parameters: {
3872
+ query?: never;
3873
+ header?: never;
3874
+ path?: never;
3875
+ cookie?: never;
3876
+ };
3877
+ get?: never;
3878
+ put?: never;
3879
+ /** Completes an experiment by stopping it and rolling out the requested variant. */
3880
+ post: operations["PublicExperimentation_CompleteExperiment"];
3881
+ delete?: never;
3882
+ options?: never;
3883
+ head?: never;
3884
+ patch?: never;
3885
+ trace?: never;
3886
+ };
3887
+ "/creator-configs-public-api/v1/experimentation/universes/{universeId}/experiments/{experimentId}:schedule": {
3888
+ parameters: {
3889
+ query?: never;
3890
+ header?: never;
3891
+ path?: never;
3892
+ cookie?: never;
3893
+ };
3894
+ get?: never;
3895
+ put?: never;
3896
+ /**
3897
+ * Schedules an experiment to start at a future UTC time.
3898
+ * @description Body must include `scheduledStartTime` as an ISO-8601 UTC timestamp.
3899
+ */
3900
+ post: operations["PublicExperimentation_ScheduleExperiment"];
3901
+ delete?: never;
3902
+ options?: never;
3903
+ head?: never;
3904
+ patch?: never;
3905
+ trace?: never;
3906
+ };
3907
+ "/creator-configs-public-api/v1/experimentation/universes/{universeId}/experiments/{experimentId}:start": {
3908
+ parameters: {
3909
+ query?: never;
3910
+ header?: never;
3911
+ path?: never;
3912
+ cookie?: never;
3913
+ };
3914
+ get?: never;
3915
+ put?: never;
3916
+ /**
3917
+ * Starts an experiment immediately.
3918
+ * @description For a future-dated start, use the sibling `:schedule` endpoint.
3919
+ */
3920
+ post: operations["PublicExperimentation_StartExperiment"];
3921
+ delete?: never;
3922
+ options?: never;
3923
+ head?: never;
3924
+ patch?: never;
3925
+ trace?: never;
3926
+ };
3927
+ "/creator-configs-public-api/v1/experimentation/universes/{universeId}/experiments:calculateMde": {
3928
+ parameters: {
3929
+ query?: never;
3930
+ header?: never;
3931
+ path?: never;
3932
+ cookie?: never;
3933
+ };
3934
+ get?: never;
3935
+ put?: never;
3936
+ /**
3937
+ * Calculates the Minimum Detectable Effect (MDE) for a prospective experiment.
3938
+ * @description Poll by clients until the operation is complete.
3939
+ */
3940
+ post: operations["PublicExperimentation_CalculateExperimentMde"];
3941
+ delete?: never;
3942
+ options?: never;
3943
+ head?: never;
3944
+ patch?: never;
3945
+ trace?: never;
3946
+ };
3947
+ "/creator-configs-public-api/v1/experimentation/universes/{universeId}/operations/{operationId}": {
3948
+ parameters: {
3949
+ query?: never;
3950
+ header?: never;
3951
+ path?: never;
3952
+ cookie?: never;
3953
+ };
3954
+ /**
3955
+ * Gets the status of an experiment async operation.
3956
+ * @description Polled by clients between mutations (Create / Update / Start / Schedule /
3957
+ * Complete / Discard) to determine when the operation reaches `done = true`.
3958
+ */
3959
+ get: operations["PublicExperimentation_GetExperimentOperationStatus"];
3960
+ put?: never;
3961
+ post?: never;
3962
+ delete?: never;
3963
+ options?: never;
3964
+ head?: never;
3965
+ patch?: never;
3966
+ trace?: never;
3967
+ };
3799
3968
  "/datastores/v1/universes/{universeId}/standard-datastores": {
3800
3969
  parameters: {
3801
3970
  query?: never;
@@ -13204,7 +13373,11 @@ export interface paths {
13204
13373
  path?: never;
13205
13374
  cookie?: never;
13206
13375
  };
13207
- /** Returns details about the authenticated user's avatar. */
13376
+ /**
13377
+ * Returns details about the authenticated user's avatar.
13378
+ * @deprecated
13379
+ * @description Please use GET v4/avatar
13380
+ */
13208
13381
  get: {
13209
13382
  parameters: {
13210
13383
  query?: never;
@@ -27769,7 +27942,11 @@ export interface paths {
27769
27942
  path?: never;
27770
27943
  cookie?: never;
27771
27944
  };
27772
- /** Gets details about the contents of an outfit. */
27945
+ /**
27946
+ * Gets details about the contents of an outfit.
27947
+ * @deprecated
27948
+ * @description Please use GET v4/outfits/{outfitId}/details
27949
+ */
27773
27950
  get: {
27774
27951
  parameters: {
27775
27952
  query?: never;
@@ -39119,6 +39296,90 @@ export interface paths {
39119
39296
  patch?: never;
39120
39297
  trace?: never;
39121
39298
  };
39299
+ "/v2/avatar": {
39300
+ parameters: {
39301
+ query?: never;
39302
+ header?: never;
39303
+ path?: never;
39304
+ cookie?: never;
39305
+ };
39306
+ get?: never;
39307
+ put?: never;
39308
+ post?: never;
39309
+ delete?: never;
39310
+ options?: never;
39311
+ head?: never;
39312
+ /**
39313
+ * Sets the avatar to the incoming avatar using field masks.
39314
+ * @deprecated
39315
+ * @description Only allows items that you own, are not expired, and are wearable asset types.
39316
+ * Any assets being worn before this method is called are automatically removed.
39317
+ *
39318
+ * Please use PATCH v4/avatar
39319
+ */
39320
+ patch: {
39321
+ parameters: {
39322
+ query?: never;
39323
+ header?: {
39324
+ "Roblox-Place-Id"?: number;
39325
+ };
39326
+ path?: never;
39327
+ cookie?: never;
39328
+ };
39329
+ /** @description Model of avatar that we are updating to. */
39330
+ requestBody: {
39331
+ content: {
39332
+ "application/json": components["schemas"]["Roblox.Api.Avatar.Models.UpdateAvatarRequestModel"];
39333
+ "text/json": components["schemas"]["Roblox.Api.Avatar.Models.UpdateAvatarRequestModel"];
39334
+ };
39335
+ };
39336
+ responses: {
39337
+ /** @description OK */
39338
+ 200: {
39339
+ headers: {
39340
+ [name: string]: unknown;
39341
+ };
39342
+ content: {
39343
+ "application/json": components["schemas"]["Roblox.Api.Avatar.Models.UpdateAvatarResponseModel"];
39344
+ "text/json": components["schemas"]["Roblox.Api.Avatar.Models.UpdateAvatarResponseModel"];
39345
+ };
39346
+ };
39347
+ /**
39348
+ * @description 3: Invalid assetId
39349
+ * 5: Meta does not apply to specified asset type
39350
+ * 7: Required meta is not provided for the specific asset type
39351
+ */
39352
+ 400: {
39353
+ headers: {
39354
+ [name: string]: unknown;
39355
+ };
39356
+ content?: never;
39357
+ };
39358
+ /** @description 0: Authorization has been denied for this request. */
39359
+ 401: {
39360
+ headers: {
39361
+ [name: string]: unknown;
39362
+ };
39363
+ content?: never;
39364
+ };
39365
+ /** @description 0: Token Validation Failed */
39366
+ 403: {
39367
+ headers: {
39368
+ [name: string]: unknown;
39369
+ };
39370
+ content?: never;
39371
+ };
39372
+ /** @description 2: Failed to wear asset. */
39373
+ 500: {
39374
+ headers: {
39375
+ [name: string]: unknown;
39376
+ };
39377
+ content?: never;
39378
+ };
39379
+ };
39380
+ };
39381
+ trace?: never;
39382
+ };
39122
39383
  "/v2/avatar/avatar": {
39123
39384
  parameters: {
39124
39385
  query?: never;
@@ -39177,7 +39438,11 @@ export interface paths {
39177
39438
  };
39178
39439
  get?: never;
39179
39440
  put?: never;
39180
- /** Sets the authenticated user's body colors. */
39441
+ /**
39442
+ * Sets the authenticated user's body colors.
39443
+ * @deprecated
39444
+ * @description Please use PATCH v4/avatar
39445
+ */
39181
39446
  post: {
39182
39447
  parameters: {
39183
39448
  query?: never;
@@ -39237,8 +39502,11 @@ export interface paths {
39237
39502
  put?: never;
39238
39503
  /**
39239
39504
  * Sets the avatar's current assets to the list.
39505
+ * @deprecated
39240
39506
  * @description Only allows items that you own, are not expired, and are wearable asset types.
39241
39507
  * Any assets being worn before this method is called are automatically removed.
39508
+ *
39509
+ * Please use PATCH v4/avatar
39242
39510
  */
39243
39511
  post: {
39244
39512
  parameters: {
@@ -40112,7 +40380,7 @@ export interface paths {
40112
40380
  * @description Fails if any of the assetIds are not owned by the user, or not wearable types.
40113
40381
  * The name property of the request is optional as one will be auto-generated when the request has a null name.
40114
40382
  *
40115
- * please use v3/outfits/create
40383
+ * Please use POST v4/outfits/create
40116
40384
  */
40117
40385
  post: {
40118
40386
  parameters: {
@@ -40209,7 +40477,7 @@ export interface paths {
40209
40477
  * @description Fails if the user does not own any of the assetIds or if they are not wearable asset types.
40210
40478
  * Accepts partial updates.
40211
40479
  *
40212
- * Please use PATCH v3/outfits/{userOutfitId}
40480
+ * Please use PATCH v4/outfits/{outfitId}
40213
40481
  */
40214
40482
  patch: {
40215
40483
  parameters: {
@@ -43086,8 +43354,11 @@ export interface paths {
43086
43354
  put?: never;
43087
43355
  /**
43088
43356
  * Creates a new outfit.
43357
+ * @deprecated
43089
43358
  * @description Fails if any of the assetIds are not owned by the user, or not wearable types.
43090
43359
  * The name property of the request is optional as one will be auto-generated when the request has a null name.
43360
+ *
43361
+ * Please use POST v4/outfits/create
43091
43362
  */
43092
43363
  post: {
43093
43364
  parameters: {
@@ -43180,8 +43451,11 @@ export interface paths {
43180
43451
  head?: never;
43181
43452
  /**
43182
43453
  * Updates the contents of an outfit.
43454
+ * @deprecated
43183
43455
  * @description Fails if the user does not own any of the assetIds or if they are not wearable asset types.
43184
43456
  * Accepts partial updates.
43457
+ *
43458
+ * Please use PATCH v4/outfits/{outfitId}
43185
43459
  */
43186
43460
  patch: {
43187
43461
  parameters: {
@@ -43379,7 +43653,72 @@ export interface paths {
43379
43653
  delete?: never;
43380
43654
  options?: never;
43381
43655
  head?: never;
43382
- patch?: never;
43656
+ /**
43657
+ * Sets the avatar to the incoming avatar using field masks.
43658
+ * @description Only allows items that you own, are not expired, and are wearable asset types.
43659
+ * Any assets being worn before this method is called are automatically removed.
43660
+ */
43661
+ patch: {
43662
+ parameters: {
43663
+ query?: never;
43664
+ header?: {
43665
+ "Roblox-Place-Id"?: number;
43666
+ };
43667
+ path?: never;
43668
+ cookie?: never;
43669
+ };
43670
+ /** @description Model of avatar that we are updating to. */
43671
+ requestBody: {
43672
+ content: {
43673
+ "application/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Request.UpdateAvatarDefinitionRequestV4"];
43674
+ "text/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Request.UpdateAvatarDefinitionRequestV4"];
43675
+ };
43676
+ };
43677
+ responses: {
43678
+ /** @description OK */
43679
+ 200: {
43680
+ headers: {
43681
+ [name: string]: unknown;
43682
+ };
43683
+ content: {
43684
+ "application/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Response.UpdateAvatarDefinitionResponseV4"];
43685
+ "text/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Response.UpdateAvatarDefinitionResponseV4"];
43686
+ };
43687
+ };
43688
+ /**
43689
+ * @description 3: Invalid assetId
43690
+ * 5: Meta does not apply to specified asset type
43691
+ * 7: Required meta is not provided for the specific asset type
43692
+ */
43693
+ 400: {
43694
+ headers: {
43695
+ [name: string]: unknown;
43696
+ };
43697
+ content?: never;
43698
+ };
43699
+ /** @description 0: Authorization has been denied for this request. */
43700
+ 401: {
43701
+ headers: {
43702
+ [name: string]: unknown;
43703
+ };
43704
+ content?: never;
43705
+ };
43706
+ /** @description 0: Token Validation Failed */
43707
+ 403: {
43708
+ headers: {
43709
+ [name: string]: unknown;
43710
+ };
43711
+ content?: never;
43712
+ };
43713
+ /** @description 2: Failed to wear asset. */
43714
+ 500: {
43715
+ headers: {
43716
+ [name: string]: unknown;
43717
+ };
43718
+ content?: never;
43719
+ };
43720
+ };
43721
+ };
43383
43722
  trace?: never;
43384
43723
  };
43385
43724
  "/v4/avatar/users/{userId}": {
@@ -43441,6 +43780,195 @@ export interface paths {
43441
43780
  patch?: never;
43442
43781
  trace?: never;
43443
43782
  };
43783
+ "/v4/outfits/create": {
43784
+ parameters: {
43785
+ query?: never;
43786
+ header?: never;
43787
+ path?: never;
43788
+ cookie?: never;
43789
+ };
43790
+ get?: never;
43791
+ put?: never;
43792
+ /**
43793
+ * Creates a new outfit.
43794
+ * @description Fails if any of the assetIds are not owned by the user, or not wearable types.
43795
+ * The name property of the request is optional as one will be auto-generated when the request has a null name.
43796
+ */
43797
+ post: {
43798
+ parameters: {
43799
+ query?: never;
43800
+ header?: {
43801
+ "Roblox-Place-Id"?: number;
43802
+ };
43803
+ path?: never;
43804
+ cookie?: never;
43805
+ };
43806
+ /** @description The outfit definition to create. */
43807
+ requestBody: {
43808
+ content: {
43809
+ "application/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Request.CreateOutfitDefinitionRequestV4"];
43810
+ "text/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Request.CreateOutfitDefinitionRequestV4"];
43811
+ };
43812
+ };
43813
+ responses: {
43814
+ /** @description OK */
43815
+ 200: {
43816
+ headers: {
43817
+ [name: string]: unknown;
43818
+ };
43819
+ content: {
43820
+ "application/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Response.CreateOutfitDefinitionResponseV4"];
43821
+ "text/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Response.CreateOutfitDefinitionResponseV4"];
43822
+ };
43823
+ };
43824
+ /**
43825
+ * @description 3: Body colors must be valid BrickColor IDs
43826
+ * 4: Invalid outfit name
43827
+ * 5: Asset is not wearable by you and was not added to the outfit
43828
+ * 7: Invalid Player Avatar Type. Valid types are R6 and R15
43829
+ * 8: Invalid assetIds
43830
+ * 9: Meta does not apply to specified asset type
43831
+ * 10: Required meta is not provided for the specific asset type
43832
+ * 12: Outfit type invalid or not permitted
43833
+ * 13: Invalid Scale
43834
+ */
43835
+ 400: {
43836
+ headers: {
43837
+ [name: string]: unknown;
43838
+ };
43839
+ content?: never;
43840
+ };
43841
+ /** @description 0: Authorization has been denied for this request. */
43842
+ 401: {
43843
+ headers: {
43844
+ [name: string]: unknown;
43845
+ };
43846
+ content?: never;
43847
+ };
43848
+ /**
43849
+ * @description 0: Token Validation Failed
43850
+ * 1: You already have the maximum number of outfits
43851
+ */
43852
+ 403: {
43853
+ headers: {
43854
+ [name: string]: unknown;
43855
+ };
43856
+ content?: never;
43857
+ };
43858
+ /** @description 6: An error occurred while creating the outfit */
43859
+ 500: {
43860
+ headers: {
43861
+ [name: string]: unknown;
43862
+ };
43863
+ content?: never;
43864
+ };
43865
+ };
43866
+ };
43867
+ delete?: never;
43868
+ options?: never;
43869
+ head?: never;
43870
+ patch?: never;
43871
+ trace?: never;
43872
+ };
43873
+ "/v4/outfits/{outfitId}": {
43874
+ parameters: {
43875
+ query?: never;
43876
+ header?: never;
43877
+ path?: never;
43878
+ cookie?: never;
43879
+ };
43880
+ get?: never;
43881
+ put?: never;
43882
+ post?: never;
43883
+ delete?: never;
43884
+ options?: never;
43885
+ head?: never;
43886
+ /**
43887
+ * Updates the contents of an outfit.
43888
+ * @description Fails if the user does not own any of the assetIds or if they are not wearable asset types.
43889
+ * Accepts partial updates via update types.
43890
+ */
43891
+ patch: {
43892
+ parameters: {
43893
+ query?: never;
43894
+ header?: {
43895
+ "Roblox-Place-Id"?: number;
43896
+ };
43897
+ path: {
43898
+ /** @description The user outfit id. */
43899
+ outfitId: string;
43900
+ };
43901
+ cookie?: never;
43902
+ };
43903
+ /** @description The outfit definition fields to update. */
43904
+ requestBody: {
43905
+ content: {
43906
+ "application/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Request.UpdateOutfitDefinitionRequestV4"];
43907
+ "text/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Request.UpdateOutfitDefinitionRequestV4"];
43908
+ };
43909
+ };
43910
+ responses: {
43911
+ /** @description OK */
43912
+ 200: {
43913
+ headers: {
43914
+ [name: string]: unknown;
43915
+ };
43916
+ content: {
43917
+ "application/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Response.UpdateOutfitDefinitionResponseV4"];
43918
+ "text/json": components["schemas"]["Roblox.Api.Avatar.Models.V4.Response.UpdateOutfitDefinitionResponseV4"];
43919
+ };
43920
+ };
43921
+ /**
43922
+ * @description 3: Body colors must be valid BrickColor IDs
43923
+ * 4: Invalid outfit name
43924
+ * 5: Asset is not wearable by you
43925
+ * 8: Invalid Player Avatar Type. Valid types are R6 and R15
43926
+ * 11: Meta does not apply to specified asset type
43927
+ * 12: Meta is required for this specific asset type
43928
+ * 13: Invalid Outfit Type
43929
+ * 14: Invalid scale
43930
+ */
43931
+ 400: {
43932
+ headers: {
43933
+ [name: string]: unknown;
43934
+ };
43935
+ content?: never;
43936
+ };
43937
+ /** @description 0: Authorization has been denied for this request. */
43938
+ 401: {
43939
+ headers: {
43940
+ [name: string]: unknown;
43941
+ };
43942
+ content?: never;
43943
+ };
43944
+ /**
43945
+ * @description 0: Token Validation Failed
43946
+ * 2: You don't have permission to update this outfit.
43947
+ */
43948
+ 403: {
43949
+ headers: {
43950
+ [name: string]: unknown;
43951
+ };
43952
+ content?: never;
43953
+ };
43954
+ /** @description 1: The specified userOutfit does not exist! */
43955
+ 404: {
43956
+ headers: {
43957
+ [name: string]: unknown;
43958
+ };
43959
+ content?: never;
43960
+ };
43961
+ /** @description 6: An error occurred while trying to update the outfit */
43962
+ 500: {
43963
+ headers: {
43964
+ [name: string]: unknown;
43965
+ };
43966
+ content?: never;
43967
+ };
43968
+ };
43969
+ };
43970
+ trace?: never;
43971
+ };
43444
43972
  "/v4/outfits/{outfitId}/details": {
43445
43973
  parameters: {
43446
43974
  query?: never;
@@ -44072,6 +44600,58 @@ export interface components {
44072
44600
  */
44073
44601
  deletedCount?: number;
44074
44602
  } | null;
44603
+ /**
44604
+ * @description Request body for
44605
+ * `POST /v1/experimentation/universes/{universeId}/experiments:calculateMde`.
44606
+ */
44607
+ CalculateExperimentMdeData: {
44608
+ /**
44609
+ * Format: int32
44610
+ * @description Exposure percent in range 0-100. Percent of eligible users seeing the experiment.
44611
+ */
44612
+ exposurePercent?: number;
44613
+ /**
44614
+ * Format: int64
44615
+ * @description Planned duration of the experiment in whole seconds.
44616
+ * Values must be an exact multiple of `86400`.
44617
+ */
44618
+ durationSeconds?: number;
44619
+ /**
44620
+ * Format: double
44621
+ * @description Relative weight (in [0, 100]) for the baseline (control) variant.
44622
+ */
44623
+ baselineWeight?: number;
44624
+ /** @description Relative weights (each in [0, 100]) for each non-baseline variant. */
44625
+ variantWeights?: number[] | null;
44626
+ /**
44627
+ * @description The goal metric whose detectable effect is being calculated.
44628
+ *
44629
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME
44630
+ *
44631
+ * UNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER
44632
+ *
44633
+ * UNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION
44634
+ *
44635
+ * UNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION
44636
+ *
44637
+ * UNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE
44638
+ *
44639
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER
44640
+ *
44641
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER
44642
+ */
44643
+ universeGoalMetric?: components["schemas"]["UniverseExperimentMetric"];
44644
+ /** @description Targeting criteria used to scope the analytics window. */
44645
+ targetingCriteria?: components["schemas"]["TargetingCriteria"] | null;
44646
+ };
44647
+ /**
44648
+ * @description Response body for
44649
+ * `POST /v1/experimentation/universes/{universeId}/experiments:calculateMde`.
44650
+ */
44651
+ CalculateExperimentMdeResponse: {
44652
+ /** @description The MDE async operation. */
44653
+ operation?: components["schemas"]["MdeOperation"] | null;
44654
+ };
44075
44655
  CanInviteUserResponse: {
44076
44656
  canInvite?: boolean;
44077
44657
  doesOwnerPrivacyRestrictJoins?: boolean;
@@ -44106,7 +44686,26 @@ export interface components {
44106
44686
  */
44107
44687
  browserTrackerId?: number | null;
44108
44688
  };
44109
- /** @description JSON shape of an RPN conditional rule in public API requests, aligned with `roblox.creatorexperienceconfig.conditionrules.v1.RpnRule`. */
44689
+ /**
44690
+ * @description Request body for
44691
+ * `POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:complete`.
44692
+ */
44693
+ CompleteExperimentRequest: {
44694
+ /**
44695
+ * @description ID of the variant to roll out as the winning variant. If omitted, the experiment is
44696
+ * stopped without rolling out a winner.
44697
+ */
44698
+ variantId?: string | null;
44699
+ };
44700
+ /**
44701
+ * @description Response body for
44702
+ * `POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:complete`.
44703
+ */
44704
+ CompleteExperimentResponse: {
44705
+ /** @description The async operation that completed the experiment. */
44706
+ operation?: components["schemas"]["ExperimentOperation"] | null;
44707
+ };
44708
+ /** @description JSON shape of an RPN conditional rule in public API requests. */
44110
44709
  ConditionalRuleDefinition: {
44111
44710
  /** @description Postfix RPN token sequence. */
44112
44711
  tokens?: components["schemas"]["RpnTokenDto"][] | null;
@@ -44272,6 +44871,53 @@ export interface components {
44272
44871
  */
44273
44872
  value: number;
44274
44873
  };
44874
+ /**
44875
+ * @description Request body for `POST /v1/experimentation/universes/{universeId}/experiments`.
44876
+ * Payload describing a new experiment.
44877
+ */
44878
+ CreateExperimentData: {
44879
+ /** @description Experiment display name. */
44880
+ name?: string | null;
44881
+ /** @description Experiment description. */
44882
+ description?: string | null;
44883
+ /** @description Experiment configuration (variants + product-type-specific data). */
44884
+ experimentConfiguration?: components["schemas"]["ExperimentConfiguration"] | null;
44885
+ /**
44886
+ * Format: int32
44887
+ * @description Exposure percent in range 0-100. Percent of eligible users seeing the experiment.
44888
+ */
44889
+ exposurePercent?: number;
44890
+ /** @description Targeting criteria scoping which users are eligible for the experiment. */
44891
+ targetingCriteria?: components["schemas"]["TargetingCriteria"] | null;
44892
+ /**
44893
+ * Format: int64
44894
+ * @description Experiment duration in whole seconds.
44895
+ */
44896
+ durationSeconds?: number;
44897
+ /**
44898
+ * @description Goal metric for the experiment.
44899
+ *
44900
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME
44901
+ *
44902
+ * UNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER
44903
+ *
44904
+ * UNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION
44905
+ *
44906
+ * UNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION
44907
+ *
44908
+ * UNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE
44909
+ *
44910
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER
44911
+ *
44912
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER
44913
+ */
44914
+ universeGoalMetric?: components["schemas"]["UniverseExperimentMetric"];
44915
+ };
44916
+ /** @description Response body for POST /v1/universes/{universeId}/experiment. */
44917
+ CreateExperimentResponse: {
44918
+ /** @description Resulting async operation describing the create call. */
44919
+ operation?: components["schemas"]["ExperimentOperation"] | null;
44920
+ };
44275
44921
  /** @description Optional event configuration block (recurrence + notification audience) on the v3 Create body. */
44276
44922
  CreateGameEventConfigRequest: {
44277
44923
  /** @description Cron expression for recurrence. Null = no recurrence. Validated server-side. */
@@ -44923,6 +45569,11 @@ export interface components {
44923
45569
  response?: components["schemas"]["AnalyticsQueryPublicApi.DimensionValuesResponse"];
44924
45570
  metadata?: components["schemas"]["AnalyticsQueryPublicApi.OperationMetadata"];
44925
45571
  };
45572
+ /** @description Response body for DELETE /v1/universes/{universeId}/experiment/{experimentId}. */
45573
+ DiscardExperimentResponse: {
45574
+ /** @description Resulting async operation describing the delete call. */
45575
+ operation?: components["schemas"]["ExperimentOperation"] | null;
45576
+ };
44926
45577
  /** @description Discards read items from the front of the queue. */
44927
45578
  DiscardMemoryStoreQueueItemsRequest: {
44928
45579
  /**
@@ -45035,6 +45686,321 @@ export interface components {
45035
45686
  * @enum {string}
45036
45687
  */
45037
45688
  EventVisibility: "private" | "public" | "moderated";
45689
+ /** @description Application-layer error emitted on a failed experiment operation. */
45690
+ ExperimentApiError: {
45691
+ /**
45692
+ * @description Broad category of the failure.
45693
+ *
45694
+ * EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_CONFIGURATION
45695
+ *
45696
+ * EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_LABEL
45697
+ *
45698
+ * EXPERIMENT_API_ERROR_TYPE_MUST_HAVE_EXACTLY_ONE_BASELINE_VARIANT
45699
+ *
45700
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_OVERLAPPING_RUNTIME
45701
+ *
45702
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_INVALID_SCORING_CONFIGURATIONS
45703
+ *
45704
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_UNEXPECTED_PRODUCT_TYPE
45705
+ *
45706
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_CONFIGURATION
45707
+ *
45708
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_VARIANT_METADATA
45709
+ *
45710
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHT_MUST_BE_POSITIVE
45711
+ *
45712
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHTS_UNBALANCED
45713
+ *
45714
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_PLACE_CONFIG_REQUIRES_SCORING_ID_OR_DEFAULT
45715
+ *
45716
+ * EXPERIMENT_API_ERROR_TYPE_CONFIGS_MISSING_VARIANT
45717
+ *
45718
+ * EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_KEY
45719
+ *
45720
+ * EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_VALUE
45721
+ *
45722
+ * EXPERIMENT_API_ERROR_TYPE_CONFIGS_KEY_ALREADY_IN_USE
45723
+ *
45724
+ * EXPERIMENT_API_ERROR_TYPE_SYSTEM_ERROR
45725
+ *
45726
+ * EXPERIMENT_API_ERROR_TYPE_EXPERIMENT_RESULTS_NOT_FOUND
45727
+ *
45728
+ * EXPERIMENT_API_ERROR_TYPE_INVALID_TARGETING_CRITERIA
45729
+ *
45730
+ * EXPERIMENT_API_ERROR_TYPE_TARGETING_NOT_ALLOWED
45731
+ *
45732
+ * EXPERIMENT_API_ERROR_TYPE_INVALID_DURATION
45733
+ *
45734
+ * EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_CONFIG_NOT_FOUND
45735
+ *
45736
+ * EXPERIMENT_API_ERROR_TYPE_INVALID_EXPERIMENT_NAME
45737
+ *
45738
+ * EXPERIMENT_API_ERROR_TYPE_CONDITIONAL_CONFIG_REQUIRES_NULL_BASELINE
45739
+ *
45740
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_CONTROL_VARIANT_MUST_MATCH_CURRENT_CONFIGURATION
45741
+ *
45742
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANTS_MUST_COVER_SAME_PLACES
45743
+ *
45744
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_HAS_DUPLICATE_PLACES
45745
+ */
45746
+ errorType?: components["schemas"]["ExperimentApiErrorType"];
45747
+ /** @description Stable machine-readable error code. */
45748
+ errorCode?: string | null;
45749
+ /** @description Human-readable description of the failure. */
45750
+ errorMessage?: string | null;
45751
+ /** @description Optional structured context about the failure (field paths, offending values, etc.). */
45752
+ errorContext?: {
45753
+ [key: string]: string | null;
45754
+ } | null;
45755
+ };
45756
+ /**
45757
+ * @description Validation failures.
45758
+ *
45759
+ * EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_CONFIGURATION
45760
+ *
45761
+ * EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_LABEL
45762
+ *
45763
+ * EXPERIMENT_API_ERROR_TYPE_MUST_HAVE_EXACTLY_ONE_BASELINE_VARIANT
45764
+ *
45765
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_OVERLAPPING_RUNTIME
45766
+ *
45767
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_INVALID_SCORING_CONFIGURATIONS
45768
+ *
45769
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_UNEXPECTED_PRODUCT_TYPE
45770
+ *
45771
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_CONFIGURATION
45772
+ *
45773
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_VARIANT_METADATA
45774
+ *
45775
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHT_MUST_BE_POSITIVE
45776
+ *
45777
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHTS_UNBALANCED
45778
+ *
45779
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_PLACE_CONFIG_REQUIRES_SCORING_ID_OR_DEFAULT
45780
+ *
45781
+ * EXPERIMENT_API_ERROR_TYPE_CONFIGS_MISSING_VARIANT
45782
+ *
45783
+ * EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_KEY
45784
+ *
45785
+ * EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_VALUE
45786
+ *
45787
+ * EXPERIMENT_API_ERROR_TYPE_CONFIGS_KEY_ALREADY_IN_USE
45788
+ *
45789
+ * EXPERIMENT_API_ERROR_TYPE_SYSTEM_ERROR
45790
+ *
45791
+ * EXPERIMENT_API_ERROR_TYPE_EXPERIMENT_RESULTS_NOT_FOUND
45792
+ *
45793
+ * EXPERIMENT_API_ERROR_TYPE_INVALID_TARGETING_CRITERIA
45794
+ *
45795
+ * EXPERIMENT_API_ERROR_TYPE_TARGETING_NOT_ALLOWED
45796
+ *
45797
+ * EXPERIMENT_API_ERROR_TYPE_INVALID_DURATION
45798
+ *
45799
+ * EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_CONFIG_NOT_FOUND
45800
+ *
45801
+ * EXPERIMENT_API_ERROR_TYPE_INVALID_EXPERIMENT_NAME
45802
+ *
45803
+ * EXPERIMENT_API_ERROR_TYPE_CONDITIONAL_CONFIG_REQUIRES_NULL_BASELINE
45804
+ *
45805
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_CONTROL_VARIANT_MUST_MATCH_CURRENT_CONFIGURATION
45806
+ *
45807
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANTS_MUST_COVER_SAME_PLACES
45808
+ *
45809
+ * EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_HAS_DUPLICATE_PLACES
45810
+ * @enum {string}
45811
+ */
45812
+ ExperimentApiErrorType: "EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_CONFIGURATION" | "EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_LABEL" | "EXPERIMENT_API_ERROR_TYPE_MUST_HAVE_EXACTLY_ONE_BASELINE_VARIANT" | "EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_OVERLAPPING_RUNTIME" | "EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_INVALID_SCORING_CONFIGURATIONS" | "EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_UNEXPECTED_PRODUCT_TYPE" | "EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_CONFIGURATION" | "EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_VARIANT_METADATA" | "EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHT_MUST_BE_POSITIVE" | "EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHTS_UNBALANCED" | "EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_PLACE_CONFIG_REQUIRES_SCORING_ID_OR_DEFAULT" | "EXPERIMENT_API_ERROR_TYPE_CONFIGS_MISSING_VARIANT" | "EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_KEY" | "EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_VALUE" | "EXPERIMENT_API_ERROR_TYPE_CONFIGS_KEY_ALREADY_IN_USE" | "EXPERIMENT_API_ERROR_TYPE_SYSTEM_ERROR" | "EXPERIMENT_API_ERROR_TYPE_EXPERIMENT_RESULTS_NOT_FOUND" | "EXPERIMENT_API_ERROR_TYPE_INVALID_TARGETING_CRITERIA" | "EXPERIMENT_API_ERROR_TYPE_TARGETING_NOT_ALLOWED" | "EXPERIMENT_API_ERROR_TYPE_INVALID_DURATION" | "EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_CONFIG_NOT_FOUND" | "EXPERIMENT_API_ERROR_TYPE_INVALID_EXPERIMENT_NAME" | "EXPERIMENT_API_ERROR_TYPE_CONDITIONAL_CONFIG_REQUIRES_NULL_BASELINE" | "EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_CONTROL_VARIANT_MUST_MATCH_CURRENT_CONFIGURATION" | "EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANTS_MUST_COVER_SAME_PLACES" | "EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_HAS_DUPLICATE_PLACES";
45813
+ ExperimentConfigEntry: {
45814
+ /** @description The config key this variant overrides. Must match across variants in the same experiment. */
45815
+ key?: string | null;
45816
+ /**
45817
+ * @description The value assigned to Key for this variant. Can be a string, number, bool, array, object,
45818
+ * or null.
45819
+ */
45820
+ entryValue?: unknown;
45821
+ /** @description Optional human-readable description carried alongside the value. */
45822
+ description?: string | null;
45823
+ };
45824
+ /**
45825
+ * @description Union of per-product experiment configurations. At most one of InGameConfigExperimentConfiguration or
45826
+ * MatchmakingExperimentConfiguration may be set.
45827
+ */
45828
+ ExperimentConfiguration: {
45829
+ /**
45830
+ * @description Discriminator selecting which configuration variant is populated.
45831
+ *
45832
+ * EXPERIMENT_PRODUCT_TYPE_IN_GAME_CONFIGS
45833
+ *
45834
+ * EXPERIMENT_PRODUCT_TYPE_MATCHMAKING
45835
+ */
45836
+ productType?: components["schemas"]["ExperimentProductType"];
45837
+ /** @description Populated when ProductType is InGameConfigExperimentConfiguration, null otherwise. */
45838
+ inGameConfigExperimentConfiguration?: components["schemas"]["InGameConfigExperimentConfiguration"] | null;
45839
+ /** @description Populated when ProductType is MatchmakingExperimentConfiguration, null otherwise. */
45840
+ matchmakingExperimentConfiguration?: components["schemas"]["MatchmakingExperimentConfiguration"] | null;
45841
+ };
45842
+ /**
45843
+ * @description Async operation result for an experiment Create / Update / Discard call. When
45844
+ * Done is true, at most one of Error or Experiment is set; when false, neither is. A successful delete is the
45845
+ * one case where a done operation carries neither: the experiment no longer exists, so
45846
+ * no Experiment body is returned.
45847
+ */
45848
+ ExperimentOperation: {
45849
+ /** @description Stable operation ID. */
45850
+ operationId?: string | null;
45851
+ /**
45852
+ * @description Current operational status of the operation.
45853
+ *
45854
+ * OPERATIONAL_STATUS_READY
45855
+ *
45856
+ * OPERATIONAL_STATUS_CREATING
45857
+ *
45858
+ * OPERATIONAL_STATUS_UPDATING
45859
+ *
45860
+ * OPERATIONAL_STATUS_STARTING
45861
+ *
45862
+ * OPERATIONAL_STATUS_STOPPING
45863
+ *
45864
+ * OPERATIONAL_STATUS_SCHEDULING
45865
+ *
45866
+ * OPERATIONAL_STATUS_DELETING
45867
+ *
45868
+ * OPERATIONAL_STATUS_RAMPING_UP
45869
+ *
45870
+ * OPERATIONAL_STATUS_SYNCING
45871
+ *
45872
+ * OPERATIONAL_STATUS_ROLLING_OUT
45873
+ */
45874
+ status?: components["schemas"]["OperationalStatus"];
45875
+ /**
45876
+ * Format: date-time
45877
+ * @description UTC time the operation was created.
45878
+ */
45879
+ createdTime?: string;
45880
+ /**
45881
+ * @description True once the operation terminates (success or failure). When false, neither
45882
+ * Error nor Experiment is populated.
45883
+ */
45884
+ done?: boolean;
45885
+ /** @description Error outcome. Populated iff Done is true and the operation failed. */
45886
+ error?: components["schemas"]["ExperimentApiError"] | null;
45887
+ /**
45888
+ * @description Successful outcome. Populated iff Done is true and the operation
45889
+ * succeeded and returned an experiment resource.
45890
+ */
45891
+ experiment?: components["schemas"]["ProductExperiment"] | null;
45892
+ };
45893
+ /**
45894
+ * @description Type of product the experiment is targeting.
45895
+ *
45896
+ * EXPERIMENT_PRODUCT_TYPE_IN_GAME_CONFIGS
45897
+ *
45898
+ * EXPERIMENT_PRODUCT_TYPE_MATCHMAKING
45899
+ * @enum {string}
45900
+ */
45901
+ ExperimentProductType: "EXPERIMENT_PRODUCT_TYPE_IN_GAME_CONFIGS" | "EXPERIMENT_PRODUCT_TYPE_MATCHMAKING";
45902
+ /**
45903
+ * @description Lifecycle state of an experiment.
45904
+ *
45905
+ * EXPERIMENT_STATE_DRAFT
45906
+ *
45907
+ * EXPERIMENT_STATE_SCHEDULED
45908
+ *
45909
+ * EXPERIMENT_STATE_RUNNING
45910
+ *
45911
+ * EXPERIMENT_STATE_COMPLETED
45912
+ *
45913
+ * EXPERIMENT_STATE_CANCELLED
45914
+ *
45915
+ * EXPERIMENT_STATE_DELETED
45916
+ * @enum {string}
45917
+ */
45918
+ ExperimentState: "EXPERIMENT_STATE_DRAFT" | "EXPERIMENT_STATE_SCHEDULED" | "EXPERIMENT_STATE_RUNNING" | "EXPERIMENT_STATE_COMPLETED" | "EXPERIMENT_STATE_CANCELLED" | "EXPERIMENT_STATE_DELETED";
45919
+ /** @description Computed stats for a running experiment. */
45920
+ ExperimentStats: {
45921
+ /** @description True if Sample Ratio Mismatch (SRM) was detected for the experiment. */
45922
+ isSrmDetected?: boolean;
45923
+ };
45924
+ /**
45925
+ * @description Async operation for fetching experiment stats. When Done is true exactly
45926
+ * one of Error or ExperimentStats is set; when false, neither is.
45927
+ */
45928
+ ExperimentStatsOperation: {
45929
+ /**
45930
+ * Format: int64
45931
+ * @description Experiment ID the stats are for.
45932
+ */
45933
+ experimentId?: number;
45934
+ /** @description UTC time the operation was last modified. */
45935
+ lastModifiedTime?: string | null;
45936
+ /** @description True once the stats fetch terminates (success or failure). */
45937
+ done?: boolean;
45938
+ /** @description Error outcome, when Done is true and the fetch failed. */
45939
+ error?: components["schemas"]["ExperimentApiError"] | null;
45940
+ /** @description Successful outcome, when Done is true and stats are available. */
45941
+ experimentStats?: components["schemas"]["ExperimentStats"] | null;
45942
+ };
45943
+ /**
45944
+ * @description Summary view of an experiment returned by the list endpoint. Does not include the variant /
45945
+ * configuration payload; clients should call Get for the full payload.
45946
+ */
45947
+ ExperimentSummary: {
45948
+ /** @description Experiment ID. */
45949
+ id?: string | null;
45950
+ /** @description Experiment display name. */
45951
+ name?: string | null;
45952
+ /** @description Experiment description. */
45953
+ description?: string | null;
45954
+ /**
45955
+ * Format: date-time
45956
+ * @description UTC time the experiment was created.
45957
+ */
45958
+ createdTime?: string;
45959
+ /** @description UTC time the experiment was last updated. */
45960
+ lastUpdatedTime?: string | null;
45961
+ /** @description UTC time the experiment was started, if running. */
45962
+ startedTime?: string | null;
45963
+ /** @description UTC time the experiment was stopped, if completed/cancelled. */
45964
+ stoppedTime?: string | null;
45965
+ /**
45966
+ * @description Lifecycle state.
45967
+ *
45968
+ * EXPERIMENT_STATE_DRAFT
45969
+ *
45970
+ * EXPERIMENT_STATE_SCHEDULED
45971
+ *
45972
+ * EXPERIMENT_STATE_RUNNING
45973
+ *
45974
+ * EXPERIMENT_STATE_COMPLETED
45975
+ *
45976
+ * EXPERIMENT_STATE_CANCELLED
45977
+ *
45978
+ * EXPERIMENT_STATE_DELETED
45979
+ */
45980
+ state?: components["schemas"]["ExperimentState"];
45981
+ /** @description User ID of the creator of the experiment. */
45982
+ createdBy?: string | null;
45983
+ /**
45984
+ * @description Convenience field exposing the first config key referenced by the first variant
45985
+ * (in-game-configs experiments only). Empty for matchmaking.
45986
+ */
45987
+ experimentConfigKey?: string | null;
45988
+ /** @description UTC time the experiment is scheduled to start, if scheduled. */
45989
+ scheduledTime?: string | null;
45990
+ /**
45991
+ * Format: int64
45992
+ * @description Planned experiment duration in whole seconds.
45993
+ */
45994
+ durationSeconds?: number;
45995
+ /**
45996
+ * @description Product type.
45997
+ *
45998
+ * EXPERIMENT_PRODUCT_TYPE_IN_GAME_CONFIGS
45999
+ *
46000
+ * EXPERIMENT_PRODUCT_TYPE_MATCHMAKING
46001
+ */
46002
+ productType?: components["schemas"]["ExperimentProductType"];
46003
+ };
45038
46004
  /**
45039
46005
  * @description The featuring status of a virtual event.
45040
46006
  * @enum {string}
@@ -45351,6 +46317,27 @@ export interface components {
45351
46317
  amount?: number;
45352
46318
  type?: components["schemas"]["TransactionRecordsApi.CurrencyType"];
45353
46319
  };
46320
+ /**
46321
+ * @description Response body for
46322
+ * `GET /v1/experimentation/universes/{universeId}/operations/{operationId}`.
46323
+ */
46324
+ GetExperimentOperationStatusResponse: {
46325
+ /** @description The current state of the async operation. */
46326
+ operation?: components["schemas"]["ExperimentOperation"] | null;
46327
+ };
46328
+ /** @description Response body for GET /v1/universes/{universeId}/experiment/{experimentId}. */
46329
+ GetExperimentResponse: {
46330
+ /** @description The requested experiment. */
46331
+ experiment?: components["schemas"]["ProductExperiment"] | null;
46332
+ };
46333
+ /**
46334
+ * @description Response body for
46335
+ * `GET /v1/experimentation/universes/{universeId}/experiments/{experimentId}/stats`.
46336
+ */
46337
+ GetExperimentStatsResponse: {
46338
+ /** @description The async operation containing the experiment stats. */
46339
+ operation?: components["schemas"]["ExperimentStatsOperation"] | null;
46340
+ };
45354
46341
  /**
45355
46342
  * @description Represents metadata about the long-running operation corresponding to a
45356
46343
  * GetInstance request.
@@ -46018,6 +47005,11 @@ export interface components {
46018
47005
  /** @description The asset that was saved. */
46019
47006
  creatorStoreAsset?: components["schemas"]["CreatorStoreAsset"] | null;
46020
47007
  } | null;
47008
+ /** @description Configuration for an in-game-config experiment. */
47009
+ InGameConfigExperimentConfiguration: {
47010
+ /** @description Variants participating in the experiment. Exactly one must have IsBaseline set. */
47011
+ variants?: components["schemas"]["SingleConfigExperimentVariant"][] | null;
47012
+ };
46021
47013
  /**
46022
47014
  * @description Increments the entry value.
46023
47015
  *
@@ -46454,6 +47446,17 @@ export interface components {
46454
47446
  /** @description A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. */
46455
47447
  nextPageToken?: string;
46456
47448
  };
47449
+ /** @description Response body for `GET /v1/experimentation/universes/{universeId}/experiments`. */
47450
+ ListExperimentsResponse: {
47451
+ /** @description The page of experiments matching the query. */
47452
+ experiments?: components["schemas"]["ExperimentSummary"][] | null;
47453
+ /**
47454
+ * Format: int32
47455
+ * @description Total number of experiments for the universe matching the filters
47456
+ * (independent of pagination).
47457
+ */
47458
+ total?: number;
47459
+ };
46457
47460
  /** @description Response for listing game pass configuration details by universe */
46458
47461
  ListGamePassConfigsByUniverseResponse: {
46459
47462
  /** @description The list of game passes with their corresponding configuration details. */
@@ -46646,7 +47649,7 @@ export interface components {
46646
47649
  */
46647
47650
  nextPageToken?: string;
46648
47651
  };
46649
- /** @description Literal constant for an RPN operand (proto `LiteralValue` oneof as independent fields for JSON). */
47652
+ /** @description Literal constant for an RPN operand. */
46650
47653
  LiteralValueDto: {
46651
47654
  booleanValue?: string | null;
46652
47655
  integerValue?: string | null;
@@ -47016,6 +48019,18 @@ export interface components {
47016
48019
  /** @description Whether text chat signal is enabled for Custom Matchmaking. */
47017
48020
  isMatchmakingTextChatSignalEnabled?: boolean;
47018
48021
  };
48022
+ /** @description Configuration for a matchmaking experiment. */
48023
+ MatchmakingExperimentConfiguration: {
48024
+ /** @description Variants participating in the experiment. */
48025
+ variants?: components["schemas"]["MatchmakingExperimentVariant"][] | null;
48026
+ };
48027
+ /** @description Variant definition for a matchmaking experiment. */
48028
+ MatchmakingExperimentVariant: {
48029
+ /** @description Metadata common to all variants. */
48030
+ variantMeta?: components["schemas"]["VariantMeta"] | null;
48031
+ /** @description Per-place matchmaking scoring configurations applied when this variant is selected. */
48032
+ placeMatchmakingConfigs?: components["schemas"]["PlaceScoringConfig"][] | null;
48033
+ };
47019
48034
  /**
47020
48035
  * @description The numerical attribute comparison type for matchmaking.
47021
48036
  * @enum {string}
@@ -47139,6 +48154,40 @@ export interface components {
47139
48154
  weight?: number;
47140
48155
  signalType?: components["schemas"]["MatchmakingSignalType"];
47141
48156
  };
48157
+ /**
48158
+ * @description Async operation result for a `:calculateMde` call. When Done is true
48159
+ * exactly one of Error or Mde is set; when false, neither is.
48160
+ */
48161
+ MdeOperation: {
48162
+ /** @description Stable operation ID. */
48163
+ operationId?: string | null;
48164
+ /** @description UTC time the operation was last modified. */
48165
+ lastModifiedTime?: string | null;
48166
+ /** @description True once the calculation terminates (success or failure). */
48167
+ done?: boolean;
48168
+ /** @description Error outcome, when Done is true and the calculation failed. */
48169
+ error?: components["schemas"]["ExperimentApiError"] | null;
48170
+ /** @description Successful outcome, when Done is true and a result is available. */
48171
+ mde?: components["schemas"]["MdeResult"] | null;
48172
+ };
48173
+ /**
48174
+ * @description MDE calculation result. Returned in the `operation.result` field on a successful
48175
+ * `POST .../experiments:calculateMde` call.
48176
+ */
48177
+ MdeResult: {
48178
+ /**
48179
+ * Format: int32
48180
+ * @description Estimated total sample size required for the experiment.
48181
+ */
48182
+ totalSampleSize?: number;
48183
+ /** @description MDE expressed as a relative percentage of the goal metric, per non-baseline variant. */
48184
+ mdeRelativePercentages?: number[] | null;
48185
+ /**
48186
+ * Format: int32
48187
+ * @description Below this sample-size threshold the MDE estimate is unreliable.
48188
+ */
48189
+ minimumSampleSizeThreshold?: number;
48190
+ };
47142
48191
  /** @description Represents the memory store of the universe. */
47143
48192
  MemoryStore: {
47144
48193
  /**
@@ -47549,6 +48598,31 @@ export interface components {
47549
48598
  done?: boolean;
47550
48599
  metadata?: components["schemas"]["AnalyticsQueryPublicApi.OperationMetadata"];
47551
48600
  };
48601
+ /**
48602
+ * @description Current operational status reported on an experiment or an async operation performed on one.
48603
+ *
48604
+ * OPERATIONAL_STATUS_READY
48605
+ *
48606
+ * OPERATIONAL_STATUS_CREATING
48607
+ *
48608
+ * OPERATIONAL_STATUS_UPDATING
48609
+ *
48610
+ * OPERATIONAL_STATUS_STARTING
48611
+ *
48612
+ * OPERATIONAL_STATUS_STOPPING
48613
+ *
48614
+ * OPERATIONAL_STATUS_SCHEDULING
48615
+ *
48616
+ * OPERATIONAL_STATUS_DELETING
48617
+ *
48618
+ * OPERATIONAL_STATUS_RAMPING_UP
48619
+ *
48620
+ * OPERATIONAL_STATUS_SYNCING
48621
+ *
48622
+ * OPERATIONAL_STATUS_ROLLING_OUT
48623
+ * @enum {string}
48624
+ */
48625
+ OperationalStatus: "OPERATIONAL_STATUS_READY" | "OPERATIONAL_STATUS_CREATING" | "OPERATIONAL_STATUS_UPDATING" | "OPERATIONAL_STATUS_STARTING" | "OPERATIONAL_STATUS_STOPPING" | "OPERATIONAL_STATUS_SCHEDULING" | "OPERATIONAL_STATUS_DELETING" | "OPERATIONAL_STATUS_RAMPING_UP" | "OPERATIONAL_STATUS_SYNCING" | "OPERATIONAL_STATUS_ROLLING_OUT";
47552
48626
  /** @description A key-value entry in an ordered data store. */
47553
48627
  OrderedDataStoreEntry: {
47554
48628
  /**
@@ -47691,6 +48765,21 @@ export interface components {
47691
48765
  /** @description Latest version at the time of the restart. */
47692
48766
  latestVersion?: string | null;
47693
48767
  };
48768
+ /** @description Matchmaking scoring configuration applied to a single place in an experiment variant. */
48769
+ PlaceScoringConfig: {
48770
+ /**
48771
+ * Format: int64
48772
+ * @description Place ID this scoring config applies to.
48773
+ */
48774
+ placeId?: number;
48775
+ /** @description Matchmaking scoring config ID for this place. Ignored when UsePlatformDefault is true. */
48776
+ matchmakingScoringConfigId?: string | null;
48777
+ /**
48778
+ * @description When true, this place uses the platform default matchmaking scoring config instead of
48779
+ * MatchmakingScoringConfigId.
48780
+ */
48781
+ usePlatformDefault?: boolean;
48782
+ };
47694
48783
  /** @description Per-place forecast data for a game restart. */
47695
48784
  PlaceSummaryForGameRestart: {
47696
48785
  /**
@@ -47966,7 +49055,7 @@ export interface components {
47966
49055
  metadata?: components["schemas"]["PrivateServerSubscriptionMetadata"] | null;
47967
49056
  };
47968
49057
  /** @enum {string} */
47969
- PrivateServerSubscriptionTag: "Invalid" | "RobloxSubscription";
49058
+ PrivateServerSubscriptionTag: "Invalid" | "RobloxSubscription" | "RobloxSubscriptionActiveBenefit";
47970
49059
  PrivateServerUpdatePermissionsRequest: {
47971
49060
  clanAllowed?: boolean | null;
47972
49061
  /** Format: int64 */
@@ -48025,6 +49114,89 @@ export interface components {
48025
49114
  } & {
48026
49115
  [key: string]: unknown;
48027
49116
  }) | null;
49117
+ /**
49118
+ * @description Config-based experiment for a given product. Returned by the Get endpoint and embedded in
49119
+ * a successful experiment operation.
49120
+ */
49121
+ ProductExperiment: {
49122
+ /** @description Experiment ID. */
49123
+ id?: string | null;
49124
+ /** @description Experiment display name. */
49125
+ name?: string | null;
49126
+ /** @description Experiment description. */
49127
+ description?: string | null;
49128
+ /**
49129
+ * Format: date-time
49130
+ * @description UTC time the experiment was created.
49131
+ */
49132
+ createdTime?: string;
49133
+ /** @description UTC time the experiment was last updated. */
49134
+ lastUpdatedTime?: string | null;
49135
+ /** @description UTC time the experiment was started (running), if it has been. */
49136
+ startedTime?: string | null;
49137
+ /** @description UTC time the experiment was stopped, if it has been. */
49138
+ stoppedTime?: string | null;
49139
+ /**
49140
+ * @description Lifecycle state.
49141
+ *
49142
+ * EXPERIMENT_STATE_DRAFT
49143
+ *
49144
+ * EXPERIMENT_STATE_SCHEDULED
49145
+ *
49146
+ * EXPERIMENT_STATE_RUNNING
49147
+ *
49148
+ * EXPERIMENT_STATE_COMPLETED
49149
+ *
49150
+ * EXPERIMENT_STATE_CANCELLED
49151
+ *
49152
+ * EXPERIMENT_STATE_DELETED
49153
+ */
49154
+ state?: components["schemas"]["ExperimentState"];
49155
+ /** @description Experiment configuration (variants and product-type-specific data). */
49156
+ experimentConfiguration?: components["schemas"]["ExperimentConfiguration"] | null;
49157
+ /**
49158
+ * Format: int32
49159
+ * @description Exposure percent in range 0-100.
49160
+ */
49161
+ exposurePercent?: number;
49162
+ /** @description Targeting criteria scoping which users are eligible for the experiment. */
49163
+ targetingCriteria?: components["schemas"]["TargetingCriteria"] | null;
49164
+ /**
49165
+ * @description Current operational status of an in-flight async operation (if any).
49166
+ *
49167
+ * OPERATIONAL_STATUS_READY
49168
+ *
49169
+ * OPERATIONAL_STATUS_CREATING
49170
+ *
49171
+ * OPERATIONAL_STATUS_UPDATING
49172
+ *
49173
+ * OPERATIONAL_STATUS_STARTING
49174
+ *
49175
+ * OPERATIONAL_STATUS_STOPPING
49176
+ *
49177
+ * OPERATIONAL_STATUS_SCHEDULING
49178
+ *
49179
+ * OPERATIONAL_STATUS_DELETING
49180
+ *
49181
+ * OPERATIONAL_STATUS_RAMPING_UP
49182
+ *
49183
+ * OPERATIONAL_STATUS_SYNCING
49184
+ *
49185
+ * OPERATIONAL_STATUS_ROLLING_OUT
49186
+ */
49187
+ operationalStatus?: components["schemas"]["OperationalStatus"];
49188
+ /** @description User ID of the creator of the experiment. */
49189
+ createdBy?: string | null;
49190
+ /** @description UTC time the experiment is scheduled to start, if scheduled. */
49191
+ scheduledTime?: string | null;
49192
+ /**
49193
+ * Format: int64
49194
+ * @description Experiment duration in whole seconds.
49195
+ */
49196
+ durationSeconds?: number;
49197
+ /** @description Metric configuration (goal + learning metrics). */
49198
+ universeMetricConfiguration?: components["schemas"]["UniverseMetricConfiguration"] | null;
49199
+ };
48028
49200
  /** @description Request model for publishing a draft. */
48029
49201
  PublishDraftRequest: {
48030
49202
  /** @description The draft hash for concurrency control. If provided, the publish will fail if it doesn't match. */
@@ -49512,6 +50684,19 @@ export interface components {
49512
50684
  /** @description List of asset Ids used to equip pants for default clothing when the avatar appears nude. */
49513
50685
  defaultPantAssetIds?: number[];
49514
50686
  };
50687
+ /** @description Request model to equip a emote */
50688
+ "Roblox.Api.Avatar.Models.EmoteRequestModel": {
50689
+ /**
50690
+ * Format: int64
50691
+ * @description The asset id of the emote
50692
+ */
50693
+ assetId?: number;
50694
+ /**
50695
+ * Format: int32
50696
+ * @description The position to equip the emote to
50697
+ */
50698
+ position?: number;
50699
+ };
49515
50700
  /** @description Response object representing a user's emote */
49516
50701
  "Roblox.Api.Avatar.Models.EmoteResponseModel": {
49517
50702
  /**
@@ -49548,6 +50733,40 @@ export interface components {
49548
50733
  /** @description Moderation status */
49549
50734
  moderationStatus?: string;
49550
50735
  };
50736
+ "Roblox.Api.Avatar.Models.InvalidBackgroundResponse": {
50737
+ /**
50738
+ * Format: int64
50739
+ * @description The asset id of the emote
50740
+ */
50741
+ BackgroundAssetId?: number;
50742
+ /** @description The error associated with the background. */
50743
+ Error?: string;
50744
+ };
50745
+ /** @description Response object representing an invalid emote */
50746
+ "Roblox.Api.Avatar.Models.InvalidEmoteResponseModel": {
50747
+ /**
50748
+ * Format: int64
50749
+ * @description The asset id of the emote
50750
+ */
50751
+ assetId?: number;
50752
+ /**
50753
+ * Format: int32
50754
+ * @description The position the emote is equipped to
50755
+ */
50756
+ position?: number;
50757
+ /** @description The error occured while trying to equip this emote */
50758
+ error?: string;
50759
+ };
50760
+ /** @description Validation error for a profile frame that could not be applied. */
50761
+ "Roblox.Api.Avatar.Models.InvalidProfileFrameResponse": {
50762
+ /**
50763
+ * Format: int64
50764
+ * @description The asset id of the profile frame.
50765
+ */
50766
+ FrameAssetId?: number;
50767
+ /** @description The error associated with the profile frame. */
50768
+ Error?: string;
50769
+ };
49551
50770
  /** @description A model containing details about a user outfit */
49552
50771
  "Roblox.Api.Avatar.Models.OutfitDetailsModel": {
49553
50772
  /**
@@ -49691,10 +50910,57 @@ export interface components {
49691
50910
  assetTypeID?: number;
49692
50911
  isPlayerChoice?: boolean;
49693
50912
  };
50913
+ /** @description A model containing details about an avatar. */
50914
+ "Roblox.Api.Avatar.Models.UpdateAvatarDataModel": {
50915
+ scales?: components["schemas"]["Roblox.Web.Responses.Avatar.ScaleModel"];
50916
+ /**
50917
+ * Format: int32
50918
+ * @description The avatar type.
50919
+ * @enum {integer}
50920
+ */
50921
+ playerAvatarType?: 1 | 3;
50922
+ bodyColors?: components["schemas"]["Roblox.Api.Avatar.Models.BodyColors3Model"];
50923
+ /** @description The assets worn on the character. */
50924
+ assets?: components["schemas"]["Roblox.Api.Avatar.Models.AssetWearModel"][];
50925
+ };
50926
+ /** @description A model containing details about an avatar update request. */
50927
+ "Roblox.Api.Avatar.Models.UpdateAvatarRequestModel": {
50928
+ /**
50929
+ * @description Update mask specifying which avatar fields to update (can include multiple).
50930
+ * Acceptable values:
50931
+ * - UpdateAvatarType: updates avatar.type (R6/R15)
50932
+ * - UpdateScales: updates avatar.scale
50933
+ * - UpdateBodyColors: updates avatar.body_color_set
50934
+ * - UpdateAssets: updates avatar.avatar_assets
50935
+ */
50936
+ updateMask?: (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8)[];
50937
+ data?: components["schemas"]["Roblox.Api.Avatar.Models.UpdateAvatarDataModel"];
50938
+ };
50939
+ /** @description A model for update avatar responses. */
50940
+ "Roblox.Api.Avatar.Models.UpdateAvatarResponseModel": {
50941
+ /**
50942
+ * @description The assets that could not be worn
50943
+ * Unlike invalidAssetIds, only contains assets that are wearable types.
50944
+ */
50945
+ invalidAssets?: components["schemas"]["Roblox.Api.Avatar.Models.AssetModelV2"][];
50946
+ /** @description Whether or not all the outfit contents were successfully worn. */
50947
+ success?: boolean;
50948
+ };
49694
50949
  /** @description A model containing avatar background data. */
49695
50950
  "Roblox.Api.Avatar.Models.V4.AvatarBackgroundModel": {
49696
50951
  backgroundAsset?: components["schemas"]["Roblox.Api.Avatar.Models.AssetModelV2"];
49697
50952
  };
50953
+ /**
50954
+ * @description A model which contains the asset id of the background. This can be
50955
+ * extended to have more attributes in the future.
50956
+ */
50957
+ "Roblox.Api.Avatar.Models.V4.AvatarBackgroundRequestModel": {
50958
+ /**
50959
+ * Format: int64
50960
+ * @description An asset id.
50961
+ */
50962
+ id?: number;
50963
+ };
49698
50964
  /** @description Avatar config details. */
49699
50965
  "Roblox.Api.Avatar.Models.V4.AvatarConfigurations": {
49700
50966
  /** @description The emotes on the character. */
@@ -49726,6 +50992,14 @@ export interface components {
49726
50992
  "Roblox.Api.Avatar.Models.V4.AvatarProfileFrameModel": {
49727
50993
  frameAsset?: components["schemas"]["Roblox.Api.Avatar.Models.AssetModelV2"];
49728
50994
  };
50995
+ /** @description A model which contains the asset id of the profile frame. */
50996
+ "Roblox.Api.Avatar.Models.V4.AvatarProfileFrameRequestModel": {
50997
+ /**
50998
+ * Format: int64
50999
+ * @description An asset id. Use 0 to clear the equipped frame.
51000
+ */
51001
+ id?: number;
51002
+ };
49729
51003
  /** @description Background configuration for an outfit. */
49730
51004
  "Roblox.Api.Avatar.Models.V4.OutfitConfigurations": {
49731
51005
  background?: components["schemas"]["Roblox.Api.Avatar.Models.V4.AvatarBackgroundModel"];
@@ -49774,6 +51048,129 @@ export interface components {
49774
51048
  */
49775
51049
  playerAvatarType?: 1 | 3;
49776
51050
  };
51051
+ /** @description Request model for creating an outfit (V4). */
51052
+ "Roblox.Api.Avatar.Models.V4.Request.CreateOutfitDefinitionRequestV4": {
51053
+ outfitDefinition?: components["schemas"]["Roblox.Api.Avatar.Models.V4.UpdateOutfitDefinition"];
51054
+ };
51055
+ /** @description Request model for updating an avatar definition (V4). */
51056
+ "Roblox.Api.Avatar.Models.V4.Request.UpdateAvatarDefinitionRequestV4": {
51057
+ /** @description The list of data needed to be updated. */
51058
+ updateTypes?: (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8)[];
51059
+ avatarDefinition?: components["schemas"]["Roblox.Api.Avatar.Models.V4.UpdateAvatarDefinition"];
51060
+ };
51061
+ /** @description Request model for updating an outfit (V4). */
51062
+ "Roblox.Api.Avatar.Models.V4.Request.UpdateOutfitDefinitionRequestV4": {
51063
+ /** @description The list of data needed to be updated. */
51064
+ updateTypes?: (0 | 1 | 2 | 3 | 4 | 5 | 6)[];
51065
+ outfitDefinition?: components["schemas"]["Roblox.Api.Avatar.Models.V4.UpdateOutfitDefinition"];
51066
+ };
51067
+ /** @description Validation details for avatar mutation responses when one or more inputs could not be applied. */
51068
+ "Roblox.Api.Avatar.Models.V4.Response.AvatarValidationResultV4": {
51069
+ /** @description Assets that could not be worn. */
51070
+ invalidAssets?: components["schemas"]["Roblox.Api.Avatar.Models.AssetModelV2"][];
51071
+ /** @description Background assets that could not be applied. */
51072
+ invalidBackground?: components["schemas"]["Roblox.Api.Avatar.Models.InvalidBackgroundResponse"][];
51073
+ /** @description Profile frame assets that could not be applied. */
51074
+ invalidProfileFrame?: components["schemas"]["Roblox.Api.Avatar.Models.InvalidProfileFrameResponse"][];
51075
+ /** @description Emotes that could not be equipped. */
51076
+ invalidEmotes?: components["schemas"]["Roblox.Api.Avatar.Models.InvalidEmoteResponseModel"][];
51077
+ /** @description Thumbnail customizations that could not be applied. */
51078
+ invalidThumbnailCustomizations?: components["schemas"]["Roblox.Api.Avatar.Models.V4.Response.InvalidThumbnailCustomizationResponse"][];
51079
+ };
51080
+ /** @description Response model for create outfit (V4). */
51081
+ "Roblox.Api.Avatar.Models.V4.Response.CreateOutfitDefinitionResponseV4": {
51082
+ /** @description Whether all requested changes were successfully applied. */
51083
+ success?: boolean;
51084
+ validation?: components["schemas"]["Roblox.Api.Avatar.Models.V4.Response.OutfitValidationResultV4"];
51085
+ };
51086
+ "Roblox.Api.Avatar.Models.V4.Response.InvalidThumbnailCustomizationResponse": {
51087
+ ThumbnailCustomizationModel?: components["schemas"]["Roblox.Api.Avatar.Models.AvatarThumbnailCustomizationModel"];
51088
+ /** @description The error associated with the thumbnail customization */
51089
+ Error?: string;
51090
+ };
51091
+ /** @description Validation details for outfit mutation responses when one or more inputs could not be applied. */
51092
+ "Roblox.Api.Avatar.Models.V4.Response.OutfitValidationResultV4": {
51093
+ /** @description Assets that could not be worn. */
51094
+ unwornAssets?: components["schemas"]["Roblox.Api.Avatar.Models.AssetModelV2"][];
51095
+ /** @description Background assets that could not be applied. */
51096
+ invalidBackground?: components["schemas"]["Roblox.Api.Avatar.Models.InvalidBackgroundResponse"][];
51097
+ };
51098
+ /** @description Response model for update avatar (V4). */
51099
+ "Roblox.Api.Avatar.Models.V4.Response.UpdateAvatarDefinitionResponseV4": {
51100
+ /** @description Whether all requested changes were successfully applied. */
51101
+ success?: boolean;
51102
+ /**
51103
+ * @description Temporary top-level mirror of Roblox.Api.Avatar.Models.V4.Response.AvatarValidationResultV4.InvalidAssets to unblock
51104
+ * clients that still read `invalidAssets` at the response root during backgrounds rollout.
51105
+ * Prefer Roblox.Api.Avatar.Models.V4.Response.UpdateAvatarDefinitionResponseV4.Validation.Roblox.Api.Avatar.Models.V4.Response.AvatarValidationResultV4.InvalidAssets.
51106
+ * Will be reverted once the engine fix is fully deployed.
51107
+ */
51108
+ invalidAssets?: components["schemas"]["Roblox.Api.Avatar.Models.AssetModelV2"][];
51109
+ validation?: components["schemas"]["Roblox.Api.Avatar.Models.V4.Response.AvatarValidationResultV4"];
51110
+ };
51111
+ /** @description Response model for update outfit (V4). */
51112
+ "Roblox.Api.Avatar.Models.V4.Response.UpdateOutfitDefinitionResponseV4": {
51113
+ /** @description Whether all requested changes were successfully applied. */
51114
+ success?: boolean;
51115
+ validation?: components["schemas"]["Roblox.Api.Avatar.Models.V4.Response.OutfitValidationResultV4"];
51116
+ };
51117
+ /** @description A model containing avatar config fields to update. */
51118
+ "Roblox.Api.Avatar.Models.V4.UpdateAvatarConfig": {
51119
+ /** @description The avatar's emotes. */
51120
+ emoteRequestModels?: components["schemas"]["Roblox.Api.Avatar.Models.EmoteRequestModel"][];
51121
+ /** @description The avatar's thumbnail customizations. */
51122
+ thumbnailCustomizationModels?: components["schemas"]["Roblox.Api.Avatar.Models.AvatarThumbnailCustomizationModel"][];
51123
+ backgroundRequestModel?: components["schemas"]["Roblox.Api.Avatar.Models.V4.AvatarBackgroundRequestModel"];
51124
+ profileFrameRequestModel?: components["schemas"]["Roblox.Api.Avatar.Models.V4.AvatarProfileFrameRequestModel"];
51125
+ };
51126
+ /** @description A model containing details about an avatar update. */
51127
+ "Roblox.Api.Avatar.Models.V4.UpdateAvatarDefinition": {
51128
+ updateAvatarModel?: components["schemas"]["Roblox.Api.Avatar.Models.V4.UpdateAvatarModelV4"];
51129
+ updateAvatarConfig?: components["schemas"]["Roblox.Api.Avatar.Models.V4.UpdateAvatarConfig"];
51130
+ };
51131
+ /** @description A model containing avatar model fields to update. */
51132
+ "Roblox.Api.Avatar.Models.V4.UpdateAvatarModelV4": {
51133
+ scales?: components["schemas"]["Roblox.Web.Responses.Avatar.ScaleModel"];
51134
+ /**
51135
+ * Format: int32
51136
+ * @description The avatar type.
51137
+ * @enum {integer}
51138
+ */
51139
+ playerAvatarType?: 1 | 3;
51140
+ bodyColors?: components["schemas"]["Roblox.Api.Avatar.Models.BodyColorsModelV4"];
51141
+ /** @description The assets worn on the character. */
51142
+ assets?: components["schemas"]["Roblox.Api.Avatar.Models.AssetWearModel"][];
51143
+ };
51144
+ /** @description A model containing outfit config fields to update. */
51145
+ "Roblox.Api.Avatar.Models.V4.UpdateOutfitConfig": {
51146
+ backgroundRequestModel?: components["schemas"]["Roblox.Api.Avatar.Models.V4.AvatarBackgroundRequestModel"];
51147
+ };
51148
+ /** @description A model containing outfit fields to create or update. */
51149
+ "Roblox.Api.Avatar.Models.V4.UpdateOutfitDefinition": {
51150
+ updateOutfitModel?: components["schemas"]["Roblox.Api.Avatar.Models.V4.UpdateOutfitModelV4"];
51151
+ updateOutfitConfig?: components["schemas"]["Roblox.Api.Avatar.Models.V4.UpdateOutfitConfig"];
51152
+ };
51153
+ /** @description A model containing core outfit fields to update. */
51154
+ "Roblox.Api.Avatar.Models.V4.UpdateOutfitModelV4": {
51155
+ /** @description The outfit name. */
51156
+ name?: string;
51157
+ bodyColors?: components["schemas"]["Roblox.Api.Avatar.Models.BodyColorsModelV4"];
51158
+ /** @description The assets on the outfit. */
51159
+ assets?: components["schemas"]["Roblox.Api.Avatar.Models.AssetWearModel"][];
51160
+ scale?: components["schemas"]["Roblox.Web.Responses.Avatar.ScaleModel"];
51161
+ /**
51162
+ * Format: int32
51163
+ * @description The player avatar type.
51164
+ * @enum {integer}
51165
+ */
51166
+ playerAvatarType?: 1 | 3;
51167
+ /**
51168
+ * Format: int32
51169
+ * @description The type of outfit (for example Avatar or Makeup). Defaults to Avatar when omitted.
51170
+ * @enum {integer}
51171
+ */
51172
+ outfitType?: 0 | 1 | 2 | 4 | 5;
51173
+ };
49777
51174
  /** @description A model that contains a list of AssetWear models */
49778
51175
  "Roblox.Api.Avatar.Models.WearRequestModel": {
49779
51176
  /** @description The asset ids */
@@ -51833,10 +53230,10 @@ export interface components {
51833
53230
  sourceUniverseId?: number;
51834
53231
  /**
51835
53232
  * Format: int32
51836
- * @description The origin source type associated with the friend request. ['Unknown' = 0, 'PlayerSearch' = 1, 'QrCode' = 2, 'InGame' = 3, 'UserProfile' = 4, 'QqContactImporter' = 5, 'WeChatContactImporter' = 6, 'ProfileShare' = 7, 'PhoneContactImporter' = 8, 'FriendRecommendations' = 9, 'UserCommunities' = 10, 'TrustedFriend' = 11]
53233
+ * @description The origin source type associated with the friend request. ['Unknown' = 0, 'PlayerSearch' = 1, 'QrCode' = 2, 'InGame' = 3, 'UserProfile' = 4, 'QqContactImporter' = 5, 'WeChatContactImporter' = 6, 'ProfileShare' = 7, 'PhoneContactImporter' = 8, 'FriendRecommendations' = 9, 'UserCommunities' = 10, 'TrustedFriend' = 11, 'SchoolMemberList' = 12]
51837
53234
  * @enum {integer}
51838
53235
  */
51839
- originSourceType?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
53236
+ originSourceType?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
51840
53237
  /** @description The contact name associated with the friend request. */
51841
53238
  contactName?: string;
51842
53239
  /** @description The nickname associated with the friend request. */
@@ -56617,16 +58014,16 @@ export interface components {
56617
58014
  /** Format: double */
56618
58015
  standard?: number | null;
56619
58016
  };
56620
- /** @description RPN operand: attribute reference or literal value (same concepts as the proto `RpnOperand` oneof). */
58017
+ /** @description RPN operand: attribute reference or literal value. */
56621
58018
  RpnOperandDto: {
56622
58019
  attributeReference?: string | null;
56623
- /** @description Literal constant for an RPN operand (proto `LiteralValue` oneof as independent fields for JSON). */
58020
+ /** @description Literal constant for an RPN operand. */
56624
58021
  literalValue?: components["schemas"]["LiteralValueDto"] | null;
56625
58022
  };
56626
- /** @description One RPN token: either a logical/comparison CreatorConfigsPublicApi.Models.ConditionalRuleOperator (proto JSON `OPERATOR_*`) or an operand object. */
58023
+ /** @description One RPN token: either a logical/comparison ConditionalRuleOperator or an operand object. */
56627
58024
  RpnTokenDto: {
56628
58025
  operator?: string | null;
56629
- /** @description RPN operand: attribute reference or literal value (same concepts as the proto `RpnOperand` oneof). */
58026
+ /** @description RPN operand: attribute reference or literal value. */
56630
58027
  operand?: components["schemas"]["RpnOperandDto"] | null;
56631
58028
  };
56632
58029
  /**
@@ -56660,6 +58057,22 @@ export interface components {
56660
58057
  * @enum {string}
56661
58058
  */
56662
58059
  SavesSortCategory: "Name" | "Creator" | "Ratings" | "TargetType" | "DateSaved" | "LastModified" | "Price";
58060
+ /**
58061
+ * @description Request body for
58062
+ * `POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:schedule`.
58063
+ */
58064
+ ScheduleExperimentRequest: {
58065
+ /** @description UTC time at which the experiment should be auto-started. */
58066
+ scheduledStartTime?: string | null;
58067
+ };
58068
+ /**
58069
+ * @description Response body for
58070
+ * `POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:schedule`.
58071
+ */
58072
+ ScheduleExperimentResponse: {
58073
+ /** @description The async operation that scheduled the experiment. */
58074
+ operation?: components["schemas"]["ExperimentOperation"] | null;
58075
+ };
56663
58076
  /**
56664
58077
  * @description Represents audio type values that will be properly displayed in Swagger UI.
56665
58078
  * @enum {string}
@@ -57023,6 +58436,13 @@ export interface components {
57023
58436
  */
57024
58437
  gameId?: string | null;
57025
58438
  };
58439
+ /** @description Variant definition for an in-game-config experiment (CreatorConfigsPublicApi.Models.Experimentation.InGameConfigExperimentConfiguration). */
58440
+ SingleConfigExperimentVariant: {
58441
+ /** @description Metadata common to all variants. */
58442
+ variantMeta?: components["schemas"]["VariantMeta"] | null;
58443
+ /** @description The config entry value for this variant. Required for non-`IsBaseline` variants. */
58444
+ configEntry?: components["schemas"]["ExperimentConfigEntry"] | null;
58445
+ };
57026
58446
  SkinnyUserResponse: {
57027
58447
  /** Format: int64 */
57028
58448
  id?: number;
@@ -57083,6 +58503,14 @@ export interface components {
57083
58503
  /** @description The sound effect subcategory. */
57084
58504
  subcategory?: string | null;
57085
58505
  } & components["schemas"]["Audio"]) | null;
58506
+ /**
58507
+ * @description Response body for
58508
+ * `POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:start`.
58509
+ */
58510
+ StartExperimentResponse: {
58511
+ /** @description The async operation that started the experiment. */
58512
+ operation?: components["schemas"]["ExperimentOperation"] | null;
58513
+ };
57086
58514
  /**
57087
58515
  * @description Whether the asset is active or archived. Unspecified isn't used.
57088
58516
  * @enum {string}
@@ -57254,6 +58682,14 @@ export interface components {
57254
58682
  */
57255
58683
  reason?: "EXPIRATION_REASON_UNSPECIFIED" | "PRODUCT_INACTIVE" | "PRODUCT_DELETED" | "SUBSCRIBER_CANCELLED" | "SUBSCRIBER_REFUNDED" | "LAPSED";
57256
58684
  };
58685
+ /** @description Eligibility criteria scoping which users an experiment can apply to. */
58686
+ TargetingCriteria: {
58687
+ /**
58688
+ * @description RPN rule that decides whether an evaluator (user, request, etc.) is eligible for the
58689
+ * experiment. `null` means no targeting (every otherwise-eligible user is in scope).
58690
+ */
58691
+ rule?: components["schemas"]["ConditionalRuleDefinition"] | null;
58692
+ };
57257
58693
  /** @enum {string} */
57258
58694
  "ThumbnailPersonalizationApi.ModerationStatus": "Reviewing" | "Rejected" | "Approved" | "Unspecified";
57259
58695
  ThumbnailResponse: {
@@ -57707,6 +59143,48 @@ export interface components {
57707
59143
  UniverseEligibility: {
57708
59144
  eligible?: boolean;
57709
59145
  };
59146
+ /**
59147
+ * @description Metric tracked for a universe experiment.
59148
+ *
59149
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME
59150
+ *
59151
+ * UNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER
59152
+ *
59153
+ * UNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION
59154
+ *
59155
+ * UNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION
59156
+ *
59157
+ * UNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE
59158
+ *
59159
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER
59160
+ *
59161
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER
59162
+ * @enum {string}
59163
+ */
59164
+ UniverseExperimentMetric: "UNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME" | "UNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER" | "UNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION" | "UNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION" | "UNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE" | "UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER" | "UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER";
59165
+ /** @description Metric configuration for an experiment. */
59166
+ UniverseMetricConfiguration: {
59167
+ /**
59168
+ * @description Goal metric.
59169
+ *
59170
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME
59171
+ *
59172
+ * UNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER
59173
+ *
59174
+ * UNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION
59175
+ *
59176
+ * UNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION
59177
+ *
59178
+ * UNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE
59179
+ *
59180
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER
59181
+ *
59182
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER
59183
+ */
59184
+ goalMetric?: components["schemas"]["UniverseExperimentMetric"];
59185
+ /** @description Learning (observation-only) metrics. */
59186
+ learningMetrics?: components["schemas"]["UniverseExperimentMetric"][] | null;
59187
+ };
57710
59188
  /**
57711
59189
  * @description A social link that may be associated with the universe.
57712
59190
  *
@@ -57756,6 +59234,54 @@ export interface components {
57756
59234
  */
57757
59235
  value: number;
57758
59236
  };
59237
+ /**
59238
+ * @description Request body for
59239
+ * `PATCH /v1/experimentation/universes/{universeId}/experiments/{experimentId}`.
59240
+ * Mirrors CreatorConfigsPublicApi.Models.Experimentation.CreateExperimentData; updating is modeled as a full replace of these fields.
59241
+ */
59242
+ UpdateExperimentData: {
59243
+ /** @description Experiment display name. */
59244
+ name?: string | null;
59245
+ /** @description Experiment description. */
59246
+ description?: string | null;
59247
+ /** @description Experiment configuration (variants + product-type-specific data). */
59248
+ experimentConfiguration?: components["schemas"]["ExperimentConfiguration"] | null;
59249
+ /**
59250
+ * Format: int32
59251
+ * @description Exposure percent in range 0-100.
59252
+ */
59253
+ exposurePercent?: number;
59254
+ /** @description Targeting criteria scoping which users are eligible for the experiment. */
59255
+ targetingCriteria?: components["schemas"]["TargetingCriteria"] | null;
59256
+ /**
59257
+ * Format: int64
59258
+ * @description Experiment duration in whole seconds.
59259
+ */
59260
+ durationSeconds?: number;
59261
+ /**
59262
+ * @description Goal metric for the experiment.
59263
+ *
59264
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME
59265
+ *
59266
+ * UNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER
59267
+ *
59268
+ * UNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION
59269
+ *
59270
+ * UNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION
59271
+ *
59272
+ * UNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE
59273
+ *
59274
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER
59275
+ *
59276
+ * UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER
59277
+ */
59278
+ universeGoalMetric?: components["schemas"]["UniverseExperimentMetric"];
59279
+ };
59280
+ /** @description Response body for PATCH /v1/universes/{universeId}/experiment/{experimentId}. */
59281
+ UpdateExperimentResponse: {
59282
+ /** @description Resulting async operation describing the update call. */
59283
+ operation?: components["schemas"]["ExperimentOperation"] | null;
59284
+ };
57759
59285
  /** @description Optional config block on the v3 PATCH body. Null sub-fields = no change. */
57760
59286
  UpdateGameEventConfigRequest: {
57761
59287
  /** @description New cron recurrence expression. Null = no change. Validated server-side. */
@@ -58284,6 +59810,28 @@ export interface components {
58284
59810
  */
58285
59811
  visibility?: "SOCIAL_NETWORK_VISIBILITY_UNSPECIFIED" | "NO_ONE" | "FRIENDS" | "FRIENDS_AND_FOLLOWING" | "FRIENDS_FOLLOWING_AND_FOLLOWERS" | "EVERYONE";
58286
59812
  };
59813
+ /** @description Metadata shared by every experiment variant. */
59814
+ VariantMeta: {
59815
+ /**
59816
+ * @description Unique identifier for the variant. Only assigned once the experiment starts running;
59817
+ * empty or null for draft variants.
59818
+ */
59819
+ variantId?: string | null;
59820
+ /**
59821
+ * @description Human-readable label for the variant, e.g. `Control`, `Treatment A`. Non-empty,
59822
+ * at most 50 characters; must start with a letter and contain only letters, digits, spaces,
59823
+ * underscores, or hyphens.
59824
+ */
59825
+ label?: string | null;
59826
+ /** @description True iff this variant is the baseline. Exactly one variant must be the baseline. */
59827
+ isBaseline?: boolean;
59828
+ /**
59829
+ * Format: int32
59830
+ * @description Relative traffic weight for this variant. The platform normalizes across all variants,
59831
+ * so weights do not have to sum to 100.
59832
+ */
59833
+ weight?: number;
59834
+ };
58287
59835
  VerifiedBadgeUserResponse: {
58288
59836
  /** Format: int64 */
58289
59837
  id?: number;
@@ -62985,6 +64533,596 @@ export interface operations {
62985
64533
  };
62986
64534
  };
62987
64535
  };
64536
+ PublicExperimentation_ListExperiments: {
64537
+ parameters: {
64538
+ query?: {
64539
+ maxPageSize?: string;
64540
+ skip?: string;
64541
+ searchKey?: string;
64542
+ stateFilters?: components["schemas"]["ExperimentState"][];
64543
+ sortOrder?: string;
64544
+ sortKey?: string;
64545
+ productTypeFilter?: string;
64546
+ };
64547
+ header?: never;
64548
+ path: {
64549
+ universeId: number;
64550
+ };
64551
+ cookie?: never;
64552
+ };
64553
+ requestBody?: never;
64554
+ responses: {
64555
+ /** @description OK */
64556
+ 200: {
64557
+ headers: {
64558
+ [name: string]: unknown;
64559
+ };
64560
+ content: {
64561
+ "application/json": components["schemas"]["ListExperimentsResponse"];
64562
+ };
64563
+ };
64564
+ /** @description Bad Request */
64565
+ 400: {
64566
+ headers: {
64567
+ [name: string]: unknown;
64568
+ };
64569
+ content: {
64570
+ "application/json": components["schemas"]["ActionResult"];
64571
+ };
64572
+ };
64573
+ /** @description Unauthorized */
64574
+ 401: {
64575
+ headers: {
64576
+ [name: string]: unknown;
64577
+ };
64578
+ content: {
64579
+ "application/json": components["schemas"]["ActionResult"];
64580
+ };
64581
+ };
64582
+ /** @description Not Found */
64583
+ 404: {
64584
+ headers: {
64585
+ [name: string]: unknown;
64586
+ };
64587
+ content: {
64588
+ "application/json": components["schemas"]["ActionResult"];
64589
+ };
64590
+ };
64591
+ };
64592
+ };
64593
+ PublicExperimentation_CreateExperiment: {
64594
+ parameters: {
64595
+ query?: never;
64596
+ header?: never;
64597
+ path: {
64598
+ universeId: number;
64599
+ };
64600
+ cookie?: never;
64601
+ };
64602
+ requestBody: {
64603
+ content: {
64604
+ "application/json-patch+json": components["schemas"]["CreateExperimentData"];
64605
+ "application/json": components["schemas"]["CreateExperimentData"];
64606
+ "text/json": components["schemas"]["CreateExperimentData"];
64607
+ "application/*+json": components["schemas"]["CreateExperimentData"];
64608
+ };
64609
+ };
64610
+ responses: {
64611
+ /** @description OK */
64612
+ 200: {
64613
+ headers: {
64614
+ [name: string]: unknown;
64615
+ };
64616
+ content: {
64617
+ "application/json": components["schemas"]["CreateExperimentResponse"];
64618
+ };
64619
+ };
64620
+ /** @description Bad Request */
64621
+ 400: {
64622
+ headers: {
64623
+ [name: string]: unknown;
64624
+ };
64625
+ content: {
64626
+ "application/json": components["schemas"]["ActionResult"];
64627
+ };
64628
+ };
64629
+ /** @description Unauthorized */
64630
+ 401: {
64631
+ headers: {
64632
+ [name: string]: unknown;
64633
+ };
64634
+ content: {
64635
+ "application/json": components["schemas"]["ActionResult"];
64636
+ };
64637
+ };
64638
+ /** @description Not Found */
64639
+ 404: {
64640
+ headers: {
64641
+ [name: string]: unknown;
64642
+ };
64643
+ content: {
64644
+ "application/json": components["schemas"]["ActionResult"];
64645
+ };
64646
+ };
64647
+ };
64648
+ };
64649
+ PublicExperimentation_GetExperiment: {
64650
+ parameters: {
64651
+ query?: never;
64652
+ header?: never;
64653
+ path: {
64654
+ universeId: number;
64655
+ experimentId: string;
64656
+ };
64657
+ cookie?: never;
64658
+ };
64659
+ requestBody?: never;
64660
+ responses: {
64661
+ /** @description OK */
64662
+ 200: {
64663
+ headers: {
64664
+ [name: string]: unknown;
64665
+ };
64666
+ content: {
64667
+ "application/json": components["schemas"]["GetExperimentResponse"];
64668
+ };
64669
+ };
64670
+ /** @description Bad Request */
64671
+ 400: {
64672
+ headers: {
64673
+ [name: string]: unknown;
64674
+ };
64675
+ content: {
64676
+ "application/json": components["schemas"]["ActionResult"];
64677
+ };
64678
+ };
64679
+ /** @description Unauthorized */
64680
+ 401: {
64681
+ headers: {
64682
+ [name: string]: unknown;
64683
+ };
64684
+ content: {
64685
+ "application/json": components["schemas"]["ActionResult"];
64686
+ };
64687
+ };
64688
+ /** @description Not Found */
64689
+ 404: {
64690
+ headers: {
64691
+ [name: string]: unknown;
64692
+ };
64693
+ content: {
64694
+ "application/json": components["schemas"]["ActionResult"];
64695
+ };
64696
+ };
64697
+ };
64698
+ };
64699
+ PublicExperimentation_DiscardExperiment: {
64700
+ parameters: {
64701
+ query?: never;
64702
+ header?: never;
64703
+ path: {
64704
+ universeId: number;
64705
+ experimentId: string;
64706
+ };
64707
+ cookie?: never;
64708
+ };
64709
+ requestBody?: never;
64710
+ responses: {
64711
+ /** @description OK */
64712
+ 200: {
64713
+ headers: {
64714
+ [name: string]: unknown;
64715
+ };
64716
+ content: {
64717
+ "application/json": components["schemas"]["DiscardExperimentResponse"];
64718
+ };
64719
+ };
64720
+ /** @description Bad Request */
64721
+ 400: {
64722
+ headers: {
64723
+ [name: string]: unknown;
64724
+ };
64725
+ content: {
64726
+ "application/json": components["schemas"]["ActionResult"];
64727
+ };
64728
+ };
64729
+ /** @description Unauthorized */
64730
+ 401: {
64731
+ headers: {
64732
+ [name: string]: unknown;
64733
+ };
64734
+ content: {
64735
+ "application/json": components["schemas"]["ActionResult"];
64736
+ };
64737
+ };
64738
+ /** @description Not Found */
64739
+ 404: {
64740
+ headers: {
64741
+ [name: string]: unknown;
64742
+ };
64743
+ content: {
64744
+ "application/json": components["schemas"]["ActionResult"];
64745
+ };
64746
+ };
64747
+ };
64748
+ };
64749
+ PublicExperimentation_UpdateExperiment: {
64750
+ parameters: {
64751
+ query?: never;
64752
+ header?: never;
64753
+ path: {
64754
+ universeId: number;
64755
+ experimentId: string;
64756
+ };
64757
+ cookie?: never;
64758
+ };
64759
+ requestBody: {
64760
+ content: {
64761
+ "application/json-patch+json": components["schemas"]["UpdateExperimentData"];
64762
+ "application/json": components["schemas"]["UpdateExperimentData"];
64763
+ "text/json": components["schemas"]["UpdateExperimentData"];
64764
+ "application/*+json": components["schemas"]["UpdateExperimentData"];
64765
+ };
64766
+ };
64767
+ responses: {
64768
+ /** @description OK */
64769
+ 200: {
64770
+ headers: {
64771
+ [name: string]: unknown;
64772
+ };
64773
+ content: {
64774
+ "application/json": components["schemas"]["UpdateExperimentResponse"];
64775
+ };
64776
+ };
64777
+ /** @description Bad Request */
64778
+ 400: {
64779
+ headers: {
64780
+ [name: string]: unknown;
64781
+ };
64782
+ content: {
64783
+ "application/json": components["schemas"]["ActionResult"];
64784
+ };
64785
+ };
64786
+ /** @description Unauthorized */
64787
+ 401: {
64788
+ headers: {
64789
+ [name: string]: unknown;
64790
+ };
64791
+ content: {
64792
+ "application/json": components["schemas"]["ActionResult"];
64793
+ };
64794
+ };
64795
+ /** @description Not Found */
64796
+ 404: {
64797
+ headers: {
64798
+ [name: string]: unknown;
64799
+ };
64800
+ content: {
64801
+ "application/json": components["schemas"]["ActionResult"];
64802
+ };
64803
+ };
64804
+ };
64805
+ };
64806
+ PublicExperimentation_GetExperimentStats: {
64807
+ parameters: {
64808
+ query?: never;
64809
+ header?: never;
64810
+ path: {
64811
+ universeId: number;
64812
+ experimentId: string;
64813
+ };
64814
+ cookie?: never;
64815
+ };
64816
+ requestBody?: never;
64817
+ responses: {
64818
+ /** @description OK */
64819
+ 200: {
64820
+ headers: {
64821
+ [name: string]: unknown;
64822
+ };
64823
+ content: {
64824
+ "application/json": components["schemas"]["GetExperimentStatsResponse"];
64825
+ };
64826
+ };
64827
+ /** @description Bad Request */
64828
+ 400: {
64829
+ headers: {
64830
+ [name: string]: unknown;
64831
+ };
64832
+ content: {
64833
+ "application/json": components["schemas"]["ActionResult"];
64834
+ };
64835
+ };
64836
+ /** @description Unauthorized */
64837
+ 401: {
64838
+ headers: {
64839
+ [name: string]: unknown;
64840
+ };
64841
+ content: {
64842
+ "application/json": components["schemas"]["ActionResult"];
64843
+ };
64844
+ };
64845
+ /** @description Not Found */
64846
+ 404: {
64847
+ headers: {
64848
+ [name: string]: unknown;
64849
+ };
64850
+ content: {
64851
+ "application/json": components["schemas"]["ActionResult"];
64852
+ };
64853
+ };
64854
+ };
64855
+ };
64856
+ PublicExperimentation_CompleteExperiment: {
64857
+ parameters: {
64858
+ query?: never;
64859
+ header?: never;
64860
+ path: {
64861
+ universeId: number;
64862
+ experimentId: string;
64863
+ };
64864
+ cookie?: never;
64865
+ };
64866
+ requestBody: {
64867
+ content: {
64868
+ "application/json-patch+json": components["schemas"]["CompleteExperimentRequest"];
64869
+ "application/json": components["schemas"]["CompleteExperimentRequest"];
64870
+ "text/json": components["schemas"]["CompleteExperimentRequest"];
64871
+ "application/*+json": components["schemas"]["CompleteExperimentRequest"];
64872
+ };
64873
+ };
64874
+ responses: {
64875
+ /** @description OK */
64876
+ 200: {
64877
+ headers: {
64878
+ [name: string]: unknown;
64879
+ };
64880
+ content: {
64881
+ "application/json": components["schemas"]["CompleteExperimentResponse"];
64882
+ };
64883
+ };
64884
+ /** @description Bad Request */
64885
+ 400: {
64886
+ headers: {
64887
+ [name: string]: unknown;
64888
+ };
64889
+ content: {
64890
+ "application/json": components["schemas"]["ActionResult"];
64891
+ };
64892
+ };
64893
+ /** @description Unauthorized */
64894
+ 401: {
64895
+ headers: {
64896
+ [name: string]: unknown;
64897
+ };
64898
+ content: {
64899
+ "application/json": components["schemas"]["ActionResult"];
64900
+ };
64901
+ };
64902
+ /** @description Not Found */
64903
+ 404: {
64904
+ headers: {
64905
+ [name: string]: unknown;
64906
+ };
64907
+ content: {
64908
+ "application/json": components["schemas"]["ActionResult"];
64909
+ };
64910
+ };
64911
+ };
64912
+ };
64913
+ PublicExperimentation_ScheduleExperiment: {
64914
+ parameters: {
64915
+ query?: never;
64916
+ header?: never;
64917
+ path: {
64918
+ universeId: number;
64919
+ experimentId: string;
64920
+ };
64921
+ cookie?: never;
64922
+ };
64923
+ requestBody: {
64924
+ content: {
64925
+ "application/json-patch+json": components["schemas"]["ScheduleExperimentRequest"];
64926
+ "application/json": components["schemas"]["ScheduleExperimentRequest"];
64927
+ "text/json": components["schemas"]["ScheduleExperimentRequest"];
64928
+ "application/*+json": components["schemas"]["ScheduleExperimentRequest"];
64929
+ };
64930
+ };
64931
+ responses: {
64932
+ /** @description OK */
64933
+ 200: {
64934
+ headers: {
64935
+ [name: string]: unknown;
64936
+ };
64937
+ content: {
64938
+ "application/json": components["schemas"]["ScheduleExperimentResponse"];
64939
+ };
64940
+ };
64941
+ /** @description Bad Request */
64942
+ 400: {
64943
+ headers: {
64944
+ [name: string]: unknown;
64945
+ };
64946
+ content: {
64947
+ "application/json": components["schemas"]["ActionResult"];
64948
+ };
64949
+ };
64950
+ /** @description Unauthorized */
64951
+ 401: {
64952
+ headers: {
64953
+ [name: string]: unknown;
64954
+ };
64955
+ content: {
64956
+ "application/json": components["schemas"]["ActionResult"];
64957
+ };
64958
+ };
64959
+ /** @description Not Found */
64960
+ 404: {
64961
+ headers: {
64962
+ [name: string]: unknown;
64963
+ };
64964
+ content: {
64965
+ "application/json": components["schemas"]["ActionResult"];
64966
+ };
64967
+ };
64968
+ };
64969
+ };
64970
+ PublicExperimentation_StartExperiment: {
64971
+ parameters: {
64972
+ query?: never;
64973
+ header?: never;
64974
+ path: {
64975
+ universeId: number;
64976
+ experimentId: string;
64977
+ };
64978
+ cookie?: never;
64979
+ };
64980
+ requestBody?: never;
64981
+ responses: {
64982
+ /** @description OK */
64983
+ 200: {
64984
+ headers: {
64985
+ [name: string]: unknown;
64986
+ };
64987
+ content: {
64988
+ "application/json": components["schemas"]["StartExperimentResponse"];
64989
+ };
64990
+ };
64991
+ /** @description Bad Request */
64992
+ 400: {
64993
+ headers: {
64994
+ [name: string]: unknown;
64995
+ };
64996
+ content: {
64997
+ "application/json": components["schemas"]["ActionResult"];
64998
+ };
64999
+ };
65000
+ /** @description Unauthorized */
65001
+ 401: {
65002
+ headers: {
65003
+ [name: string]: unknown;
65004
+ };
65005
+ content: {
65006
+ "application/json": components["schemas"]["ActionResult"];
65007
+ };
65008
+ };
65009
+ /** @description Not Found */
65010
+ 404: {
65011
+ headers: {
65012
+ [name: string]: unknown;
65013
+ };
65014
+ content: {
65015
+ "application/json": components["schemas"]["ActionResult"];
65016
+ };
65017
+ };
65018
+ };
65019
+ };
65020
+ PublicExperimentation_CalculateExperimentMde: {
65021
+ parameters: {
65022
+ query?: never;
65023
+ header?: never;
65024
+ path: {
65025
+ universeId: number;
65026
+ };
65027
+ cookie?: never;
65028
+ };
65029
+ requestBody: {
65030
+ content: {
65031
+ "application/json-patch+json": components["schemas"]["CalculateExperimentMdeData"];
65032
+ "application/json": components["schemas"]["CalculateExperimentMdeData"];
65033
+ "text/json": components["schemas"]["CalculateExperimentMdeData"];
65034
+ "application/*+json": components["schemas"]["CalculateExperimentMdeData"];
65035
+ };
65036
+ };
65037
+ responses: {
65038
+ /** @description OK */
65039
+ 200: {
65040
+ headers: {
65041
+ [name: string]: unknown;
65042
+ };
65043
+ content: {
65044
+ "application/json": components["schemas"]["CalculateExperimentMdeResponse"];
65045
+ };
65046
+ };
65047
+ /** @description Bad Request */
65048
+ 400: {
65049
+ headers: {
65050
+ [name: string]: unknown;
65051
+ };
65052
+ content: {
65053
+ "application/json": components["schemas"]["ActionResult"];
65054
+ };
65055
+ };
65056
+ /** @description Unauthorized */
65057
+ 401: {
65058
+ headers: {
65059
+ [name: string]: unknown;
65060
+ };
65061
+ content: {
65062
+ "application/json": components["schemas"]["ActionResult"];
65063
+ };
65064
+ };
65065
+ /** @description Not Found */
65066
+ 404: {
65067
+ headers: {
65068
+ [name: string]: unknown;
65069
+ };
65070
+ content: {
65071
+ "application/json": components["schemas"]["ActionResult"];
65072
+ };
65073
+ };
65074
+ };
65075
+ };
65076
+ PublicExperimentation_GetExperimentOperationStatus: {
65077
+ parameters: {
65078
+ query?: never;
65079
+ header?: never;
65080
+ path: {
65081
+ universeId: number;
65082
+ operationId: string;
65083
+ };
65084
+ cookie?: never;
65085
+ };
65086
+ requestBody?: never;
65087
+ responses: {
65088
+ /** @description OK */
65089
+ 200: {
65090
+ headers: {
65091
+ [name: string]: unknown;
65092
+ };
65093
+ content: {
65094
+ "application/json": components["schemas"]["GetExperimentOperationStatusResponse"];
65095
+ };
65096
+ };
65097
+ /** @description Bad Request */
65098
+ 400: {
65099
+ headers: {
65100
+ [name: string]: unknown;
65101
+ };
65102
+ content: {
65103
+ "application/json": components["schemas"]["ActionResult"];
65104
+ };
65105
+ };
65106
+ /** @description Unauthorized */
65107
+ 401: {
65108
+ headers: {
65109
+ [name: string]: unknown;
65110
+ };
65111
+ content: {
65112
+ "application/json": components["schemas"]["ActionResult"];
65113
+ };
65114
+ };
65115
+ /** @description Not Found */
65116
+ 404: {
65117
+ headers: {
65118
+ [name: string]: unknown;
65119
+ };
65120
+ content: {
65121
+ "application/json": components["schemas"]["ActionResult"];
65122
+ };
65123
+ };
65124
+ };
65125
+ };
62988
65126
  Datastores_ListDatastoresAsync: {
62989
65127
  parameters: {
62990
65128
  query?: {