class
Amber::Schema::Definition
- Amber::Schema::Definition
- Reference
- Object
Direct Known Subclasses
- Amber::Schema::RequestSchema
- Amber::Schema::ResponseSchema
- BookXMLSchema
- FormDataExample::ApplicationFormSchema
- FormDataExample::DocumentUploadSchema
- FormDataExample::OrderFormSchema
- FormDataExample::UserProfileSchema
- FormDataExample::UserRegistrationSchema
Defined in:
amber/schema/definition.crConstructors
Class Method Summary
- .additional_properties? : Bool
- .conditional_groups : Array(ConditionalGroup)
-
.conditionals : Array(ConditionalGroup)
Get all conditionals for introspection
- .content_types : Array(String)
- .field_names : Array(String)
-
.fields : Hash(String, FieldDef)
Metaclass interface used by controller registries.
-
.has_conditionals? : Bool
Check if schema has conditionals
-
.has_field?(name : String) : Bool
Class methods for introspection
- .nested_array_schemas : Hash(String, Definition.class)
- .nested_schemas : Hash(String, Definition.class)
- .required_field_names : Array(String)
- .required_fields : Array(String)
- .requires_one_of_groups : Array(Array(String))
- .requires_together_groups : Array(Array(String))
- .source_blocks : Array(SourceBlock)
- .uses_body_params? : Bool
- .uses_header_params? : Bool
- .uses_path_params? : Bool
- .uses_query_params? : Bool
- .validators : Array(Validator::Base)
Macro Summary
-
additional_properties(allowed)
Keep additional input fields for compatibility by default.
-
content_type(*types)
Define supported content types
-
field(name, type, **options)
Define a field in the schema
- from_body
- from_header
- from_path
-
from_query
Parameter source blocks
-
nested(name, schema_class, **options)
Define a nested schema field
-
requires_one_of(*fields)
Helper macro for requiring exactly one of a set of fields
-
requires_together(*fields)
Helper macro for defining multiple fields that must be present together
-
validate(method_name = nil, &block)
Add a custom validator
-
validates_to(success_type, failure_type = ValidationError)
Define success and failure types
-
when_field(field, value, &block)
Define conditional field requirements.
- when_present(field, &block)
Instance Method Summary
- #errors : Array(Amber::Schema::Error)
-
#parse : LegacyResult
Parse incoming data and return a result
-
#raw_data : Hash(String, JSON::Any)
Instance variables
-
#to_h : Hash(String, JSON::Any)
Convert validated data to hash
-
#validate : LegacyResult
Main validation method - returns legacy Result for backward compatibility
-
#validate_typed : Success(Hash(String, JSON::Any)) | Failure(Hash(String, JSON::Any))
New validation method that returns typed Result
- #validated_data : Hash(String, JSON::Any) | Nil
Constructor Detail
Class Method Detail
Metaclass interface used by controller registries. Subclasses generated by the schema DSL override these methods with their immutable metadata.
Macro Detail
Keep additional input fields for compatibility by default. API contracts
can opt into a closed object with additional_properties false.
Helper macro for defining multiple fields that must be present together
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.
Instance Method Detail
Main validation method - returns legacy Result for backward compatibility
New validation method that returns typed Result