Class: Jsapi::Meta::Schema::Object
- Inherits:
-
Base
- Object
- Model::Base
- Base
- Jsapi::Meta::Schema::Object
- Defined in:
- lib/jsapi/meta/schema/object.rb
Defined Under Namespace
Classes: Wrapper
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#add_property(name, keywords = {}) ⇒ Object
:nodoc:.
-
#additional_properties ⇒ Object
:attr: additional_properties The AdditionalProperties.
-
#all_of_references ⇒ Object
:attr: all_of_references.
-
#discriminator ⇒ Object
:attr: discriminator The Discriminator.
-
#model ⇒ Object
:attr: model The model class to access nested object parameters by.
-
#properties ⇒ Object
:attr: properties The properties.
- #resolve_properties(definitions, context: nil) ⇒ Object
-
#to_json_schema ⇒ Object
:nodoc:.
-
#to_openapi(version) ⇒ Object
:nodoc:.
Methods inherited from Base
#default, #deprecated, #description, #enum, #enum=, #examples, #existence, #external_docs, #initialize, #nullable?, #omittable?, #title, #type
Methods included from OpenAPI::Extensions
Methods inherited from Model::Base
#initialize, #inspect, #merge!, #reference?, #resolve
Methods included from Model::Attributes
#attributes_frozen?, #freeze_attributes, included
Constructor Details
This class inherits a constructor from Jsapi::Meta::Schema::Base
Instance Method Details
#add_property(name, keywords = {}) ⇒ Object
:nodoc:
91 92 93 94 95 |
# File 'lib/jsapi/meta/schema/object.rb', line 91 def add_property(name, keywords = {}) # :nodoc: try_modify_attribute!(:properties) do (@properties ||= {})[name.to_s] = Property.new(name, keywords) end end |
#additional_properties ⇒ Object
:attr: additional_properties The AdditionalProperties.
66 |
# File 'lib/jsapi/meta/schema/object.rb', line 66 attribute :additional_properties, AdditionalProperties |
#all_of_references ⇒ Object
:attr: all_of_references
70 |
# File 'lib/jsapi/meta/schema/object.rb', line 70 attribute :all_of_references, [Reference] |
#discriminator ⇒ Object
:attr: discriminator The Discriminator.
78 |
# File 'lib/jsapi/meta/schema/object.rb', line 78 attribute :discriminator, Discriminator |
#model ⇒ Object
:attr: model The model class to access nested object parameters by. The default model class is Jsapi::Model::Base.
84 |
# File 'lib/jsapi/meta/schema/object.rb', line 84 attribute :model, Class, default: Jsapi::Model::Base |
#properties ⇒ Object
:attr: properties The properties. Maps property names to Property objects.
89 |
# File 'lib/jsapi/meta/schema/object.rb', line 89 attribute :properties, { String => Property }, accessors: %i[reader writer] |
#resolve_properties(definitions, context: nil) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/jsapi/meta/schema/object.rb', line 97 def resolve_properties(definitions, context: nil) properties = merge_properties(definitions, []) case context when :response properties.reject { |_k, v| v.write_only? } when :request properties.reject { |_k, v| v.read_only? } else properties end end |
#to_json_schema ⇒ Object
:nodoc:
110 111 112 113 114 115 116 117 |
# File 'lib/jsapi/meta/schema/object.rb', line 110 def to_json_schema # :nodoc: super.merge( allOf: all_of_references.map(&:to_json_schema).presence, properties: properties.transform_values(&:to_json_schema), additionalProperties: additional_properties&.to_json_schema, required: properties.values.select(&:required?).map(&:name) ).compact end |
#to_openapi(version) ⇒ Object
:nodoc:
119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/jsapi/meta/schema/object.rb', line 119 def to_openapi(version, *) # :nodoc: super.merge( allOf: all_of_references.map do |schema| schema.to_openapi(version) end.presence, discriminator: discriminator&.to_openapi(version), properties: properties.transform_values do |property| property.to_openapi(version) end, additionalProperties: additional_properties&.to_openapi(version), required: properties.values.select(&:required?).map(&:name) ).compact end |