class Amber::Schema::Definition

Direct Known Subclasses

Defined in:

amber/schema/definition.cr

Constructors

Class Method Summary

Macro Summary

Instance Method Summary

Constructor Detail

def self.new(raw_data : Hash(String, JSON::Any)) #

[View source]

Class Method Detail

def self.additional_properties? : Bool #

[View source]
def self.conditional_groups : Array(ConditionalGroup) #

[View source]
def self.conditionals : Array(ConditionalGroup) #

Get all conditionals for introspection


[View source]
def self.content_types : Array(String) #

[View source]
def self.field_names : Array(String) #

[View source]
def self.fields : Hash(String, FieldDef) #

Metaclass interface used by controller registries. Subclasses generated by the schema DSL override these methods with their immutable metadata.


[View source]
def self.has_conditionals? : Bool #

Check if schema has conditionals


[View source]
def self.has_field?(name : String) : Bool #

Class methods for introspection


[View source]
def self.nested_array_schemas : Hash(String, Definition.class) #

[View source]
def self.nested_schemas : Hash(String, Definition.class) #

[View source]
def self.required_field_names : Array(String) #

[View source]
def self.required_fields : Array(String) #

[View source]
def self.requires_one_of_groups : Array(Array(String)) #

[View source]
def self.requires_together_groups : Array(Array(String)) #

[View source]
def self.source_blocks : Array(SourceBlock) #

[View source]
def self.uses_body_params? : Bool #

[View source]
def self.uses_header_params? : Bool #

[View source]
def self.uses_path_params? : Bool #

[View source]
def self.uses_query_params? : Bool #

[View source]
def self.validators : Array(Validator::Base) #

[View source]

Macro Detail

macro additional_properties(allowed) #

Keep additional input fields for compatibility by default. API contracts can opt into a closed object with additional_properties false.


[View source]
macro content_type(*types) #

Define supported content types


[View source]
macro field(name, type, **options) #

Define a field in the schema


[View source]
macro from_body #

[View source]
macro from_header #

[View source]
macro from_path #

[View source]
macro from_query #

Parameter source blocks


[View source]
macro nested(name, schema_class, **options) #

Define a nested schema field


[View source]
macro requires_one_of(*fields) #

Helper macro for requiring exactly one of a set of fields


[View source]
macro requires_together(*fields) #

Helper macro for defining multiple fields that must be present together


[View source]
macro validate(method_name = nil, &block) #

Add a custom validator


[View source]
macro validates_to(success_type, failure_type = ValidationError) #

Define success and failure types


[View source]
macro when_field(field, value, &block) #

Define conditional field requirements. Conditional fields are regular introspectable schema fields, but their required flag is moved out of the global required set and into the matching conditional group.


[View source]
macro when_present(field, &block) #

[View source]

Instance Method Detail

def errors : Array(Amber::Schema::Error) #

[View source]
def parse : LegacyResult #

Parse incoming data and return a result


[View source]
def raw_data : Hash(String, JSON::Any) #

Instance variables


[View source]
def to_h : Hash(String, JSON::Any) #

Convert validated data to hash


[View source]
def validate : LegacyResult #

Main validation method - returns legacy Result for backward compatibility


[View source]
def validate_typed : Success(Hash(String, JSON::Any)) | Failure(Hash(String, JSON::Any)) #

New validation method that returns typed Result


[View source]
def validated_data : Hash(String, JSON::Any) | Nil #

[View source]