Add JSON schema for payment_variant in DB

This commit is contained in:
2023-12-30 21:41:05 +01:00
parent ed0dba605b
commit bdf8f0bedd

103
json/payment_variant.json Normal file
View File

@ -0,0 +1,103 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["mode"],
"anyOf": [{
"required": ["version", "payment", "curves"],
"additionalProperties": false,
"properties": {
"mode": {"enum": ["elwig"]},
"version": {"enum": [1]},
"payment": {
"type": ["number", "string", "object"],
"pattern": "^curve:[0-9]+$",
"additionalProperties": false,
"properties": {
"default": {"type": ["number", "string"], "pattern": "^curve:[0-9]+$"}
},
"patternProperties": {
"^[A-Z]+$": {"type": ["number", "string"], "pattern": "^curve:[0-9]+$"}
}
},
"quality": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^[A-Z]{3}$": {
"type": ["number", "string", "object"],
"pattern": "^curve:[0-9]+$",
"additionalProperties": false,
"properties": {
"default": {"type": ["number", "string"], "pattern": "^curve:[0-9]+$"}
},
"patternProperties": {
"^[A-Z]+$": {"type": ["number", "string"], "pattern": "^curve:[0-9]+$"}
}
}
}
},
"curves": {"type": "array", "items": {"$ref": "#curve"}}
}
}, {
"properties": {
"mode": {"enum": ["wgmaster"]},
"AuszahlungSorten": {
"type": "object",
"additionalProperties": false,
"required": ["Kurven"],
"properties": {
"Kurven": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"patternProperties": {
"^[0-9]+(\\.[0-9]+)?oe$": {"type": "number"}
}
}
}
},
"patternProperties": {
"^[A-Z]{2}$": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^[A-Z]*$": {
"type": "object",
"additionalProperties": false,
"properties": {
"Gebunden": {"type": "integer", "minimum": 0},
"NichtGebunden": {"type": "integer", "minimum": 0}
}
}
}
}
}
}
}
}],
"$defs": {
"curve": {
"$id": "#curve",
"type": "object",
"required": ["id", "mode", "data"],
"additionalProperties": false,
"properties": {
"id": {"type": "integer", "minimum": 0},
"mode": {"enum": ["oe", "kmw"]},
"data": {"anyOf": [{"type": "number"}, {"$ref": "#curve_data"}]},
"geb": {"anyOf": [{"type": "number"}, {"$ref": "#curve_data"}]}
}
},
"curve_data": {
"$id": "#curve_data",
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"patternProperties": {
"^([0-9]+(\\.[0-9]+)?)(oe|kmw)$": {"type": "number"}
}
}
}
}