swagger-blocks 2.0.2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +5 -5
  2. data/.github/ISSUE_TEMPLATE.md +4 -0
  3. data/lib/swagger/blocks.rb +14 -0
  4. data/lib/swagger/blocks/class_methods.rb +16 -2
  5. data/lib/swagger/blocks/internal_helpers.rb +25 -0
  6. data/lib/swagger/blocks/node.rb +48 -10
  7. data/lib/swagger/blocks/nodes/all_of_node.rb +6 -5
  8. data/lib/swagger/blocks/nodes/callback_destination_node.rb +11 -0
  9. data/lib/swagger/blocks/nodes/callback_method_node.rb +16 -0
  10. data/lib/swagger/blocks/nodes/callback_node.rb +11 -0
  11. data/lib/swagger/blocks/nodes/component_node.rb +50 -0
  12. data/lib/swagger/blocks/nodes/content_node.rb +20 -0
  13. data/lib/swagger/blocks/nodes/example_node.rb +3 -1
  14. data/lib/swagger/blocks/nodes/flow_node.rb +11 -0
  15. data/lib/swagger/blocks/nodes/header_node.rb +4 -0
  16. data/lib/swagger/blocks/nodes/items_node.rb +1 -1
  17. data/lib/swagger/blocks/nodes/link_node.rb +11 -0
  18. data/lib/swagger/blocks/nodes/link_parameter_node.rb +8 -0
  19. data/lib/swagger/blocks/nodes/one_of_node.rb +11 -0
  20. data/lib/swagger/blocks/nodes/operation_node.rb +15 -0
  21. data/lib/swagger/blocks/nodes/parameter_node.rb +5 -0
  22. data/lib/swagger/blocks/nodes/path_node.rb +6 -0
  23. data/lib/swagger/blocks/nodes/property_node.rb +5 -0
  24. data/lib/swagger/blocks/nodes/request_body_node.rb +12 -0
  25. data/lib/swagger/blocks/nodes/response_node.rb +17 -4
  26. data/lib/swagger/blocks/nodes/root_node.rb +16 -2
  27. data/lib/swagger/blocks/nodes/schema_node.rb +9 -0
  28. data/lib/swagger/blocks/nodes/scopes_node.rb +0 -1
  29. data/lib/swagger/blocks/nodes/security_scheme_node.rb +5 -1
  30. data/lib/swagger/blocks/nodes/server_node.rb +12 -0
  31. data/lib/swagger/blocks/nodes/value_node.rb +8 -0
  32. data/lib/swagger/blocks/nodes/variable_node.rb +8 -0
  33. data/lib/swagger/blocks/nodes/vendor_extension_node.rb +9 -0
  34. data/lib/swagger/blocks/root.rb +8 -1
  35. data/lib/swagger/blocks/version.rb +1 -1
  36. data/spec/lib/swagger_v2_blocks_spec.rb +1 -1
  37. data/spec/lib/swagger_v3_api_declaration.json +592 -0
  38. data/spec/lib/swagger_v3_blocks_spec.rb +555 -0
  39. metadata +22 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 404b9602f5da9794e8be26ad7bfb2e843f670e39
4
- data.tar.gz: dbee5a43cd192a43fe752704067b525592cd5708
2
+ SHA256:
3
+ metadata.gz: 32f19fd2faba19b9d8fd4111231781cc850037de8aa3042b7d0b7c35093370d4
4
+ data.tar.gz: 5799cb21a1651e9845d833aae1ee3eb318a475f31d204147e332b0a7c7305251
5
5
  SHA512:
6
- metadata.gz: 3bf6cd4d6fd437f153c0ea1ac24d961392f205e10f03a5a517791f4305fb4010b36a8b8046d3f06ab010c1e653b09e663f0ef92b15a3335148684aef94876d9f
7
- data.tar.gz: a4851231553d499aea5ff4870b37f0f4ae807d962b00cfb9cb62da910e69b21ce15ae58f6a38592be3d7c91d64d879842060b16add4e6cb17a08a69cb92ee269
6
+ metadata.gz: ed7faabe133513535df3165f36d090ef3a8fbc7171d04d0d820c0f673fe118117b5ddbd23790175099224a8c1a56c495ddb15ec7306d2cf038de331ef5b48cff
7
+ data.tar.gz: 2a8ea7db734e7093086f5e8a75d15af7f8208a37c89d172a4f0af7fd12aff91c1c23ca9eaa4a21089d4150092114ae8c21dde7ea004b0629b3497383a73141c3
@@ -0,0 +1,4 @@
1
+ #
2
+ # PLEASE READ THIS BEFORE FILING AN ISSUE:
3
+ # https://github.com/fotinakis/swagger-blocks/#filing-issues
4
+ #
@@ -9,26 +9,40 @@ module Swagger
9
9
 
10
10
  module Nodes
11
11
  autoload :AllOfNode, 'swagger/blocks/nodes/all_of_node'
12
+ autoload :CallbackNode, 'swagger/blocks/nodes/callback_node'
13
+ autoload :CallbackDestinationNode, 'swagger/blocks/nodes/callback_destination_node'
14
+ autoload :CallbackMethodNode, 'swagger/blocks/nodes/callback_method_node'
15
+ autoload :ComponentNode, 'swagger/blocks/nodes/component_node'
12
16
  autoload :ContactNode, 'swagger/blocks/nodes/contact_node'
17
+ autoload :ContentNode, 'swagger/blocks/nodes/content_node'
13
18
  autoload :ExampleNode, 'swagger/blocks/nodes/example_node'
14
19
  autoload :ExternalDocsNode, 'swagger/blocks/nodes/external_docs_node'
20
+ autoload :FlowNode, 'swagger/blocks/nodes/flow_node'
15
21
  autoload :HeaderNode, 'swagger/blocks/nodes/header_node'
16
22
  autoload :InfoNode, 'swagger/blocks/nodes/info_node'
17
23
  autoload :ItemsNode, 'swagger/blocks/nodes/items_node'
18
24
  autoload :LicenseNode, 'swagger/blocks/nodes/license_node'
25
+ autoload :LinkNode, 'swagger/blocks/nodes/link_node'
26
+ autoload :LinkParameterNode, 'swagger/blocks/nodes/link_parameter_node'
27
+ autoload :OneOfNode, 'swagger/blocks/nodes/one_of_node'
19
28
  autoload :OperationNode, 'swagger/blocks/nodes/operation_node'
20
29
  autoload :ParameterNode, 'swagger/blocks/nodes/parameter_node'
21
30
  autoload :PathNode, 'swagger/blocks/nodes/path_node'
22
31
  autoload :PropertiesNode, 'swagger/blocks/nodes/properties_node'
23
32
  autoload :PropertyNode, 'swagger/blocks/nodes/property_node'
33
+ autoload :RequestBodyNode, 'swagger/blocks/nodes/request_body_node'
24
34
  autoload :ResponseNode, 'swagger/blocks/nodes/response_node'
25
35
  autoload :RootNode, 'swagger/blocks/nodes/root_node'
26
36
  autoload :SchemaNode, 'swagger/blocks/nodes/schema_node'
27
37
  autoload :ScopesNode, 'swagger/blocks/nodes/scopes_node'
28
38
  autoload :SecurityRequirementNode, 'swagger/blocks/nodes/security_requirement_node'
29
39
  autoload :SecuritySchemeNode, 'swagger/blocks/nodes/security_scheme_node'
40
+ autoload :ServerNode, 'swagger/blocks/nodes/server_node'
30
41
  autoload :TagNode, 'swagger/blocks/nodes/tag_node'
42
+ autoload :ValueNode, 'swagger/blocks/nodes/value_node'
43
+ autoload :VariableNode, 'swagger/blocks/nodes/variable_node'
31
44
  autoload :XmlNode, 'swagger/blocks/nodes/xml_node'
45
+ autoload :VendorExtensionNode, 'swagger/blocks/nodes/vendor_extension_node'
32
46
  end
33
47
  end
34
48
  end
@@ -9,6 +9,14 @@ module Swagger
9
9
  @swagger_root_node ||= Swagger::Blocks::Nodes::RootNode.call(inline_keys: inline_keys, &block)
10
10
  end
11
11
 
12
+ def version
13
+ if defined?(@swagger_root_node) && @swagger_root_node.data[:info] && @swagger_root_node.data[:info].version == '3.0.0'
14
+ '3.0.0'
15
+ else
16
+ '2.0'
17
+ end
18
+ end
19
+
12
20
  # v2.0: Defines a Swagger Path Item object
13
21
  # https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#path-item-object
14
22
  def swagger_path(path, &block)
@@ -25,7 +33,7 @@ module Swagger
25
33
  path_node.instance_eval(&block)
26
34
  else
27
35
  # First time we've seen this path
28
- @swagger_path_node_map[path] = Swagger::Blocks::Nodes::PathNode.call(version: '2.0', &block)
36
+ @swagger_path_node_map[path] = Swagger::Blocks::Nodes::PathNode.call(version: version, &block)
29
37
  end
30
38
  end
31
39
 
@@ -41,10 +49,14 @@ module Swagger
41
49
  schema_node.instance_eval(&block)
42
50
  else
43
51
  # First time we've seen this schema_node
44
- @swagger_schema_node_map[name] = Swagger::Blocks::Nodes::SchemaNode.call(version: '2.0', inline_keys: inline_keys, &block)
52
+ @swagger_schema_node_map[name] = Swagger::Blocks::Nodes::SchemaNode.call(version: version, inline_keys: inline_keys, &block)
45
53
  end
46
54
  end
47
55
 
56
+ def swagger_component(inline_keys = nil, &block)
57
+ @swagger_components_node ||= Swagger::Blocks::Nodes::ComponentNode.call(version: '3.0.0', inline_keys: inline_keys, &block)
58
+ end
59
+
48
60
  def _swagger_nodes
49
61
  # Avoid initialization warnings.
50
62
  @swagger_root_node ||= nil
@@ -52,12 +64,14 @@ module Swagger
52
64
  @swagger_schema_node_map ||= nil
53
65
  @swagger_api_root_node_map ||= {}
54
66
  @swagger_models_node ||= nil
67
+ @swagger_components_node ||= nil
55
68
 
56
69
  data = {root_node: @swagger_root_node}
57
70
  data[:path_node_map] = @swagger_path_node_map
58
71
  data[:schema_node_map] = @swagger_schema_node_map
59
72
  data[:api_node_map] = @swagger_api_root_node_map
60
73
  data[:models_node] = @swagger_models_node
74
+ data[:component_node] = @swagger_components_node
61
75
  data
62
76
  end
63
77
  end
@@ -10,6 +10,8 @@ module Swagger
10
10
 
11
11
  path_node_map = {}
12
12
  schema_node_map = {}
13
+ component_node = nil
14
+
13
15
  swaggered_classes.each do |swaggered_class|
14
16
  next unless swaggered_class.respond_to?(:_swagger_nodes, true)
15
17
  swagger_nodes = swaggered_class.send(:_swagger_nodes)
@@ -23,11 +25,29 @@ module Swagger
23
25
  if swagger_nodes[:schema_node_map]
24
26
  schema_node_map.merge!(swagger_nodes[:schema_node_map])
25
27
  end
28
+ if swagger_nodes[:component_node]
29
+ if component_node
30
+ merge_components(component_node, swagger_nodes, :examples)
31
+ merge_components(component_node, swagger_nodes, :links)
32
+ merge_components(component_node, swagger_nodes, :parameters)
33
+ merge_components(component_node, swagger_nodes, :requestBodies)
34
+ merge_components(component_node, swagger_nodes, :responses)
35
+ merge_components(component_node, swagger_nodes, :schemas)
36
+ merge_components(component_node, swagger_nodes, :securitySchemes)
37
+ else
38
+ component_node = swagger_nodes[:component_node]
39
+ end
40
+ end
26
41
  end
42
+
27
43
  data = {root_node: self.limit_root_node(root_nodes)}
44
+
28
45
  if data[:root_node].is_swagger_2_0?
29
46
  data[:path_nodes] = path_node_map
30
47
  data[:schema_nodes] = schema_node_map
48
+ elsif data[:root_node].is_openapi_3_0?
49
+ data[:path_nodes] = path_node_map
50
+ data[:component_node] = component_node
31
51
  else
32
52
  data[:api_node_map] = api_node_map
33
53
  data[:models_nodes] = models_nodes
@@ -35,6 +55,11 @@ module Swagger
35
55
  data
36
56
  end
37
57
 
58
+ def self.merge_components(component_node, swagger_nodes, key)
59
+ component_node.data[key] ||= {}
60
+ component_node.data[key].merge!(swagger_nodes[:component_node].data[key]) if swagger_nodes[:component_node].data[key]
61
+ end
62
+
38
63
  # Make sure there is exactly one root_node and return it.
39
64
  # TODO should this merge the contents of the root nodes instead?
40
65
  def self.limit_root_node(root_nodes)
@@ -4,6 +4,8 @@ module Swagger
4
4
  class Node
5
5
  attr_accessor :name
6
6
  attr_writer :version
7
+ VERSION_2 = '2.0'
8
+ VERSION_3 = '3.0.0'
7
9
 
8
10
  def self.call(options = {}, &block)
9
11
  # Create a new instance and evaluate the block into it.
@@ -15,20 +17,35 @@ module Swagger
15
17
  instance
16
18
  end
17
19
 
18
- def as_json
19
- result = {}
20
+ def as_json(options = {})
21
+ version = options.fetch(:version, VERSION_2)
20
22
 
23
+ result = {}
21
24
  self.data.each do |key, value|
22
25
  if value.is_a?(Node)
23
- result[key] = value.as_json
26
+ result[key] = value.as_json(version: version)
24
27
  elsif value.is_a?(Array)
25
28
  result[key] = []
26
- value.each { |v| result[key] << (v.respond_to?(:as_json) ? v.as_json : v) }
27
- elsif is_swagger_2_0? && value.is_a?(Hash)
29
+ value.each do |v|
30
+ result[key] << value_as_json(v, version)
31
+ end
32
+ elsif value.is_a?(Hash)
28
33
  result[key] = {}
29
- value.each_pair {|k, v| result[key][k] = (v.respond_to?(:as_json) ? v.as_json : v) }
30
- elsif is_swagger_2_0? && key.to_s.eql?('$ref') && (value.to_s !~ %r{^#/|https?://})
34
+ value.each_pair {|k, v| result[key][k] = value_as_json(v, version) }
35
+ elsif version == VERSION_2 && ref?(key) && !static_ref?(value)
31
36
  result[key] = "#/definitions/#{value}"
37
+ elsif version == VERSION_3 && ref?(key) && self.is_a?(Swagger::Blocks::Nodes::LinkNode) && !static_ref?(value)
38
+ result[key] = "#/components/links/#{value}"
39
+ elsif version == VERSION_3 && ref?(key) && self.is_a?(Swagger::Blocks::Nodes::ExampleNode) && !static_ref?(value)
40
+ result[key] = "#/components/examples/#{value}"
41
+ elsif version == VERSION_3 && ref?(key) && self.is_a?(Swagger::Blocks::Nodes::ParameterNode) && !static_ref?(value)
42
+ result[key] = "#/components/parameters/#{value}"
43
+ elsif version == VERSION_3 && ref?(key) && self.is_a?(Swagger::Blocks::Nodes::RequestBodyNode) && !static_ref?(value)
44
+ result[key] = "#/components/requestBodies/#{value}"
45
+ elsif version == VERSION_3 && ref?(key) && self.is_a?(Swagger::Blocks::Nodes::ResponseNode) && !static_ref?(value)
46
+ result[key] = "#/components/responses/#{value}"
47
+ elsif version == VERSION_3 && ref?(key) && !static_ref?(value)
48
+ result[key] = "#/components/schemas/#{value}"
32
49
  else
33
50
  result[key] = value
34
51
  end
@@ -38,6 +55,22 @@ module Swagger
38
55
  {name => result}
39
56
  end
40
57
 
58
+ def ref?(key)
59
+ key.to_s.eql?('$ref')
60
+ end
61
+
62
+ def static_ref?(value)
63
+ value.to_s =~ %r{^#/|https?://}
64
+ end
65
+
66
+ def value_as_json(value, version)
67
+ if value.respond_to?(:as_json)
68
+ value.as_json(version: version)
69
+ else
70
+ value
71
+ end
72
+ end
73
+
41
74
  def data
42
75
  @data ||= {}
43
76
  end
@@ -52,12 +85,17 @@ module Swagger
52
85
 
53
86
  def version
54
87
  return @version if instance_variable_defined?('@version') && @version
55
- return '2.0' if data.has_key?(:swagger) && data[:swagger] == '2.0'
56
- raise DeclarationError, "You must specify swagger '2.0'"
88
+ return VERSION_2 if data.has_key?(:swagger) && data[:swagger] == VERSION_2
89
+ return VERSION_3 if data.has_key?(:openapi) && data[:openapi] == VERSION_3
90
+ raise DeclarationError, "You must specify swagger '#{VERSION_2}' or openapi '#{VERSION_3}'"
57
91
  end
58
92
 
59
93
  def is_swagger_2_0?
60
- version == '2.0'
94
+ version == VERSION_2
95
+ end
96
+
97
+ def is_openapi_3_0?
98
+ version == VERSION_3
61
99
  end
62
100
  end
63
101
  end
@@ -2,19 +2,20 @@ module Swagger
2
2
  module Blocks
3
3
  module Nodes
4
4
  class AllOfNode < Node
5
- def as_json
5
+ def as_json(options = {})
6
+ version = options.fetch(:version, '2.0')
6
7
  result = []
7
8
 
8
9
  self.data.each do |value|
9
10
  if value.is_a?(Node)
10
- result << value.as_json
11
+ result << value.as_json(version: version)
11
12
  elsif value.is_a?(Array)
12
13
  r = []
13
- value.each { |v| r << (v.respond_to?(:as_json) ? v.as_json : v) }
14
+ value.each { |v| r << value_as_json(v, version) }
14
15
  result << r
15
- elsif is_swagger_2_0? && value.is_a?(Hash)
16
+ elsif (is_swagger_2_0? || is_openapi_3_0?) && value.is_a?(Hash)
16
17
  r = {}
17
- value.each_pair {|k, v| r[k] = (v.respond_to?(:as_json) ? v.as_json : v) }
18
+ value.each_pair {|k, v| r[k] = value_as_json(v, version) }
18
19
  result << r
19
20
  else
20
21
  result = value
@@ -0,0 +1,11 @@
1
+ module Swagger
2
+ module Blocks
3
+ module Nodes
4
+ class CallbackDestinationNode < Node
5
+ def method(method_name, inline_keys = nil, &block)
6
+ self.data[method_name] = Swagger::Blocks::Nodes::CallbackMethodNode.call(version: version, inline_keys: inline_keys, &block)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ module Swagger
2
+ module Blocks
3
+ module Nodes
4
+ class CallbackMethodNode < Node
5
+ def request_body(inline_keys = nil, &block)
6
+ self.data[:requestBody] = Swagger::Blocks::Nodes::RequestBodyNode.call(version: version, inline_keys: inline_keys, &block)
7
+ end
8
+
9
+ def response(resp, inline_keys = nil, &block)
10
+ self.data[:responses] ||= {}
11
+ self.data[:responses][resp] = Swagger::Blocks::Nodes::ResponseNode.call(version: version, inline_keys: inline_keys, &block)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ module Swagger
2
+ module Blocks
3
+ module Nodes
4
+ class CallbackNode < Node
5
+ def destination(address, inline_keys = nil, &block)
6
+ self.data[address] = Swagger::Blocks::Nodes::CallbackDestinationNode.call(version: version, inline_keys: inline_keys, &block)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,50 @@
1
+ module Swagger
2
+ module Blocks
3
+ module Nodes
4
+ class ComponentNode < Node
5
+ def schema(name, inline_keys = nil, &block)
6
+ self.data[:schemas] ||= {}
7
+ schema_node = self.data[:schemas][name]
8
+
9
+ if schema_node
10
+ # Merge this schema_node declaration into the previous one
11
+ schema_node.instance_eval(&block)
12
+ else
13
+ # First time we've seen this schema_node
14
+ self.data[:schemas][name] = Swagger::Blocks::Nodes::SchemaNode.call(version: '3.0.0', inline_keys: inline_keys, &block)
15
+ end
16
+ end
17
+
18
+ def link(name, inline_keys = nil, &block)
19
+ self.data[:links] ||= {}
20
+ self.data[:links][name] = Swagger::Blocks::Nodes::LinkNode.call(version: version, inline_keys: inline_keys, &block)
21
+ end
22
+
23
+ def example(name, inline_keys = nil, &block)
24
+ self.data[:examples] ||= {}
25
+ self.data[:examples][name] = Swagger::Blocks::Nodes::ExampleNode.call(version: version, inline_keys: inline_keys, &block)
26
+ end
27
+
28
+ def security_scheme(name, inline_keys = nil, &block)
29
+ self.data[:securitySchemes] ||= {}
30
+ self.data[:securitySchemes][name] = Swagger::Blocks::Nodes::SecuritySchemeNode.call(version: version, inline_keys: inline_keys, &block)
31
+ end
32
+
33
+ def parameter(name, inline_keys = nil, &block)
34
+ self.data[:parameters] ||= {}
35
+ self.data[:parameters][name] = Swagger::Blocks::Nodes::ParameterNode.call(version: version, inline_keys: inline_keys, &block)
36
+ end
37
+
38
+ def request_body(name, inline_keys = nil, &block)
39
+ self.data[:requestBodies] ||= {}
40
+ self.data[:requestBodies][name] = Swagger::Blocks::Nodes::RequestBodyNode.call(version: version, inline_keys: inline_keys, &block)
41
+ end
42
+
43
+ def response(name, inline_keys = nil, &block)
44
+ self.data[:responses] ||= {}
45
+ self.data[:responses][name] = Swagger::Blocks::Nodes::ResponseNode.call(version: version, inline_keys: inline_keys, &block)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,20 @@
1
+ module Swagger
2
+ module Blocks
3
+ module Nodes
4
+ class ContentNode < Node
5
+ def schema(inline_keys = nil, &block)
6
+ self.data[:schema] = Swagger::Blocks::Nodes::SchemaNode.call(version: version, inline_keys: inline_keys, &block)
7
+ end
8
+
9
+ def example(name = nil, inline_keys = nil, &block)
10
+ if name.nil?
11
+ self.data[:example] = Swagger::Blocks::Nodes::ExampleNode.call(version: version, inline_keys: inline_keys, &block)
12
+ else
13
+ self.data[:examples] ||= {}
14
+ self.data[:examples][name] = Swagger::Blocks::Nodes::ExampleNode.call(version: version, inline_keys: inline_keys, &block)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,8 +1,10 @@
1
1
  module Swagger
2
2
  module Blocks
3
3
  module Nodes
4
- # v2.0:
5
4
  class ExampleNode < Node
5
+ def value(inline_keys = nil, &block)
6
+ self.data[:value] = Swagger::Blocks::Nodes::ValueNode.call(version: version, inline_keys: inline_keys, &block)
7
+ end
6
8
  end
7
9
  end
8
10
  end
@@ -0,0 +1,11 @@
1
+ module Swagger
2
+ module Blocks
3
+ module Nodes
4
+ class FlowNode < Node
5
+ def scopes(inline_keys = nil, &block)
6
+ self.data[:scopes] = Swagger::Blocks::Nodes::ScopesNode.call(version: version, inline_keys: inline_keys, &block)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -6,6 +6,10 @@ module Swagger
6
6
  def items(inline_keys = nil, &block)
7
7
  self.data[:items] = Swagger::Blocks::Nodes::ItemsNode.call(version: version, inline_keys: inline_keys, &block)
8
8
  end
9
+
10
+ def schema(inline_keys = nil, &block)
11
+ self.data[:schema] = Swagger::Blocks::Nodes::SchemaNode.call(version: version, inline_keys: inline_keys, &block)
12
+ end
9
13
  end
10
14
  end
11
15
  end
@@ -8,7 +8,7 @@ module Swagger
8
8
  self.data[:properties].version = version
9
9
  self.data[:properties].property(name, inline_keys, &block)
10
10
  end
11
-
11
+
12
12
  def items(inline_keys = nil, &block)
13
13
  self.data[:items] = Swagger::Blocks::Nodes::ItemsNode.call(version: version, inline_keys: inline_keys, &block)
14
14
  end