Skip to content
This repository has been archived by the owner on May 7, 2018. It is now read-only.

Example Validator Result

oren edited this page Mar 15, 2016 · 14 revisions

Overview

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
    }
};

Full result object

Example input

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');

Example result

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
        }
    }
}
Clone this wiki locally