Skip to content

Commit bd559a5

Browse files
(SCHEMA) Fix required properties for resource kinds
Prior to this change, the requirements for various resource kinds was incomplete and inaccurate. This change updates the `allOf` applicator to correctly define required and forbidden properties for each resource kind.
1 parent 0f5bb6a commit bd559a5

File tree

1 file changed

+35
-5
lines changed

1 file changed

+35
-5
lines changed

schemas/src/resource/manifest.yaml

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1120,17 +1120,47 @@ properties:
11201120
$ref: /<PREFIX>/<VERSION>/resource/manifest.schema.yaml
11211121

11221122
allOf:
1123-
# Adapter resources must define the adapter command
1123+
# Adapter resources must define the adapter command, get, test, and set
11241124
- if:
11251125
properties: { kind: { const: adapter } }
11261126
required: [kind]
11271127
then:
1128-
required: [adapter]
1129-
# Importer resources must define resolve, all others must define get
1128+
required: [adapter, get, test, set]
1129+
# Importer resources must define resolve and no other operations
11301130
- if:
11311131
properties: { kind: { const: importer } }
11321132
required: [kind]
11331133
then:
11341134
required: [resolve]
1135-
else:
1136-
required: [get]
1135+
not:
1136+
anyOf:
1137+
- required: [adapter]
1138+
- required: [delete]
1139+
- required: [get]
1140+
- required: [export]
1141+
- required: [set]
1142+
- required: [test]
1143+
- required: [validate]
1144+
- required: [whatIf]
1145+
# Exporter resources must define export and no other operations
1146+
- if:
1147+
properties: { kind: { const: exporter } }
1148+
required: [kind]
1149+
then:
1150+
required: [export]
1151+
not:
1152+
anyOf:
1153+
- required: [adapter]
1154+
- required: [delete]
1155+
- required: [get]
1156+
- required: [resolve]
1157+
- required: [set]
1158+
- required: [test]
1159+
- required: [validate]
1160+
- required: [whatIf]
1161+
# Except for importer and exporter resources, all resources must implement get
1162+
- if:
1163+
properties: { kind: { enum: [resource, adapter, group] } }
1164+
required: [kind]
1165+
then:
1166+
required: [get]

0 commit comments

Comments
 (0)