Skip to content

Commit 2bae5aa

Browse files
Support Microsoft Feature Management schema for main branch (#370)
* use snake case * do not support root fall back for MS schema & remove EnsureInit * update * rename variable * update .NET FM schema * re-add schema link
1 parent 0deeaa7 commit 2bae5aa

7 files changed

+332
-376
lines changed

schemas/FeatureManagement.Dotnet.v1.0.0.schema.json

+96-86
Original file line numberDiff line numberDiff line change
@@ -3,100 +3,110 @@
33
"$schema": "http://json-schema.org/draft-07/schema#",
44
"type": "object",
55
"title": "A .NET Feature Management Configuration",
6-
"required": [],
7-
"patternProperties": {
8-
"^[^:]*$": {
9-
"description": "Declares a feature flag.",
10-
"anyOf": [
11-
{
12-
"type": "boolean",
13-
"title": "On/Off Feature Flag",
14-
"description": "A feature flag that always returns the same value."
15-
},
16-
{
17-
"type": "object",
18-
"title": "Conditional Feature Flag",
19-
"description": "A feature flag which value is dynamic based on a set of feature filters",
20-
"required": [
21-
"EnabledFor"
22-
],
23-
"properties": {
24-
"RequirementType": {
25-
"type": "string",
26-
"title": "Requirement Type",
27-
"description": "Determines whether any or all registered feature filters must be enabled for the feature to be considered enabled.",
28-
"enum": [
29-
"Any",
30-
"All"
31-
],
32-
"default": "Any"
6+
"required": [
7+
"FeatureManagement"
8+
],
9+
"properties":{
10+
"FeatureManagement": {
11+
"type": "object",
12+
"title": "Feature Management",
13+
"description": "Declares feature management configuration.",
14+
"required": [],
15+
"patternProperties": {
16+
"^[^:]*$": {
17+
"description": "Declares a feature flag.",
18+
"anyOf": [
19+
{
20+
"type": "boolean",
21+
"title": "On/Off Feature Flag",
22+
"description": "A feature flag that always returns the same value."
3323
},
34-
"EnabledFor": {
35-
"oneOf": [
36-
{
37-
"type": "array",
38-
"title": "Feature Filter Collection",
39-
"description": "Feature filters that are evaluated to conditionally enable the flag.",
40-
"items": {
41-
"type": "object",
42-
"title": "Feature Filter Declaration",
43-
"required": [
44-
"Name"
45-
],
46-
"properties": {
47-
"Name": {
48-
"type": "string",
49-
"title": "Feature Filter Name",
50-
"description": "The name used to refer to and require a feature filter.",
51-
"default": "",
52-
"examples": [
53-
"Percentage",
54-
"TimeWindow"
55-
],
56-
"pattern": "^[^:]*$"
57-
},
58-
"Parameters": {
24+
{
25+
"type": "object",
26+
"title": "Conditional Feature Flag",
27+
"description": "A feature flag which value is dynamic based on a set of feature filters",
28+
"required": [
29+
"EnabledFor"
30+
],
31+
"properties": {
32+
"RequirementType": {
33+
"type": "string",
34+
"title": "Requirement Type",
35+
"description": "Determines whether any or all registered feature filters must be enabled for the feature to be considered enabled.",
36+
"enum": [
37+
"Any",
38+
"All"
39+
],
40+
"default": "Any"
41+
},
42+
"EnabledFor": {
43+
"oneOf": [
44+
{
45+
"type": "array",
46+
"title": "Feature Filter Collection",
47+
"description": "Feature filters that are evaluated to conditionally enable the flag.",
48+
"items": {
5949
"type": "object",
60-
"title": "Feature Filter Parameters",
61-
"description": "Custom parameters for a given feature filter. A feature filter can require any set of parameters of any type.",
62-
"required": [],
63-
"patternProperties": {
64-
"^.*$": {
65-
"anyOf": [
66-
{
67-
"type": "string"
68-
},
69-
{
70-
"type": "null"
71-
},
72-
{
73-
"type": "object"
74-
},
75-
{
76-
"type": "number"
77-
},
78-
{
79-
"type": "array"
80-
},
81-
{
82-
"type": "boolean"
50+
"title": "Feature Filter Declaration",
51+
"required": [
52+
"Name"
53+
],
54+
"properties": {
55+
"Name": {
56+
"type": "string",
57+
"title": "Feature Filter Name",
58+
"description": "The name used to refer to and require a feature filter.",
59+
"default": "",
60+
"examples": [
61+
"Percentage",
62+
"TimeWindow"
63+
],
64+
"pattern": "^[^:]*$"
65+
},
66+
"Parameters": {
67+
"type": "object",
68+
"title": "Feature Filter Parameters",
69+
"description": "Custom parameters for a given feature filter. A feature filter can require any set of parameters of any type.",
70+
"required": [],
71+
"patternProperties": {
72+
"^.*$": {
73+
"anyOf": [
74+
{
75+
"type": "string"
76+
},
77+
{
78+
"type": "null"
79+
},
80+
{
81+
"type": "object"
82+
},
83+
{
84+
"type": "number"
85+
},
86+
{
87+
"type": "array"
88+
},
89+
{
90+
"type": "boolean"
91+
}
92+
]
8393
}
84-
]
94+
}
8595
}
8696
}
8797
}
98+
},
99+
{
100+
"type": "boolean"
88101
}
89-
}
102+
]
90103
},
91-
{
92-
"type": "boolean"
93-
}
94-
]
95-
},
96-
"additionalProperties": false
97-
}
104+
"additionalProperties": false
105+
}
106+
}
107+
]
98108
}
99-
]
109+
}
100110
}
101111
}
102-
}
112+
}

0 commit comments

Comments
 (0)