{
  "target": "https://pkgedge.com/01/09520123456788",
  "tally": {
    "pass": 30,
    "warn": 1
  },
  "testCount": 31,
  "expectedTests": 31,
  "knowinglySkipped": [],
  "harnessFaults": [],
  "failures": [
    {
      "id": "linkOnRedirect",
      "status": "warn",
      "msg": "No link to the linkset detected when redirecting",
      "referenceStatus": "warn",
      "classification": "shared-with-reference"
    }
  ],
  "exitCode": 0,
  "mirrorEntries": 0,
  "suiteOccurrencesPatched": 1,
  "vendoredServed": {
    "https://ref.gs1.org/voc/data/linktypes": 1,
    "https://ref.gs1.org/standards/resolver/description-file-schema": 1,
    "https://gs1.github.io/linkset/gs1-linkset-schema.json": 1
  },
  "elapsedMs": 7235,
  "results": [
    {
      "id": "isURL",
      "status": "pass",
      "test": "Not listed as a conformance criterion but the DL URI must be a valid URL",
      "msg": "Given GS1 Digital Link URI is a valid URL",
      "url": ""
    },
    {
      "id": "validDL",
      "status": "pass",
      "test": "Given input must be a GS1 Digital Link URI",
      "msg": "Given input is a valid GS1 Digital Link URI",
      "url": ""
    },
    {
      "id": "isHttps",
      "status": "pass",
      "test": "SHALL support HTTP Over TLS (HTTPS)",
      "msg": "Given GS1 Digital Link URI defines HTTPS as its scheme",
      "url": ""
    },
    {
      "id": "plausibleDL",
      "status": "pass",
      "test": "Following GS1 Digital Link: URI syntax, we can check whether a URL plausibly is, or definitely is not, a DL URI",
      "msg": "URL under test plausibly is a GS1 Digital Link URI (uncompressed)",
      "url": ""
    },
    {
      "id": "basicWalkUp",
      "status": "pass",
      "test": "For each supported primary key, a resolver SHALL support all its key qualifiers.",
      "msg": "Resolver handles unknown qualifers by walking up the tree",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788%2F10%2FKL8G"
    },
    {
      "id": "tlsOK",
      "status": "pass",
      "test": "SHALL support HTTP Over TLS (HTTPS)",
      "msg": "Confirmed that server supports HTTP over TLS",
      "url": ""
    },
    {
      "id": "rdFile",
      "status": "pass",
      "test": "SHALL provide a resolver description file at /.well-known/gs1resolver",
      "msg": "Resolver description file found with at least minimum required data and is valid against the official GS1 schema",
      "url": ""
    },
    {
      "id": "httpVersion",
      "status": "pass",
      "test": "SHALL support HTTP 1.1 (or higher)",
      "msg": "Server at pkgedge.com supports HTTP 1.1",
      "url": "http://127.0.0.1:60195/?test=getHTTPversion&testVal=https%3A%2F%2Fpkgedge.com"
    },
    {
      "id": "corsCheck",
      "status": "pass",
      "test": "SHALL support CORS",
      "msg": "CORS headers detected",
      "url": "http://127.0.0.1:60195/?test=getCorsHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788"
    },
    {
      "id": "methodsCheck",
      "status": "pass",
      "test": "SHALL support HTTP 1.1 (or higher) GET, HEAD and OPTIONS requests.",
      "msg": "GET, HEAD and OPTIONS methods declared to be supported",
      "url": ""
    },
    {
      "id": "reportWith400",
      "status": "pass",
      "test": "SHALL extract and syntactically validate the URI and report errors with an HTTP response code of 400",
      "msg": "Non-conformant GS1 Digital Link URI correctly reported with 400 error",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788%2Ffoo"
    },
    {
      "id": "noErrorWith200",
      "status": "pass",
      "test": "A GS1 conformant resolver SHALL NOT use a 200 OK response code with a resource that indicates an error condition",
      "msg": "Error was correctly reported with a non-200 OK response code of HTTP 400",
      "url": ""
    },
    {
      "id": "trailingSlash",
      "status": "pass",
      "test": "SHOULD tolerate trailing slashes at the end of GS1 Digital Link URIs, i.e. the resolver SHOULD NOT fail if one is present",
      "msg": "Response from server with and without trailing slash is identical",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788"
    },
    {
      "id": "linkOnRedirect",
      "status": "warn",
      "test": "SHOULD expose the direct link to the linkset in an HTTP Link header when redirecting.",
      "msg": "No link to the linkset detected when redirecting",
      "url": ""
    },
    {
      "id": "legacyLinkHeaders",
      "status": "pass",
      "test": "The inclusion of all possible links in the HTTP Link header was deprecated in version 1.0.0 of the GS1-Conformant resolver standard, February 2024",
      "msg": "No unnecessary links found in HTTP Link header",
      "url": ""
    },
    {
      "id": "qsPassedOn",
      "status": "pass",
      "test": "By default, SHALL pass on all key=value pairs in the query string of the request URI (if present) when redirecting",
      "msg": "Query passed on when redirecting",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788%3Ffoo%3Dbar"
    },
    {
      "id": "ltLinksetNoRedirect",
      "status": "pass",
      "test": "On receiving a request for the linkset, by setting the linkType parameter to linkset, the resolver SHALL NOT redirect the query and SHALL return the linkset. ",
      "msg": "No redirect with linkType set to linkset",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788%3FlinkType%3Dlinkset"
    },
    {
      "id": "ltAcceptHeader",
      "status": "pass",
      "test": "On receiving a request for the linkset, by setting the HTTP Accept Header to application/linkset+json, the resolver SHALL NOT redirect the query and SHALL return the linkset. ",
      "msg": "Setting HTTP Accept header to application/linkset+json did not result in a redirect",
      "url": "http://127.0.0.1:60195/?test=getLinksetHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788%3FlinkType%3Dall"
    },
    {
      "id": "validLinkset",
      "status": "pass",
      "test": "Linkset must be valid according to published JSON schema",
      "msg": "Linkset validates against the published schema",
      "url": "http://127.0.0.1:60195/?test=getLinkset&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788"
    },
    {
      "id": "linksetJsonldCheck",
      "status": "pass",
      "test": "When requesting the linkset the HTTP response headers SHOULD include a Link header pointing to a JSON-LD context file",
      "msg": "Link to JSON-LD context file found",
      "url": ""
    },
    {
      "id": "declaredContentType",
      "status": "pass",
      "test": "If the HTTP Accept header is application/linkset+json, the resolver SHALL return the linkset serialised as JSON as defined by RFC9264",
      "msg": "Content type for the linkset retrieved from the resolver matches the requested application/linkset+json",
      "url": ""
    },
    {
      "id": "defaultLinkExists",
      "status": "pass",
      "test": "For each identified entity there SHALL be exactly one default link, the list of link types for which SHALL include gs1:defaultLink. This default is defined without any of the optional attributes, that is, it SHALL include a title, but SHALL NOT include other attributes.",
      "msg": "Default link found",
      "url": ""
    },
    {
      "id": "loForgs1pip0",
      "status": "pass",
      "test": "If the requested type of link is available, the resolver SHALL redirect to it",
      "msg": "Requesting linkType of gs1:pip with the following parameters redirected to https://riverbendfoods.example/granola type: undefined hreflang: en",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788%3FlinkType%3Dgs1%253Apip&mediaType=undefined&lang=en"
    },
    {
      "id": "loForgs1pip1",
      "status": "pass",
      "test": "If the requested type of link is available, the resolver SHALL redirect to it",
      "msg": "Requesting linkType of gs1:pip with the following parameters redirected to https://riverbendfoods.example/fr/granola type: undefined hreflang: fr",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788%3FlinkType%3Dgs1%253Apip&mediaType=undefined&lang=fr"
    },
    {
      "id": "loForgs1allergenInfo",
      "status": "pass",
      "test": "If the requested type of link is available, the resolver SHALL redirect to it",
      "msg": "Resolver correctly redirects to https://riverbendfoods.example/granola/allergens for gs1:allergenInfo ",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788%3FlinkType%3Dgs1%3AallergenInfo"
    },
    {
      "id": "singleDefaulLink",
      "status": "pass",
      "test": "For each identified entity there SHALL be exactly one default link, the list of link types for which SHALL include gs1:defaultLink. This default is defined without any of the optional attributes, that is, it SHALL include a title, but SHALL NOT include other attributes.",
      "msg": "Single default link found",
      "url": ""
    },
    {
      "id": "defaultTarget",
      "status": "pass",
      "test": "One of the links SHALL be recognised by the resolver as the default and the resolver SHALL redirect to that URL unless there is information supplied within the query to the contrary.",
      "msg": "Resolver correctly redirects to default",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788"
    },
    {
      "id": "loForgs1defaultLinkMulti0",
      "status": "pass",
      "test": "If the requested type of link is available, the resolver SHALL redirect to it",
      "msg": "Requesting linkType of gs1:defaultLinkMulti with the following parameters redirected to https://riverbendfoods.example/granola type: undefined hreflang: en",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788%3F&mediaType=undefined&lang=en"
    },
    {
      "id": "loForgs1defaultLinkMulti1",
      "status": "pass",
      "test": "If the requested type of link is available, the resolver SHALL redirect to it",
      "msg": "Requesting linkType of gs1:defaultLinkMulti with the following parameters redirected to https://riverbendfoods.example/fr/granola type: undefined hreflang: fr",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788%3F&mediaType=undefined&lang=fr"
    },
    {
      "id": "linkTypesDefined",
      "status": "pass",
      "test": "Link types SHOULD be given as a URI defined in the GS1 Web vocabulary",
      "msg": "All GS1 link types found are in the current ratified set",
      "url": ""
    },
    {
      "id": "specificLinkTypeNotFound",
      "status": "pass",
      "test": "If the requested type of link is not available, the resolver SHALL return a 404 Not Found message.",
      "msg": "Requesting a specific link type for which no link is available resulted in a 404 Not Found response",
      "url": "http://127.0.0.1:60195/?test=getAllHeaders&testVal=https%3A%2F%2Fpkgedge.com%2F01%2F09520123456788%3FlinkType%3Dgs1%3Anosuchlt"
    }
  ],
  "consoleLines": [
    "[error] Failed to load resource: the server responded with a status of 500 ()",
    "[warning] unknown format \"uri\" ignored in schema at path \"#/properties/resolverRoot\"",
    "[warning] unknown format \"uri\" ignored in schema at path \"#/properties/resolverRoot\"",
    "[warning] unknown format \"uri\" ignored in schema at path \"#/properties/supportedLinkType/items/properties/namespace\"",
    "[warning] unknown format \"uri\" ignored in schema at path \"#/properties/supportedLinkType/items/properties/namespace\"",
    "[warning] unknown format \"uri\" ignored in schema at path \"#/properties/supportedContextValuesExternal/items/properties/url\"",
    "[warning] unknown format \"uri\" ignored in schema at path \"#/properties/supportedContextValuesExternal/items/properties/url\"",
    "[warning] unknown format \"uri\" ignored in schema at path \"#/properties/extensionProfile\"",
    "[warning] unknown format \"uri\" ignored in schema at path \"#/properties/extensionProfile\"",
    "[warning] unknown format \"uri\" ignored in schema at path \"#/properties/jsonLdContextLocation\"",
    "[warning] unknown format \"uri\" ignored in schema at path \"#/properties/jsonLdContextLocation\""
  ]
}
