This repository has been archived by the owner on May 7, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 13
Example Validator Result
oren edited this page Mar 15, 2016
·
14 revisions
The basic structure of a validator result object is:
var data = {
raw: {
"input": "" // i.e. object, json string, url, or signature
},
parse: {
"version": "1.1.0",
"type": "hosted",
"scheme": "1.1.0-hosted",
"assertion": {} // The extracted/fetched assertion object
},
assertion: {}, // Same as parse.assertion
guid: "ab4a19c9968e56c99d8dbbb473d867a9d996e583500c2754a513269a49130931",
badge: {}, // The extracted/fetched badgeClass object
issuer: {}, // The extracted/fetched issuerOrganization object
objects: true, // Whether the objects pass validation
recipient: true, // Whether the recipients' interdependent fields match properly
extensions: {
"myExtension": {} // The extracted extension objects from the 1.1 badge object.
},
resources: {}, // Information about fetched resources, i.e. images, filetype headers, extension contexts
unrevoked: true, // Whether the badge has been revoked, only required for signed verification
signature: true, // Whether the signature matches, only required for signed verification
deep_equal: true, // Whether the remote matches the passed badge object, only required for hosted verification
extension_schemas: {
"myExtension": {} // The fetched schema document (json object)
},
validate_extensions: {
"myExtension": {} // A jsonschema ValidatorResult object
}
};
var assertion = {
"@context": "https://w3id.org/openbadges/v1",
"type": "Assertion",
"id": "https://example.org/assertion/1",
"uid": "d3c4ff",
"recipient": {
"identity": "sha256$8f0e05590e2335853044e4ec212978013a9a416a4a711a0813ce1f97574e4d54",
"salt": "seasalt",
"hashed": true,
"type": "email"
},
"verify": {
"type": "hosted",
"url": "https://example.org/1.1/assertion"
},
"badge": "https://example.org/1.1/badge",
"issuedOn": "2013-02-18T18:10+0500",
"image": "https://example.org/assertion-image",
"evidence": "https://example.org/evidence",
"expires": "2014-02-18T18:10+0500",
"myExtension": {
"@context": "https://example.org/1.1/MyExtension/context.json",
"type": [
"Extension",
"extensions:MyExtension"
],
"myBoolean": true,
"myInteger": 2,
"myString": "foo",
"myObject": {
"myProperty": "myValue"
},
"myOptionalString": "bar"
}
};
validator(assertion, function (err, data) {
if (err == null) {
// Success! This is a valid badge. Let's check out all the data:
console.log(data);
}
else {
// Oops! Something is wrong. Let's see the error message:
console.log(err);
// ...and let's also see the data we collected before we bailed:
console.log(data);
}
}, '1.1.0');
Produces:
{
"raw": {
"input": {
"@context": "https://w3id.org/openbadges/v1",
"type": "Assertion",
"id": "https://example.org/assertion/1",
"uid": "d3c4ff",
"recipient": {
"identity": "sha256$8f0e05590e2335853044e4ec212978013a9a416a4a711a0813ce1f97574e4d54",
"salt": "seasalt",
"hashed": true,
"type": "email"
},
"verify": {
"type": "hosted",
"url": "https://example.org/1.1/assertion"
},
"badge": "https://example.org/1.1/badge",
"issuedOn": "2013-02-18T18:10+0500",
"image": "https://example.org/assertion-image",
"evidence": "https://example.org/evidence",
"expires": "2014-02-18T18:10+0500",
"myExtension": {
"@context": "https://example.org/1.1/MyExtension/context.json",
"type": [
"Extension",
"extensions:MyExtension"
],
"myBoolean": true,
"myInteger": 2,
"myString": "foo",
"myObject": {
"myProperty": "myValue"
},
"myOptionalString": "bar"
}
}
},
"parse": {
"version": "1.1.0",
"type": "hosted",
"scheme": "1.1.0-hosted",
"assertion": {
"@context": "https://w3id.org/openbadges/v1",
"type": "Assertion",
"id": "https://example.org/assertion/1",
"uid": "d3c4ff",
"recipient": {
"identity": "sha256$8f0e05590e2335853044e4ec212978013a9a416a4a711a0813ce1f97574e4d54",
"salt": "seasalt",
"hashed": true,
"type": "email"
},
"verify": {
"type": "hosted",
"url": "https://example.org/1.1/assertion"
},
"badge": "https://example.org/1.1/badge",
"issuedOn": "2013-02-18T18:10+0500",
"image": "https://example.org/assertion-image",
"evidence": "https://example.org/evidence",
"expires": "2014-02-18T18:10+0500",
"myExtension": {
"@context": "https://example.org/1.1/MyExtension/context.json",
"type": [
"Extension",
"extensions:MyExtension"
],
"myBoolean": true,
"myInteger": 2,
"myString": "foo",
"myObject": {
"myProperty": "myValue"
},
"myOptionalString": "bar"
}
}
},
"assertion": {
"@context": "https://w3id.org/openbadges/v1",
"type": "Assertion",
"id": "https://example.org/assertion/1",
"uid": "d3c4ff",
"recipient": {
"identity": "sha256$8f0e05590e2335853044e4ec212978013a9a416a4a711a0813ce1f97574e4d54",
"salt": "seasalt",
"hashed": true,
"type": "email"
},
"verify": {
"type": "hosted",
"url": "https://example.org/1.1/assertion"
},
"badge": "https://example.org/1.1/badge",
"issuedOn": "2013-02-18T18:10+0500",
"image": "https://example.org/assertion-image",
"evidence": "https://example.org/evidence",
"expires": "2014-02-18T18:10+0500",
"myExtension": {
"@context": "https://example.org/1.1/MyExtension/context.json",
"type": [
"Extension",
"extensions:MyExtension"
],
"myBoolean": true,
"myInteger": 2,
"myString": "foo",
"myObject": {
"myProperty": "myValue"
},
"myOptionalString": "bar"
}
},
"guid": "ab4a19c9968e56c99d8dbbb473d867a9d996e583500c2754a513269a49130931",
"badge": {
"@context": "https://w3id.org/openbadges/v1",
"type": "BadgeClass",
"id": "https://example.org/badge",
"name": "Some Badge",
"description": "A short description of the badge",
"image": "https://example.org/badge-image",
"criteria": "https://example.org/criteria",
"issuer": "https://example.org/1.1/issuer",
"alignment": [
{
"name": "Standard One",
"url": "https://standards.example.org/1",
"description": "some standard"
},
{
"name": "Standard Two",
"url": "https://standards.example.org/2",
"description": "some other standard"
}
],
"tags": [
"generic",
"badge",
"stuff"
]
},
"issuer": {
"@context": "https://w3id.org/openbadges/v1",
"type": "Issuer",
"id": "https://example.org/issuer",
"name": "Some Issuer",
"url": "https://example.org",
"description": "We issue example badges.",
"image": "https://example.org/issuer-image",
"email": "[email protected]",
"revocationList": "https://example.org/revocation-list"
},
"objects": true,
"recipient": true,
"extensions": {
"myExtension": {
"@context": "https://example.org/1.1/MyExtension/context.json",
"type": [
"Extension",
"extensions:MyExtension"
],
"myBoolean": true,
"myInteger": 2,
"myString": "foo",
"myObject": {
"myProperty": "myValue"
},
"myOptionalString": "bar"
}
},
"resources": {
"assertion.image": {
"type": "Buffer",
"data": [
97,
115,
115,
101,
114,
116,
105,
111,
110,
45,
105,
109,
97,
103,
101
]
},
"assertion.verify.url": {
"@context": "https://w3id.org/openbadges/v1",
"type": "Assertion",
"id": "https://example.org/assertion/1",
"uid": "d3c4ff",
"recipient": {
"identity": "sha256$8f0e05590e2335853044e4ec212978013a9a416a4a711a0813ce1f97574e4d54",
"salt": "seasalt",
"hashed": true,
"type": "email"
},
"verify": {
"type": "hosted",
"url": "https://example.org/1.1/assertion"
},
"badge": "https://example.org/1.1/badge",
"issuedOn": "2013-02-18T18:10+0500",
"image": "https://example.org/assertion-image",
"evidence": "https://example.org/evidence",
"expires": "2014-02-18T18:10+0500",
"myExtension": {
"@context": "https://example.org/1.1/MyExtension/context.json",
"type": [
"Extension",
"extensions:MyExtension"
],
"myBoolean": true,
"myInteger": 2,
"myString": "foo",
"myObject": {
"myProperty": "myValue"
},
"myOptionalString": "bar"
}
},
"badge.image": {
"type": "Buffer",
"data": [
98,
97,
100,
103,
101,
45,
105,
109,
97,
103,
101
]
},
"issuer.image": {
"type": "Buffer",
"data": [
105,
115,
115,
117,
101,
114,
45,
105,
109,
97,
103,
101
]
},
"issuer.revocationList": {
"found": true
},
"extensions.myExtension.@context": {
"@context": {
"obi": "https://w3id.org/openbadges#",
"url": "extensions:1.1/MyExtension/context.json"
},
"obi:validation": [
{
"obi:validatesType": "extensions:MyExtension",
"obi:validationSchema": "https://example.org/1.1/MyExtension/schema.json"
}
]
}
},
"unrevoked": "Only required for signed verification",
"signature": "Only required for signed verification",
"deep_equal": true,
"extension_schemas": {
"myExtension": {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "My Extension",
"description": "This extension is for test purposes only.",
"type": "object",
"properties": {
"myBoolean": {
"type": "boolean"
},
"myInteger": {
"type": "integer"
},
"myString": {
"type": "string"
},
"myObject": {
"type": "object"
},
"myOptionalString": {
"type": "string"
}
},
"required": [
"myBoolean",
"myInteger",
"myString",
"myObject"
]
}
},
"validate_extensions": {
"myExtension": {
"instance": {
"@context": "https://example.org/1.1/MyExtension/context.json",
"type": [
"Extension",
"extensions:MyExtension"
],
"myBoolean": true,
"myInteger": 2,
"myString": "foo",
"myObject": {
"myProperty": "myValue"
},
"myOptionalString": "bar"
},
"schema": {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "My Extension",
"description": "This extension is for test purposes only.",
"type": "object",
"properties": {
"myBoolean": {
"type": "boolean"
},
"myInteger": {
"type": "integer"
},
"myString": {
"type": "string"
},
"myObject": {
"type": "object"
},
"myOptionalString": {
"type": "string"
}
},
"required": [
"myBoolean",
"myInteger",
"myString",
"myObject"
]
},
"propertyPath": "instance",
"errors": [],
"disableFormat": false
}
}
}