Experiments
This section of the documentation will cover how to fetch experiments.
Accessible on https://dux.xhyrom.dev/v2/experiments
Experiment Object
Represents an experiment
Experiment Structure:
field | type | description |
---|---|---|
data | experiment data structure | The data of the experiment |
rollout | ?experiment rollout structure | The rollout of the experiment |
Data Object
Represents the data of an experiment
Experiment Data Structure:
field | type | description |
---|---|---|
hash | string | Hash of the experiment (if the experiment has no id, this will be a hash) |
id * | ?string | Id of the experiment |
label * | ?string | Human-readable label of the experiment |
kind ** | string | Kind of the experiment |
description | ?array of string | Names of buckets |
buckets | ?array of integers | Ids of available buckets |
config_keys | ?array of string | Keys of the config |
* Also included if you’re using ?only_keys=true
query parameter.
** Can be guild
if the experiment is guild-specific, user
if the experiment is user-specific.
*** Everything is included in the data
field, if you’re not using ?also_with_unknown_ids=true
query parameter.
Rollout Object
Represents the rollout of an experiment
Rollout Structure:
field | type | description |
---|---|---|
revision | integer | Current version fo the rollout |
populations | array of rollout population | The experiment rollout’s populations |
overrides * | map[string][array of string] | The experiment rollout’s overrides |
overrides_formatted | array of rollout population | Additional experiment rollout’s populations |
* Map key is bucket id and value is array of guild ids
Rollout Population Object
Represents a population of an experiment rollout. The population object specifies a set of filters and ranges of positions needed to fit into particular buckets.
Rollout Population Structure:
field | type | description |
---|---|---|
buckets | map[string][population bucket] | The population buckets |
filters | array of population filter | Population filters |
Population Bucket Object
Represents a bucket of a population of an experiment rollout. Bucket contains a rollout.
Population Bucket Structure:
field | type | description |
---|---|---|
rollout | array of population bucket rollout | The bucket rollouts (ranges) |
Population Bucket Rollout Object
Represents a rollout of a bucket of a population of an experiment rollout. Rollout contains a range, start and end.
Population Bucket Rollout Structure:
field | type | description |
---|---|---|
start | integer | The start of this range |
end | integer | The end of this range |
Population Filter Object
Represents a filter of a population of an experiment rollout.
Population Filter Structure:
field | type | description |
---|---|---|
type | string | The filter type |
type is guild_has_feature
The guild features required for eligiblity
field | type | description |
---|---|---|
features | ?array of string | Contains Guild Features |
type is guild_id_range
The range of snowflake resource Ids that are eligible
field | type | description |
---|---|---|
min_id | ?integer | Minimum guild id |
max_id | integer | Maximum guild id |
type is guild_member_count_range
The range of guild member counts that are eligible
field | type | description |
---|---|---|
min_count | ?integer | Minimum member count |
max_count | integer | Maximum member count |
type is guild_ids
The list of snowflake resource IDs that are eligible
field | type | description |
---|---|---|
ids | ?array of string | Contains Guild Ids |
type is guild_hub_types
The types of hubs that is eligible
field | type | description |
---|---|---|
hub_types | ?array of integer | Types of hubs |
- Default
- High School
- College
type is guild_has_vanity_url
Whether a vanity is or is not required for eligibility
field | type | description |
---|---|---|
has_vanity | ?boolean | Whether the guild has vanity url |
type is guild_in_range_by_hash
If the guild experiment hash (murmurhash v3 unsigned of experiment_name:guild_id
% 1e4) is greater than hash_key
, it is eligible
field | type | description |
---|---|---|
hash_key | ?number | Minimum hash key |
target | ?number | Unknown |
Fetching all experiments
You can fetch experiments from the API by sending a GET request to https://dux.xhyrom.dev/v2/experiments.
Unfortunately, due to capacity issues, the query parameters in the URL do not work. All experiments are always returned.
Query parameters:
Name | Type | Description |
---|---|---|
also_with_unknown_ids | boolean | This will include also experiments without id, just hash |
only_keys | boolean | This will only return the keys of the experiments (label, id) |
has_rollout | boolean | This will only return experiments with rollout |
kind * | array of string | This will only return experiments with the specified kind |
* If you want multiple kinds, you can separate them with a comma (,)
GET https://dux.xhyrom.dev/v2/experiments
Returns array of Experiment Object
Fetching experiment
You can fetch a specific experiment from the API by sending a GET request to https://dux.xhyrom.dev/v2/experiments/:experimentId.
You can use same query parameters as in Fetching all experiments
GET https://dux.xhyrom.dev/v2/experiments/:experimentId
Returns Experiment Object