For testing create a collection mobile-experiments
in the main
bucket on the Kinto dev server.
What's added in "Records list columns" is what get's shown in the record lists overview. We want:
- id
- description
{ | |
"type": "object", | |
"required": [ | |
"id", | |
"description", | |
"match", | |
"buckets", | |
"branches" | |
], | |
"properties": { | |
"id": { | |
"title": "Experiment id", | |
"type": "string", | |
"minLength": 1, | |
"maxLength": 100 | |
}, | |
"description": { | |
"title": "Description", | |
"type": "string" | |
}, | |
"buckets": { | |
"title": "Buckets", | |
"type": "object", | |
"description": "Each user is assigned a random bucket from 0 to 999. Select the bucket ranges here to control the enrolled population size.", | |
"required": [ | |
"start", | |
"count" | |
], | |
"properties": { | |
"start": { | |
"mininum": 0, | |
"maximum": 999, | |
"type": "number" | |
}, | |
"count": { | |
"mininum": 0, | |
"maximum": 1000, | |
"type": "number" | |
} | |
} | |
}, | |
"branches": { | |
"title": "Branches", | |
"type": "array", | |
"required": [ | |
"name", | |
"ratio" | |
], | |
"default": [], | |
"uniqueItems": true, | |
"minItems": 1, | |
"description": "Each experiment needs to specify one or more branches. Each branch has a name and a ratio. An enrolled user is assigned one branch randomly, with the probabilities weighted per the ratio.", | |
"items": { | |
"description": "One experiment branch.", | |
"title": "Branch", | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string", | |
"description": "The branch name. This is what product code uses to decide which branch logic to execute.", | |
"minLength": 1, | |
"maxLength": 100 | |
}, | |
"ratio": { | |
"type": "number", | |
"description": "The branches ratio is the probabilistic weight for random branch assignment.", | |
"mininum": 1, | |
"maximum": 1000, | |
"default": 1 | |
} | |
} | |
} | |
}, | |
"match": { | |
"title": "Matching", | |
"type": "object", | |
"description": "A list of optional matchers, which allow restricting the experiment to e.g. specific application ids.", | |
"properties": { | |
"app_id": { | |
"type": "string", | |
"description": "Match specific application ids. A regex. E.g.: ^org.mozilla.fennec|org.mozilla.firefox_beta|org.mozilla.firefox$", | |
"minLength": 1, | |
"maxLength": 1000 | |
}, | |
"app_display_version": { | |
"description": "The applications version number. A regex. E.g.: '47.0a1', '46.0'", | |
"type": "string" | |
}, | |
"locale_country": { | |
"description": "Match country, pulled from the default locale. A regex. E.g.: USA|ITA", | |
"type": "string", | |
"minLength": 1, | |
"maxLength": 1000 | |
}, | |
"locale_language": { | |
"description": "Language, pulled from the default locale. A regex. E.g.: eng|esp", | |
"type": "string", | |
"minLength": 1, | |
"maxLength": 1000 | |
}, | |
"device_model": { | |
"description": "Device name. A regex.", | |
"type": "string", | |
"minLength": 1, | |
"maxLength": 1000 | |
}, | |
"device_manufacturer": { | |
"description": "Device manufacturer", | |
"type": "string", | |
"minLength": 1, | |
"maxLength": 1000 | |
}, | |
"regions": { | |
"default": [], | |
"description": "Compared with GeoIP lookup, where supported.", | |
"items": { | |
"default": "", | |
"description": "Similar to a GeoIP lookup", | |
"minLength": 1, | |
"maxLength": 1000, | |
"title": "Regions", | |
"type": "string" | |
}, | |
"title": "Regions", | |
"type": "array", | |
"uniqueItems": true | |
}, | |
"debug_tags": { | |
"default": [], | |
"description": "Target specific debug tags only. This allows testing of experiments for only specific active users for QA etc.", | |
"items": { | |
"default": "", | |
"description": "A debug tag set through the libraries debug activity.", | |
"minLength": 1, | |
"title": "Debug tag", | |
"type": "string" | |
}, | |
"title": "Debug tags", | |
"type": "array", | |
"uniqueItems": true | |
} | |
} | |
} | |
} | |
} |
For testing create a collection mobile-experiments
in the main
bucket on the Kinto dev server.
What's added in "Records list columns" is what get's shown in the record lists overview. We want:
{ | |
"sort": "-last_modified", | |
"displayFields": [ | |
"id", | |
"description" | |
], | |
"attachment": { | |
"enabled": false, | |
"required": false | |
}, | |
"schema": { | |
"properties": { | |
"id": { | |
"type": "string", | |
"maxLength": 100, | |
"title": "Experiment id", | |
"minLength": 1 | |
}, | |
"buckets": { | |
"description": "Each user is assigned a random bucket from 0 to 999. Select the bucket ranges here to control the enrolled population size.", | |
"properties": { | |
"start": { | |
"type": "number", | |
"mininum": 0, | |
"maximum": 999 | |
}, | |
"count": { | |
"type": "number", | |
"mininum": 0, | |
"maximum": 1000 | |
} | |
}, | |
"type": "object", | |
"required": [ | |
"start", | |
"count" | |
], | |
"title": "Buckets" | |
}, | |
"description": { | |
"type": "string", | |
"title": "Description" | |
}, | |
"branches": { | |
"description": "Each experiment needs to specify one or more branches. Each branch has a name and a ratio. An enrolled user is assigned one branch randomly, with the probabilities weighted per the ratio.", | |
"required": [ | |
"name", | |
"ratio" | |
], | |
"title": "Branches", | |
"items": { | |
"description": "One experiment branch.", | |
"properties": { | |
"ratio": { | |
"description": "The branches ratio is the probabilistic weight for random branch assignment.", | |
"type": "number", | |
"default": 1, | |
"mininum": 1, | |
"maximum": 1000 | |
}, | |
"name": { | |
"description": "The branch name. This is what product code uses to decide which branch logic to execute.", | |
"type": "string", | |
"maxLength": 100, | |
"minLength": 1 | |
} | |
}, | |
"type": "object", | |
"title": "Branch" | |
}, | |
"type": "array", | |
"minItems": 1, | |
"uniqueItems": true, | |
"default": [] | |
}, | |
"match": { | |
"description": "A list of optional matchers, which allow restricting the experiment to e.g. specific application ids.", | |
"properties": { | |
"app_id": { | |
"description": "Match specific application ids. A regex. E.g.: ^org.mozilla.fennec|org.mozilla.firefox_beta|org.mozilla.firefox$", | |
"type": "string", | |
"maxLength": 1000, | |
"minLength": 1 | |
}, | |
"app_display_version": { | |
"description": "The applications version number. A regex. E.g.: '47.0a1', '46.0'", | |
"type": "string" | |
}, | |
"device_manufacturer": { | |
"description": "Device manufacturer", | |
"type": "string", | |
"maxLength": 1000, | |
"minLength": 1 | |
}, | |
"debug_tags": { | |
"description": "Target specific debug tags only. This allows testing of experiments for only specific active users for QA etc.", | |
"title": "Debug tags", | |
"items": { | |
"description": "A debug tag set through the libraries debug activity.", | |
"type": "string", | |
"title": "Debug tag", | |
"default": "", | |
"minLength": 1 | |
}, | |
"type": "array", | |
"uniqueItems": true, | |
"default": [] | |
}, | |
"locale_country": { | |
"description": "Match country, pulled from the default locale. A regex. E.g.: USA|ITA", | |
"type": "string", | |
"maxLength": 1000, | |
"minLength": 1 | |
}, | |
"regions": { | |
"description": "Compared with GeoIP lookup, where supported.", | |
"title": "Regions", | |
"items": { | |
"description": "Similar to a GeoIP lookup", | |
"maxLength": 1000, | |
"title": "Regions", | |
"type": "string", | |
"minLength": 1, | |
"default": "" | |
}, | |
"type": "array", | |
"uniqueItems": true, | |
"default": [] | |
}, | |
"device_model": { | |
"description": "Device name. A regex.", | |
"type": "string", | |
"maxLength": 1000, | |
"minLength": 1 | |
}, | |
"locale_language": { | |
"description": "Language, pulled from the default locale. A regex. E.g.: eng|esp", | |
"type": "string", | |
"maxLength": 1000, | |
"minLength": 1 | |
} | |
}, | |
"type": "object", | |
"title": "Matching" | |
} | |
}, | |
"type": "object", | |
"required": [ | |
"id", | |
"description", | |
"match", | |
"buckets", | |
"branches" | |
] | |
}, | |
"uiSchema": { | |
"buckets": { | |
"ui:order": [ | |
"start", | |
"count" | |
] | |
}, | |
"description": { | |
"ui:widget": "textarea" | |
}, | |
"match": { | |
"ui:order": [ | |
"app_id", | |
"app_display_version", | |
"locale_language", | |
"locale_country", | |
"device_model", | |
"device_manufacturer", | |
"regions", | |
"debug_tags" | |
] | |
}, | |
"ui:order": [ | |
"id", | |
"description", | |
"buckets", | |
"branches", | |
"match" | |
] | |
}, | |
"cache_expires": 0 | |
} |
{ | |
"ui:order": [ | |
"id", | |
"description", | |
"buckets", | |
"branches", | |
"match" | |
], | |
"description": { | |
"ui:widget": "textarea" | |
}, | |
"buckets": { | |
"ui:order": [ | |
"start", | |
"count" | |
] | |
}, | |
"match": { | |
"ui:order": [ | |
"app_id", | |
"app_display_version", | |
"locale_language", | |
"locale_country", | |
"device_model", | |
"device_manufacturer", | |
"regions", | |
"debug_tags" | |
] | |
} | |
} |