[[{"doc_uri": "https://doku.netdb.scc.kit.edu/webapi/4.2/intro/", "language_dict": {"de": "aktuelle Version für den Produktionsbetrieb", "en": "current version for regular use in production mode"}, "last_status_change_date": "15.04.2026 18:37:46.414611 CEST", "major": 4, "minor": 2, "numeric": "4.2.83", "patch": 83, "semantic": "release", "transaction_json_schema": {"type": "array", "$defs": {"_params": {"type": "object", "title": "(old/new) values of function parameters", "description": "Format: dict key: parameter name (unqualified), dict value: (old/new) parameter value"}, "_ref_idx": {"type": "string", "title": "Referenced statement index", "description": "Shorthand for (old/new) '_ref_params' to obtain function parameter values from the result of the (exact one) referenced statement. If a combination of results from different statements is being required, use (old/new) '_ref_params' instead. Either (old/new) '_ref_idx' or (old/new) '_ref_params' may be used exclusively."}, "_join_ref": {"type": "object", "title": "REF JOIN clause", "description": "Inner or union or anti joins between the object types of the current statement and referenced statements. Properties are referenced statement indexes; values are constraint names or 'default' or 'self' (self join) or null (global join, only for inner or union joins).", "minProperties": 1}, "_join_noref": {"type": "object", "title": "NO-REF JOIN clause", "properties": {"or": {"type": "array", "items": {"type": "string", "title": "FK constraint name"}, "title": "FK constraints in OR-condition", "minItems": 1, "uniqueItems": true}, "and": {"type": "array", "items": {"type": "string", "title": "FK constraint name"}, "title": "FK constraints in AND-condition", "minItems": 1, "uniqueItems": true}}, "description": "Semi or anti joins between the object type of the current statement and the referencing object types of the specified FK constraints. All constraint names under 'and' and 'or' properties together must be unique.", "minProperties": 1, "additionalProperties": false}, "_ref_params": {"type": "array", "items": {"type": "object", "allOf": [{"if": {"required": ["join_on"], "properties": {"join_on": {"enum": ["val"]}}}, "then": {"properties": {"pos": {"enum": [null], "default": null}, "join_offset_by_constant": {"enum": [0], "default": 0}, "join_offset_by_idx_list": {"$ref": "#/$defs/_empty_array"}}}}, {"if": {"required": ["join_type"], "properties": {"join_type": {"enum": ["cross"]}}}, "then": {"properties": {"pos": {"enum": [null], "default": null}, "join_on": {"enum": [null], "default": null}, "join_offset_by_constant": {"enum": [0], "default": 0}, "join_offset_by_idx_list": {"$ref": "#/$defs/_empty_array"}}}}], "title": "RefParams Dict: parameter dict for the referenced statement", "required": ["idx"], "properties": {"idx": {"type": "string", "title": "Statement index of the referenced statement", "description": "The referenced statement's position must be lower than the current position."}, "pos": {"items": {"type": "integer"}, "oneOf": [{"type": "array"}, {"type": "string"}, {"type": "null"}], "title": "Range of result sets of the referenced statement", "default": null, "pattern": "^\\[\\-?[0-9]*:\\-?[0-9]*\\]$", "minItems": 1, "description": "Positional range of the evaluated result sets being returned by the referenced statement as array (a list of zero based single positions) or range literal as string (like '[<lower_bound>:<upper_bound>]' according to the array slice notation) or null (evaluate all result sets). Negative values specify the position calculated backwards beginning at the end of the result set.", "uniqueItems": true}, "params": {"type": "object", "title": "Parameter mapping: properties are unqualified parameter names of the local object type, and their values are unqualified parameter names of the object type in the referenced statement", "description": "Parameter name in referenced statement that belongs to parameter name in local statement. If not specified, all parameters defined in the referenced statement will occur under the same name in the local statement, while an empty dict will no mappings create.", "additionalProperties": {"type": "string"}}, "join_on": {"enum": ["pos", "val"], "title": "JOIN condition for result sets", "default": "pos", "description": "Which attributes are being used in the join condition for comparison between the current result set and the result set of the referenced statement. With 'pos' (position based join), the result sets are joined on equal position. With 'val' (value based join) they are joined on equal values of the attribute tuple, defined by the UP constraint type of the respective object types (OT). The attribute tuple for the generic OT or for regular OT having no UP constraint must be arbitrarily defined by 'ref_params_join_on_val_attrs_tuple'. The attribute tuple for all remaining OT can be defined by 'ref_params_join_on_val_attrs_tuple' if desired. If neither a UP constraint exists (for regular OT) nor 'ref_params_join_on_val_attrs_tuple' is specified or is null or empty or contains nonexisting attributes, the value based join will return no data and hence cannot be used. The position based join is always guaranteed to be usable. If the value based join is specified, 'join_offset_by_idx_list' and 'join_offset_by_constant' may not be specified."}, "join_type": {"enum": [null, "inner", "cross", "left_outer", "right_outer", "full_outer", "left_anti", "right_anti", "full_anti"], "title": "JOIN type of result sets", "default": null, "description": "The base result set, if null. How to join the result set of the referenced statement, else. The type is similar to SQL join types. Exact one base result set must be present in a RefParams Instruction."}, "join_offset_by_constant": {"type": "integer", "title": "Positional offset for the referenced result set in join condition", "default": 0, "description": "Offset value for the join condition against the base result set. The offset is being added to the result value from 'join_offset_by_idx_list', if specified. Otherwise it is an absolute offset value. Usable in combination with any 'outer' join type. May only be specified if 'join_on' has the default value."}, "join_offset_by_idx_list": {"type": "array", "items": {"type": "string"}, "title": "Positional offset for the referenced result set in join condition", "default": [], "description": "Result set positions of the referenced statement are being automatically calculated for the join condition against the base result set. The offset is calculated as the sum of all returned object dicts in the statements matching the statement indexes in this array. Usable in combination with any 'outer' join type. May only be specified if 'join_on' has the default value.", "uniqueItems": true}}, "description": "Among all dicts in a RefParams Instruction, exact one dict having the join_type of null must exist, which represents the base result set", "additionalProperties": false}, "title": "RefParams Instruction. List of dicts, that construct a SQL-join based query. The result data according to the parameter mapping work as loop variables being the function parameters for the local statement. Each dict contains the referenced statement index and optionally a parameter mapping dict (local to referenced), result set positions, join type, join_target_idx, join condition, and offset data of referenced statements", "description": "The order of the dicts is significant for the precedence of the parameter values, e.g. the value belonging to the parameter mapping in the dict of the highest position has priority, if it is NOT NULL in internal SQL context. If the parameter value is NULL (in internal SQL context), the one from the prior position is being used, and so on. NULL/NOT NULL is being evaluated at the SQL layer exclusively, not at the JSON layer. That is, if the parameter value is a JSON-null (or any other JSON data type), it will win. If it is a SQL-NULL, it will lose against the prior position."}, "_empty_array": {"type": "array", "maxItems": 0}, "_when_condition": {"oneOf": [{"type": "object"}, {"type": "boolean"}], "title": "WHEN condition. Recursive, boolean returning function (as type 'object') for the WHEN clause; or a boolean constant", "properties": {"or": {"type": "array", "items": {"$ref": "#/$defs/_when_condition"}, "minItems": 1}, "and": {"type": "array", "items": {"$ref": "#/$defs/_when_condition"}, "minItems": 1}, "not": {"type": "array", "items": {"$ref": "#/$defs/_when_condition"}, "maxItems": 1, "minItems": 1}, "compare": {"type": "array", "items": {"$ref": "#/$defs/_when_inner_function_type"}, "maxItems": 4, "minItems": 3}, "executes": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}, "returns_data": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}, "returns_no_data": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}}, "maxProperties": 1, "minProperties": 1, "additionalProperties": false}, "_when_inner_function_type": {"title": "Internal-type returning function in a recursive layer of the WHEN clause", "properties": {"returned_row_count": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}, "returned_param_value": {"type": "array", "items": false, "minItems": 2, "prefixItems": [{"type": "string", "title": "statement index"}, {"type": "string", "title": "attribute/parameter name"}, {"type": "integer", "title": "object dict position", "default": 0}]}, "returned_param_value_list": {"type": "array", "items": false, "minItems": 2, "prefixItems": [{"type": "string", "title": "statement index"}, {"type": "string", "title": "attribute/parameter name"}, {"items": {"type": "integer"}, "oneOf": [{"type": "array"}, {"type": "string"}], "title": "range literal for object dict position as string (like '[<lower_bound>:<upper_bound>]' according to the array slice notation) or list of object dict positions as array. defaults to all positions.", "default": null, "pattern": "^\\[\\-?[0-9]*:\\-?[0-9]*\\]$", "minItems": 1, "uniqueItems": true}]}}, "maxProperties": 1, "minProperties": 1, "additionalProperties": false}}, "items": {"type": "object", "allOf": [{"if": {"required": ["old_ref_idx"], "properties": {"old_ref_idx": {"type": "string"}}}, "then": {"properties": {"old_ref_params": {"$ref": "#/$defs/_empty_array"}}}}, {"if": {"required": ["new_ref_idx"], "properties": {"new_ref_idx": {"type": "string"}}}, "then": {"properties": {"new_ref_params": {"$ref": "#/$defs/_empty_array"}}}}, {"if": {"required": ["old_ref_params"], "properties": {"old_ref_params": {"type": "array"}}}, "then": {"properties": {"old_ref_idx": {"enum": [null], "default": null}}}}, {"if": {"required": ["new_ref_params"], "properties": {"new_ref_params": {"type": "array"}}}, "then": {"properties": {"new_ref_idx": {"enum": [null], "default": null}}}}], "title": "Transaction statement", "required": ["name"], "properties": {"idx": {"type": "string", "title": "Unique identifier of the statement. Default: Position in outer statement list (0-based)"}, "new": {"$ref": "#/$defs/_params"}, "old": {"$ref": "#/$defs/_params"}, "name": {"type": "string", "title": "System qualified function name", "description": "Format: <system_name>.<object_type_name>.<function_name>"}, "when": {"$ref": "#/$defs/_when_condition"}, "title": {"type": "string", "title": "abstract of this statement, only for documentation purposes."}, "description": {"type": "string", "title": "More detailed description or semantic of this statement, only for documentation purposes."}, "new_ref_idx": {"$ref": "#/$defs/_ref_idx"}, "old_ref_idx": {"$ref": "#/$defs/_ref_idx"}, "anti_join_ref": {"$ref": "#/$defs/_join_ref"}, "inner_join_ref": {"$ref": "#/$defs/_join_ref"}, "new_ref_params": {"$ref": "#/$defs/_ref_params"}, "old_ref_params": {"$ref": "#/$defs/_ref_params"}, "union_join_ref": {"$ref": "#/$defs/_join_ref"}, "anti_join_noref": {"$ref": "#/$defs/_join_noref"}, "semi_join_noref": {"$ref": "#/$defs/_join_noref"}, "constraints_deferred": {"type": "array", "items": {"type": "string"}, "title": "List of constraint names for deferred checking", "description": "Change the constraint check timing for the named API constraints to 'deferred' (only deferrable constraints are allowed). This will take effect before the beginning of the statement execution and remains valid until the end of the transaction or until a respective constraint occurs in a 'constraints_immediate' instruction of a subsequent statement. If a 'when' condition prevents statement execution, it will also prevent the change of the statement's constraint check timings.", "uniqueItems": true}, "constraints_immediate": {"type": "array", "items": {"type": "string"}, "title": "List of constraint names for immediate checking", "description": "Change the constraint check timing for the named API constraints to 'immediate'. This will take effect after the end of the statement execution and remains valid until the end of the transaction or until a respective constraint occurs in a 'constraints_deferred' instruction of a subsequent statement. If a 'when' condition prevents statement execution, it will also prevent the change of the statement's constraint check timings.", "uniqueItems": true}, "do_aggregate_ref_params": {"type": "boolean", "title": "Aggregate parameters of the referenced statement(s) if current statement is not a dml function", "default": true, "description": "Set to false if no aggregation is desired (e.g. if the returned parameter of the referenced statement is already an array)"}, "ref_params_join_on_val_attrs_tuple": {"type": "array", "items": {"type": "string"}, "title": "Tuple of unqualified attribute names for value based joins in refparam instructions", "minItems": 1, "description": "If a referencing statement uses refparam instructions with value based join, the returned values of the attribute tuple will be used in the join condition. The result sets are joined on equality of their respective attribute value tuples. If not specified and a UP constraint exists for this object type, the tuple of the UP constraint attributes will be used.", "uniqueItems": true}}, "description": "Dict that represents a single statement in the current transaction.", "additionalProperties": false}, "title": "Statement list that forms the current transaction", "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "Outer array as list of objects. Each object represents a single transaction statement. Statements are being executed in their positional order."}, "operation_mode": "test"}, {"doc_uri": "https://doku.netdb.scc.kit.edu/webapi/4.1/intro/", "language_dict": {"de": "veraltete Version (Vorgänger der aktuellen Version)", "en": "outdated version, precursor of the current release"}, "last_status_change_date": "24.03.2026 19:30:19.050675 CET", "major": 4, "minor": 1, "numeric": "4.1.424", "patch": 424, "semantic": "oldrelease", "transaction_json_schema": {"type": "array", "$defs": {"_params": {"type": "object", "title": "(old/new) values of function parameters", "description": "Format: dict key: parameter name (unqualified), dict value: (old/new) parameter value"}, "_ref_idx": {"type": "string", "title": "Referenced statement index", "description": "Shorthand for (old/new) '_ref_params' to obtain function parameter values from the result of the (exact one) referenced statement. If a combination of results from different statements is being required, use (old/new) '_ref_params' instead. Either (old/new) '_ref_idx' or (old/new) '_ref_params' may be used exclusively."}, "_join_ref": {"type": "object", "title": "REF JOIN clause", "description": "Inner or union or anti joins between the object types of the current statement and referenced statements. Properties are referenced statement indexes; values are constraint names or 'default' or 'self' (self join) or null (global join, only for inner or union joins).", "minProperties": 1}, "_join_noref": {"type": "object", "title": "NO-REF JOIN clause", "properties": {"or": {"type": "array", "items": {"type": "string", "title": "FK constraint name"}, "title": "FK constraints in OR-condition", "minItems": 1, "uniqueItems": true}, "and": {"type": "array", "items": {"type": "string", "title": "FK constraint name"}, "title": "FK constraints in AND-condition", "minItems": 1, "uniqueItems": true}}, "description": "Semi or anti joins between the object type of the current statement and the referencing object types of the specified FK constraints. All constraint names under 'and' and 'or' properties together must be unique.", "minProperties": 1, "additionalProperties": false}, "_ref_params": {"type": "array", "items": {"type": "object", "allOf": [{"if": {"required": ["join_on"], "properties": {"join_on": {"enum": ["val"]}}}, "then": {"properties": {"pos": {"enum": [null], "default": null}, "join_offset_by_constant": {"enum": [0], "default": 0}, "join_offset_by_idx_list": {"$ref": "#/$defs/_empty_array"}}}}, {"if": {"required": ["join_type"], "properties": {"join_type": {"enum": ["cross"]}}}, "then": {"properties": {"pos": {"enum": [null], "default": null}, "join_on": {"enum": [null], "default": null}, "join_offset_by_constant": {"enum": [0], "default": 0}, "join_offset_by_idx_list": {"$ref": "#/$defs/_empty_array"}}}}], "title": "RefParams Dict: parameter dict for the referenced statement", "required": ["idx"], "properties": {"idx": {"type": "string", "title": "Statement index of the referenced statement", "description": "The referenced statement's position must be lower than the current position."}, "pos": {"type": ["array", "string", "null"], "items": {"type": "integer"}, "title": "Range of result sets of the referenced statement", "default": null, "pattern": "^\\[\\-?[0-9]*:\\-?[0-9]*\\]$", "minItems": 1, "description": "Positional range of the result sets being returned by the referenced statement as array (list of single positions, 0-based) or range literal as string (like '[<lower_bound>:<upper_bound>]' according to the array slice notation) or null (use all result sets). Negative values specify the position calculated backwards beginning at the end of the result set.", "uniqueItems": true}, "params": {"type": "object", "title": "Parameter mapping: properties are unqualified parameter names of the local object type, and their values are unqualified parameter names of the object type in the referenced statement", "description": "Parameter name in referenced statement that belongs to parameter name in local statement. If not specified, all parameters defined in the referenced statement will occur under the same name in the local statement, while an empty dict will no mappings create.", "additionalProperties": {"type": "string"}}, "join_on": {"enum": ["pos", "val"], "title": "JOIN condition for result sets", "default": "pos", "description": "Which attributes are being used in the join condition for comparison between the current result set and the result set of the referenced statement. With 'pos' (position based join), the result sets are joined on equal position. With 'val' (value based join) they are joined on equal values of the attribute tuple, defined by the UP constraint type of the respective object types. The attribute tuple for the generic object type must be arbitrarily defined by 'ref_params_join_on_val_attrs_tuple'. If neither a UP constraint exists (for regular OT) nor 'ref_params_join_on_val_attrs_tuple' is specified or is null or empty or contains nonexisting attributes, the value based join will return no data and hence cannot be used. The position based join is always guaranteed to be usable. If the value based join is specified, 'join_offset_by_idx_list' and 'join_offset_by_constant' may not be specified."}, "join_type": {"enum": [null, "inner", "cross", "left_outer", "right_outer", "full_outer", "left_anti", "right_anti", "full_anti"], "title": "JOIN type of result sets", "default": null, "description": "The base result set, if null. How to join the result set of the referenced statement, else. The type is similar to SQL join types. Exact one base result set must be present in a RefParams Instruction."}, "join_offset_by_constant": {"type": "integer", "title": "Positional offset for the referenced result set in join condition", "default": 0, "description": "Offset value for the join condition against the base result set. The offset is being added to the result value from 'join_offset_by_idx_list', if specified. Otherwise it is an absolute offset value. Usable in combination with any 'outer' join type. May only be specified if 'join_on' has the default value."}, "join_offset_by_idx_list": {"type": "array", "items": {"type": "string"}, "title": "Positional offset for the referenced result set in join condition", "default": [], "description": "Result set positions of the referenced statement are being automatically calculated for the join condition against the base result set. The offset is calculated as the sum of all returned object dicts in the statements matching the statement indexes in this array. Usable in combination with any 'outer' join type. May only be specified if 'join_on' has the default value.", "uniqueItems": true}}, "description": "Among all dicts in a RefParams Instruction, exact one dict having the join_type of null must exist, which represents the base result set", "additionalProperties": false}, "title": "RefParams Instruction. List of dicts, that construct a SQL-join based query. The result data according to the parameter mapping work as loop variables being the function parameters for the local statement. Each dict contains the referenced statement index and optionally a parameter mapping dict (local to referenced), result set positions, join type, join_target_idx, join condition, and offset data of referenced statements", "description": "The order of the dicts is significant for the precedence of the parameter values, e.g. the value belonging to the parameter mapping in the dict of the highest position has priority, if it is NOT NULL in internal SQL context. If the parameter value is NULL (in internal SQL context), the one from the prior position is being used, and so on. NULL/NOT NULL is being evaluated at the SQL layer exclusively, not at the JSON layer. That is, if the parameter value is a JSON-null (or any other JSON data type), it will win. If it is a SQL-NULL, it will lose against the prior position."}, "_empty_array": {"type": "array", "maxItems": 0}, "_when_condition": {"type": ["object", "boolean"], "title": "WHEN condition. Recursive, boolean returning function (as type 'object') for the WHEN clause; or a boolean constant", "properties": {"or": {"type": "array", "items": {"$ref": "#/$defs/_when_condition"}, "minItems": 1}, "and": {"type": "array", "items": {"$ref": "#/$defs/_when_condition"}, "minItems": 1}, "not": {"type": "array", "items": {"$ref": "#/$defs/_when_condition"}, "maxItems": 1, "minItems": 1}, "compare": {"type": "array", "items": {"$ref": "#/$defs/_when_inner_function_type"}, "maxItems": 4, "minItems": 3}, "executes": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}, "returns_data": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}, "returns_no_data": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}}, "maxProperties": 1, "minProperties": 1, "additionalProperties": false}, "_when_inner_function_type": {"title": "Internal-type returning function in a recursive layer of the WHEN clause", "properties": {"returned_row_count": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}, "returned_param_value": {"type": "array", "items": false, "minItems": 2, "prefixItems": [{"type": "string", "title": "statement index"}, {"type": "string", "title": "attribute/parameter name"}, {"type": "integer", "title": "object dict position", "default": 0}]}, "returned_param_value_list": {"type": "array", "items": false, "minItems": 2, "prefixItems": [{"type": "string", "title": "statement index"}, {"type": "string", "title": "attribute/parameter name"}, {"type": ["string", "array"], "items": {"type": "integer"}, "title": "range literal for object dict position as string (like '[<lower_bound>:<upper_bound>]' according to the array slice notation) or list of object dict positions as array. defaults to all positions.", "default": null, "pattern": "^\\[\\-?[0-9]*:\\-?[0-9]*\\]$", "minItems": 1, "uniqueItems": true}]}}, "maxProperties": 1, "minProperties": 1, "additionalProperties": false}}, "items": {"type": "object", "allOf": [{"if": {"required": ["old_ref_idx"], "properties": {"old_ref_idx": {"type": "string"}}}, "then": {"properties": {"old_ref_params": {"$ref": "#/$defs/_empty_array"}}}}, {"if": {"required": ["new_ref_idx"], "properties": {"new_ref_idx": {"type": "string"}}}, "then": {"properties": {"new_ref_params": {"$ref": "#/$defs/_empty_array"}}}}, {"if": {"required": ["old_ref_params"], "properties": {"old_ref_params": {"type": "array"}}}, "then": {"properties": {"old_ref_idx": {"enum": [null], "default": null}}}}, {"if": {"required": ["new_ref_params"], "properties": {"new_ref_params": {"type": "array"}}}, "then": {"properties": {"new_ref_idx": {"enum": [null], "default": null}}}}], "title": "Transaction statement", "required": ["name"], "properties": {"idx": {"type": "string", "title": "Unique identifier of the statement. default: Position in outer statement list (0-based)"}, "new": {"$ref": "#/$defs/_params"}, "old": {"$ref": "#/$defs/_params"}, "name": {"type": "string", "title": "System qualified function name", "description": "Format: <system_name>.<object_type_name>.<function_name>"}, "when": {"$ref": "#/$defs/_when_condition"}, "title": {"type": "string", "title": "abstract of this statement, only for documentation purposes."}, "description": {"type": "string", "title": "More detailed description or semantic of this statement, only for documentation purposes."}, "new_ref_idx": {"$ref": "#/$defs/_ref_idx"}, "old_ref_idx": {"$ref": "#/$defs/_ref_idx"}, "anti_join_ref": {"$ref": "#/$defs/_join_ref"}, "inner_join_ref": {"$ref": "#/$defs/_join_ref"}, "new_ref_params": {"$ref": "#/$defs/_ref_params"}, "old_ref_params": {"$ref": "#/$defs/_ref_params"}, "union_join_ref": {"$ref": "#/$defs/_join_ref"}, "anti_join_noref": {"$ref": "#/$defs/_join_noref"}, "semi_join_noref": {"$ref": "#/$defs/_join_noref"}, "constraints_deferred": {"type": "array", "items": {"type": "string"}, "title": "List of constraint names for deferred checking", "description": "Change the constraint check timing for the named API constraints to 'deferred' (only deferrable constraints are allowed). This will take effect before the beginning of the statement execution and remains valid until the end of the transaction or until a respective constraint occurs in a 'constraints_immediate' instruction of a subsequent statement. If a 'when' condition prevents statement execution, it will also prevent the change of the statement's constraint check timings.", "uniqueItems": true}, "constraints_immediate": {"type": "array", "items": {"type": "string"}, "title": "List of constraint names for immediate checking", "description": "Change the constraint check timing for the named API constraints to 'immediate'. This will take effect after the end of the statement execution and remains valid until the end of the transaction or until a respective constraint occurs in a 'constraints_deferred' instruction of a subsequent statement. If a 'when' condition prevents statement execution, it will also prevent the change of the statement's constraint check timings.", "uniqueItems": true}, "ref_params_join_on_val_attrs_tuple": {"type": "array", "items": {"type": "string"}, "title": "Tuple of unqualified attribute names for value based joins in refparam instructions", "minItems": 1, "description": "If a referencing statement uses refparam instructions with value based join, the returned values of the attribute tuple will be used in the join condition. The result sets are joined on equality of their respective attribute value tuples. If not specified and a UP constraint exists for this object type, the tuple of the UP constraint attributes will be used.", "uniqueItems": true}}, "description": "Dict that represents a single statement in the current transaction.", "additionalProperties": false}, "title": "Statement list that forms the current transaction", "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "Outer array as list of objects. Each object represents a single transaction statement. Statements are being executed in their positional order."}, "operation_mode": "test"}, {"doc_uri": "https://doku.netdb.scc.kit.edu/webapi/4.0/intro/", "language_dict": {"de": "nicht mehr unterstützte und nicht mehr garantiert funktionsfähige Version (Vorgänger der veralteten Version)", "en": "unsupported and possibly broken version (precursor of outdated version)"}, "last_status_change_date": "24.03.2026 19:30:19.050675 CET", "major": 4, "minor": 0, "numeric": "4.0.819", "patch": 819, "semantic": "deprecated", "transaction_json_schema": {"type": "array", "$defs": {"_params": {"type": "object", "title": "(old/new) values of function parameters", "description": "Format: dict key: parameter name (unqualified), dict value: (old/new) parameter value"}, "_ref_idx": {"type": "string", "title": "Referenced statement index", "description": "Shorthand for (old/new) '_ref_params' to obtain function parameter values from the result of the (exact one) referenced statement. If a combination of results from different statements is being required, use (old/new) '_ref_params' instead. Either (old/new) '_ref_idx' or (old/new) '_ref_params' may be used exclusively."}, "_join_ref": {"type": "object", "title": "REF JOIN clause", "description": "Inner or anti joins between the object types of the current statement and referenced statements. Properties are referenced statement indexes; values are constraint names or 'default' or 'self' (self join) or null (global join, only for inner joins).", "minProperties": 1}, "_join_noref": {"type": "object", "title": "NO-REF JOIN clause", "properties": {"or": {"type": "array", "items": {"type": "string", "title": "FK constraint name"}, "title": "FK constraints in OR-condition", "minItems": 1, "uniqueItems": true}, "and": {"type": "array", "items": {"type": "string", "title": "FK constraint name"}, "title": "FK constraints in AND-condition", "minItems": 1, "uniqueItems": true}}, "description": "Semi or anti joins between the object type of the current statement and the referencing object types of the specified FK constraints. All constraint names under 'and' and 'or' properties together must be unique.", "minProperties": 1, "additionalProperties": false}, "_ref_params": {"type": "array", "items": {"type": "object", "allOf": [{"if": {"required": ["join_on"], "properties": {"join_on": {"enum": ["val"]}}}, "then": {"properties": {"pos": {"enum": [null], "default": null}, "join_offset_by_constant": {"enum": [0], "default": 0}, "join_offset_by_idx_list": {"$ref": "#/$defs/_empty_array"}}}}, {"if": {"required": ["join_type"], "properties": {"join_type": {"enum": ["cross"]}}}, "then": {"properties": {"pos": {"enum": [null], "default": null}, "join_on": {"enum": [null], "default": null}, "join_offset_by_constant": {"enum": [0], "default": 0}, "join_offset_by_idx_list": {"$ref": "#/$defs/_empty_array"}}}}], "title": "RefParams Dict: parameter dict for the referenced statement", "required": ["idx"], "properties": {"idx": {"type": "string", "title": "Statement index of the referenced statement", "description": "The referenced statement's position must be lower than the current position."}, "pos": {"type": ["array", "string", "null"], "items": {"type": "integer"}, "title": "Range of result sets of the referenced statement", "default": null, "pattern": "^\\[\\-?[0-9]*:\\-?[0-9]*\\]$", "minItems": 1, "description": "Positional range of the result sets being returned by the referenced statement as array (list of single positions, 0-based) or range literal as string (like '[<lower_bound>:<upper_bound>]' according to the array slice notation) or null (use all result sets). Negative values specify the position calculated backwards beginning at the end of the result set.", "uniqueItems": true}, "params": {"type": "object", "title": "Parameter mapping: properties are unqualified parameter names of the local object type, and their values are unqualified parameter names of the object type in the referenced statement", "description": "Parameter name in referenced statement that belongs to parameter name in local statement. If not specified, all parameters defined in the referenced statement will occur under the same name in the local statement, while an empty dict will no mappings create.", "additionalProperties": {"type": "string"}}, "join_on": {"enum": ["pos", "val"], "title": "JOIN condition for result sets", "default": "pos", "description": "Which attributes are being used in the join condition for comparison between the current result set and the result set of the referenced statement. With 'pos' (position based join), the result sets are joined on equal position. With 'val' (value based join) they are joined on equal values of the attribute tuple, defined by the UP constraint type of the respective object types. The attribute tuple for the generic object type must be arbitrarily defined by 'ref_params_join_on_val_attrs_tuple'. If neither a UP constraint exists (for regular OT) nor 'ref_params_join_on_val_attrs_tuple' is specified or is null or empty or contains nonexisting attributes, the value based join will return no data and hence cannot be used. The position based join is always guaranteed to be usable. If the value based join is specified, 'join_offset_by_idx_list' and 'join_offset_by_constant' may not be specified."}, "join_type": {"enum": [null, "inner", "cross", "left_outer", "right_outer", "full_outer", "left_anti", "right_anti", "full_anti"], "title": "JOIN type of result sets", "default": null, "description": "The base result set, if null. How to join the result set of the referenced statement, else. The type is similar to SQL join types. Exact one base result set must be present in a RefParams Instruction."}, "join_offset_by_constant": {"type": "integer", "title": "Positional offset for the referenced result set in join condition", "default": 0, "description": "Offset value for the join condition against the base result set. The offset is being added to the result value from 'join_offset_by_idx_list', if specified. Otherwise it is an absolute offset value. Usable in combination with any 'outer' join type. May only be specified if 'join_on' has the default value."}, "join_offset_by_idx_list": {"type": "array", "items": {"type": "string"}, "title": "Positional offset for the referenced result set in join condition", "default": [], "description": "Result set positions of the referenced statement are being automatically calculated for the join condition against the base result set. The offset is calculated as the sum of all returned object dicts in the statements matching the statement indexes in this array. Usable in combination with any 'outer' join type. May only be specified if 'join_on' has the default value.", "uniqueItems": true}}, "description": "Among all dicts in a RefParams Instruction, exact one dict having the join_type of null must exist, which represents the base result set", "additionalProperties": false}, "title": "RefParams Instruction. List of dicts, that construct a SQL-join based query. The result data according to the parameter mapping work as loop variables being the function parameters for the local statement. Each dict contains the referenced statement index and optionally a parameter mapping dict (local to referenced), result set positions, join type, join_target_idx, join condition, and offset data of referenced statements", "description": "The order of the dicts is significant for the precedence of the parameter values, e.g. the value belonging to the parameter mapping in the dict of the highest position has priority, if it is NOT NULL in internal SQL context. If the parameter value is NULL (in internal SQL context), the one from the prior position is being used, and so on. NULL/NOT NULL is being evaluated at the SQL layer exclusively, not at the JSON layer. That is, if the parameter value is a JSON-null (or any other JSON data type), it will win. If it is a SQL-NULL, it will lose against the prior position."}, "_empty_array": {"type": "array", "maxItems": 0}, "_when_condition": {"type": ["object", "boolean"], "title": "WHEN condition. Recursive, boolean returning function (as type 'object') for the WHEN clause; or a boolean constant", "properties": {"or": {"type": "array", "items": {"$ref": "#/$defs/_when_condition"}, "minItems": 1}, "and": {"type": "array", "items": {"$ref": "#/$defs/_when_condition"}, "minItems": 1}, "not": {"type": "array", "items": {"$ref": "#/$defs/_when_condition"}, "maxItems": 1, "minItems": 1}, "compare": {"type": "array", "items": {"$ref": "#/$defs/_when_inner_function_type"}, "maxItems": 4, "minItems": 3}, "executes": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}, "returns_data": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}, "returns_no_data": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}}, "maxProperties": 1, "minProperties": 1, "additionalProperties": false}, "_when_inner_function_type": {"title": "Internal-type returning function in a recursive layer of the WHEN clause", "properties": {"returned_row_count": {"type": "array", "items": {"type": "string", "title": "referenced statement index"}, "maxItems": 1, "minItems": 1}, "returned_param_value": {"type": "array", "items": false, "minItems": 2, "prefixItems": [{"type": "string", "title": "statement index"}, {"type": "string", "title": "attribute/parameter name"}, {"type": "integer", "title": "object dict position", "default": 0}]}, "returned_param_value_list": {"type": "array", "items": false, "minItems": 2, "prefixItems": [{"type": "string", "title": "statement index"}, {"type": "string", "title": "attribute/parameter name"}, {"type": ["string", "array"], "items": {"type": "integer"}, "title": "range literal for object dict position as string (like '[<lower_bound>:<upper_bound>]' according to the array slice notation) or list of object dict positions as array. defaults to all positions.", "default": null, "pattern": "^\\[\\-?[0-9]*:\\-?[0-9]*\\]$", "minItems": 1, "uniqueItems": true}]}}, "maxProperties": 1, "minProperties": 1, "additionalProperties": false}}, "items": {"type": "object", "allOf": [{"if": {"required": ["old_ref_idx"], "properties": {"old_ref_idx": {"type": "string"}}}, "then": {"properties": {"old_ref_params": {"$ref": "#/$defs/_empty_array"}}}}, {"if": {"required": ["new_ref_idx"], "properties": {"new_ref_idx": {"type": "string"}}}, "then": {"properties": {"new_ref_params": {"$ref": "#/$defs/_empty_array"}}}}, {"if": {"required": ["old_ref_params"], "properties": {"old_ref_params": {"type": "array"}}}, "then": {"properties": {"old_ref_idx": {"enum": [null], "default": null}}}}, {"if": {"required": ["new_ref_params"], "properties": {"new_ref_params": {"type": "array"}}}, "then": {"properties": {"new_ref_idx": {"enum": [null], "default": null}}}}], "title": "Transaction statement", "required": ["name"], "properties": {"idx": {"type": "string", "title": "Unique identifier of the statement. default: Position in outer statement list (0-based)"}, "new": {"$ref": "#/$defs/_params"}, "old": {"$ref": "#/$defs/_params"}, "name": {"type": "string", "title": "System qualified function name", "description": "Format: <system_name>.<object_type_name>.<function_name>"}, "when": {"$ref": "#/$defs/_when_condition"}, "title": {"type": "string", "title": "abstract of this statement, only for documentation purposes."}, "description": {"type": "string", "title": "More detailed description or semantic of this statement, only for documentation purposes."}, "new_ref_idx": {"$ref": "#/$defs/_ref_idx"}, "old_ref_idx": {"$ref": "#/$defs/_ref_idx"}, "anti_join_ref": {"$ref": "#/$defs/_join_ref"}, "inner_join_ref": {"$ref": "#/$defs/_join_ref"}, "new_ref_params": {"$ref": "#/$defs/_ref_params"}, "old_ref_params": {"$ref": "#/$defs/_ref_params"}, "anti_join_noref": {"$ref": "#/$defs/_join_noref"}, "semi_join_noref": {"$ref": "#/$defs/_join_noref"}, "ref_params_join_on_val_attrs_tuple": {"type": "array", "items": {"type": "string"}, "title": "Tuple of unqualified attribute names for value based joins in refparam instructions", "minItems": 1, "description": "If a referencing statement uses refparam instructions with value based join, the returned values of the attribute tuple will be used in the join condition. The result sets are joined on equality of their respective attribute value tuples. If not specified and a UP constraint exists for this object type, the tuple of the UP constraint attributes will be used.", "uniqueItems": true}}, "description": "Dict that represents a single statement in the current transaction.", "additionalProperties": false}, "title": "Statement list that forms the current transaction", "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "Outer array as list of objects. Each object represents a single transaction statement. Statements are being executed in their positional order."}, "operation_mode": "test"}]]