=head1 DESCRIPTION Defines a type of object to serialize/deserialize from/to the JSON:API format. =head1 ATTRIBUTES =head2 registry L to use to find the definition of other object types. =head2 before_serialize Accepts a function, which will be called on the original C<$data> to serialize to groom it. before_serialize => sub($data,$xtra) { # lowercase all keys return +{ pairmap { lc($a) => $b } %$data } } =head2 type The JSON:API object type. Read-only, required. =head2 id Key to use as a reference to the object. Can be a string, or a function that will be passed the original data object. Read-only, defaults to the string C. =head2 links Links to include as part of the object. =head2 top_level_links Links to include to the serialized top level, if the top level object is of the type defined by this class. =head2 top_level_meta Meta information to include to the serialized top level, if the top level object is of the type defined by this class. =head2 relationships Relationships for the object type. =head2 allowed_attributes List of attributes that can be serialized/deserialized. =head1 METHODS =head2 top_level_serialize($data,$extra_data = {}) Serializes C<$data> as a top-level JSON:API object. =head2 serialize_data($data,$extra_data) Serializes the inner C<$data>.