Class: Apiwork::Adapter::Wrapper::Shape

Inherits:
Object
  • Object
show all
Defined in:
lib/apiwork/adapter/wrapper/shape.rb

Overview

Base class for wrapper shapes.

Subclass to define response type structure for record or collection wrappers. The block is evaluated via instance_exec, providing access to type DSL methods and helpers like root_key and #metadata_type_names.

Examples:

Custom shape class

class MyShape < Wrapper::Shape
  def apply
    reference(:invoice)
    object?(:meta)
    .each { |type_name| merge(type_name) }
  end
end

Inline shape block

shape do
  reference(root_key.singular.to_sym)
  object?(:meta)
  .each { |type_name| merge(type_name) }
end

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(target, root_key, metadata_type_names, data_type: nil) ⇒ Shape

Returns a new instance of Shape.



190
191
192
193
194
195
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 190

def initialize(target, root_key, , data_type: nil)
  @target = target
  @root_key = root_key
  @metadata_type_names = 
  @data_type = data_type
end

Instance Attribute Details

#data_typeSymbol? (readonly)

The data type for this shape.

Returns:

  • (Symbol, nil)


60
61
62
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 60

def data_type
  @data_type
end

#metadata_type_namesArray<Symbol> (readonly)

The metadata type names for this shape.

Auto-generated type names from capability Capability::Operation::Base.metadata_shape definitions. Use with #merge to include capability metadata fields in the shape.

Returns:

  • (Array<Symbol>)


60
61
62
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 60

attr_reader :data_type,
:metadata_type_names,
:root_key

#root_keyObject (readonly)



60
61
62
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 60

attr_reader :data_type,
:metadata_type_names,
:root_key

Class Method Details

.apply(target, root_key, capabilities, representation_class, type, data_type: nil) ⇒ Object



30
31
32
33
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 30

def apply(target, root_key, capabilities, representation_class, type, data_type: nil)
   = (capabilities, representation_class, type)
  new(target, root_key, , data_type:).apply
end

Instance Method Details

#applyObject

Raises:

  • (NotImplementedError)


197
198
199
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 197

def apply
  raise NotImplementedError
end

#array(name, **options, &block) ⇒ Object



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#array?(name, **options, &block) ⇒ Object

See Also:

  • API::Object#array?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#binary(name, **options) ⇒ Object

See Also:

  • API::Object#binary


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#binary?(name, **options) ⇒ Object

See Also:

  • API::Object#binary?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#boolean(name, **options) ⇒ Object

See Also:

  • API::Object#boolean


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#boolean?(name, **options) ⇒ Object

See Also:

  • API::Object#boolean?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#date(name, **options) ⇒ Object

See Also:

  • API::Object#date


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#date?(name, **options) ⇒ Object

See Also:

  • API::Object#date?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#datetime(name, **options) ⇒ Object

See Also:

  • API::Object#datetime


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#datetime?(name, **options) ⇒ Object

See Also:

  • API::Object#datetime?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#decimal(name, **options) ⇒ Object

See Also:

  • API::Object#decimal


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#decimal?(name, **options) ⇒ Object

See Also:

  • API::Object#decimal?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#extends(type) ⇒ Object

See Also:

  • API::Object#extends


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#integer(name, **options) ⇒ Object

See Also:

  • API::Object#integer


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#integer?(name, **options) ⇒ Object

See Also:

  • API::Object#integer?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#literal(name, value:, **options) ⇒ Object

See Also:

  • API::Object#literal


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#merge(other) ⇒ Object

See Also:

  • API::Object#merge


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#number(name, **options) ⇒ Object

See Also:

  • API::Object#number


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#number?(name, **options) ⇒ Object

See Also:

  • API::Object#number?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#object(name, **options, &block) ⇒ Object

See Also:

  • API::Object#object


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#object?(name, **options, &block) ⇒ Object

See Also:

  • API::Object#object?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#reference(name, **options) ⇒ Object

See Also:

  • API::Object#reference


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#reference?(name, **options) ⇒ Object

See Also:

  • API::Object#reference?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#string(name, **options) ⇒ Object

See Also:

  • API::Object#string


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#string?(name, **options) ⇒ Object

See Also:

  • API::Object#string?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#time(name, **options) ⇒ Object

See Also:

  • API::Object#time


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#time?(name, **options) ⇒ Object

See Also:

  • API::Object#time?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#union(name, **options, &block) ⇒ Object

See Also:

  • API::Object#union


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#union?(name, **options, &block) ⇒ Object

See Also:

  • API::Object#union?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#uuid(name, **options) ⇒ Object

See Also:

  • API::Object#uuid


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target

#uuid?(name, **options) ⇒ Object

See Also:

  • API::Object#uuid?


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/apiwork/adapter/wrapper/shape.rb', line 157

delegate :array,
:array?,
:binary,
:binary?,
:boolean,
:boolean?,
:date,
:date?,
:datetime,
:datetime?,
:decimal,
:decimal?,
:extends,
:integer,
:integer?,
:literal,
:merge,
:number,
:number?,
:object,
:object?,
:reference,
:reference?,
:string,
:string?,
:time,
:time?,
:union,
:union?,
:uuid,
:uuid?,
to: :@target