blob: 247c8aba285b2d02978b13e3bc6c30b3453bd048 [file] [log] [blame]
Ed Tanous6df70ff2026-01-21 08:26:37 -08001#ifndef __SCHEMAVALIDATOR_H
2#define __SCHEMAVALIDATOR_H
3
4#include <json-c/json.h>
5
6int _schemavalidator_load(const char *jsonfile, const char *jsonschema);
7int __schemavalidator_inspect_type(json_object *jobj, const char *type,
8 json_object *joutput_node);
9int _schemavalidator_check_type(json_object *jobj, json_object *jschema,
10 json_object *joutput_node);
11int _schemavalidator_check_required(json_object *jobj, json_object *jschema,
12 json_object *joutput_node);
13int _schemavalidator_check_properties(json_object *jobj, json_object *jschema,
14 json_object *joutput_node);
15int _schemavalidator_check_prefixItems_and_items(json_object *jobj,
16 json_object *jschema,
17 json_object *joutput_node);
18int _schemavalidator_value_is_equal(json_object *jobj1, json_object *jobj2);
19int _schemavalidator_check_const(json_object *jobj, json_object *jschema,
20 json_object *joutput_node);
21int _schemavalidator_check_enums(json_object *jobj, json_object *jschema,
22 json_object *joutput_node);
23int _schemavalidator_check_uniqueItems(json_object *jobj, json_object *jschema,
24 json_object *joutput_node);
25int _schemavalidator_check_maxmin_items(json_object *jobj, json_object *jschema,
26 json_object *joutput_node);
27int _schemavalidator_validate_array(json_object *jobj, json_object *jschema,
28 json_object *joutput_node);
29int _schemavalidator_validate_object(json_object *jobj, json_object *jschema,
30 json_object *joutput_node);
31int _schemavalidator_validate_string(json_object *jobj, json_object *jschema,
32 json_object *joutput_node);
33int _schemavalidator_validate_integer(json_object *jobj, json_object *jschema,
34 json_object *joutput_node);
35int _schemavalidator_validate_double(json_object *jobj, json_object *jschema,
36 json_object *joutput_node);
37int _schemavalidator_validate_number(json_object *jobj, json_object *jschema,
38 double value, json_object *joutput_node);
39int _schemavalidator_validate_boolean(json_object *jobj, json_object *jschema,
40 json_object *joutput_node);
41int _schemavalidator_validate_instance(json_object *jobj, json_object *jschema,
42 json_object *joutput_node);
43
44json_object *_schemavalidator_output_create_node(const char *name);
45void _schemavalidator_output_append_node(json_object *joutput,
46 json_object *jnode);
47json_object *
48_schemavalidator_output_create_and_append_node(json_object *joutput,
49 const char *name);
50json_object *_schemavalidator_output_create_and_append_node_concatnames(
51 json_object *joutput, char *name1, char *name2);
52
53enum schemavalidator_errors {
54 SCHEMAVALIDATOR_ERR_VALID = 0,
55 SCHEMAVALIDATOR_ERR_GENERAL_ERROR,
56 SCHEMAVALIDATOR_ERR_JSON_NOT_FOUND,
57 SCHEMAVALIDATOR_ERR_SCHEMA_NOT_FOUND,
58 SCHEMAVALIDATOR_ERR_WRONG_ARGS,
59 SCHEMAVALIDATOR_ERR_SCHEMA_ERROR,
60 SCHEMAVALIDATOR_ERR_INVALID,
61 SCHEMAVALIDATOR_REGEX_MISMATCH,
62 SCHEMAVALIDATOR_REGEX_MATCH,
63 SCHEMAVALIDATOR_REGEX_COMPILE_FAILED,
64 SCHEMAVALIDATOR_ERR_MAX
65};
66
67void _schemavalidator_output_apply_result(json_object *joutput,
68 enum schemavalidator_errors err);
69void _schemavalidator_output_print_errors(json_object *joutput);
70
71int schemavalidator_validate(json_object *jobj, json_object *jschema);
72
73const char *schemavalidator_errorstr(unsigned int schemavalidator_errors);
74
75#endif //__SCHEMAVALIDATOR_H