module WarpEngine::AdminApi::Schema
Builders of the JSON schema hashes the Admin API documents its inputs and answers with.
Public Instance Methods
# File lib/warp_engine/admin_api/schema.rb, line 24 def array(items, description = nil, **options) typed("array", description, options.merge(items: items)) end
An array schema of items.
# File lib/warp_engine/admin_api/schema.rb, line 12 def boolean(description = nil, **options) = typed("boolean", description, options)
A boolean schema.
# File lib/warp_engine/admin_api/schema.rb, line 14 def datetime(description = nil, **options) = typed("string", description, options.merge(format: "date-time"))
A date-time formatted string schema.
# File lib/warp_engine/admin_api/schema.rb, line 19 def enum(values, description = nil, **options) string(description, **options.merge(enum: values.map(&:to_s))) end
A string schema restricted to values.
# File lib/warp_engine/admin_api/schema.rb, line 16 def id(description = "Identifier") = integer(description, minimum: 1)
A positive integer identifier schema.
# File lib/warp_engine/admin_api/schema.rb, line 10 def integer(description = nil, **options) = typed("integer", description, options)
An integer schema.
Source
# File lib/warp_engine/admin_api/schema.rb, line 44 def nullable(schema) type = schema[:type] return schema if type.nil? types = Array(type) types.include?("null") ? schema : schema.merge(type: types + [ "null" ]) end
schema also allowing null; a schema without a type is returned as is.
# File lib/warp_engine/admin_api/schema.rb, line 33 def object(properties, required: [], description: nil, additional: false) { type: "object", description: description, properties: properties, required: required.presence&.map(&:to_s), additionalProperties: additional }.compact end
An object schema of properties.
- required
-
the required property names
- description
-
an optional description
- additional
-
the
additionalPropertiesvalue (defaultfalse)
Source
# File lib/warp_engine/admin_api/schema.rb, line 53 def ref(name) = { "$ref": "#/components/schemas/#{name}" }
A reference to the component schema name.
# File lib/warp_engine/admin_api/schema.rb, line 8 def string(description = nil, **options) = typed("string", description, options)
A string schema with an optional description and further keywords.
# File lib/warp_engine/admin_api/schema.rb, line 61 def typed(type, description, options) { type: type, description: description }.merge(options).compact end
A schema of type with description and options, nil values dropped.
Source
# File lib/warp_engine/admin_api/schema.rb, line 56 def types(schema) Array(schema && schema[:type]).map(&:to_s) end
The type names of schema as strings; empty for nil or an untyped schema.