@mozilla/nimbus-schemas 2025.1.1 → 3000.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -7
- package/index.d.ts +261 -227
- package/package.json +1 -1
- package/schemas/DesktopAllVersionsNimbusExperiment.schema.json +25 -24
- package/schemas/DesktopFeature.schema.json +4 -0
- package/schemas/DesktopFeatureManifest.schema.json +4 -0
- package/schemas/DesktopNimbusExperiment.schema.json +24 -23
- package/schemas/ExperimentBucketConfig.schema.json +46 -0
- package/schemas/ExperimentFeatureConfig.schema.json +19 -0
- package/schemas/ExperimentLocalizations.schema.json +12 -0
- package/schemas/ExperimentOutcome.schema.json +19 -0
- package/schemas/NimbusExperimentV7.schema.json +306 -0
- package/schemas/SdkFeatureManifest.schema.json +4 -0
- package/schemas/SdkNimbusExperiment.schema.json +226 -3
package/package.json
CHANGED
|
@@ -13,35 +13,35 @@
|
|
|
13
13
|
"type": "string"
|
|
14
14
|
},
|
|
15
15
|
"id": {
|
|
16
|
-
"description": "Unique identifier for the
|
|
16
|
+
"description": "Unique identifier for the experiment. This is a duplicate of slug, but is required field for all Remote Settings records.",
|
|
17
17
|
"type": "string"
|
|
18
18
|
},
|
|
19
19
|
"appName": {
|
|
20
|
-
"description": "A slug identifying the targeted product of this experiment.
|
|
20
|
+
"description": "A slug identifying the targeted product of this experiment. It should be a lowercased_with_underscores name that is short and unambiguous and it should match the app_name found in https://probeinfo.telemetry.mozilla.org/glean/repositories. Examples are \"fenix\" and \"firefox_desktop\".",
|
|
21
21
|
"type": "string"
|
|
22
22
|
},
|
|
23
23
|
"appId": {
|
|
24
|
-
"description": "The platform identifier for the targeted app.
|
|
24
|
+
"description": "The platform identifier for the targeted app. This should match app's identifier exactly as it appears in the relevant app store listing (for relevant platforms) or the app's Glean initialization (for other platforms). Examples are \"org.mozilla.firefox_beta\" and \"firefox-desktop\".",
|
|
25
25
|
"type": "string"
|
|
26
26
|
},
|
|
27
27
|
"channel": {
|
|
28
|
-
"description": "A specific channel of an application such as
|
|
28
|
+
"description": "A specific channel of an application such as 'nightly', 'beta', or 'release'.",
|
|
29
29
|
"type": "string"
|
|
30
30
|
},
|
|
31
31
|
"userFacingName": {
|
|
32
|
-
"description": "Public name of the experiment
|
|
32
|
+
"description": "Public name of the experiment displayed on 'about:studies'.",
|
|
33
33
|
"type": "string"
|
|
34
34
|
},
|
|
35
35
|
"userFacingDescription": {
|
|
36
|
-
"description": "Short public description of the experiment
|
|
36
|
+
"description": "Short public description of the experiment. that will be displayed on \"about:studies\".",
|
|
37
37
|
"type": "string"
|
|
38
38
|
},
|
|
39
39
|
"isEnrollmentPaused": {
|
|
40
|
-
"description": "When this property is set to true, the SDK should not enroll
|
|
40
|
+
"description": "When this property is set to true, the SDK should not enroll new users into the experiment that have not already been enrolled.",
|
|
41
41
|
"type": "boolean"
|
|
42
42
|
},
|
|
43
43
|
"isRollout": {
|
|
44
|
-
"description": "When this property is set to true, treat this experiment
|
|
44
|
+
"description": "When this property is set to true, treat this experiment as a rollout. Rollouts are currently handled as single-branch experiments separated from the bucketing namespace for normal experiments. See-also: https://mozilla-hub.atlassian.net/browse/SDK-405",
|
|
45
45
|
"type": "boolean"
|
|
46
46
|
},
|
|
47
47
|
"bucketConfig": {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"description": "Bucketing configuration."
|
|
50
50
|
},
|
|
51
51
|
"outcomes": {
|
|
52
|
-
"description": "
|
|
52
|
+
"description": "List of outcomes relevant to analysis.",
|
|
53
53
|
"items": {
|
|
54
54
|
"$ref": "#/$defs/ExperimentOutcome"
|
|
55
55
|
},
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"type": "null"
|
|
84
84
|
}
|
|
85
85
|
],
|
|
86
|
-
"description": "Actual publish date of the experiment.
|
|
86
|
+
"description": "Actual publish date of the experiment. Note that this value is expected to be null in Remote Settings."
|
|
87
87
|
},
|
|
88
88
|
"enrollmentEndDate": {
|
|
89
89
|
"anyOf": [
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"type": "null"
|
|
96
96
|
}
|
|
97
97
|
],
|
|
98
|
-
"description": "Actual enrollment end date of the experiment.
|
|
98
|
+
"description": "Actual enrollment end date of the experiment. Note that this value is expected to be null in Remote Settings."
|
|
99
99
|
},
|
|
100
100
|
"endDate": {
|
|
101
101
|
"anyOf": [
|
|
@@ -107,14 +107,14 @@
|
|
|
107
107
|
"type": "null"
|
|
108
108
|
}
|
|
109
109
|
],
|
|
110
|
-
"description": "Actual end date of this experiment.
|
|
110
|
+
"description": "Actual end date of this experiment. Note that this field is expected to be null in Remote Settings."
|
|
111
111
|
},
|
|
112
112
|
"proposedDuration": {
|
|
113
|
-
"description": "Duration of the experiment from the start date in days.
|
|
113
|
+
"description": "Duration of the experiment from the start date in days. Note that this property is only used during the analysis phase (i.e., not by the SDK).",
|
|
114
114
|
"type": "integer"
|
|
115
115
|
},
|
|
116
116
|
"proposedEnrollment": {
|
|
117
|
-
"description": "This represents the number of days that we expect to
|
|
117
|
+
"description": "This represents the number of days that we expect to enroll new users. Note that this property is only used during the analysis phase (i.e., not by the SDK).",
|
|
118
118
|
"type": "integer"
|
|
119
119
|
},
|
|
120
120
|
"referenceBranch": {
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"type": "null"
|
|
127
127
|
}
|
|
128
128
|
],
|
|
129
|
-
"description": "The slug of the reference branch
|
|
129
|
+
"description": "The slug of the reference branch (i.e., the branch we consider \"control\")."
|
|
130
130
|
},
|
|
131
131
|
"locales": {
|
|
132
132
|
"anyOf": [
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
"type": "null"
|
|
141
141
|
}
|
|
142
142
|
],
|
|
143
|
-
"description": "The list of locale codes (e.g., \"en-US\" or \"fr\") that this
|
|
143
|
+
"description": "The list of locale codes (e.g., \"en-US\" or \"fr\") that this experiment is targeting. If null, all locales are targeted."
|
|
144
144
|
},
|
|
145
145
|
"publishedDate": {
|
|
146
146
|
"anyOf": [
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
"type": "null"
|
|
153
153
|
}
|
|
154
154
|
],
|
|
155
|
-
"description": "The date that this experiment was first published to
|
|
155
|
+
"description": "The date that this experiment was first published to Remote Settings. If null, it has not yet been published."
|
|
156
156
|
},
|
|
157
157
|
"branches": {
|
|
158
158
|
"description": "Branch configuration for the experiment.",
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
"type": "array"
|
|
163
163
|
},
|
|
164
164
|
"isFirefoxLabsOptIn": {
|
|
165
|
-
"description": "When this property is set to true, treat this experiment as
|
|
165
|
+
"description": "When this property is set to true, treat this experiment as a Firefox Labs experiment",
|
|
166
166
|
"type": "boolean"
|
|
167
167
|
},
|
|
168
168
|
"firefoxLabsGroup": {
|
|
@@ -213,14 +213,14 @@
|
|
|
213
213
|
"type": "null"
|
|
214
214
|
}
|
|
215
215
|
],
|
|
216
|
-
"description": "Links that will be used with the
|
|
216
|
+
"description": "Links that will be used with the Firefox Labs description Fluent ID. May be null for Firefox Labs Opt-In recipes that do not use links."
|
|
217
217
|
},
|
|
218
218
|
"featureValidationOptOut": {
|
|
219
219
|
"description": "Opt out of feature schema validation.",
|
|
220
220
|
"type": "boolean"
|
|
221
221
|
},
|
|
222
222
|
"requiresRestart": {
|
|
223
|
-
"description": "Does the experiment require a restart to take effect?
|
|
223
|
+
"description": "Does the experiment require a restart to take effect?",
|
|
224
224
|
"type": "boolean"
|
|
225
225
|
},
|
|
226
226
|
"localizations": {
|
|
@@ -300,7 +300,7 @@
|
|
|
300
300
|
"type": "string"
|
|
301
301
|
},
|
|
302
302
|
"ratio": {
|
|
303
|
-
"description": "Relative ratio of population for the branch. e.g., if branch A=1 and branch B=3, then branch A
|
|
303
|
+
"description": "Relative ratio of population for the branch. e.g., if branch A=1 and branch B=3, then branch A would get 25% of the population.",
|
|
304
304
|
"type": "integer"
|
|
305
305
|
},
|
|
306
306
|
"features": {
|
|
@@ -323,7 +323,7 @@
|
|
|
323
323
|
},
|
|
324
324
|
"feature": {
|
|
325
325
|
"$ref": "#/$defs/DesktopPre95FeatureConfig",
|
|
326
|
-
"description": "The feature key must be provided with values to prevent crashes if the is encountered by Desktop clients earlier than version 95."
|
|
326
|
+
"description": "The feature key must be provided with values to prevent crashes if the experiment is encountered by Desktop clients earlier than version 95."
|
|
327
327
|
}
|
|
328
328
|
},
|
|
329
329
|
"required": [
|
|
@@ -356,6 +356,7 @@
|
|
|
356
356
|
"type": "object"
|
|
357
357
|
},
|
|
358
358
|
"ExperimentBucketConfig": {
|
|
359
|
+
"description": "Common Bucketing Configuration used across all versions.",
|
|
359
360
|
"properties": {
|
|
360
361
|
"randomizationUnit": {
|
|
361
362
|
"$ref": "#/$defs/RandomizationUnit"
|
|
@@ -373,7 +374,7 @@
|
|
|
373
374
|
"type": "integer"
|
|
374
375
|
},
|
|
375
376
|
"total": {
|
|
376
|
-
"description": "The total number of buckets. You can assume
|
|
377
|
+
"description": "The total number of buckets. You can assume this will always be 10000.",
|
|
377
378
|
"type": "integer"
|
|
378
379
|
}
|
|
379
380
|
},
|
|
@@ -431,7 +432,7 @@
|
|
|
431
432
|
"type": "object"
|
|
432
433
|
},
|
|
433
434
|
"RandomizationUnit": {
|
|
434
|
-
"description": "A unique, stable
|
|
435
|
+
"description": "A unique, stable identifier for the user used as an input to bucket hashing.",
|
|
435
436
|
"enum": [
|
|
436
437
|
"normandy_id",
|
|
437
438
|
"nimbus_id",
|
|
@@ -42,6 +42,10 @@
|
|
|
42
42
|
"schema": {
|
|
43
43
|
"$ref": "#/$defs/NimbusFeatureSchema",
|
|
44
44
|
"description": "An optional JSON schema that describes the feature variables."
|
|
45
|
+
},
|
|
46
|
+
"allowCoenrollment": {
|
|
47
|
+
"description": "If true, clients can enroll in multiple experiments and rollouts that use this feature.",
|
|
48
|
+
"type": "boolean"
|
|
45
49
|
}
|
|
46
50
|
},
|
|
47
51
|
"required": [
|
|
@@ -62,6 +62,10 @@
|
|
|
62
62
|
"schema": {
|
|
63
63
|
"$ref": "#/$defs/NimbusFeatureSchema",
|
|
64
64
|
"description": "An optional JSON schema that describes the feature variables."
|
|
65
|
+
},
|
|
66
|
+
"allowCoenrollment": {
|
|
67
|
+
"description": "If true, clients can enroll in multiple experiments and rollouts that use this feature.",
|
|
68
|
+
"type": "boolean"
|
|
65
69
|
}
|
|
66
70
|
},
|
|
67
71
|
"required": [
|
|
@@ -13,35 +13,35 @@
|
|
|
13
13
|
"type": "string"
|
|
14
14
|
},
|
|
15
15
|
"id": {
|
|
16
|
-
"description": "Unique identifier for the
|
|
16
|
+
"description": "Unique identifier for the experiment. This is a duplicate of slug, but is required field for all Remote Settings records.",
|
|
17
17
|
"type": "string"
|
|
18
18
|
},
|
|
19
19
|
"appName": {
|
|
20
|
-
"description": "A slug identifying the targeted product of this experiment.
|
|
20
|
+
"description": "A slug identifying the targeted product of this experiment. It should be a lowercased_with_underscores name that is short and unambiguous and it should match the app_name found in https://probeinfo.telemetry.mozilla.org/glean/repositories. Examples are \"fenix\" and \"firefox_desktop\".",
|
|
21
21
|
"type": "string"
|
|
22
22
|
},
|
|
23
23
|
"appId": {
|
|
24
|
-
"description": "The platform identifier for the targeted app.
|
|
24
|
+
"description": "The platform identifier for the targeted app. This should match app's identifier exactly as it appears in the relevant app store listing (for relevant platforms) or the app's Glean initialization (for other platforms). Examples are \"org.mozilla.firefox_beta\" and \"firefox-desktop\".",
|
|
25
25
|
"type": "string"
|
|
26
26
|
},
|
|
27
27
|
"channel": {
|
|
28
|
-
"description": "A specific channel of an application such as
|
|
28
|
+
"description": "A specific channel of an application such as 'nightly', 'beta', or 'release'.",
|
|
29
29
|
"type": "string"
|
|
30
30
|
},
|
|
31
31
|
"userFacingName": {
|
|
32
|
-
"description": "Public name of the experiment
|
|
32
|
+
"description": "Public name of the experiment displayed on 'about:studies'.",
|
|
33
33
|
"type": "string"
|
|
34
34
|
},
|
|
35
35
|
"userFacingDescription": {
|
|
36
|
-
"description": "Short public description of the experiment
|
|
36
|
+
"description": "Short public description of the experiment. that will be displayed on \"about:studies\".",
|
|
37
37
|
"type": "string"
|
|
38
38
|
},
|
|
39
39
|
"isEnrollmentPaused": {
|
|
40
|
-
"description": "When this property is set to true, the SDK should not enroll
|
|
40
|
+
"description": "When this property is set to true, the SDK should not enroll new users into the experiment that have not already been enrolled.",
|
|
41
41
|
"type": "boolean"
|
|
42
42
|
},
|
|
43
43
|
"isRollout": {
|
|
44
|
-
"description": "When this property is set to true, treat this experiment
|
|
44
|
+
"description": "When this property is set to true, treat this experiment as a rollout. Rollouts are currently handled as single-branch experiments separated from the bucketing namespace for normal experiments. See-also: https://mozilla-hub.atlassian.net/browse/SDK-405",
|
|
45
45
|
"type": "boolean"
|
|
46
46
|
},
|
|
47
47
|
"bucketConfig": {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"description": "Bucketing configuration."
|
|
50
50
|
},
|
|
51
51
|
"outcomes": {
|
|
52
|
-
"description": "
|
|
52
|
+
"description": "List of outcomes relevant to analysis.",
|
|
53
53
|
"items": {
|
|
54
54
|
"$ref": "#/$defs/ExperimentOutcome"
|
|
55
55
|
},
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"type": "null"
|
|
84
84
|
}
|
|
85
85
|
],
|
|
86
|
-
"description": "Actual publish date of the experiment.
|
|
86
|
+
"description": "Actual publish date of the experiment. Note that this value is expected to be null in Remote Settings."
|
|
87
87
|
},
|
|
88
88
|
"enrollmentEndDate": {
|
|
89
89
|
"anyOf": [
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"type": "null"
|
|
96
96
|
}
|
|
97
97
|
],
|
|
98
|
-
"description": "Actual enrollment end date of the experiment.
|
|
98
|
+
"description": "Actual enrollment end date of the experiment. Note that this value is expected to be null in Remote Settings."
|
|
99
99
|
},
|
|
100
100
|
"endDate": {
|
|
101
101
|
"anyOf": [
|
|
@@ -107,14 +107,14 @@
|
|
|
107
107
|
"type": "null"
|
|
108
108
|
}
|
|
109
109
|
],
|
|
110
|
-
"description": "Actual end date of this experiment.
|
|
110
|
+
"description": "Actual end date of this experiment. Note that this field is expected to be null in Remote Settings."
|
|
111
111
|
},
|
|
112
112
|
"proposedDuration": {
|
|
113
|
-
"description": "Duration of the experiment from the start date in days.
|
|
113
|
+
"description": "Duration of the experiment from the start date in days. Note that this property is only used during the analysis phase (i.e., not by the SDK).",
|
|
114
114
|
"type": "integer"
|
|
115
115
|
},
|
|
116
116
|
"proposedEnrollment": {
|
|
117
|
-
"description": "This represents the number of days that we expect to
|
|
117
|
+
"description": "This represents the number of days that we expect to enroll new users. Note that this property is only used during the analysis phase (i.e., not by the SDK).",
|
|
118
118
|
"type": "integer"
|
|
119
119
|
},
|
|
120
120
|
"referenceBranch": {
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"type": "null"
|
|
127
127
|
}
|
|
128
128
|
],
|
|
129
|
-
"description": "The slug of the reference branch
|
|
129
|
+
"description": "The slug of the reference branch (i.e., the branch we consider \"control\")."
|
|
130
130
|
},
|
|
131
131
|
"locales": {
|
|
132
132
|
"anyOf": [
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
"type": "null"
|
|
141
141
|
}
|
|
142
142
|
],
|
|
143
|
-
"description": "The list of locale codes (e.g., \"en-US\" or \"fr\") that this
|
|
143
|
+
"description": "The list of locale codes (e.g., \"en-US\" or \"fr\") that this experiment is targeting. If null, all locales are targeted."
|
|
144
144
|
},
|
|
145
145
|
"publishedDate": {
|
|
146
146
|
"anyOf": [
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
"type": "null"
|
|
153
153
|
}
|
|
154
154
|
],
|
|
155
|
-
"description": "The date that this experiment was first published to
|
|
155
|
+
"description": "The date that this experiment was first published to Remote Settings. If null, it has not yet been published."
|
|
156
156
|
},
|
|
157
157
|
"branches": {
|
|
158
158
|
"description": "Branch configuration for the experiment.",
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
"type": "array"
|
|
163
163
|
},
|
|
164
164
|
"isFirefoxLabsOptIn": {
|
|
165
|
-
"description": "When this property is set to true, treat this experiment as
|
|
165
|
+
"description": "When this property is set to true, treat this experiment as a Firefox Labs experiment",
|
|
166
166
|
"type": "boolean"
|
|
167
167
|
},
|
|
168
168
|
"firefoxLabsGroup": {
|
|
@@ -213,14 +213,14 @@
|
|
|
213
213
|
"type": "null"
|
|
214
214
|
}
|
|
215
215
|
],
|
|
216
|
-
"description": "Links that will be used with the
|
|
216
|
+
"description": "Links that will be used with the Firefox Labs description Fluent ID. May be null for Firefox Labs Opt-In recipes that do not use links."
|
|
217
217
|
},
|
|
218
218
|
"featureValidationOptOut": {
|
|
219
219
|
"description": "Opt out of feature schema validation.",
|
|
220
220
|
"type": "boolean"
|
|
221
221
|
},
|
|
222
222
|
"requiresRestart": {
|
|
223
|
-
"description": "Does the experiment require a restart to take effect?
|
|
223
|
+
"description": "Does the experiment require a restart to take effect?",
|
|
224
224
|
"type": "boolean"
|
|
225
225
|
},
|
|
226
226
|
"localizations": {
|
|
@@ -300,7 +300,7 @@
|
|
|
300
300
|
"type": "string"
|
|
301
301
|
},
|
|
302
302
|
"ratio": {
|
|
303
|
-
"description": "Relative ratio of population for the branch. e.g., if branch A=1 and branch B=3, then branch A
|
|
303
|
+
"description": "Relative ratio of population for the branch. e.g., if branch A=1 and branch B=3, then branch A would get 25% of the population.",
|
|
304
304
|
"type": "integer"
|
|
305
305
|
},
|
|
306
306
|
"features": {
|
|
@@ -330,6 +330,7 @@
|
|
|
330
330
|
"type": "object"
|
|
331
331
|
},
|
|
332
332
|
"ExperimentBucketConfig": {
|
|
333
|
+
"description": "Common Bucketing Configuration used across all versions.",
|
|
333
334
|
"properties": {
|
|
334
335
|
"randomizationUnit": {
|
|
335
336
|
"$ref": "#/$defs/RandomizationUnit"
|
|
@@ -347,7 +348,7 @@
|
|
|
347
348
|
"type": "integer"
|
|
348
349
|
},
|
|
349
350
|
"total": {
|
|
350
|
-
"description": "The total number of buckets. You can assume
|
|
351
|
+
"description": "The total number of buckets. You can assume this will always be 10000.",
|
|
351
352
|
"type": "integer"
|
|
352
353
|
}
|
|
353
354
|
},
|
|
@@ -405,7 +406,7 @@
|
|
|
405
406
|
"type": "object"
|
|
406
407
|
},
|
|
407
408
|
"RandomizationUnit": {
|
|
408
|
-
"description": "A unique, stable
|
|
409
|
+
"description": "A unique, stable identifier for the user used as an input to bucket hashing.",
|
|
409
410
|
"enum": [
|
|
410
411
|
"normandy_id",
|
|
411
412
|
"nimbus_id",
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
3
|
+
"title": "ExperimentBucketConfig",
|
|
4
|
+
"description": "Common Bucketing Configuration used across all versions.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"randomizationUnit": {
|
|
8
|
+
"$ref": "#/$defs/RandomizationUnit"
|
|
9
|
+
},
|
|
10
|
+
"namespace": {
|
|
11
|
+
"description": "Additional inputs to the hashing function.",
|
|
12
|
+
"type": "string"
|
|
13
|
+
},
|
|
14
|
+
"start": {
|
|
15
|
+
"description": "Index of the starting bucket of the range.",
|
|
16
|
+
"type": "integer"
|
|
17
|
+
},
|
|
18
|
+
"count": {
|
|
19
|
+
"description": "Number of buckets in the range.",
|
|
20
|
+
"type": "integer"
|
|
21
|
+
},
|
|
22
|
+
"total": {
|
|
23
|
+
"description": "The total number of buckets. You can assume this will always be 10000.",
|
|
24
|
+
"type": "integer"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"required": [
|
|
28
|
+
"randomizationUnit",
|
|
29
|
+
"namespace",
|
|
30
|
+
"start",
|
|
31
|
+
"count",
|
|
32
|
+
"total"
|
|
33
|
+
],
|
|
34
|
+
"$defs": {
|
|
35
|
+
"RandomizationUnit": {
|
|
36
|
+
"description": "A unique, stable identifier for the user used as an input to bucket hashing.",
|
|
37
|
+
"enum": [
|
|
38
|
+
"normandy_id",
|
|
39
|
+
"nimbus_id",
|
|
40
|
+
"user_id",
|
|
41
|
+
"group_id"
|
|
42
|
+
],
|
|
43
|
+
"type": "string"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
3
|
+
"title": "ExperimentFeatureConfig",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"featureId": {
|
|
7
|
+
"description": "The identifier for the feature flag.",
|
|
8
|
+
"type": "string"
|
|
9
|
+
},
|
|
10
|
+
"value": {
|
|
11
|
+
"description": "The values that define the feature configuration. This should be validated against a schema.",
|
|
12
|
+
"type": "object"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"required": [
|
|
16
|
+
"featureId",
|
|
17
|
+
"value"
|
|
18
|
+
]
|
|
19
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
3
|
+
"title": "ExperimentLocalizations",
|
|
4
|
+
"description": "Per-locale localization substitutions. The top level key is the locale (e.g., \"en-US\" or \"fr\"). Each entry is a mapping of string IDs to their localized equivalents.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": {
|
|
7
|
+
"additionalProperties": {
|
|
8
|
+
"type": "string"
|
|
9
|
+
},
|
|
10
|
+
"type": "object"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
|
3
|
+
"title": "ExperimentOutcome",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"slug": {
|
|
7
|
+
"description": "Identifier for the outcome.",
|
|
8
|
+
"type": "string"
|
|
9
|
+
},
|
|
10
|
+
"priority": {
|
|
11
|
+
"description": "e.g., \"primary\" or \"secondary\".",
|
|
12
|
+
"type": "string"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"required": [
|
|
16
|
+
"slug",
|
|
17
|
+
"priority"
|
|
18
|
+
]
|
|
19
|
+
}
|