Note that the constraints specification is not fully decided yet, and as such should be interpreted as a person not as a machine. This will hopefully be tightened up

Please note, if you use a client that does not say "Accept: text/html" or similar, then you will get a response of application/json - suitable for machine parsing.

    "name" : "bool",
    "description" : "Boolean truth values",
    "fieldspec" : {
        "value": {
            "regex" : "^(true|false)$",
            "constraint" : null,
            "interpretation" : "boolean",
            "note" : "This should be just true/false and no other value"
        "href" : {
            "regex" : "^/([a-zA-Z_][a-zA-Z_0-9]*)(/([a-zA-Z_][a-zA-Z_0-9]*))*$",
            "constraint" : "(length($1)<30 and length($3)<30)",
            "interpretation" : "resourceid",
            "note" : "This should be the canonical URL path for the resource generally speaking - ala /some/resource/5",
        "help" : {
            "regex" : "^\".*\"$",
            "constraint" : null,
            "interpretation" : "string",
            "note": "This is human readable text intended to convey to the user something about this value"
        "type" : {
            "regex" : "^$",
            "constraint" : null,
            "interpretation" : "url description the type and constraints on the value",
            "note" : "Represents a link back to this description"