elasticgraph-support 1.0.1 → 1.0.3.rc1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 389ea95870f3da886ff56a807f488dd15bc9a7fb530e739a8f832392db2cf898
4
- data.tar.gz: 39e463b98ef99ec346895631686af930e0a249232b2fba12c93763d75983215a
3
+ metadata.gz: 0eecfcbc4d680755f6982cded5acd7b25325a1b1ca332e3d6f6357925d9f3075
4
+ data.tar.gz: e171d5668bb3f8860713222d28665f8d0146a1aa195a2e99986d4cf9840720a2
5
5
  SHA512:
6
- metadata.gz: 1e1ec0359179fb3f33e58c6f4d0e18d3009d46e3fe13bcf2da07a2a3aa44b3252a1c560d2bb9d44e2bde7a0da1af81b546f7ac974c7976dc683bf9ae21464e28
7
- data.tar.gz: 1f47d4e0805111898bbc8e4c62b0e46edd040e07fed8b54088d8ffaf2f01ef4552540836e56b8b68e60e47a762a65a307c3ac4cac9fbba1d6ce94b86b26d7894
6
+ metadata.gz: 75296e87862361697e08ae88bf60bdc3cdad19cc87fef899b581f99ea2c0fe61168844bf976774fc49d97b17828c30ebaf09a8efedacf40aacd308e70cf4d011
7
+ data.tar.gz: 17217a36ebb859f1cfa0c6e9a35b079d6ce7edee6034929d5fe418cd50e1771830f8d090793e8fc460ecce7c942e190cd27724e1175916e1cd6f63f83eb00c08
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2024 - 2025 Block, Inc.
3
+ Copyright (c) 2024 - 2026 Block, Inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -57,6 +57,9 @@ graph LR;
57
57
  elasticgraph-schema_definition["elasticgraph-schema_definition"];
58
58
  elasticgraph-schema_definition --> elasticgraph-support;
59
59
  class elasticgraph-schema_definition otherEgGemStyle;
60
+ elasticgraph-warehouse["elasticgraph-warehouse"];
61
+ elasticgraph-warehouse --> elasticgraph-support;
62
+ class elasticgraph-warehouse otherEgGemStyle;
60
63
  click logger href "https://rubygems.org/gems/logger" "Open on RubyGems.org" _blank;
61
64
  click json_schemer href "https://rubygems.org/gems/json_schemer" "Open on RubyGems.org" _blank;
62
65
  ```
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -6,6 +6,8 @@
6
6
  #
7
7
  # frozen_string_literal: true
8
8
 
9
+ require "securerandom"
10
+
9
11
  # Root namespace for all ElasticGraph code.
10
12
  module ElasticGraph
11
13
  # Here we enumerate constants that are used from multiple places in the code.
@@ -20,6 +22,15 @@ module ElasticGraph
20
22
  # @private
21
23
  DATASTORE_DATE_TIME_FORMAT = "strict_date_time"
22
24
 
25
+ # The precision (number of decimal places) used when formatting DateTime values.
26
+ # A precision of 3 means millisecond precision (e.g., "2025-12-19T04:15:47.530Z").
27
+ #
28
+ # Consistent precision is critical for min/max value tracking which uses string comparison.
29
+ # Without it, string comparison produces incorrect results (e.g., "47.53Z" > "47.531Z"
30
+ # because 'Z' (ASCII 90) > '1' (ASCII 49)).
31
+ # @private
32
+ DATE_TIME_PRECISION = 3
33
+
23
34
  # HTTP header that ElasticGraph HTTP implementations (e.g. elasticgraph-rack, elasticgraph-lambda)
24
35
  # look at to determine a client-specified request timeout.
25
36
  # @private
@@ -249,6 +260,33 @@ module ElasticGraph
249
260
  # @private
250
261
  VISIBILITY_PROFILE = :main
251
262
 
263
+ # Value used as the missing value placeholder for subaggregation on enum fields.
264
+ # This never collides with any real enum value since GraphQL enum values cannot contain `*` characters.
265
+ # @private
266
+ MISSING_ENUM_PLACEHOLDER = "**missing**"
267
+
268
+ # This is a placeholder for the actual placeholder value used for string types (keyword, text).
269
+ # When a type is configured with this placeholder value then in the graphql query layer
270
+ # we use the random valued MISSING_STRING_PLACEHOLDER_VALUE instead.
271
+ # @private
272
+ MISSING_STRING_PLACEHOLDER = "$SECURE_RANDOM_VALUE"
273
+
274
+ # A random 18 byte (24 character) base64 string used as the missing value placeholder
275
+ # for subaggregation on string fields. UUID are generally consider safe to use without
276
+ # risk of collision and since this has more random bits than a UUID it should have even
277
+ # less risk of collision. This uses a value generated randomly at runtime instead
278
+ # of using a hard-coded value in order to avoid intentional collision attacks.
279
+ # @private
280
+ MISSING_STRING_PLACEHOLDER_VALUE = SecureRandom.urlsafe_base64(18)
281
+
282
+ # Value used as the missing value placeholder for subaggregation on numeric fields.
283
+ # This never collides with any numeric values in the datastore because JSON, ElasticSearch,
284
+ # and OpenSearch aren't capable of storing NaN.
285
+ # NaN works as a placeholder for missing numeric values, but it does have the side-effect of coercing
286
+ # integers to floats so we only use it on types limited to the the JsonSafeLong range.
287
+ # @private
288
+ MISSING_NUMERIC_PLACEHOLDER = "NaN"
289
+
252
290
  # TODO(steep): it complains about `define_schema` not being defined but it is defined
253
291
  # in another file; I shouldn't have to say it's dynamic here. For now this works though.
254
292
  # @dynamic self.define_schema
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -49,6 +49,7 @@ module ElasticGraph
49
49
  alias_method :__data_initialize, :initialize
50
50
  extend ClassMethods
51
51
  include InstanceMethods
52
+
52
53
  class_exec(&(_ = block)) if block
53
54
  end
54
55
  end
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -20,8 +20,14 @@ module ElasticGraph
20
20
  # did for years.
21
21
  #
22
22
  # For more info, see: https://github.com/elastic/elasticsearch-ruby/issues/1005
23
+ # @private
23
24
  MSearchUsingGetInsteadOfPost = ::Data.define(:app) do
24
25
  # @implements MSearchUsingGetInsteadOfPost
26
+
27
+ # Processes a Faraday request, converting `_msearch` POST requests to GET requests.
28
+ #
29
+ # @param env [Faraday::Env] the Faraday request environment
30
+ # @return [Faraday::Response] the response from the next middleware in the stack
25
31
  def call(env)
26
32
  env.method = :get if env.url.path.to_s.end_with?("/_msearch")
27
33
  app.call(env)
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -20,8 +20,16 @@ module ElasticGraph
20
20
  #
21
21
  # This middleware helps us work around this deficiency by looking for the TIMEOUT_MS_HEADER. If present, it deletes
22
22
  # it from the headers and instead sets it as the request timeout.
23
+ # @private
23
24
  SupportTimeouts = ::Data.define(:app) do
24
25
  # @implements SupportTimeouts
26
+
27
+ # Processes a Faraday request, extracting timeout from headers and applying it to the request.
28
+ # Converts {TIMEOUT_MS_HEADER} from request headers into a Faraday request timeout setting.
29
+ #
30
+ # @param env [Faraday::Env] the Faraday request environment
31
+ # @return [Faraday::Response] the response from the next middleware in the stack
32
+ # @raise [Errors::RequestExceededDeadlineError] if the request times out
25
33
  def call(env)
26
34
  if (timeout_ms = env.request_headers.delete(TIMEOUT_MS_HEADER))
27
35
  env.request.timeout = Integer(timeout_ms) / 1000.0
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -43,7 +43,7 @@ module ElasticGraph
43
43
  rescue => e
44
44
  raise <<~EOS
45
45
  Failed to load `#{component_class}` with `#{yaml_file}`. This can happen if the schema artifacts are out of date.
46
- Run `rake schema_artifacts:dump` and try again.
46
+ Run `bundle exec rake schema_artifacts:dump` and try again.
47
47
 
48
48
  #{e.class}: #{e.message}
49
49
  EOS
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -51,8 +51,7 @@ module ElasticGraph
51
51
  #
52
52
  # @param overrides [Hash<String, Object>] meta schema overrides
53
53
  def self.load_strict_validator(overrides = {})
54
- # Downloaded from: https://json-schema.org/draft-07/schema
55
- schema = ::JSON.parse(::File.read(::File.expand_path("../json_schema_draft_7_schema.json", __FILE__)))
54
+ schema = ::JSONSchemer::Draft7::SCHEMA
56
55
  schema = ::ElasticGraph::Support::HashUtil.deep_merge(schema, overrides) unless overrides.empty?
57
56
 
58
57
  # The meta schema allows additionalProperties in nearly every place. While a JSON schema definition
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -25,15 +25,7 @@ module ElasticGraph
25
25
  # Encodes the given untyped value to a String so it can be indexed in a Elasticsearch/OpenSearch `keyword` field.
26
26
  def self.encode(value)
27
27
  return nil if value.nil?
28
- # Note: we use `fast_generate` here instead of `generate`. They basically act the same, except
29
- # `generate` includes an extra check for self-referential data structures. `value` here ultimately
30
- # comes out of a parsed JSON document (e.g. either from an ElasticGraph event at indexing time, or
31
- # as a GraphQL query variable at search time), and JSON cannot express self-referential data
32
- # structures, so we do not have to worry about that happening.
33
- #
34
- # ...but even if it did, we would get an error either way: `JSON.generate` would raise
35
- # `JSON::NestingError` whereas `:JSON.fast_generate` would give us a `SystemStackError`.
36
- ::JSON.fast_generate(canonicalize(value))
28
+ ::JSON.generate(canonicalize(value))
37
29
  end
38
30
 
39
31
  # Decodes a previously encoded Untyped value, returning its original value.
@@ -1,4 +1,4 @@
1
- # Copyright 2024 - 2025 Block, Inc.
1
+ # Copyright 2024 - 2026 Block, Inc.
2
2
  #
3
3
  # Use of this source code is governed by an MIT-style
4
4
  # license that can be found in the LICENSE file or at
@@ -8,7 +8,7 @@
8
8
 
9
9
  module ElasticGraph
10
10
  # The version of all ElasticGraph gems.
11
- VERSION = "1.0.1"
11
+ VERSION = "1.0.3.rc1"
12
12
 
13
13
  # Steep weirdly expects this here...
14
14
  # @dynamic self.define_schema
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticgraph-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.3.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myron Marston
@@ -31,34 +31,28 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '2.4'
34
+ version: '2.5'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '2.4'
41
+ version: '2.5'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: faraday
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '2.13'
49
- - - ">="
50
- - !ruby/object:Gem::Version
51
- version: 2.13.4
48
+ version: '2.14'
52
49
  type: :development
53
50
  prerelease: false
54
51
  version_requirements: !ruby/object:Gem::Requirement
55
52
  requirements:
56
53
  - - "~>"
57
54
  - !ruby/object:Gem::Version
58
- version: '2.13'
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 2.13.4
55
+ version: '2.14'
62
56
  email:
63
57
  - myron@squareup.com
64
58
  executables: []
@@ -75,7 +69,6 @@ files:
75
69
  - lib/elastic_graph/support/from_yaml_file.rb
76
70
  - lib/elastic_graph/support/graphql_formatter.rb
77
71
  - lib/elastic_graph/support/hash_util.rb
78
- - lib/elastic_graph/support/json_schema/json_schema_draft_7_schema.json
79
72
  - lib/elastic_graph/support/json_schema/meta_schema_validator.rb
80
73
  - lib/elastic_graph/support/json_schema/validator.rb
81
74
  - lib/elastic_graph/support/json_schema/validator_factory.rb
@@ -92,10 +85,10 @@ licenses:
92
85
  - MIT
93
86
  metadata:
94
87
  bug_tracker_uri: https://github.com/block/elasticgraph/issues
95
- changelog_uri: https://github.com/block/elasticgraph/releases/tag/v1.0.1
96
- documentation_uri: https://block.github.io/elasticgraph/api-docs/v1.0.1/
88
+ changelog_uri: https://github.com/block/elasticgraph/releases/tag/v1.0.3.rc1
89
+ documentation_uri: https://block.github.io/elasticgraph/api-docs/v1.0.3.rc1/
97
90
  homepage_uri: https://block.github.io/elasticgraph/
98
- source_code_uri: https://github.com/block/elasticgraph/tree/v1.0.1/elasticgraph-support
91
+ source_code_uri: https://github.com/block/elasticgraph/tree/v1.0.3.rc1/elasticgraph-support
99
92
  gem_category: core
100
93
  rdoc_options: []
101
94
  require_paths:
@@ -107,14 +100,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
100
  version: '3.4'
108
101
  - - "<"
109
102
  - !ruby/object:Gem::Version
110
- version: '3.5'
103
+ version: '4.1'
111
104
  required_rubygems_version: !ruby/object:Gem::Requirement
112
105
  requirements:
113
106
  - - ">="
114
107
  - !ruby/object:Gem::Version
115
108
  version: '0'
116
109
  requirements: []
117
- rubygems_version: 3.6.9
110
+ rubygems_version: 4.0.3
118
111
  specification_version: 4
119
112
  summary: Provides support utilities for other ElasticGraph gems.
120
113
  test_files: []
@@ -1,172 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "http://json-schema.org/draft-07/schema#",
4
- "title": "Core schema meta-schema",
5
- "definitions": {
6
- "schemaArray": {
7
- "type": "array",
8
- "minItems": 1,
9
- "items": { "$ref": "#" }
10
- },
11
- "nonNegativeInteger": {
12
- "type": "integer",
13
- "minimum": 0
14
- },
15
- "nonNegativeIntegerDefault0": {
16
- "allOf": [
17
- { "$ref": "#/definitions/nonNegativeInteger" },
18
- { "default": 0 }
19
- ]
20
- },
21
- "simpleTypes": {
22
- "enum": [
23
- "array",
24
- "boolean",
25
- "integer",
26
- "null",
27
- "number",
28
- "object",
29
- "string"
30
- ]
31
- },
32
- "stringArray": {
33
- "type": "array",
34
- "items": { "type": "string" },
35
- "uniqueItems": true,
36
- "default": []
37
- }
38
- },
39
- "type": ["object", "boolean"],
40
- "properties": {
41
- "$id": {
42
- "type": "string",
43
- "format": "uri-reference"
44
- },
45
- "$schema": {
46
- "type": "string",
47
- "format": "uri"
48
- },
49
- "$ref": {
50
- "type": "string",
51
- "format": "uri-reference"
52
- },
53
- "$comment": {
54
- "type": "string"
55
- },
56
- "title": {
57
- "type": "string"
58
- },
59
- "description": {
60
- "type": "string"
61
- },
62
- "default": true,
63
- "readOnly": {
64
- "type": "boolean",
65
- "default": false
66
- },
67
- "writeOnly": {
68
- "type": "boolean",
69
- "default": false
70
- },
71
- "examples": {
72
- "type": "array",
73
- "items": true
74
- },
75
- "multipleOf": {
76
- "type": "number",
77
- "exclusiveMinimum": 0
78
- },
79
- "maximum": {
80
- "type": "number"
81
- },
82
- "exclusiveMaximum": {
83
- "type": "number"
84
- },
85
- "minimum": {
86
- "type": "number"
87
- },
88
- "exclusiveMinimum": {
89
- "type": "number"
90
- },
91
- "maxLength": { "$ref": "#/definitions/nonNegativeInteger" },
92
- "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
93
- "pattern": {
94
- "type": "string",
95
- "format": "regex"
96
- },
97
- "additionalItems": { "$ref": "#" },
98
- "items": {
99
- "anyOf": [
100
- { "$ref": "#" },
101
- { "$ref": "#/definitions/schemaArray" }
102
- ],
103
- "default": true
104
- },
105
- "maxItems": { "$ref": "#/definitions/nonNegativeInteger" },
106
- "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
107
- "uniqueItems": {
108
- "type": "boolean",
109
- "default": false
110
- },
111
- "contains": { "$ref": "#" },
112
- "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" },
113
- "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
114
- "required": { "$ref": "#/definitions/stringArray" },
115
- "additionalProperties": { "$ref": "#" },
116
- "definitions": {
117
- "type": "object",
118
- "additionalProperties": { "$ref": "#" },
119
- "default": {}
120
- },
121
- "properties": {
122
- "type": "object",
123
- "additionalProperties": { "$ref": "#" },
124
- "default": {}
125
- },
126
- "patternProperties": {
127
- "type": "object",
128
- "additionalProperties": { "$ref": "#" },
129
- "propertyNames": { "format": "regex" },
130
- "default": {}
131
- },
132
- "dependencies": {
133
- "type": "object",
134
- "additionalProperties": {
135
- "anyOf": [
136
- { "$ref": "#" },
137
- { "$ref": "#/definitions/stringArray" }
138
- ]
139
- }
140
- },
141
- "propertyNames": { "$ref": "#" },
142
- "const": true,
143
- "enum": {
144
- "type": "array",
145
- "items": true,
146
- "minItems": 1,
147
- "uniqueItems": true
148
- },
149
- "type": {
150
- "anyOf": [
151
- { "$ref": "#/definitions/simpleTypes" },
152
- {
153
- "type": "array",
154
- "items": { "$ref": "#/definitions/simpleTypes" },
155
- "minItems": 1,
156
- "uniqueItems": true
157
- }
158
- ]
159
- },
160
- "format": { "type": "string" },
161
- "contentMediaType": { "type": "string" },
162
- "contentEncoding": { "type": "string" },
163
- "if": { "$ref": "#" },
164
- "then": { "$ref": "#" },
165
- "else": { "$ref": "#" },
166
- "allOf": { "$ref": "#/definitions/schemaArray" },
167
- "anyOf": { "$ref": "#/definitions/schemaArray" },
168
- "oneOf": { "$ref": "#/definitions/schemaArray" },
169
- "not": { "$ref": "#" }
170
- },
171
- "default": true
172
- }