Skip to content

Fixed: hide duplicate stacktrace for ModelState errors #905

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 9, 2020

Conversation

bart-degreed
Copy link
Contributor

Since the recent change to make InvalidModelStateException derive from JsonApiException, long (unhelpful) stack traces are returned when multiple ModelState violations occur.

This is because Ben.Demystifier changes the stack trace of exceptions in-place, making it longer each time the same exception is rendered.

Adding stack traces from ExceptionHandler is unneeded in this case, because InvalidModelStateException itself already adds any stack traces returned from ModelState validation.

To illustrate, the response body for 4 violations from before this PR looked like:

{
  "errors": [
    {
      "id": "c7ecd3ac-babc-4635-a16c-f11d69e9004e",
      "status": "422",
      "title": "Input validation failed.",
      "detail": "The LastName field is required.",
      "source": {
        "pointer": "/data/attributes/last-name"
      },
      "meta": {
        "stack-trace": [
          "JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\r",
          "  {\r",
          "    \"Id\": \"c7ecd3ac-babc-4635-a16c-f11d69e9004e\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The LastName field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/last-name\"\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"10fdce4c-0c84-4371-a667-6dff84f0cbcc\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The field Location must be a string or array type with a maximum length of '255'.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/location\"\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"8c0a0e68-3b40-4add-93fe-c9675803f757\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The FirstName field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/first-name\"\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"8fb6b2e7-3886-42bb-abc2-488e54855196\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The EmployeeId field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/employee-id\"\r",
          "    }\r",
          "  }\r",
          "]\r",
          "   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\r",
          "   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\r",
          "   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\r",
          "   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r",
          "   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\r",
          "   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)"
        ]
      }
    },
    {
      "id": "10fdce4c-0c84-4371-a667-6dff84f0cbcc",
      "status": "422",
      "title": "Input validation failed.",
      "detail": "The field Location must be a string or array type with a maximum length of '255'.",
      "source": {
        "pointer": "/data/attributes/location"
      },
      "meta": {
        "stack-trace": [
          "JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\r",
          "  {\r",
          "    \"Id\": \"c7ecd3ac-babc-4635-a16c-f11d69e9004e\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The LastName field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/last-name\"\r",
          "    },\r",
          "    \"Meta\": {\r",
          "      \"StackTrace\": [\r",
          "        \"JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"c7ecd3ac-babc-4635-a16c-f11d69e9004e\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The LastName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/last-name\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"10fdce4c-0c84-4371-a667-6dff84f0cbcc\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The field Location must be a string or array type with a maximum length of '255'.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/location\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8c0a0e68-3b40-4add-93fe-c9675803f757\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The FirstName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/first-name\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8fb6b2e7-3886-42bb-abc2-488e54855196\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The EmployeeId field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/employee-id\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  }\\r\",\r",
          "        \"]\\r\",\r",
          "        \"   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\\r\",\r",
          "        \"   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\\r\",\r",
          "        \"   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\\r\",\r",
          "        \"   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)\"\r",
          "      ]\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"10fdce4c-0c84-4371-a667-6dff84f0cbcc\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The field Location must be a string or array type with a maximum length of '255'.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/location\"\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"8c0a0e68-3b40-4add-93fe-c9675803f757\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The FirstName field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/first-name\"\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"8fb6b2e7-3886-42bb-abc2-488e54855196\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The EmployeeId field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/employee-id\"\r",
          "    }\r",
          "  }\r",
          "]\r",
          "   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\r",
          "   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\r",
          "   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\r",
          "   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r",
          "   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\r",
          "   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)"
        ]
      }
    },
    {
      "id": "8c0a0e68-3b40-4add-93fe-c9675803f757",
      "status": "422",
      "title": "Input validation failed.",
      "detail": "The FirstName field is required.",
      "source": {
        "pointer": "/data/attributes/first-name"
      },
      "meta": {
        "stack-trace": [
          "JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\r",
          "  {\r",
          "    \"Id\": \"c7ecd3ac-babc-4635-a16c-f11d69e9004e\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The LastName field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/last-name\"\r",
          "    },\r",
          "    \"Meta\": {\r",
          "      \"StackTrace\": [\r",
          "        \"JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"c7ecd3ac-babc-4635-a16c-f11d69e9004e\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The LastName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/last-name\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"10fdce4c-0c84-4371-a667-6dff84f0cbcc\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The field Location must be a string or array type with a maximum length of '255'.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/location\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8c0a0e68-3b40-4add-93fe-c9675803f757\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The FirstName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/first-name\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8fb6b2e7-3886-42bb-abc2-488e54855196\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The EmployeeId field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/employee-id\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  }\\r\",\r",
          "        \"]\\r\",\r",
          "        \"   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\\r\",\r",
          "        \"   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\\r\",\r",
          "        \"   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\\r\",\r",
          "        \"   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)\"\r",
          "      ]\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"10fdce4c-0c84-4371-a667-6dff84f0cbcc\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The field Location must be a string or array type with a maximum length of '255'.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/location\"\r",
          "    },\r",
          "    \"Meta\": {\r",
          "      \"StackTrace\": [\r",
          "        \"JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"c7ecd3ac-babc-4635-a16c-f11d69e9004e\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The LastName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/last-name\\\"\\r\",\r",
          "        \"    },\\r\",\r",
          "        \"    \\\"Meta\\\": {\\r\",\r",
          "        \"      \\\"StackTrace\\\": [\\r\",\r",
          "        \"        \\\"JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"c7ecd3ac-babc-4635-a16c-f11d69e9004e\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The LastName field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/last-name\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"10fdce4c-0c84-4371-a667-6dff84f0cbcc\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The field Location must be a string or array type with a maximum length of '255'.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/location\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"8c0a0e68-3b40-4add-93fe-c9675803f757\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The FirstName field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/first-name\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"8fb6b2e7-3886-42bb-abc2-488e54855196\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The EmployeeId field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/employee-id\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  }\\\\r\\\",\\r\",\r",
          "        \"        \\\"]\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)\\\"\\r\",\r",
          "        \"      ]\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"10fdce4c-0c84-4371-a667-6dff84f0cbcc\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The field Location must be a string or array type with a maximum length of '255'.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/location\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8c0a0e68-3b40-4add-93fe-c9675803f757\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The FirstName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/first-name\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8fb6b2e7-3886-42bb-abc2-488e54855196\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The EmployeeId field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/employee-id\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  }\\r\",\r",
          "        \"]\\r\",\r",
          "        \"   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\\r\",\r",
          "        \"   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\\r\",\r",
          "        \"   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\\r\",\r",
          "        \"   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)\"\r",
          "      ]\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"8c0a0e68-3b40-4add-93fe-c9675803f757\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The FirstName field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/first-name\"\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"8fb6b2e7-3886-42bb-abc2-488e54855196\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The EmployeeId field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/employee-id\"\r",
          "    }\r",
          "  }\r",
          "]\r",
          "   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\r",
          "   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\r",
          "   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\r",
          "   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r",
          "   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\r",
          "   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)"
        ]
      }
    },
    {
      "id": "8fb6b2e7-3886-42bb-abc2-488e54855196",
      "status": "422",
      "title": "Input validation failed.",
      "detail": "The EmployeeId field is required.",
      "source": {
        "pointer": "/data/attributes/employee-id"
      },
      "meta": {
        "stack-trace": [
          "JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\r",
          "  {\r",
          "    \"Id\": \"c7ecd3ac-babc-4635-a16c-f11d69e9004e\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The LastName field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/last-name\"\r",
          "    },\r",
          "    \"Meta\": {\r",
          "      \"StackTrace\": [\r",
          "        \"JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"c7ecd3ac-babc-4635-a16c-f11d69e9004e\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The LastName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/last-name\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"10fdce4c-0c84-4371-a667-6dff84f0cbcc\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The field Location must be a string or array type with a maximum length of '255'.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/location\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8c0a0e68-3b40-4add-93fe-c9675803f757\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The FirstName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/first-name\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8fb6b2e7-3886-42bb-abc2-488e54855196\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The EmployeeId field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/employee-id\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  }\\r\",\r",
          "        \"]\\r\",\r",
          "        \"   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\\r\",\r",
          "        \"   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\\r\",\r",
          "        \"   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\\r\",\r",
          "        \"   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)\"\r",
          "      ]\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"10fdce4c-0c84-4371-a667-6dff84f0cbcc\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The field Location must be a string or array type with a maximum length of '255'.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/location\"\r",
          "    },\r",
          "    \"Meta\": {\r",
          "      \"StackTrace\": [\r",
          "        \"JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"c7ecd3ac-babc-4635-a16c-f11d69e9004e\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The LastName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/last-name\\\"\\r\",\r",
          "        \"    },\\r\",\r",
          "        \"    \\\"Meta\\\": {\\r\",\r",
          "        \"      \\\"StackTrace\\\": [\\r\",\r",
          "        \"        \\\"JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"c7ecd3ac-babc-4635-a16c-f11d69e9004e\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The LastName field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/last-name\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"10fdce4c-0c84-4371-a667-6dff84f0cbcc\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The field Location must be a string or array type with a maximum length of '255'.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/location\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"8c0a0e68-3b40-4add-93fe-c9675803f757\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The FirstName field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/first-name\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"8fb6b2e7-3886-42bb-abc2-488e54855196\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The EmployeeId field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/employee-id\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  }\\\\r\\\",\\r\",\r",
          "        \"        \\\"]\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)\\\"\\r\",\r",
          "        \"      ]\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"10fdce4c-0c84-4371-a667-6dff84f0cbcc\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The field Location must be a string or array type with a maximum length of '255'.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/location\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8c0a0e68-3b40-4add-93fe-c9675803f757\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The FirstName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/first-name\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8fb6b2e7-3886-42bb-abc2-488e54855196\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The EmployeeId field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/employee-id\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  }\\r\",\r",
          "        \"]\\r\",\r",
          "        \"   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\\r\",\r",
          "        \"   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\\r\",\r",
          "        \"   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\\r\",\r",
          "        \"   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)\"\r",
          "      ]\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"8c0a0e68-3b40-4add-93fe-c9675803f757\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The FirstName field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/first-name\"\r",
          "    },\r",
          "    \"Meta\": {\r",
          "      \"StackTrace\": [\r",
          "        \"JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"c7ecd3ac-babc-4635-a16c-f11d69e9004e\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The LastName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/last-name\\\"\\r\",\r",
          "        \"    },\\r\",\r",
          "        \"    \\\"Meta\\\": {\\r\",\r",
          "        \"      \\\"StackTrace\\\": [\\r\",\r",
          "        \"        \\\"JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"c7ecd3ac-babc-4635-a16c-f11d69e9004e\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The LastName field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/last-name\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"10fdce4c-0c84-4371-a667-6dff84f0cbcc\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The field Location must be a string or array type with a maximum length of '255'.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/location\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"8c0a0e68-3b40-4add-93fe-c9675803f757\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The FirstName field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/first-name\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"8fb6b2e7-3886-42bb-abc2-488e54855196\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The EmployeeId field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/employee-id\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  }\\\\r\\\",\\r\",\r",
          "        \"        \\\"]\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)\\\"\\r\",\r",
          "        \"      ]\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"10fdce4c-0c84-4371-a667-6dff84f0cbcc\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The field Location must be a string or array type with a maximum length of '255'.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/location\\\"\\r\",\r",
          "        \"    },\\r\",\r",
          "        \"    \\\"Meta\\\": {\\r\",\r",
          "        \"      \\\"StackTrace\\\": [\\r\",\r",
          "        \"        \\\"JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"c7ecd3ac-babc-4635-a16c-f11d69e9004e\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The LastName field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/last-name\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    },\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Meta\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"StackTrace\\\\\\\": [\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"JsonApiDotNetCore.Errors.InvalidModelStateException: Errors = [\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"  {\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Id\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"c7ecd3ac-babc-4635-a16c-f11d69e9004e\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Status\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"422\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Title\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"Input validation failed.\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Detail\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"The LastName field is required.\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Source\\\\\\\\\\\\\\\": {\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"      \\\\\\\\\\\\\\\"Pointer\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"/data/attributes/last-name\\\\\\\\\\\\\\\"\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    }\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"  },\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"  {\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Id\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"10fdce4c-0c84-4371-a667-6dff84f0cbcc\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Status\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"422\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Title\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"Input validation failed.\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Detail\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"The field Location must be a string or array type with a maximum length of '255'.\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Source\\\\\\\\\\\\\\\": {\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"      \\\\\\\\\\\\\\\"Pointer\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"/data/attributes/location\\\\\\\\\\\\\\\"\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    }\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"  },\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"  {\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Id\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"8c0a0e68-3b40-4add-93fe-c9675803f757\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Status\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"422\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Title\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"Input validation failed.\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Detail\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"The FirstName field is required.\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Source\\\\\\\\\\\\\\\": {\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"      \\\\\\\\\\\\\\\"Pointer\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"/data/attributes/first-name\\\\\\\\\\\\\\\"\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    }\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"  },\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"  {\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Id\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"8fb6b2e7-3886-42bb-abc2-488e54855196\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Status\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"422\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Title\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"Input validation failed.\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Detail\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"The EmployeeId field is required.\\\\\\\\\\\\\\\",\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    \\\\\\\\\\\\\\\"Source\\\\\\\\\\\\\\\": {\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"      \\\\\\\\\\\\\\\"Pointer\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"/data/attributes/employee-id\\\\\\\\\\\\\\\"\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"    }\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"  }\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"]\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\\\\\\\\r\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"        \\\\\\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"      ]\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"10fdce4c-0c84-4371-a667-6dff84f0cbcc\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The field Location must be a string or array type with a maximum length of '255'.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/location\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"8c0a0e68-3b40-4add-93fe-c9675803f757\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The FirstName field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/first-name\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  },\\\\r\\\",\\r\",\r",
          "        \"        \\\"  {\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Id\\\\\\\": \\\\\\\"8fb6b2e7-3886-42bb-abc2-488e54855196\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Status\\\\\\\": \\\\\\\"422\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Title\\\\\\\": \\\\\\\"Input validation failed.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Detail\\\\\\\": \\\\\\\"The EmployeeId field is required.\\\\\\\",\\\\r\\\",\\r\",\r",
          "        \"        \\\"    \\\\\\\"Source\\\\\\\": {\\\\r\\\",\\r\",\r",
          "        \"        \\\"      \\\\\\\"Pointer\\\\\\\": \\\\\\\"/data/attributes/employee-id\\\\\\\"\\\\r\\\",\\r\",\r",
          "        \"        \\\"    }\\\\r\\\",\\r\",\r",
          "        \"        \\\"  }\\\\r\\\",\\r\",\r",
          "        \"        \\\"]\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\\\\r\\\",\\r\",\r",
          "        \"        \\\"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)\\\"\\r\",\r",
          "        \"      ]\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8c0a0e68-3b40-4add-93fe-c9675803f757\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The FirstName field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/first-name\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  },\\r\",\r",
          "        \"  {\\r\",\r",
          "        \"    \\\"Id\\\": \\\"8fb6b2e7-3886-42bb-abc2-488e54855196\\\",\\r\",\r",
          "        \"    \\\"Status\\\": \\\"422\\\",\\r\",\r",
          "        \"    \\\"Title\\\": \\\"Input validation failed.\\\",\\r\",\r",
          "        \"    \\\"Detail\\\": \\\"The EmployeeId field is required.\\\",\\r\",\r",
          "        \"    \\\"Source\\\": {\\r\",\r",
          "        \"      \\\"Pointer\\\": \\\"/data/attributes/employee-id\\\"\\r\",\r",
          "        \"    }\\r\",\r",
          "        \"  }\\r\",\r",
          "        \"]\\r\",\r",
          "        \"   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\\r\",\r",
          "        \"   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\\r\",\r",
          "        \"   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\\r\",\r",
          "        \"   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\\r\",\r",
          "        \"   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\\r\",\r",
          "        \"   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)\"\r",
          "      ]\r",
          "    }\r",
          "  },\r",
          "  {\r",
          "    \"Id\": \"8fb6b2e7-3886-42bb-abc2-488e54855196\",\r",
          "    \"Status\": \"422\",\r",
          "    \"Title\": \"Input validation failed.\",\r",
          "    \"Detail\": \"The EmployeeId field is required.\",\r",
          "    \"Source\": {\r",
          "      \"Pointer\": \"/data/attributes/employee-id\"\r",
          "    }\r",
          "  }\r",
          "]\r",
          "   at async Task<IActionResult> JsonApiDotNetCore.Controllers.BaseJsonApiController<TResource, TId>.PostAsync(TResource resource, CancellationToken cancellationToken) in D:/Source/Repos/JsonApiDotNetCore/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs:line 170\r",
          "   at async ValueTask<IActionResult> Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)\r",
          "   at TResult System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()+Awaited(?)\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()+Awaited(?)\r",
          "   at void Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r",
          "   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)\r",
          "   at Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\r",
          "   at async Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextExceptionFilterAsync()+Awaited(?)"
        ]
      }
    }
  ]
}

@bart-degreed bart-degreed requested a review from maurei December 9, 2020 14:32
@maurei maurei merged commit 0aa077b into master Dec 9, 2020
@maurei maurei deleted the fix-modelstate-stacktrace branch December 9, 2020 15:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants