Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add flag set and flag metadata to schema #173

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions json/flags.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,20 @@
"$ref": "./targeting.json"
}
}
},
"metadata": {
"title": "Flag Set Metadata",
"description": "Metadata about the flag set, with keys of type string, and values of type boolean, string, or number.",
"properties": {
"flagSetId": {
"description": "The unique identifier for the flag set.",
"type": "string"
},
"version": {
"description": "The version of the flag set."
}
},
"$ref": "#/definitions/metadata"
}
},
"definitions": {
Expand All @@ -72,6 +86,11 @@
},
"targeting": {
"$ref": "./targeting.json"
},
"metadata": {
"title": "Flag Metadata",
"description": "Metadata about an individual feature flag, with keys of type string, and values of type boolean, string, or number.",
"$ref": "#/definitions/metadata"
}
},
"required": [
Expand Down Expand Up @@ -179,6 +198,18 @@
"$ref": "#/definitions/objectVariants"
}
]
},
"metadata": {
"type": "object",
"additionalProperties": {
"description": "Any additional key/value pair with value of type boolean, string, or number.",
"type": [
"string",
"number",
"boolean"
]
},
"required": []
}
}
}
24 changes: 24 additions & 0 deletions json/flags.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,16 @@ properties:
$comment: this relative ref means that targeting.json MUST be in the same
dir, or available on the same HTTP path
$ref: "./targeting.json"
metadata:
title: Flag Set Metadata
description: Metadata about the flag set, with keys of type string, and values of type boolean, string, or number.
properties:
flagSetId:
description: The unique identifier for the flag set.
type: string
version:
description: The version of the flag set.
$ref: "#/definitions/metadata"
definitions:
flag:
$comment: base flag object; no title/description here, allows for better UX,
Expand All @@ -57,6 +67,10 @@ definitions:
type: string
targeting:
$ref: "./targeting.json"
metadata:
title: Flag Metadata
description: Metadata about an individual feature flag, with keys of type string, and values of type boolean, string, or number.
$ref: "#/definitions/metadata"
required:
- state
- defaultVariant
Expand Down Expand Up @@ -116,3 +130,13 @@ definitions:
allOf:
- $ref: "#/definitions/flag"
- $ref: "#/definitions/objectVariants"
metadata:
type: object
additionalProperties:
description: Any additional key/value pair with value of type boolean, string, or number.
type:
- string
- number
- boolean
# Metadata is optional
required: []
16 changes: 16 additions & 0 deletions json/test/flags/negative/with-invalid-flag-metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"$schema": "../../../flags.json",
"flags": {
"myBoolFlag": {
"state": "ENABLED",
"variants": {
"on": true,
"off": false
},
"defaultVariant": "on",
"metadata": {
"invalid": { "key": "value" }
}
}
}
}
16 changes: 16 additions & 0 deletions json/test/flags/negative/with-invalid-flag-set-metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"$schema": "../../../flags.json",
"flags": {
"myBoolFlag": {
"state": "ENABLED",
"variants": {
"on": true,
"off": false
},
"defaultVariant": "on"
}
},
"metadata": {
"invalid": { "key": "value" }
}
}
30 changes: 30 additions & 0 deletions json/test/flags/positive/with-metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"$schema": "../../../flags.json",
"flags": {
"headerColor": {
"variants": {
"red": "#FF0000",
"blue": "#0000FF",
"green": "#00FF00",
"yellow": "#FFFF00"
},
"defaultVariant": "red",
"state": "ENABLED",
"metadata": {
"flagSetId": "blah",
"boolean": true,
"string": "string",
"float": 1.23,
"int": 1
}
}
},
"metadata": {
"flagSetId": "sso/dev",
"version": "1.0.0",
"boolean": true,
"string": "string",
"float": 1.23,
"int": 1
}
}
Loading