// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; using Newtonsoft.Json; namespace Microsoft.AspNetCore.Mvc { /// /// A machine-readable format for specifying errors in HTTP API responses based on https://tools.ietf.org/html/rfc7807. /// public class ProblemDetails { /// /// A URI reference [RFC3986] that identifies the problem type. This specification encourages that, when /// dereferenced, it provide human-readable documentation for the problem type /// (e.g., using HTML [W3C.REC-html5-20141028]). When this member is not present, its value is assumed to be /// "about:blank". /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public string Type { get; set; } /// /// A short, human-readable summary of the problem type.It SHOULD NOT change from occurrence to occurrence /// of the problem, except for purposes of localization(e.g., using proactive content negotiation; /// see[RFC7231], Section 3.4). /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public string Title { get; set; } /// /// The HTTP status code([RFC7231], Section 6) generated by the origin server for this occurrence of the problem. /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public int? Status { get; set; } /// /// A human-readable explanation specific to this occurrence of the problem. /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public string Detail { get; set; } /// /// A URI reference that identifies the specific occurrence of the problem.It may or may not yield further information if dereferenced. /// [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public string Instance { get; set; } /// /// Gets the for extension members. /// /// Problem type definitions MAY extend the problem details object with additional members. Extension members appear in the same namespace as /// other members of a problem type. /// /// /// /// The round-tripping behavior for is determined by the implementation of the Input \ Output formatters. /// In particular, complex types or collection types may not round-trip to the original type when using the built-in JSON or XML formatters. /// [JsonExtensionData] public IDictionary Extensions { get; } = new Dictionary(StringComparer.Ordinal); } }