diff --git a/fixtures/allow_additional_props.json b/fixtures/allow_additional_props.json index ac93c18..7fe9fb1 100644 --- a/fixtures/allow_additional_props.json +++ b/fixtures/allow_additional_props.json @@ -200,6 +200,17 @@ }, "type": "array" }, + "deprecated_field": { + "type": "string", + "deprecated": true + }, + "deprecated_slice": { + "items": { + "type": "string" + }, + "type": "array", + "deprecated": true + }, "anything": true, "raw": true }, @@ -222,6 +233,8 @@ "Baz", "color", "roles", + "deprecated_field", + "deprecated_slice", "raw" ] } diff --git a/fixtures/defaults_expanded_toplevel.json b/fixtures/defaults_expanded_toplevel.json index ef628bf..4f6dbc6 100644 --- a/fixtures/defaults_expanded_toplevel.json +++ b/fixtures/defaults_expanded_toplevel.json @@ -200,6 +200,17 @@ }, "type": "array" }, + "deprecated_field": { + "type": "string", + "deprecated": true + }, + "deprecated_slice": { + "items": { + "type": "string" + }, + "type": "array", + "deprecated": true + }, "anything": true, "raw": true }, @@ -223,6 +234,8 @@ "Baz", "color", "roles", + "deprecated_field", + "deprecated_slice", "raw" ] } \ No newline at end of file diff --git a/fixtures/ignore_type.json b/fixtures/ignore_type.json index b1c37c0..e901a8f 100644 --- a/fixtures/ignore_type.json +++ b/fixtures/ignore_type.json @@ -194,6 +194,17 @@ }, "type": "array" }, + "deprecated_field": { + "type": "string", + "deprecated": true + }, + "deprecated_slice": { + "items": { + "type": "string" + }, + "type": "array", + "deprecated": true + }, "anything": true, "raw": true }, @@ -217,6 +228,8 @@ "Baz", "color", "roles", + "deprecated_field", + "deprecated_slice", "raw" ] } diff --git a/fixtures/no_reference.json b/fixtures/no_reference.json index 5f8c2a1..3593ae3 100644 --- a/fixtures/no_reference.json +++ b/fixtures/no_reference.json @@ -189,6 +189,17 @@ }, "type": "array" }, + "deprecated_field": { + "type": "string", + "deprecated": true + }, + "deprecated_slice": { + "items": { + "type": "string" + }, + "type": "array", + "deprecated": true + }, "anything": true, "raw": true }, @@ -212,6 +223,8 @@ "Baz", "color", "roles", + "deprecated_field", + "deprecated_slice", "raw" ] } \ No newline at end of file diff --git a/fixtures/no_reference_anchor.json b/fixtures/no_reference_anchor.json index 5a1706f..57da214 100644 --- a/fixtures/no_reference_anchor.json +++ b/fixtures/no_reference_anchor.json @@ -191,6 +191,17 @@ }, "type": "array" }, + "deprecated_field": { + "type": "string", + "deprecated": true + }, + "deprecated_slice": { + "items": { + "type": "string" + }, + "type": "array", + "deprecated": true + }, "anything": true, "raw": true }, @@ -214,6 +225,8 @@ "Baz", "color", "roles", + "deprecated_field", + "deprecated_slice", "raw" ] } \ No newline at end of file diff --git a/fixtures/required_from_jsontags.json b/fixtures/required_from_jsontags.json index 509a1e4..9361567 100644 --- a/fixtures/required_from_jsontags.json +++ b/fixtures/required_from_jsontags.json @@ -201,6 +201,17 @@ }, "type": "array" }, + "deprecated_field": { + "type": "string", + "deprecated": true + }, + "deprecated_slice": { + "items": { + "type": "string" + }, + "type": "array", + "deprecated": true + }, "anything": true, "raw": true }, diff --git a/fixtures/test_user.json b/fixtures/test_user.json index c027d1f..e650395 100644 --- a/fixtures/test_user.json +++ b/fixtures/test_user.json @@ -201,6 +201,17 @@ }, "type": "array" }, + "deprecated_field": { + "type": "string", + "deprecated": true + }, + "deprecated_slice": { + "items": { + "type": "string" + }, + "type": "array", + "deprecated": true + }, "anything": true, "raw": true }, @@ -224,6 +235,8 @@ "Baz", "color", "roles", + "deprecated_field", + "deprecated_slice", "raw" ] } diff --git a/fixtures/test_user_assign_anchor.json b/fixtures/test_user_assign_anchor.json index 16187e6..ae44e67 100644 --- a/fixtures/test_user_assign_anchor.json +++ b/fixtures/test_user_assign_anchor.json @@ -203,6 +203,17 @@ }, "type": "array" }, + "deprecated_field": { + "type": "string", + "deprecated": true + }, + "deprecated_slice": { + "items": { + "type": "string" + }, + "type": "array", + "deprecated": true + }, "anything": true, "raw": true }, @@ -226,6 +237,8 @@ "Baz", "color", "roles", + "deprecated_field", + "deprecated_slice", "raw" ] } diff --git a/reflect.go b/reflect.go index 3249c8c..d75a5e0 100644 --- a/reflect.go +++ b/reflect.go @@ -728,6 +728,8 @@ func (t *Schema) genericKeywords(tags []string, parent *Schema, propertyName str Type: ty, }) } + case "deprecated": + t.Deprecated, _ = strconv.ParseBool(val) default: unprocessed = append(unprocessed, tag) } @@ -861,6 +863,8 @@ func (t *Schema) arrayKeywords(tags []string) { t.Items.Format = val case "pattern": t.Items.Pattern = val + case "deprecated": + t.Deprecated, _ = strconv.ParseBool(val) default: unprocessed = append(unprocessed, tag) // left for further processing by underlying type } diff --git a/reflect_test.go b/reflect_test.go index 94b6018..8247b1e 100644 --- a/reflect_test.go +++ b/reflect_test.go @@ -106,6 +106,10 @@ type TestUser struct { Priorities []int `json:"priorities,omitempty" jsonschema:"enum=-1,enum=0,enum=1,enun=2"` Offsets []float64 `json:"offsets,omitempty" jsonschema:"enum=1.570796,enum=3.141592,enum=6.283185"` + // Tests for deprecated + DeprecatedField string `json:"deprecated_field" jsonschema:"deprecated=true"` + DeprecatedSlice []string `json:"deprecated_slice" jsonschema:"deprecated=true"` + // Test for raw JSON Anything any `json:"anything,omitempty"` Raw json.RawMessage `json:"raw"`