From bdf8f0beddd22ba6b123d7d5e890ab8ba79cf692 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Sat, 30 Dec 2023 21:41:05 +0100 Subject: [PATCH] Add JSON schema for payment_variant in DB --- json/payment_variant.json | 103 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 json/payment_variant.json diff --git a/json/payment_variant.json b/json/payment_variant.json new file mode 100644 index 0000000..effd86f --- /dev/null +++ b/json/payment_variant.json @@ -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"} + } + } + } +}