# Functions
Jsonify returns a JSON formatted key name from a go struct field name.
Marshal wraps data in a Document and returns its JSON encoding.
MarshalToStruct marshals an api2go compatible struct into a jsonapi Document structure which then can be marshaled to JSON.
MarshalWithURLs can be used to pass along a ServerInformation implementor.
Pluralize returns the pluralization of a noun.
Unmarshal parses a JSON API compatible JSON and populates the target which must implement the `UnmarshalIdentifier` interface.
# Constants
The available relationship types.
The available relationship types.
The available relationship types.
# Structs
Data is a general struct for document data and included data.
A DataContainer is used to marshal and unmarshal single objects and arrays of objects.
A Document represents a JSON API document as specified here: http://jsonapi.org.
Link represents a link for return in the document.
A Reference information about possible references of a struct.
ReferenceID contains all necessary information in order to reference another struct in JSON API.
Relationship contains reference IDs to the related structs.
RelationshipData represents one specific reference ID.
A RelationshipDataContainer is used to marshal and unmarshal single relationship objects and arrays of relationship objects.
# Interfaces
The EditToManyRelations interface can be optionally implemented to add and delete to-many relationships on a already unmarshalled struct.
The EntityNamer interface can be optionally implemented to directly return the name of resource used for the "type" field.
The MarshalCustomLinks interface can be implemented if the struct should want any custom links.
The MarshalCustomRelationshipMeta interface can be implemented if the struct should want a custom meta in a relationship.
The MarshalIdentifier interface is necessary to give an element a unique ID.
The MarshalIncludedRelations interface must be implemented if referenced structs should be included in the document.
The MarshalLinkedRelations interface must be implemented if there are reference ids that should be included in the document.
The MarshalReferences interface must be implemented if the struct to be serialized has relationships.
A ServerInformation implementor can be passed to MarshalWithURLs to generate the `self` and `related` urls inside `links`.
The UnmarshalIdentifier interface must be implemented to set the ID during unmarshalling.
The UnmarshalToManyRelations interface must be implemented to unmarshal to-many relations.
The UnmarshalToOneRelations interface must be implemented to unmarshal to-one relations.
# Type aliases
Links contains a map of custom Link objects as given by an element.
Meta contains unstructured metadata.
RelationshipType specifies the type of a relationship.