pytest-jsonschema-snapshot 0.2.4__tar.gz → 0.2.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/PKG-INFO +2 -2
  2. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/pyproject.toml +1 -1
  3. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/pytest_jsonschema_snapshot/__init__.py +1 -1
  4. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/pytest_jsonschema_snapshot/core.py +27 -12
  5. pytest_jsonschema_snapshot-0.2.5/pytest_jsonschema_snapshot/tools/__init__.py +3 -0
  6. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/requirements.txt +1 -1
  7. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/TestDataClass.get_data.first.schema.json +15 -15
  8. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/TestDataClass.get_data.schema.json +15 -15
  9. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/array_formats_test.schema.json +11 -11
  10. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/date_test.schema.json +6 -6
  11. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/datetime_test.schema.json +6 -6
  12. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/email_test.schema.json +8 -8
  13. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/get_data.first.schema.json +15 -15
  14. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/get_data.schema.json +15 -15
  15. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/ipv4_test.schema.json +8 -8
  16. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/mixed_formats_test.schema.json +20 -20
  17. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/regular_strings_test.schema.json +9 -9
  18. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/some_schema.schema.json +72 -103
  19. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/strict_email_validation_test.schema.json +5 -5
  20. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/uri_test.schema.json +8 -8
  21. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/uuid_test.schema.json +6 -6
  22. pytest_jsonschema_snapshot-0.2.5/tt.py +183 -0
  23. pytest_jsonschema_snapshot-0.2.5/yy.py +138 -0
  24. pytest_jsonschema_snapshot-0.2.4/pytest_jsonschema_snapshot/tools/__init__.py +0 -4
  25. pytest_jsonschema_snapshot-0.2.4/pytest_jsonschema_snapshot/tools/genson_addon/__init__.py +0 -3
  26. pytest_jsonschema_snapshot-0.2.4/pytest_jsonschema_snapshot/tools/genson_addon/format_detector.py +0 -52
  27. pytest_jsonschema_snapshot-0.2.4/pytest_jsonschema_snapshot/tools/genson_addon/to_schema_converter.py +0 -100
  28. pytest_jsonschema_snapshot-0.2.4/tests/tools/genson_addon/test_format_safe.py +0 -82
  29. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/.flake8 +0 -0
  30. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  31. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  32. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/.github/ISSUE_TEMPLATE/documentation_issue.yml +0 -0
  33. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  34. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/.github/PULL_REQUEST_TEMPLATE/general.md +0 -0
  35. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/.github/actions/build-docs/action.yml +0 -0
  36. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/.github/workflows/release.yml +0 -0
  37. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/.github/workflows/reusable-test.yml +0 -0
  38. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/.github/workflows/test.yml +0 -0
  39. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/.gitignore +0 -0
  40. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/LICENSE +0 -0
  41. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/Makefile +0 -0
  42. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/README.md +0 -0
  43. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/assets/logo.png +0 -0
  44. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/docs/source/_static/logo_day.png +0 -0
  45. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/docs/source/_static/logo_night.png +0 -0
  46. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/docs/source/basic/quick_start.rst +0 -0
  47. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/docs/source/conf.py +0 -0
  48. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/docs/source/index.rst +0 -0
  49. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/pytest_jsonschema_snapshot/plugin.py +0 -0
  50. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/pytest_jsonschema_snapshot/py.typed +0 -0
  51. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/pytest_jsonschema_snapshot/stats.py +0 -0
  52. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/pytest_jsonschema_snapshot/tools/name_maker.py +0 -0
  53. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/reinstall_plugin.sh +0 -0
  54. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/test_stats.py +0 -0
  55. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/tools/test_name_maker.py +0 -0
  56. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/TestDataClass.get_data.first.json +0 -0
  57. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/TestDataClass.get_data.json +0 -0
  58. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/array_formats_test.json +0 -0
  59. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/date_test.json +0 -0
  60. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/datetime_test.json +0 -0
  61. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/email_test.json +0 -0
  62. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/get_data.first.json +0 -0
  63. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/get_data.json +0 -0
  64. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/ipv4_test.json +0 -0
  65. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/mixed_formats_test.json +0 -0
  66. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/multi_schema_one.json +0 -0
  67. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/multi_schema_three.json +0 -0
  68. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/multi_schema_two.json +0 -0
  69. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/regular_strings_test.json +0 -0
  70. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/some_schema.json +0 -0
  71. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/strict_email_validation_test.json +0 -0
  72. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/uri_test.json +0 -0
  73. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/__snapshots__/uuid_test.json +0 -0
  74. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/test_base.py +0 -0
  75. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/test_base_name_callable.py +0 -0
  76. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/test_format_detection.py +0 -0
  77. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/test_format_validation.py +0 -0
  78. {pytest_jsonschema_snapshot-0.2.4 → pytest_jsonschema_snapshot-0.2.5}/tests/usage/test_multiple_schema_creation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytest-jsonschema-snapshot
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Pytest plugin for automatic JSON Schema generation and validation from examples
5
5
  Project-URL: Homepage, https://miskler.github.io/pytest-jsonschema-snapshot/basic/quick_start.html
6
6
  Project-URL: Repository, https://github.com/Miskler/pytest-jsonschema-snapshot
@@ -22,7 +22,7 @@ Classifier: Programming Language :: Python :: 3.13
22
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
23
  Classifier: Topic :: Utilities
24
24
  Requires-Python: >=3.10
25
- Requires-Dist: genson
25
+ Requires-Dist: genschema
26
26
  Requires-Dist: jsonschema
27
27
  Requires-Dist: jsonschema-diff
28
28
  Requires-Dist: pathvalidate
@@ -27,7 +27,7 @@ classifiers = [
27
27
  "Topic :: Utilities"
28
28
  ]
29
29
  dependencies = [
30
- "genson",
30
+ "genschema",
31
31
  "pathvalidate",
32
32
  "jsonschema",
33
33
  "jsonschema-diff",
@@ -8,5 +8,5 @@ pytest-typed-schema-shot
8
8
 
9
9
  from .core import SchemaShot
10
10
 
11
- __version__ = "0.2.4"
11
+ __version__ = "0.2.5"
12
12
  __all__ = ["SchemaShot"]
@@ -13,10 +13,17 @@ if TYPE_CHECKING:
13
13
  from jsonschema_diff import JsonSchemaDiff
14
14
 
15
15
  import pytest
16
+ from genschema import Converter, PseudoArrayHandler
17
+ from genschema.comparators import (
18
+ DeleteElement,
19
+ FormatComparator,
20
+ RequiredComparator,
21
+ SchemaVersionComparator,
22
+ )
16
23
  from jsonschema import FormatChecker, ValidationError, validate
17
24
 
18
25
  from .stats import GLOBAL_STATS
19
- from .tools import JsonToSchemaConverter, NameMaker
26
+ from .tools import NameMaker
20
27
 
21
28
 
22
29
  class SchemaShot:
@@ -54,6 +61,17 @@ class SchemaShot:
54
61
  self.snapshot_dir: Path = root_dir / snapshot_dir_name
55
62
  self.used_schemas: Set[str] = set()
56
63
 
64
+ self.conv = Converter(
65
+ pseudo_handler=PseudoArrayHandler(),
66
+ base_of="anyOf",
67
+ )
68
+ self.conv.register(FormatComparator())
69
+ self.conv.register(RequiredComparator())
70
+ # self.conv.register(EmptyComparator())
71
+ self.conv.register(SchemaVersionComparator())
72
+ self.conv.register(DeleteElement())
73
+ self.conv.register(DeleteElement("isPseudoArray"))
74
+
57
75
  self.logger = logging.getLogger(__name__)
58
76
  # добавляем вывод в stderr
59
77
  handler = logging.StreamHandler()
@@ -144,11 +162,9 @@ class SchemaShot:
144
162
 
145
163
  real_name = self._process_name(name)
146
164
 
147
- builder = JsonToSchemaConverter(
148
- format_mode=self.format_mode # type: ignore[arg-type]
149
- ) # , examples=self.examples_limit)
150
- builder.add_object(data)
151
- current_schema = builder.to_schema()
165
+ self.conv.clear_data()
166
+ self.conv.add_schema(data)
167
+ current_schema = self.conv.run()
152
168
 
153
169
  real_name, status = self._base_match(data, current_schema, real_name)
154
170
 
@@ -234,12 +250,11 @@ class SchemaShot:
234
250
  schema_updated = False
235
251
 
236
252
  def merge_schemas(old: dict, new: dict) -> dict:
237
- builder = JsonToSchemaConverter(
238
- format_mode=self.format_mode # type: ignore[arg-type]
239
- ) # , examples=self.examples_limit)
240
- builder.add_schema(old)
241
- builder.add_schema(new)
242
- return builder.to_schema()
253
+ self.conv.clear_data()
254
+ self.conv.add_schema(old)
255
+ self.conv.add_schema(new)
256
+ result = self.conv.run()
257
+ return result
243
258
 
244
259
  if existing_schema != current_schema: # есть отличия
245
260
  if (self.update_mode or self.reset_mode) and self.update_actions.get("update"):
@@ -0,0 +1,3 @@
1
+ from .name_maker import NameMaker
2
+
3
+ __all__ = ["NameMaker"]
@@ -1,4 +1,4 @@
1
- genson
1
+ genschema
2
2
  pathvalidate
3
3
  jsonschema
4
4
  jsonschema-diff
@@ -1,15 +1,24 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
2
  "type": "object",
3
+ "required": [
4
+ "необязательная",
5
+ "обязательная",
6
+ "словарь"
7
+ ],
8
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
9
  "properties": {
5
- "обязательная": {
6
- "type": "string"
7
- },
8
10
  "необязательная": {
9
11
  "type": "null"
10
12
  },
13
+ "обязательная": {
14
+ "type": "string"
15
+ },
11
16
  "словарь": {
12
17
  "type": "object",
18
+ "required": [
19
+ "ключ",
20
+ "число"
21
+ ],
13
22
  "properties": {
14
23
  "ключ": {
15
24
  "type": "string"
@@ -17,16 +26,7 @@
17
26
  "число": {
18
27
  "type": "integer"
19
28
  }
20
- },
21
- "required": [
22
- "ключ",
23
- "число"
24
- ]
29
+ }
25
30
  }
26
- },
27
- "required": [
28
- "необязательная",
29
- "обязательная",
30
- "словарь"
31
- ]
31
+ }
32
32
  }
@@ -1,15 +1,24 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
2
  "type": "object",
3
+ "required": [
4
+ "необязательная",
5
+ "обязательная",
6
+ "словарь"
7
+ ],
8
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
9
  "properties": {
5
- "обязательная": {
6
- "type": "string"
7
- },
8
10
  "необязательная": {
9
11
  "type": "null"
10
12
  },
13
+ "обязательная": {
14
+ "type": "string"
15
+ },
11
16
  "словарь": {
12
17
  "type": "object",
18
+ "required": [
19
+ "ключ",
20
+ "число"
21
+ ],
13
22
  "properties": {
14
23
  "ключ": {
15
24
  "type": "string"
@@ -17,16 +26,7 @@
17
26
  "число": {
18
27
  "type": "integer"
19
28
  }
20
- },
21
- "required": [
22
- "ключ",
23
- "число"
24
- ]
29
+ }
25
30
  }
26
- },
27
- "required": [
28
- "необязательная",
29
- "обязательная",
30
- "словарь"
31
- ]
31
+ }
32
32
  }
@@ -1,19 +1,24 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
2
  "type": "object",
3
+ "required": [
4
+ "dates",
5
+ "emails",
6
+ "uuids"
7
+ ],
8
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
9
  "properties": {
5
- "emails": {
10
+ "dates": {
6
11
  "type": "array",
7
12
  "items": {
8
13
  "type": "string",
9
- "format": "email"
14
+ "format": "date"
10
15
  }
11
16
  },
12
- "dates": {
17
+ "emails": {
13
18
  "type": "array",
14
19
  "items": {
15
20
  "type": "string",
16
- "format": "date"
21
+ "format": "email"
17
22
  }
18
23
  },
19
24
  "uuids": {
@@ -23,10 +28,5 @@
23
28
  "format": "uuid"
24
29
  }
25
30
  }
26
- },
27
- "required": [
28
- "dates",
29
- "emails",
30
- "uuids"
31
- ]
31
+ }
32
32
  }
@@ -1,6 +1,10 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
2
  "type": "object",
3
+ "required": [
4
+ "birth_date",
5
+ "registration_date"
6
+ ],
7
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
8
  "properties": {
5
9
  "birth_date": {
6
10
  "type": "string",
@@ -10,9 +14,5 @@
10
14
  "type": "string",
11
15
  "format": "date"
12
16
  }
13
- },
14
- "required": [
15
- "birth_date",
16
- "registration_date"
17
- ]
17
+ }
18
18
  }
@@ -1,6 +1,10 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
2
  "type": "object",
3
+ "required": [
4
+ "created_at",
5
+ "updated_at"
6
+ ],
7
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
8
  "properties": {
5
9
  "created_at": {
6
10
  "type": "string",
@@ -10,9 +14,5 @@
10
14
  "type": "string",
11
15
  "format": "date-time"
12
16
  }
13
- },
14
- "required": [
15
- "created_at",
16
- "updated_at"
17
- ]
17
+ }
18
18
  }
@@ -1,18 +1,18 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
2
  "type": "object",
3
+ "required": [
4
+ "admin_email",
5
+ "user_email"
6
+ ],
7
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
8
  "properties": {
5
- "user_email": {
9
+ "admin_email": {
6
10
  "type": "string",
7
11
  "format": "email"
8
12
  },
9
- "admin_email": {
13
+ "user_email": {
10
14
  "type": "string",
11
15
  "format": "email"
12
16
  }
13
- },
14
- "required": [
15
- "admin_email",
16
- "user_email"
17
- ]
17
+ }
18
18
  }
@@ -1,15 +1,24 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
2
  "type": "object",
3
+ "required": [
4
+ "необязательная",
5
+ "обязательная",
6
+ "словарь"
7
+ ],
8
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
9
  "properties": {
5
- "обязательная": {
6
- "type": "string"
7
- },
8
10
  "необязательная": {
9
11
  "type": "null"
10
12
  },
13
+ "обязательная": {
14
+ "type": "string"
15
+ },
11
16
  "словарь": {
12
17
  "type": "object",
18
+ "required": [
19
+ "ключ",
20
+ "число"
21
+ ],
13
22
  "properties": {
14
23
  "ключ": {
15
24
  "type": "string"
@@ -17,16 +26,7 @@
17
26
  "число": {
18
27
  "type": "integer"
19
28
  }
20
- },
21
- "required": [
22
- "ключ",
23
- "число"
24
- ]
29
+ }
25
30
  }
26
- },
27
- "required": [
28
- "необязательная",
29
- "обязательная",
30
- "словарь"
31
- ]
31
+ }
32
32
  }
@@ -1,15 +1,24 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
2
  "type": "object",
3
+ "required": [
4
+ "необязательная",
5
+ "обязательная",
6
+ "словарь"
7
+ ],
8
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
9
  "properties": {
5
- "обязательная": {
6
- "type": "string"
7
- },
8
10
  "необязательная": {
9
11
  "type": "null"
10
12
  },
13
+ "обязательная": {
14
+ "type": "string"
15
+ },
11
16
  "словарь": {
12
17
  "type": "object",
18
+ "required": [
19
+ "ключ",
20
+ "число"
21
+ ],
13
22
  "properties": {
14
23
  "ключ": {
15
24
  "type": "string"
@@ -17,16 +26,7 @@
17
26
  "число": {
18
27
  "type": "integer"
19
28
  }
20
- },
21
- "required": [
22
- "ключ",
23
- "число"
24
- ]
29
+ }
25
30
  }
26
- },
27
- "required": [
28
- "необязательная",
29
- "обязательная",
30
- "словарь"
31
- ]
31
+ }
32
32
  }
@@ -1,18 +1,18 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
2
  "type": "object",
3
+ "required": [
4
+ "gateway",
5
+ "server_ip"
6
+ ],
7
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
8
  "properties": {
5
- "server_ip": {
9
+ "gateway": {
6
10
  "type": "string",
7
11
  "format": "ipv4"
8
12
  },
9
- "gateway": {
13
+ "server_ip": {
10
14
  "type": "string",
11
15
  "format": "ipv4"
12
16
  }
13
- },
14
- "required": [
15
- "gateway",
16
- "server_ip"
17
- ]
17
+ }
18
18
  }
@@ -1,38 +1,38 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
2
  "type": "object",
3
+ "required": [
4
+ "birth_date",
5
+ "created_at",
6
+ "email",
7
+ "id",
8
+ "ip_address",
9
+ "website"
10
+ ],
11
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
12
  "properties": {
5
- "id": {
6
- "type": "string",
7
- "format": "uuid"
8
- },
9
- "email": {
13
+ "birth_date": {
10
14
  "type": "string",
11
- "format": "email"
15
+ "format": "date"
12
16
  },
13
17
  "created_at": {
14
18
  "type": "string",
15
19
  "format": "date-time"
16
20
  },
17
- "birth_date": {
21
+ "email": {
18
22
  "type": "string",
19
- "format": "date"
23
+ "format": "email"
20
24
  },
21
- "website": {
25
+ "id": {
22
26
  "type": "string",
23
- "format": "uri"
27
+ "format": "uuid"
24
28
  },
25
29
  "ip_address": {
26
30
  "type": "string",
27
31
  "format": "ipv4"
32
+ },
33
+ "website": {
34
+ "type": "string",
35
+ "format": "uri"
28
36
  }
29
- },
30
- "required": [
31
- "birth_date",
32
- "created_at",
33
- "email",
34
- "id",
35
- "ip_address",
36
- "website"
37
- ]
37
+ }
38
38
  }
@@ -1,20 +1,20 @@
1
1
  {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
2
  "type": "object",
3
+ "required": [
4
+ "description",
5
+ "name",
6
+ "status"
7
+ ],
8
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
9
  "properties": {
5
- "name": {
10
+ "description": {
6
11
  "type": "string"
7
12
  },
8
- "description": {
13
+ "name": {
9
14
  "type": "string"
10
15
  },
11
16
  "status": {
12
17
  "type": "string"
13
18
  }
14
- },
15
- "required": [
16
- "description",
17
- "name",
18
- "status"
19
- ]
19
+ }
20
20
  }