Skip to content

Commit

Permalink
fix: change $defs to definitions per draft07 (#140)
Browse files Browse the repository at this point in the history
`$defs` works, but it its not part of draft07 which leads to odd
warnings in some implementations.

I've switched this to `definitions` as per the spec.

see:
https://json-schema.org/draft-07/draft-handrews-json-schema-validation-01#rfc.section.9

fixes: open-feature/flagd#1309

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
  • Loading branch information
toddbaert committed May 17, 2024
1 parent fae9beb commit 87ab28a
Show file tree
Hide file tree
Showing 4 changed files with 168 additions and 168 deletions.
34 changes: 17 additions & 17 deletions json/flags.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,30 @@
"title": "Flags",
"description": "Top-level flags object. All flags are defined here.",
"type": "object",
"$comment": "flag objects are one of the 4 flag types defined in $defs",
"$comment": "flag objects are one of the 4 flag types defined in definitions",
"additionalProperties": false,
"patternProperties": {
"^.{1,}$": {
"oneOf": [
{
"title": "Boolean flag",
"description": "A flag having boolean values.",
"$ref": "#/$defs/booleanFlag"
"$ref": "#/definitions/booleanFlag"
},
{
"title": "String flag",
"description": "A flag having string values.",
"$ref": "#/$defs/stringFlag"
"$ref": "#/definitions/stringFlag"
},
{
"title": "Numeric flag",
"description": "A flag having numeric values.",
"$ref": "#/$defs/numberFlag"
"$ref": "#/definitions/numberFlag"
},
{
"title": "Object flag",
"description": "A flag having arbitrary object values.",
"$ref": "#/$defs/objectFlag"
"$ref": "#/definitions/objectFlag"
}
]
}
Expand All @@ -46,12 +46,12 @@
"patternProperties": {
"^.{1,}$": {
"$comment": "this relative ref means that targeting.json MUST be in the same dir, or available on the same HTTP path",
"$ref": "./targeting.json#/$defs/targeting"
"$ref": "./targeting.json#/definitions/targeting"
}
}
}
},
"$defs": {
"definitions": {
"flag": {
"$comment": "base flag object; no title/description here, allows for better UX, keep it in the overrides",
"type": "object",
Expand All @@ -71,7 +71,7 @@
"type": "string"
},
"targeting": {
"$ref": "./targeting.json#/$defs/targeting"
"$ref": "./targeting.json#/definitions/targeting"
}
},
"required": [
Expand Down Expand Up @@ -139,44 +139,44 @@
}
}
},
"$comment": "merge the variants with the base flag to build our typed flags",
"booleanFlag": {
"$comment": "merge the variants with the base flag to build our typed flags",
"allOf": [
{
"$ref": "#/$defs/flag"
"$ref": "#/definitions/flag"
},
{
"$ref": "#/$defs/booleanVariants"
"$ref": "#/definitions/booleanVariants"
}
]
},
"stringFlag": {
"allOf": [
{
"$ref": "#/$defs/flag"
"$ref": "#/definitions/flag"
},
{
"$ref": "#/$defs/stringVariants"
"$ref": "#/definitions/stringVariants"
}
]
},
"numberFlag": {
"allOf": [
{
"$ref": "#/$defs/flag"
"$ref": "#/definitions/flag"
},
{
"$ref": "#/$defs/numberVariants"
"$ref": "#/definitions/numberVariants"
}
]
},
"objectFlag": {
"allOf": [
{
"$ref": "#/$defs/flag"
"$ref": "#/definitions/flag"
},
{
"$ref": "#/$defs/objectVariants"
"$ref": "#/definitions/objectVariants"
}
]
}
Expand Down
34 changes: 17 additions & 17 deletions json/flags.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,23 @@ properties:
title: Flags
description: Top-level flags object. All flags are defined here.
type: object
$comment: flag objects are one of the 4 flag types defined in $defs
$comment: flag objects are one of the 4 flag types defined in definitions
additionalProperties: false
patternProperties:
"^.{1,}$":
oneOf:
- title: Boolean flag
description: A flag having boolean values.
$ref: "#/$defs/booleanFlag"
$ref: "#/definitions/booleanFlag"
- title: String flag
description: A flag having string values.
$ref: "#/$defs/stringFlag"
$ref: "#/definitions/stringFlag"
- title: Numeric flag
description: A flag having numeric values.
$ref: "#/$defs/numberFlag"
$ref: "#/definitions/numberFlag"
- title: Object flag
description: A flag having arbitrary object values.
$ref: "#/$defs/objectFlag"
$ref: "#/definitions/objectFlag"
$evaluators:
title: Evaluators
description: 'Reusable targeting rules that can be referenced with "$ref": "myRule"
Expand All @@ -35,8 +35,8 @@ properties:
"^.{1,}$":
$comment: this relative ref means that targeting.json MUST be in the same
dir, or available on the same HTTP path
$ref: "./targeting.json#/$defs/targeting"
"$defs":
$ref: "./targeting.json#/definitions/targeting"
definitions:
flag:
$comment: base flag object; no title/description here, allows for better UX,
keep it in the overrides
Expand All @@ -56,7 +56,7 @@ properties:
if the targeting returns null).
type: string
targeting:
$ref: "./targeting.json#/$defs/targeting"
$ref: "./targeting.json#/definitions/targeting"
required:
- state
- defaultVariant
Expand Down Expand Up @@ -99,20 +99,20 @@ properties:
patternProperties:
"^.{1,}$":
type: object
$comment: merge the variants with the base flag to build our typed flags
booleanFlag:
$comment: merge the variants with the base flag to build our typed flags
allOf:
- $ref: "#/$defs/flag"
- $ref: "#/$defs/booleanVariants"
- $ref: "#/definitions/flag"
- $ref: "#/definitions/booleanVariants"
stringFlag:
allOf:
- $ref: "#/$defs/flag"
- $ref: "#/$defs/stringVariants"
- $ref: "#/definitions/flag"
- $ref: "#/definitions/stringVariants"
numberFlag:
allOf:
- $ref: "#/$defs/flag"
- $ref: "#/$defs/numberVariants"
- $ref: "#/definitions/flag"
- $ref: "#/definitions/numberVariants"
objectFlag:
allOf:
- $ref: "#/$defs/flag"
- $ref: "#/$defs/objectVariants"
- $ref: "#/definitions/flag"
- $ref: "#/definitions/objectVariants"

0 comments on commit 87ab28a

Please sign in to comment.