diff --git a/README.md b/README.md index f2e982c2d0..8947d85885 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,8 @@

-# JSON:API Framework for ASP.NET Core +# JsonApiDotNetCore +A framework for building [JSON:API](http://jsonapi.org/) compliant REST APIs using .NET Core and Entity Framework Core. [![Build status](https://ci.appveyor.com/api/projects/status/5go47hrm0iik0ls3/branch/master?svg=true)](https://ci.appveyor.com/project/jaredcnance/jsonapidotnetcore/branch/master) [![Travis](https://travis-ci.org/json-api-dotnet/JsonApiDotNetCore.svg?branch=master)](https://travis-ci.org/json-api-dotnet/JsonApiDotNetCore) @@ -10,14 +11,14 @@ [![Join the chat at https://gitter.im/json-api-dotnet-core/Lobby](https://badges.gitter.im/json-api-dotnet-core/Lobby.svg)](https://gitter.im/json-api-dotnet-core/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![FIRST-TIMERS](https://img.shields.io/badge/first--timers--only-friendly-blue.svg)](http://www.firsttimersonly.com/) -A framework for building [json:api](http://jsonapi.org/) compliant web APIs. The ultimate goal of this library is to eliminate as much boilerplate as possible by offering out-of-the-box features such as sorting, filtering and pagination. You just need to focus on defining the resources and implementing your custom business logic. This library has been designed around dependency injection making extensibility incredibly easy. +The ultimate goal of this library is to eliminate as much boilerplate as possible by offering out-of-the-box features such as sorting, filtering and pagination. You just need to focus on defining the resources and implementing your custom business logic. This library has been designed around dependency injection, making extensibility incredibly easy. ## Getting Started These are some steps you can take to help you understand what this project is and how you can use it: -- [What is json:api and why should I use it?](https://nordicapis.com/the-benefits-of-using-json-api/) -- [The json:api specification](http://jsonapi.org/format/) +- [What is JSON:API and why should I use it?](https://nordicapis.com/the-benefits-of-using-json-api/) +- [The JSON:API specification](http://jsonapi.org/format/) - [Demo [Video]](https://youtu.be/KAMuo6K7VcE) - [Our documentation](https://json-api-dotnet.github.io/JsonApiDotNetCore/) - [Check out the example projects](https://github.com/json-api-dotnet/JsonApiDotNetCore/tree/master/src/Examples) diff --git a/docs/home/index.html b/docs/home/index.html index d6aadc2d0f..5b837cda02 100644 --- a/docs/home/index.html +++ b/docs/home/index.html @@ -3,9 +3,9 @@ - JSON:API .NET Core - - + JsonApiDotNetCore documentation + + @@ -21,8 +21,8 @@
-

JSON:API .NET Core

-

A framework for building json:api compliant REST APIs using .NET Core and Entity Framework Core

+

JsonApiDotNetCore

+

A framework for building JSON:API compliant REST APIs using .NET Core and Entity Framework Core

Read more Getting started Contribute on GitHub @@ -43,7 +43,7 @@

A framework for building json

Objectives

- The goal of this library is to simplify the development of APIs that leverage the full range of features provided by the json:api specification. + The goal of this library is to simplify the development of APIs that leverage the full range of features provided by the JSON:API specification. You just need to focus on defining the resources and implementing your custom business logic.

diff --git a/docs/usage/errors.md b/docs/usage/errors.md index 452250eb5c..1ed623802f 100644 --- a/docs/usage/errors.md +++ b/docs/usage/errors.md @@ -2,7 +2,7 @@ Errors returned will contain only the properties that are set on the `Error` class. Custom fields can be added through `Error.Meta`. You can create a custom error by throwing a `JsonApiException` (which accepts an `Error` instance), or returning an `Error` instance from an `ActionResult` in a controller. -Please keep in mind that json:api requires Title to be a generic message, while Detail should contain information about the specific problem occurence. +Please keep in mind that JSON:API requires Title to be a generic message, while Detail should contain information about the specific problem occurence. From a controller method: ```c# @@ -22,7 +22,7 @@ throw new JsonApiException(new Error(HttpStatusCode.Conflict) }); ``` -In both cases, the middleware will properly serialize it and return it as a json:api error. +In both cases, the middleware will properly serialize it and return it as a JSON:API error. # Exception handling diff --git a/docs/usage/meta.md b/docs/usage/meta.md index 1bd4678d69..0e91f8ea4f 100644 --- a/docs/usage/meta.md +++ b/docs/usage/meta.md @@ -1,6 +1,6 @@ # Metadata -We support two ways to add json:api meta to your responses: global and per resource. +We support two ways to add JSON:API meta to your responses: global and per resource. ## Global Meta diff --git a/docs/usage/options.md b/docs/usage/options.md index b50713bf30..beeea414db 100644 --- a/docs/usage/options.md +++ b/docs/usage/options.md @@ -64,7 +64,7 @@ options.UseRelativeLinks = true; ## Unknown Query String Parameters -If you would like to allow unknown query string parameters (parameters not reserved by the json:api specification or registered using resource definitions), you can set `AllowUnknownQueryStringParameters = true`. When set to `false` (the default), an HTTP 400 Bad Request is returned for unknown query string parameters. +If you would like to allow unknown query string parameters (parameters not reserved by the JSON:API specification or registered using resource definitions), you can set `AllowUnknownQueryStringParameters = true`. When set to `false` (the default), an HTTP 400 Bad Request is returned for unknown query string parameters. ```c# options.AllowUnknownQueryStringParameters = true; diff --git a/docs/usage/resource-graph.md b/docs/usage/resource-graph.md index e9f2859e92..59fbe7bfc2 100644 --- a/docs/usage/resource-graph.md +++ b/docs/usage/resource-graph.md @@ -2,7 +2,7 @@ _NOTE: prior to v4 this was called the `ContextGraph`_ -The `ResourceGraph` is a map of all the json:api resources and their relationships that your API serves. +The `ResourceGraph` is a map of all the JSON:API resources and their relationships that your API serves. It is built at app startup and available as a singleton through Dependency Injection. @@ -21,7 +21,7 @@ is prioritized by the list above in descending order. ### Auto-discovery Auto-discovery refers to the process of reflecting on an assembly and -detecting all of the json:api resources, resource definitions, resource services and repositories. +detecting all of the JSON:API resources, resource definitions, resource services and repositories. The following command builds the resource graph using all `IIdentifiable` implementations and registers the services mentioned. You can enable auto-discovery for the current assembly by adding the following to your `Startup` class. @@ -73,7 +73,7 @@ public void ConfigureServices(IServiceCollection services) ## Resource Name -The public resource name is exposed through the `type` member in the json:api payload. This can be configured by the following approaches (in order of priority): +The public resource name is exposed through the `type` member in the JSON:API payload. This can be configured by the following approaches (in order of priority): 1. The `publicName` parameter when manually adding a resource to the graph ```c# diff --git a/docs/usage/resources/attributes.md b/docs/usage/resources/attributes.md index d929aa6f49..6e24ab964f 100644 --- a/docs/usage/resources/attributes.md +++ b/docs/usage/resources/attributes.md @@ -29,7 +29,7 @@ public class Person : Identifiable _since v4.0_ -Default json:api attribute capabilities are specified in @JsonApiDotNetCore.Configuration.JsonApiOptions#JsonApiDotNetCore_Configuration_JsonApiOptions_DefaultAttrCapabilities: +Default JSON:API attribute capabilities are specified in @JsonApiDotNetCore.Configuration.JsonApiOptions#JsonApiDotNetCore_Configuration_JsonApiOptions_DefaultAttrCapabilities: ```c# options.DefaultAttrCapabilities = AttrCapabilities.None; // default: All diff --git a/docs/usage/resources/relationships.md b/docs/usage/resources/relationships.md index b16640658f..5185d297d1 100644 --- a/docs/usage/resources/relationships.md +++ b/docs/usage/resources/relationships.md @@ -77,7 +77,7 @@ public class TodoItem : Identifiable _since v4.0_ -Your resource may expose a calculated property, whose value depends on a related entity that is not exposed as a json:api resource. +Your resource may expose a calculated property, whose value depends on a related entity that is not exposed as a JSON:API resource. So for the calculated property to be evaluated correctly, the related entity must always be retrieved. You can achieve that using `EagerLoad`, for example: ```c# diff --git a/docs/usage/resources/resource-definitions.md b/docs/usage/resources/resource-definitions.md index 4846372057..77eaa11062 100644 --- a/docs/usage/resources/resource-definitions.md +++ b/docs/usage/resources/resource-definitions.md @@ -13,7 +13,7 @@ For various reasons (see examples below) you may need to change parts of the que `JsonApiResourceDefinition` (which is an empty implementation of `IResourceDefinition`) provides overridable methods that pass you the result of query string parameter parsing. The value returned by you determines what will be used to execute the query. -An intermediate format (`QueryExpression` and derived types) is used, which enables us to separate json:api implementation +An intermediate format (`QueryExpression` and derived types) is used, which enables us to separate JSON:API implementation from Entity Framework Core `IQueryable` execution. ### Excluding fields diff --git a/docs/usage/routing.md b/docs/usage/routing.md index 640a3ba880..b33168e044 100644 --- a/docs/usage/routing.md +++ b/docs/usage/routing.md @@ -14,7 +14,7 @@ Which results in URLs like: https://yourdomain.com/api/v1/people ## Default Routing Convention -The library will configure routes for all controllers in your project. By default, routes are camel-cased. This is based on the [recommendations](https://jsonapi.org/recommendations/) outlined in the json:api spec. +The library will configure routes for all controllers in your project. By default, routes are camel-cased. This is based on the [recommendations](https://jsonapi.org/recommendations/) outlined in the JSON:API spec. ```c# public class OrderLine : Identifiable { } @@ -35,7 +35,7 @@ GET /orderLines HTTP/1.1 The exposed name of the resource ([which can be customized](~/usage/resource-graph.md#resource-name)) is used for the route, instead of the controller name. -### Non-json:api controllers +### Non-JSON:API controllers If a controller does not inherit from `JsonApiController`, the [configured naming convention](~/usage/options.md#custom-serializer-settings) is applied to the name of the controller. ```c# @@ -69,4 +69,4 @@ public void ConfigureServices(IServiceCollection services) { services.AddSingleton(); } -``` \ No newline at end of file +``` diff --git a/src/JsonApiDotNetCore/Configuration/IJsonApiOptions.cs b/src/JsonApiDotNetCore/Configuration/IJsonApiOptions.cs index 6fd6a62b39..96717fe796 100644 --- a/src/JsonApiDotNetCore/Configuration/IJsonApiOptions.cs +++ b/src/JsonApiDotNetCore/Configuration/IJsonApiOptions.cs @@ -20,7 +20,7 @@ public interface IJsonApiOptions string Namespace { get; } /// - /// Specifies the default query string capabilities that can be used on exposed json:api attributes. + /// Specifies the default query string capabilities that can be used on exposed JSON:API attributes. /// Defaults to . /// AttrCapabilities DefaultAttrCapabilities { get; } @@ -56,21 +56,21 @@ public interface IJsonApiOptions bool UseRelativeLinks { get; } /// - /// Configures globally which links to show in the + /// Configures globally which links to show in the /// object for a requested resource. Setting can be overridden per resource by /// adding a to the class definition of that resource. /// LinkTypes TopLevelLinks { get; } /// - /// Configures globally which links to show in the + /// Configures globally which links to show in the /// object for a requested resource. Setting can be overridden per resource by /// adding a to the class definition of that resource. /// LinkTypes ResourceLinks { get; } /// - /// Configures globally which links to show in the + /// Configures globally which links to show in the /// object for a requested resource. Setting can be overridden per resource by /// adding a to the class definition of that resource. /// This option can also be specified per relationship by using the associated links argument @@ -174,7 +174,7 @@ public interface IJsonApiOptions /// /// Specifies the settings that are used by the . - /// Note that at some places a few settings are ignored, to ensure json:api spec compliance. + /// Note that at some places a few settings are ignored, to ensure JSON:API spec compliance. /// /// The next example changes the naming convention to kebab casing. /// - /// Custom implementation of to support json:api partial patching. + /// Custom implementation of to support JSON:API partial patching. /// internal class JsonApiModelMetadataProvider : DefaultModelMetadataProvider { diff --git a/src/JsonApiDotNetCore/Configuration/JsonApiValidationFilter.cs b/src/JsonApiDotNetCore/Configuration/JsonApiValidationFilter.cs index b4af0ea6f5..d6a3459aa9 100644 --- a/src/JsonApiDotNetCore/Configuration/JsonApiValidationFilter.cs +++ b/src/JsonApiDotNetCore/Configuration/JsonApiValidationFilter.cs @@ -9,7 +9,7 @@ namespace JsonApiDotNetCore.Configuration { /// - /// Validation filter that blocks ASP.NET Core ModelState validation on data according to the json:api spec. + /// Validation filter that blocks ASP.NET Core ModelState validation on data according to the JSON:API spec. /// internal sealed class JsonApiValidationFilter : IPropertyValidationFilter { diff --git a/src/JsonApiDotNetCore/Configuration/ResourceContext.cs b/src/JsonApiDotNetCore/Configuration/ResourceContext.cs index 9e73f76a52..632a611dd3 100644 --- a/src/JsonApiDotNetCore/Configuration/ResourceContext.cs +++ b/src/JsonApiDotNetCore/Configuration/ResourceContext.cs @@ -51,7 +51,7 @@ public class ResourceContext public IReadOnlyCollection Fields => _fields ??= Attributes.Cast().Concat(Relationships).ToArray(); /// - /// Configures which links to show in the + /// Configures which links to show in the /// object for this resource. If set to , /// the configuration will be read from . /// Defaults to . @@ -59,7 +59,7 @@ public class ResourceContext public LinkTypes TopLevelLinks { get; internal set; } = LinkTypes.NotConfigured; /// - /// Configures which links to show in the + /// Configures which links to show in the /// object for this resource. If set to , /// the configuration will be read from . /// Defaults to . @@ -67,7 +67,7 @@ public class ResourceContext public LinkTypes ResourceLinks { get; internal set; } = LinkTypes.NotConfigured; /// - /// Configures which links to show in the + /// Configures which links to show in the /// for all relationships of the resource for which this attribute was instantiated. /// If set to , the configuration will /// be read from or diff --git a/src/JsonApiDotNetCore/Configuration/ResourceGraph.cs b/src/JsonApiDotNetCore/Configuration/ResourceGraph.cs index deb64895dd..90b5b0b83a 100644 --- a/src/JsonApiDotNetCore/Configuration/ResourceGraph.cs +++ b/src/JsonApiDotNetCore/Configuration/ResourceGraph.cs @@ -169,7 +169,7 @@ private static Expression RemoveConvert(Expression expression) private void ThrowNotExposedError(string memberName, FieldFilterType type) { - throw new ArgumentException($"{memberName} is not an json:api exposed {type:g}."); + throw new ArgumentException($"{memberName} is not a JSON:API exposed {type:g}."); } private enum FieldFilterType diff --git a/src/JsonApiDotNetCore/Configuration/ResourceGraphBuilder.cs b/src/JsonApiDotNetCore/Configuration/ResourceGraphBuilder.cs index e679e464a9..998d153051 100644 --- a/src/JsonApiDotNetCore/Configuration/ResourceGraphBuilder.cs +++ b/src/JsonApiDotNetCore/Configuration/ResourceGraphBuilder.cs @@ -47,7 +47,7 @@ private void SetResourceLinksOptions(ResourceContext resourceContext) } /// - /// Adds a json:api resource with int as the identifier type. + /// Adds a JSON:API resource with int as the identifier type. /// /// The resource model type. /// @@ -58,7 +58,7 @@ public ResourceGraphBuilder Add(string publicName = null) where TReso => Add(publicName); /// - /// Adds a json:api resource. + /// Adds a JSON:API resource. /// /// The resource model type. /// The resource model identifier type. @@ -70,7 +70,7 @@ public ResourceGraphBuilder Add(string publicName = null) where => Add(typeof(TResource), typeof(TId), publicName); /// - /// Adds a json:api resource. + /// Adds a JSON:API resource. /// /// The resource model type. /// The resource model identifier type. diff --git a/src/JsonApiDotNetCore/Configuration/ServiceCollectionExtensions.cs b/src/JsonApiDotNetCore/Configuration/ServiceCollectionExtensions.cs index 841ccc8374..bfd3c5180f 100644 --- a/src/JsonApiDotNetCore/Configuration/ServiceCollectionExtensions.cs +++ b/src/JsonApiDotNetCore/Configuration/ServiceCollectionExtensions.cs @@ -61,7 +61,7 @@ private static void SetupApplicationBuilder(IServiceCollection services, Action< /// /// Enables client serializers for sending requests and receiving responses - /// in json:api format. Internally only used for testing. + /// in JSON:API format. Internally only used for testing. /// Will be extended in the future to be part of a JsonApiClientDotNetCore package. /// public static IServiceCollection AddClientSerialization(this IServiceCollection services) diff --git a/src/JsonApiDotNetCore/Controllers/CoreJsonApiController.cs b/src/JsonApiDotNetCore/Controllers/CoreJsonApiController.cs index 7a603cad6b..1c6853e61a 100644 --- a/src/JsonApiDotNetCore/Controllers/CoreJsonApiController.cs +++ b/src/JsonApiDotNetCore/Controllers/CoreJsonApiController.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCore.Controllers { /// - /// Provides helper methods to raise json:api compliant errors from controller actions. + /// Provides helper methods to raise JSON:API compliant errors from controller actions. /// public abstract class CoreJsonApiController : ControllerBase { diff --git a/src/JsonApiDotNetCore/Errors/JsonApiException.cs b/src/JsonApiDotNetCore/Errors/JsonApiException.cs index 52e531a164..7f0ef7be8b 100644 --- a/src/JsonApiDotNetCore/Errors/JsonApiException.cs +++ b/src/JsonApiDotNetCore/Errors/JsonApiException.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCore.Errors { /// - /// The base class for an that represents one or more json:api error objects in an unsuccessful response. + /// The base class for an that represents one or more JSON:API error objects in an unsuccessful response. /// public class JsonApiException : Exception { diff --git a/src/JsonApiDotNetCore/JsonApiDotNetCore.csproj b/src/JsonApiDotNetCore/JsonApiDotNetCore.csproj index 24253becd3..d69b8ccb51 100644 --- a/src/JsonApiDotNetCore/JsonApiDotNetCore.csproj +++ b/src/JsonApiDotNetCore/JsonApiDotNetCore.csproj @@ -6,8 +6,8 @@ - jsonapi;json:api;dotnet;core - A framework for building json:api compliant web APIs. The ultimate goal of this library is to eliminate as much boilerplate as possible by offering out-of-the-box features such as sorting, filtering and pagination. You just need to focus on defining the resources and implementing your custom business logic. This library has been designed around dependency injection making extensibility incredibly easy. + jsonapidotnetcore;jsonapi;json:api;dotnet;asp.net + A framework for building JSON:API compliant web APIs. The ultimate goal of this library is to eliminate as much boilerplate as possible by offering out-of-the-box features such as sorting, filtering and pagination. You just need to focus on defining the resources and implementing your custom business logic. This library has been designed around dependency injection making extensibility incredibly easy. https://github.com/json-api-dotnet/JsonApiDotNetCore MIT false diff --git a/src/JsonApiDotNetCore/Middleware/IAsyncConvertEmptyActionResultFilter.cs b/src/JsonApiDotNetCore/Middleware/IAsyncConvertEmptyActionResultFilter.cs index 01466cf05e..cc1983ae4f 100644 --- a/src/JsonApiDotNetCore/Middleware/IAsyncConvertEmptyActionResultFilter.cs +++ b/src/JsonApiDotNetCore/Middleware/IAsyncConvertEmptyActionResultFilter.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCore.Middleware /// /// Converts action result without parameters into action result with null parameter. /// For example: return NotFound() -> return NotFound(null) - /// This ensures our formatter is invoked, where we'll build a json:api compliant response. + /// This ensures our formatter is invoked, where we'll build a JSON:API compliant response. /// For details, see: https://github.com/dotnet/aspnetcore/issues/16969 /// public interface IAsyncConvertEmptyActionResultFilter : IAsyncAlwaysRunResultFilter { } diff --git a/src/JsonApiDotNetCore/Middleware/IAsyncJsonApiExceptionFilter.cs b/src/JsonApiDotNetCore/Middleware/IAsyncJsonApiExceptionFilter.cs index dc78f44c4e..f47a13bd58 100644 --- a/src/JsonApiDotNetCore/Middleware/IAsyncJsonApiExceptionFilter.cs +++ b/src/JsonApiDotNetCore/Middleware/IAsyncJsonApiExceptionFilter.cs @@ -3,7 +3,7 @@ namespace JsonApiDotNetCore.Middleware { /// - /// Application-wide exception filter that invokes for json:api requests. + /// Application-wide exception filter that invokes for JSON:API requests. /// public interface IAsyncJsonApiExceptionFilter : IAsyncExceptionFilter { } } diff --git a/src/JsonApiDotNetCore/Middleware/IAsyncQueryStringActionFilter.cs b/src/JsonApiDotNetCore/Middleware/IAsyncQueryStringActionFilter.cs index ecc94db010..2f1f844166 100644 --- a/src/JsonApiDotNetCore/Middleware/IAsyncQueryStringActionFilter.cs +++ b/src/JsonApiDotNetCore/Middleware/IAsyncQueryStringActionFilter.cs @@ -3,7 +3,7 @@ namespace JsonApiDotNetCore.Middleware { /// - /// Application-wide entry point for processing json:api request query strings. + /// Application-wide entry point for processing JSON:API request query strings. /// public interface IAsyncQueryStringActionFilter : IAsyncActionFilter { } } diff --git a/src/JsonApiDotNetCore/Middleware/IJsonApiInputFormatter.cs b/src/JsonApiDotNetCore/Middleware/IJsonApiInputFormatter.cs index 73027c3d2a..7a08e89277 100644 --- a/src/JsonApiDotNetCore/Middleware/IJsonApiInputFormatter.cs +++ b/src/JsonApiDotNetCore/Middleware/IJsonApiInputFormatter.cs @@ -3,7 +3,7 @@ namespace JsonApiDotNetCore.Middleware { /// - /// Application-wide entry point for reading json:api request bodies. + /// Application-wide entry point for reading JSON:API request bodies. /// public interface IJsonApiInputFormatter : IInputFormatter { } } diff --git a/src/JsonApiDotNetCore/Middleware/IJsonApiOutputFormatter.cs b/src/JsonApiDotNetCore/Middleware/IJsonApiOutputFormatter.cs index 0f2ed7c65d..b02192ae0a 100644 --- a/src/JsonApiDotNetCore/Middleware/IJsonApiOutputFormatter.cs +++ b/src/JsonApiDotNetCore/Middleware/IJsonApiOutputFormatter.cs @@ -3,7 +3,7 @@ namespace JsonApiDotNetCore.Middleware { /// - /// Application-wide entry point for writing json:api response bodies. + /// Application-wide entry point for writing JSON:API response bodies. /// public interface IJsonApiOutputFormatter : IOutputFormatter { } } diff --git a/src/JsonApiDotNetCore/Middleware/IJsonApiRequest.cs b/src/JsonApiDotNetCore/Middleware/IJsonApiRequest.cs index b24729309f..3ea888e4ff 100644 --- a/src/JsonApiDotNetCore/Middleware/IJsonApiRequest.cs +++ b/src/JsonApiDotNetCore/Middleware/IJsonApiRequest.cs @@ -4,7 +4,7 @@ namespace JsonApiDotNetCore.Middleware { /// - /// Metadata associated with the json:api request that is currently being processed. + /// Metadata associated with the JSON:API request that is currently being processed. /// public interface IJsonApiRequest { diff --git a/src/JsonApiDotNetCore/Middleware/JsonApiMiddleware.cs b/src/JsonApiDotNetCore/Middleware/JsonApiMiddleware.cs index db24ccc2f4..026e50682a 100644 --- a/src/JsonApiDotNetCore/Middleware/JsonApiMiddleware.cs +++ b/src/JsonApiDotNetCore/Middleware/JsonApiMiddleware.cs @@ -19,7 +19,7 @@ namespace JsonApiDotNetCore.Middleware { /// - /// Intercepts HTTP requests to populate injected instance for json:api requests. + /// Intercepts HTTP requests to populate injected instance for JSON:API requests. /// public sealed class JsonApiMiddleware { diff --git a/src/JsonApiDotNetCore/Resources/Annotations/AttrAttribute.cs b/src/JsonApiDotNetCore/Resources/Annotations/AttrAttribute.cs index fce07fa160..d31415df57 100644 --- a/src/JsonApiDotNetCore/Resources/Annotations/AttrAttribute.cs +++ b/src/JsonApiDotNetCore/Resources/Annotations/AttrAttribute.cs @@ -3,7 +3,7 @@ namespace JsonApiDotNetCore.Resources.Annotations { /// - /// Used to expose a property on a resource class as a json:api attribute (https://jsonapi.org/format/#document-resource-object-attributes). + /// Used to expose a property on a resource class as a JSON:API attribute (https://jsonapi.org/format/#document-resource-object-attributes). /// [AttributeUsage(AttributeTargets.Property)] public sealed class AttrAttribute : ResourceFieldAttribute diff --git a/src/JsonApiDotNetCore/Resources/Annotations/EagerLoadAttribute.cs b/src/JsonApiDotNetCore/Resources/Annotations/EagerLoadAttribute.cs index be5adc2339..bb31d018ef 100644 --- a/src/JsonApiDotNetCore/Resources/Annotations/EagerLoadAttribute.cs +++ b/src/JsonApiDotNetCore/Resources/Annotations/EagerLoadAttribute.cs @@ -5,10 +5,10 @@ namespace JsonApiDotNetCore.Resources.Annotations { /// - /// Used to unconditionally load a related entity that is not exposed as a json:api relationship. + /// Used to unconditionally load a related entity that is not exposed as a JSON:API relationship. /// /// - /// This is intended for calculated properties that are exposed as json:api attributes, which depend on a related entity to always be loaded. + /// This is intended for calculated properties that are exposed as JSON:API attributes, which depend on a related entity to always be loaded. /// - /// Used to expose a property on a resource class as a json:api to-many relationship (https://jsonapi.org/format/#document-resource-object-relationships). + /// Used to expose a property on a resource class as a JSON:API to-many relationship (https://jsonapi.org/format/#document-resource-object-relationships). /// [AttributeUsage(AttributeTargets.Property)] public class HasManyAttribute : RelationshipAttribute diff --git a/src/JsonApiDotNetCore/Resources/Annotations/HasManyThroughAttribute.cs b/src/JsonApiDotNetCore/Resources/Annotations/HasManyThroughAttribute.cs index 76cde56b59..818017cae8 100644 --- a/src/JsonApiDotNetCore/Resources/Annotations/HasManyThroughAttribute.cs +++ b/src/JsonApiDotNetCore/Resources/Annotations/HasManyThroughAttribute.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCore.Resources.Annotations { /// - /// Used to expose a property on a resource class as a json:api to-many relationship (https://jsonapi.org/format/#document-resource-object-relationships) + /// Used to expose a property on a resource class as a JSON:API to-many relationship (https://jsonapi.org/format/#document-resource-object-relationships) /// through a many-to-many join relationship. /// /// diff --git a/src/JsonApiDotNetCore/Resources/Annotations/HasOneAttribute.cs b/src/JsonApiDotNetCore/Resources/Annotations/HasOneAttribute.cs index 9fd6efa4ef..d958a6a4ee 100644 --- a/src/JsonApiDotNetCore/Resources/Annotations/HasOneAttribute.cs +++ b/src/JsonApiDotNetCore/Resources/Annotations/HasOneAttribute.cs @@ -3,7 +3,7 @@ namespace JsonApiDotNetCore.Resources.Annotations { /// - /// Used to expose a property on a resource class as a json:api to-one relationship (https://jsonapi.org/format/#document-resource-object-relationships). + /// Used to expose a property on a resource class as a JSON:API to-one relationship (https://jsonapi.org/format/#document-resource-object-relationships). /// [AttributeUsage(AttributeTargets.Property)] public sealed class HasOneAttribute : RelationshipAttribute diff --git a/src/JsonApiDotNetCore/Resources/Annotations/RelationshipAttribute.cs b/src/JsonApiDotNetCore/Resources/Annotations/RelationshipAttribute.cs index 0b6e851e00..21c71ae68a 100644 --- a/src/JsonApiDotNetCore/Resources/Annotations/RelationshipAttribute.cs +++ b/src/JsonApiDotNetCore/Resources/Annotations/RelationshipAttribute.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCore.Resources.Annotations { /// - /// Used to expose a property on a resource class as a json:api relationship (https://jsonapi.org/format/#document-resource-object-relationships). + /// Used to expose a property on a resource class as a JSON:API relationship (https://jsonapi.org/format/#document-resource-object-relationships). /// public abstract class RelationshipAttribute : ResourceFieldAttribute { @@ -14,7 +14,7 @@ public abstract class RelationshipAttribute : ResourceFieldAttribute /// /// The property name of the EF Core inverse navigation, which may or may not exist. - /// Even if it exists, it may not be exposed as a json:api relationship. + /// Even if it exists, it may not be exposed as a JSON:API relationship. /// /// /// - /// Used to expose a property on a resource class as a json:api field (attribute or relationship). + /// Used to expose a property on a resource class as a JSON:API field (attribute or relationship). /// See https://jsonapi.org/format/#document-resource-object-fields. /// public abstract class ResourceFieldAttribute : Attribute @@ -12,7 +12,7 @@ public abstract class ResourceFieldAttribute : Attribute private string _publicName; /// - /// The publicly exposed name of this json:api field. + /// The publicly exposed name of this JSON:API field. /// When not explicitly assigned, the configured naming convention is applied on the property name. /// public string PublicName diff --git a/src/JsonApiDotNetCore/Resources/Annotations/ResourceLinksAttribute.cs b/src/JsonApiDotNetCore/Resources/Annotations/ResourceLinksAttribute.cs index eff732d954..03927c05c9 100644 --- a/src/JsonApiDotNetCore/Resources/Annotations/ResourceLinksAttribute.cs +++ b/src/JsonApiDotNetCore/Resources/Annotations/ResourceLinksAttribute.cs @@ -16,7 +16,7 @@ public sealed class ResourceLinksAttribute : Attribute private LinkTypes _relationshipLinks = LinkTypes.NotConfigured; /// - /// Configures which links to show in the + /// Configures which links to show in the /// section for this resource. /// Defaults to . /// @@ -35,7 +35,7 @@ public LinkTypes TopLevelLinks } /// - /// Configures which links to show in the + /// Configures which links to show in the /// section for this resource. /// Defaults to . /// @@ -54,7 +54,7 @@ public LinkTypes ResourceLinks } /// - /// Configures which links to show in the + /// Configures which links to show in the /// for all relationships of the resource type on which this attribute was used. /// Defaults to . /// diff --git a/src/JsonApiDotNetCore/Resources/IIdentifiable.cs b/src/JsonApiDotNetCore/Resources/IIdentifiable.cs index f8e8d9f613..2d059278bd 100644 --- a/src/JsonApiDotNetCore/Resources/IIdentifiable.cs +++ b/src/JsonApiDotNetCore/Resources/IIdentifiable.cs @@ -1,19 +1,19 @@ namespace JsonApiDotNetCore.Resources { /// - /// When implemented by a class, indicates to JsonApiDotNetCore that the class represents a json:api resource. + /// When implemented by a class, indicates to JsonApiDotNetCore that the class represents a JSON:API resource. /// Note that JsonApiDotNetCore also assumes that a property named 'Id' exists. /// public interface IIdentifiable { /// - /// The value for element 'id' in a json:api request or response. + /// The value for element 'id' in a JSON:API request or response. /// string StringId { get; set; } } /// - /// When implemented by a class, indicates to JsonApiDotNetCore that the class represents a json:api resource. + /// When implemented by a class, indicates to JsonApiDotNetCore that the class represents a JSON:API resource. /// /// The resource identifier type. public interface IIdentifiable : IIdentifiable diff --git a/src/JsonApiDotNetCore/Resources/IResourceDefinition.cs b/src/JsonApiDotNetCore/Resources/IResourceDefinition.cs index b5708436f9..5273e7638e 100644 --- a/src/JsonApiDotNetCore/Resources/IResourceDefinition.cs +++ b/src/JsonApiDotNetCore/Resources/IResourceDefinition.cs @@ -115,7 +115,7 @@ public interface IResourceDefinition QueryStringParameterHandlers OnRegisterQueryableHandlersForQueryStringParameters(); /// - /// Enables to add json:api meta information, specific to this resource. + /// Enables to add JSON:API meta information, specific to this resource. /// IDictionary GetMeta(TResource resource); } diff --git a/src/JsonApiDotNetCore/Resources/Identifiable.cs b/src/JsonApiDotNetCore/Resources/Identifiable.cs index 532e93edcb..8d54806085 100644 --- a/src/JsonApiDotNetCore/Resources/Identifiable.cs +++ b/src/JsonApiDotNetCore/Resources/Identifiable.cs @@ -25,7 +25,7 @@ public string StringId } /// - /// Converts an outgoing typed resource identifier to string format for use in a json:api response. + /// Converts an outgoing typed resource identifier to string format for use in a JSON:API response. /// protected virtual string GetStringId(TId value) { @@ -33,7 +33,7 @@ protected virtual string GetStringId(TId value) } /// - /// Converts an incoming 'id' element from a json:api request to the typed resource identifier. + /// Converts an incoming 'id' element from a JSON:API request to the typed resource identifier. /// protected virtual TId GetTypedId(string value) { diff --git a/src/JsonApiDotNetCore/Serialization/Building/ResourceObjectBuilderSettings.cs b/src/JsonApiDotNetCore/Serialization/Building/ResourceObjectBuilderSettings.cs index 1d00ab813f..c6ecf2234b 100644 --- a/src/JsonApiDotNetCore/Serialization/Building/ResourceObjectBuilderSettings.cs +++ b/src/JsonApiDotNetCore/Serialization/Building/ResourceObjectBuilderSettings.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCore.Serialization.Building { /// /// Options used to configure how fields of a model get serialized into - /// a json:api . + /// a JSON:API . /// public sealed class ResourceObjectBuilderSettings { diff --git a/src/JsonApiDotNetCore/Serialization/Building/ResponseResourceObjectBuilder.cs b/src/JsonApiDotNetCore/Serialization/Building/ResponseResourceObjectBuilder.cs index a0e084a4cf..2da9e21875 100644 --- a/src/JsonApiDotNetCore/Serialization/Building/ResponseResourceObjectBuilder.cs +++ b/src/JsonApiDotNetCore/Serialization/Building/ResponseResourceObjectBuilder.cs @@ -60,7 +60,7 @@ public override ResourceObject Build(IIdentifiable resource, IReadOnlyCollection /// The server serializer only populates the "data" member when the relationship is included, /// and adds links unless these are turned off. This means that if a relationship is not included /// and links are turned off, the entry would be completely empty, ie { }, which is not conform - /// json:api spec. In that case we return null which will omit the entry from the output. + /// JSON:API spec. In that case we return null which will omit the entry from the output. /// protected override RelationshipEntry GetRelationshipData(RelationshipAttribute relationship, IIdentifiable resource) { diff --git a/src/JsonApiDotNetCore/Serialization/Client/Internal/ResponseDeserializer.cs b/src/JsonApiDotNetCore/Serialization/Client/Internal/ResponseDeserializer.cs index c271f65b95..91b6a0392c 100644 --- a/src/JsonApiDotNetCore/Serialization/Client/Internal/ResponseDeserializer.cs +++ b/src/JsonApiDotNetCore/Serialization/Client/Internal/ResponseDeserializer.cs @@ -91,7 +91,7 @@ private IIdentifiable ParseIncludedRelationship(ResourceIdentifierObject related if (relatedResourceContext == null) { - throw new InvalidOperationException($"Included type '{relatedResourceIdentifier.Type}' is not a registered json:api resource."); + throw new InvalidOperationException($"Included type '{relatedResourceIdentifier.Type}' is not a registered JSON:API resource."); } var relatedInstance = ResourceFactory.CreateInstance(relatedResourceContext.ResourceType); diff --git a/src/JsonApiDotNetCore/Serialization/IResponseMeta.cs b/src/JsonApiDotNetCore/Serialization/IResponseMeta.cs index 85db12b6e9..57e6304fc3 100644 --- a/src/JsonApiDotNetCore/Serialization/IResponseMeta.cs +++ b/src/JsonApiDotNetCore/Serialization/IResponseMeta.cs @@ -5,13 +5,13 @@ namespace JsonApiDotNetCore.Serialization { /// - /// Provides a method to obtain global json:api meta, which is added at top-level to a response . + /// Provides a method to obtain global JSON:API meta, which is added at top-level to a response . /// Use to specify nested metadata per individual resource. /// public interface IResponseMeta { /// - /// Gets the global top-level json:api meta information to add to the response. + /// Gets the global top-level JSON:API meta information to add to the response. /// IReadOnlyDictionary GetMeta(); } diff --git a/src/JsonApiDotNetCore/Serialization/JsonApiSerializationException.cs b/src/JsonApiDotNetCore/Serialization/JsonApiSerializationException.cs index 482f911c92..15b64d815f 100644 --- a/src/JsonApiDotNetCore/Serialization/JsonApiSerializationException.cs +++ b/src/JsonApiDotNetCore/Serialization/JsonApiSerializationException.cs @@ -3,7 +3,7 @@ namespace JsonApiDotNetCore.Serialization { /// - /// The error that is thrown when (de)serialization of a json:api body fails. + /// The error that is thrown when (de)serialization of a JSON:API body fails. /// public class JsonApiSerializationException : Exception { diff --git a/src/JsonApiDotNetCore/Serialization/Objects/Error.cs b/src/JsonApiDotNetCore/Serialization/Objects/Error.cs index 23408a993c..ffc7c38ef4 100644 --- a/src/JsonApiDotNetCore/Serialization/Objects/Error.cs +++ b/src/JsonApiDotNetCore/Serialization/Objects/Error.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCore.Serialization.Objects { /// /// Provides additional information about a problem encountered while performing an operation. - /// Error objects MUST be returned as an array keyed by errors in the top level of a json:api document. + /// Error objects MUST be returned as an array keyed by errors in the top level of a JSON:API document. /// public sealed class Error { diff --git a/src/JsonApiDotNetCore/Serialization/ResponseSerializer.cs b/src/JsonApiDotNetCore/Serialization/ResponseSerializer.cs index e816e71f4d..2b30768320 100644 --- a/src/JsonApiDotNetCore/Serialization/ResponseSerializer.cs +++ b/src/JsonApiDotNetCore/Serialization/ResponseSerializer.cs @@ -15,7 +15,7 @@ namespace JsonApiDotNetCore.Serialization /// Server serializer implementation of /// /// - /// Because in JsonApiDotNetCore every json:api request is associated with exactly one + /// Because in JsonApiDotNetCore every JSON:API request is associated with exactly one /// resource (the primary resource, see ), /// the serializer can leverage this information using generics. /// See for how this is instantiated. diff --git a/src/JsonApiDotNetCore/Services/IAddToRelationshipService.cs b/src/JsonApiDotNetCore/Services/IAddToRelationshipService.cs index a3e1b9fa76..49baddbcf3 100644 --- a/src/JsonApiDotNetCore/Services/IAddToRelationshipService.cs +++ b/src/JsonApiDotNetCore/Services/IAddToRelationshipService.cs @@ -15,7 +15,7 @@ public interface IAddToRelationshipService where TResource : class, IIdentifiable { /// - /// Handles a json:api request to add resources to a to-many relationship. + /// Handles a JSON:API request to add resources to a to-many relationship. /// /// The identifier of the primary resource. /// The relationship to add resources to. diff --git a/src/JsonApiDotNetCore/Services/ICreateService.cs b/src/JsonApiDotNetCore/Services/ICreateService.cs index 72752b4c56..5022604cb3 100644 --- a/src/JsonApiDotNetCore/Services/ICreateService.cs +++ b/src/JsonApiDotNetCore/Services/ICreateService.cs @@ -14,7 +14,7 @@ public interface ICreateService where TResource : class, IIdentifiable { /// - /// Handles a json:api request to create a new resource with attributes, relationships or both. + /// Handles a JSON:API request to create a new resource with attributes, relationships or both. /// Task CreateAsync(TResource resource, CancellationToken cancellationToken); } diff --git a/src/JsonApiDotNetCore/Services/IDeleteService.cs b/src/JsonApiDotNetCore/Services/IDeleteService.cs index 56817bd49a..548ddad6f3 100644 --- a/src/JsonApiDotNetCore/Services/IDeleteService.cs +++ b/src/JsonApiDotNetCore/Services/IDeleteService.cs @@ -14,7 +14,7 @@ public interface IDeleteService where TResource : class, IIdentifiable { /// - /// Handles a json:api request to delete an existing resource. + /// Handles a JSON:API request to delete an existing resource. /// Task DeleteAsync(TId id, CancellationToken cancellationToken); } diff --git a/src/JsonApiDotNetCore/Services/IGetAllService.cs b/src/JsonApiDotNetCore/Services/IGetAllService.cs index ff190c3954..eee7963a18 100644 --- a/src/JsonApiDotNetCore/Services/IGetAllService.cs +++ b/src/JsonApiDotNetCore/Services/IGetAllService.cs @@ -15,7 +15,7 @@ public interface IGetAllService where TResource : class, IIdentifiable { /// - /// Handles a json:api request to retrieve a collection of resources for a primary endpoint. + /// Handles a JSON:API request to retrieve a collection of resources for a primary endpoint. /// Task> GetAsync(CancellationToken cancellationToken); } diff --git a/src/JsonApiDotNetCore/Services/IGetByIdService.cs b/src/JsonApiDotNetCore/Services/IGetByIdService.cs index 8a47976be4..42a23351d5 100644 --- a/src/JsonApiDotNetCore/Services/IGetByIdService.cs +++ b/src/JsonApiDotNetCore/Services/IGetByIdService.cs @@ -14,7 +14,7 @@ public interface IGetByIdService where TResource : class, IIdentifiable { /// - /// Handles a json:api request to retrieve a single resource for a primary endpoint. + /// Handles a JSON:API request to retrieve a single resource for a primary endpoint. /// Task GetAsync(TId id, CancellationToken cancellationToken); } diff --git a/src/JsonApiDotNetCore/Services/IGetRelationshipService.cs b/src/JsonApiDotNetCore/Services/IGetRelationshipService.cs index fb54980786..d986728aea 100644 --- a/src/JsonApiDotNetCore/Services/IGetRelationshipService.cs +++ b/src/JsonApiDotNetCore/Services/IGetRelationshipService.cs @@ -14,7 +14,7 @@ public interface IGetRelationshipService where TResource : class, IIdentifiable { /// - /// Handles a json:api request to retrieve a single relationship. + /// Handles a JSON:API request to retrieve a single relationship. /// Task GetRelationshipAsync(TId id, string relationshipName, CancellationToken cancellationToken); } diff --git a/src/JsonApiDotNetCore/Services/IGetSecondaryService.cs b/src/JsonApiDotNetCore/Services/IGetSecondaryService.cs index e7765e0367..bb376c7307 100644 --- a/src/JsonApiDotNetCore/Services/IGetSecondaryService.cs +++ b/src/JsonApiDotNetCore/Services/IGetSecondaryService.cs @@ -14,7 +14,7 @@ public interface IGetSecondaryService where TResource : class, IIdentifiable { /// - /// Handles a json:api request to retrieve a single resource or a collection of resources for a secondary endpoint, such as /articles/1/author or /articles/1/revisions. + /// Handles a JSON:API request to retrieve a single resource or a collection of resources for a secondary endpoint, such as /articles/1/author or /articles/1/revisions. /// Task GetSecondaryAsync(TId id, string relationshipName, CancellationToken cancellationToken); } diff --git a/src/JsonApiDotNetCore/Services/IRemoveFromRelationshipService.cs b/src/JsonApiDotNetCore/Services/IRemoveFromRelationshipService.cs index a34eca036c..baf4bf2313 100644 --- a/src/JsonApiDotNetCore/Services/IRemoveFromRelationshipService.cs +++ b/src/JsonApiDotNetCore/Services/IRemoveFromRelationshipService.cs @@ -15,7 +15,7 @@ public interface IRemoveFromRelationshipService where TResource : class, IIdentifiable { /// - /// Handles a json:api request to remove resources from a to-many relationship. + /// Handles a JSON:API request to remove resources from a to-many relationship. /// /// The identifier of the primary resource. /// The relationship to remove resources from. diff --git a/src/JsonApiDotNetCore/Services/ISetRelationshipService.cs b/src/JsonApiDotNetCore/Services/ISetRelationshipService.cs index 72906ccccb..aa2075a2f1 100644 --- a/src/JsonApiDotNetCore/Services/ISetRelationshipService.cs +++ b/src/JsonApiDotNetCore/Services/ISetRelationshipService.cs @@ -14,7 +14,7 @@ public interface ISetRelationshipService where TResource : class, IIdentifiable { /// - /// Handles a json:api request to perform a complete replacement of a relationship on an existing resource. + /// Handles a JSON:API request to perform a complete replacement of a relationship on an existing resource. /// /// The identifier of the primary resource. /// The relationship for which to perform a complete replacement. diff --git a/src/JsonApiDotNetCore/Services/IUpdateService.cs b/src/JsonApiDotNetCore/Services/IUpdateService.cs index 3db2807c96..13d3b590b1 100644 --- a/src/JsonApiDotNetCore/Services/IUpdateService.cs +++ b/src/JsonApiDotNetCore/Services/IUpdateService.cs @@ -14,7 +14,7 @@ public interface IUpdateService where TResource : class, IIdentifiable { /// - /// Handles a json:api request to update the attributes and/or relationships of an existing resource. + /// Handles a JSON:API request to update the attributes and/or relationships of an existing resource. /// Only the values of sent attributes are replaced. And only the values of sent relationships are replaced. /// Task UpdateAsync(TId id, TResource resource, CancellationToken cancellationToken); diff --git a/test/JsonApiDotNetCoreExampleTests/Helpers/Models/TodoItemClient.cs b/test/JsonApiDotNetCoreExampleTests/Helpers/Models/TodoItemClient.cs index 8dd88c4633..3cbe45501c 100644 --- a/test/JsonApiDotNetCoreExampleTests/Helpers/Models/TodoItemClient.cs +++ b/test/JsonApiDotNetCoreExampleTests/Helpers/Models/TodoItemClient.cs @@ -9,7 +9,7 @@ namespace JsonApiDotNetCoreExampleTests.Helpers.Models /// /// this "client" version of the is required because the /// base property that is overridden here does not have a setter. For a model - /// defined on a json:api client, it would not make sense to have an exposed attribute + /// defined on a JSON:API client, it would not make sense to have an exposed attribute /// without a setter. /// public class TodoItemClient : TodoItem diff --git a/test/JsonApiDotNetCoreExampleTests/IntegrationTests/ObjectAssertionsExtensions.cs b/test/JsonApiDotNetCoreExampleTests/IntegrationTests/ObjectAssertionsExtensions.cs index ca90bf960e..c4ab87ea6d 100644 --- a/test/JsonApiDotNetCoreExampleTests/IntegrationTests/ObjectAssertionsExtensions.cs +++ b/test/JsonApiDotNetCoreExampleTests/IntegrationTests/ObjectAssertionsExtensions.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreExampleTests.IntegrationTests public static class ObjectAssertionsExtensions { /// - /// Used to assert on a nullable column, whose value is returned as in json:api response body. + /// Used to assert on a nullable column, whose value is returned as in JSON:API response body. /// public static void BeCloseTo(this ObjectAssertions source, DateTimeOffset? expected, string because = "", params object[] becauseArgs) diff --git a/wiki/v4/content/serialization.md b/wiki/v4/content/serialization.md index 5abc4b2920..7145333b52 100644 --- a/wiki/v4/content/serialization.md +++ b/wiki/v4/content/serialization.md @@ -8,7 +8,7 @@ The main change for serialization is that we have split the serialization respon This split is done because during deserialization, some parts are relevant only for *client*-side parsing whereas others are only for *server*-side parsing. for example, a server deserializer will never have to deal with a `included` object list. Similarly, in serialization, a client serializer will for example never ever have to populate any other top-level members than the primary data (like `meta`, `included`). -Throughout the document and the code when referring to fields, members, object types, the technical language of json:api spec is used. At the core of (de)serialization is the +Throughout the document and the code when referring to fields, members, object types, the technical language of JSON:API spec is used. At the core of (de)serialization is the `Document` class, [see document spec](https://jsonapi.org/format/#document-structure). ## Changes @@ -23,7 +23,7 @@ The previous `JsonApiDeSerializer` implementation is now split into a `RequestDe This (base) class is responsible for: -* Converting the serialized string content into an intance of the `Document` class. Which is the most basic version of JSON API which has a `Data`, `Meta` and `Included` property. +* Converting the serialized string content into an intance of the `Document` class. Which is the most basic version of JSON:API which has a `Data`, `Meta` and `Included` property. * Building instances of the corresponding resource class (eg `Article`) by going through the document's primary data (`Document.Data`) For the spec for this: [Document spec](https://jsonapi.org/format/#document-top-level). Responsibility of any implementation the base class-specific parsing is shifted through the abstract `BaseDocumentParser.AfterProcessField()` method. This method is fired once each time after a `AttrAttribute` or `RelationshipAttribute` is processed. It allows a implementation of `BaseDocumentParser` to intercept the parsing and add steps that are only required for new implementations.