{
  "tradle.API": {
    "id": "tradle.API",
    "type": "tradle.Model",
    "title": "API",
    "properties": {
      "name": {
        "displayName": true,
        "type": "string",
        "sample": "company.name"
      },
      "provider": {
        "type": "object",
        "ref": "tradle.Organization"
      }
    },
    "required": [
      "name"
    ]
  },
  "tradle.APIBasedVerificationMethod": {
    "id": "tradle.APIBasedVerificationMethod",
    "type": "tradle.Model",
    "title": "API based verification",
    "subClassOf": "tradle.Method",
    "properties": {
      "api": {
        "type": "object",
        "ref": "tradle.API",
        "inlined": true
      },
      "reference": {
        "skipLabel": true,
        "type": "array",
        "items": {
          "properties": {
            "queryId": {
              "type": "string"
            }
          }
        }
      },
      "title": {
        "type": "string",
        "readOnly": true,
        "displayName": true,
        "displayAs": "based on {1} checked by {2} automatically (via API)",
        "group": [
          "aspect",
          "api"
        ]
      },
      "confidence": {
        "type": "number",
        "min": "0",
        "max": "1"
      },
      "aspect": {
        "type": "string"
      },
      "rawData": {
        "type": "object",
        "skipLabel": true,
        "title": "Raw data",
        "range": "json",
        "readOnly": true
      }
    },
    "required": [
      "aspect",
      "api",
      "reference"
    ],
    "viewCols": [
      "aspect",
      "api",
      "reference",
      "confidence",
      "rawData"
    ]
  },
  "tradle.Ack": {
    "id": "tradle.Ack",
    "type": "tradle.Model",
    "title": "Item Received",
    "properties": {
      "message": {
        "skipLabel": true,
        "type": "string"
      },
      "item": {
        "type": "object",
        "ref": "tradle.Message",
        "readOnly": true
      }
    },
    "required": [
      "item",
      "message"
    ],
    "viewCols": [
      "message"
    ]
  },
  "tradle.AdditionalInfo": {
    "id": "tradle.AdditionalInfo",
    "type": "tradle.Model",
    "title": "Additional Information",
    "properties": {
      "_t": {
        "type": "string",
        "readOnly": true
      },
      "message": {
        "type": "string",
        "displayName": true
      },
      "from": {
        "type": "object",
        "readOnly": true,
        "ref": "tradle.Identity"
      },
      "to": {
        "type": "object",
        "ref": "tradle.Identity",
        "readOnly": true
      },
      "time": {
        "type": "date",
        "readOnly": true,
        "displayName": true
      },
      "document": {
        "ref": "tradle.Message",
        "readOnly": true,
        "type": "object"
      },
      "confirmed": {
        "type": "boolean",
        "readOnly": true
      }
    },
    "required": [
      "to",
      "from",
      "message"
    ],
    "viewCols": [
      "message"
    ]
  },
  "tradle.AppState": {
    "id": "tradle.AppState",
    "title": "App State",
    "type": "tradle.Model",
    "properties": {
      "state": {
        "displayName": true,
        "type": "string"
      }
    }
  },
  "tradle.Application": {
    "type": "tradle.Model",
    "title": "Application",
    "id": "tradle.Application",
    "properties": {
      "applicantName": {
        "type": "string"
      },
      "applicant": {
        "type": "object",
        "ref": "tradle.Identity"
      },
      "relationshipManagers": {
        "type": "array",
        "items": {
          "ref": "tradle.Identity"
        }
      },
      "status": {
        "type": "string",
        "skipLabel": true
      },
      "dateStarted": {
        "type": "date"
      },
      "dateCompleted": {
        "type": "date"
      },
      "dateEvaluated": {
        "type": "date"
      },
      "dateModified": {
        "type": "date"
      },
      "context": {
        "type": "string"
      },
      "request": {
        "type": "object",
        "ref": "tradle.Form"
      },
      "requestFor": {
        "type": "string",
        "range": "model",
        "displayName": true
      },
      "submissions": {
        "type": "array",
        "items": {
          "ref": "tradle.ApplicationSubmission",
          "backlink": "application"
        }
      },
      "forms": {
        "type": "array",
        "items": {
          "ref": "tradle.ApplicationSubmission",
          "backlink": "application",
          "filter": {
            "SUBCLASS_OF": {
              "submission._t": [
                "tradle.Form"
              ]
            }
          }
        }
      },
      "editRequests": {
        "type": "array",
        "items": {
          "ref": "tradle.ApplicationSubmission",
          "backlink": "application",
          "filter": {
            "EQ": {
              "submission._t": "tradle.FormError"
            }
          }
        }
      },
      "verifications": {
        "type": "array",
        "items": {
          "ref": "tradle.ApplicationSubmission",
          "backlink": "application",
          "filter": {
            "EQ": {
              "submission._t": "tradle.Verification"
            }
          }
        }
      },
      "checks": {
        "type": "array",
        "items": {
          "ref": "tradle.Check",
          "backlink": "application"
        }
      },
      "certificate": {
        "type": "object",
        "ref": "tradle.MyProduct"
      },
      "archived": {
        "type": "boolean"
      },
      "draft": {
        "type": "boolean",
        "description": "true if this is a draft for another application"
      },
      "prefillFromApplication": {
        "type": "object",
        "ref": "tradle.Application"
      }
    },
    "viewCols": [
      "status",
      "applicantName",
      "requestFor",
      "dateStarted",
      "dateModified",
      "dateCompleted",
      "archived"
    ]
  },
  "tradle.ApplicationApproval": {
    "id": "tradle.ApplicationApproval",
    "type": "tradle.Model",
    "title": "Application Approval",
    "notEditable": true,
    "properties": {
      "message": {
        "type": "string",
        "readOnly": true,
        "skipLabel": true,
        "displayName": true
      },
      "application": {
        "type": "object",
        "ref": "tradle.Application",
        "readOnly": true
      },
      "forms": {
        "type": "array",
        "items": {
          "type": "object",
          "ref": "tradle.Form"
        }
      }
    },
    "required": [
      "message",
      "application"
    ],
    "viewCols": [
      "message"
    ]
  },
  "tradle.ApplicationDenial": {
    "id": "tradle.ApplicationDenial",
    "type": "tradle.Model",
    "title": "Application Denial",
    "notEditable": true,
    "properties": {
      "message": {
        "type": "string",
        "readOnly": true,
        "skipLabel": true,
        "displayName": true
      },
      "application": {
        "type": "object",
        "ref": "tradle.Application",
        "readOnly": true
      },
      "forms": {
        "type": "array",
        "items": {
          "type": "object",
          "ref": "tradle.Form"
        }
      }
    },
    "required": [
      "message",
      "application"
    ],
    "viewCols": [
      "message"
    ]
  },
  "tradle.ApplicationSubmission": {
    "type": "tradle.Model",
    "id": "tradle.ApplicationSubmission",
    "title": "Application Submission",
    "interfaces": [
      "tradle.Intersection"
    ],
    "properties": {
      "application": {
        "type": "object",
        "ref": "tradle.Application"
      },
      "submission": {
        "type": "object",
        "ref": "tradle.Object",
        "displayName": true
      },
      "context": {
        "type": "string"
      }
    },
    "required": [
      "application",
      "submission"
    ],
    "primaryKeys": {
      "hashKey": "application._permalink",
      "rangeKey": "submission._permalink"
    },
    "indexes": [
      {
        "hashKey": "context",
        "rangeKey": "_time"
      },
      {
        "hashKey": "_permalink"
      }
    ],
    "viewCols": [
      "application",
      "submission"
    ]
  },
  "tradle.ApplicationSubmitted": {
    "id": "tradle.ApplicationSubmitted",
    "type": "tradle.Model",
    "title": "Application Submitted",
    "properties": {
      "message": {
        "type": "string",
        "sample": "lorem.sentence"
      },
      "requestFor": {
        "type": "string"
      },
      "context": {
        "type": "string"
      },
      "forms": {
        "type": "array",
        "items": {
          "type": "object",
          "ref": "tradle.Form"
        }
      }
    }
  },
  "tradle.Aspect": {
    "id": "tradle.Aspect",
    "type": "tradle.Model",
    "title": "Aspect",
    "properties": {
      "name": {
        "type": "string"
      },
      "methods": {
        "type": "array",
        "items": {
          "ref": "tradle.Method"
        }
      }
    },
    "required": [
      "name",
      "methods"
    ],
    "viewCols": [
      "name",
      "methods"
    ]
  },
  "tradle.AssignRelationshipManager": {
    "id": "tradle.AssignRelationshipManager",
    "title": "Assign Relationship Manager",
    "subClassOf": "tradle.Form",
    "type": "tradle.Model",
    "properties": {
      "employee": {
        "type": "object",
        "ref": "tradle.Identity"
      },
      "application": {
        "type": "object",
        "ref": "tradle.Application",
        "displayName": true
      }
    },
    "required": [
      "employee",
      "application"
    ],
    "viewCols": [
      "employee",
      "application"
    ]
  },
  "tradle.BacklinkItem": {
    "type": "tradle.Model",
    "id": "tradle.BacklinkItem",
    "title": "Backlink Item",
    "properties": {
      "source": {
        "type": "object",
        "ref": "tradle.Object"
      },
      "target": {
        "type": "object",
        "ref": "tradle.Object"
      },
      "linkProp": {
        "type": "string",
        "description": "forward link property"
      }
    },
    "required": [
      "source",
      "target",
      "linkProp"
    ],
    "primaryKeys": {
      "hashKey": "target._permalink",
      "rangeKey": [
        "linkProp",
        "source._permalink"
      ]
    },
    "indexes": [
      {
        "hashKey": "source._permalink",
        "rangeKey": [
          "linkProp",
          "target._permalink"
        ]
      }
    ]
  },
  "tradle.BasicContactInfo": {
    "id": "tradle.BasicContactInfo",
    "title": "Basic Contact Info",
    "subClassOf": "tradle.Form",
    "type": "tradle.Model",
    "properties": {
      "firstName": {
        "type": "string",
        "sample": "name.firstName"
      },
      "lastName": {
        "type": "string",
        "sample": "name.lastName"
      },
      "email": {
        "type": "string",
        "range": "email",
        "keyboard": "email-address",
        "sample": "internet.email"
      },
      "formattedName": {
        "type": "string",
        "displayAs": "{1} {2}",
        "group": [
          "firstName",
          "lastName"
        ],
        "readOnly": true,
        "displayName": true
      },
      "photos": {
        "type": "array",
        "range": "photo",
        "inlined": true,
        "items": {
          "ref": "tradle.Photo"
        }
      }
    },
    "required": [
      "firstName",
      "lastName",
      "email"
    ],
    "viewCols": [
      "firstName",
      "lastName",
      "photos"
    ]
  },
  "tradle.BetaTesterContactInfo": {
    "id": "tradle.BetaTesterContactInfo",
    "title": "Beta Tester Contact Info",
    "subClassOf": "tradle.Form",
    "type": "tradle.Model",
    "properties": {
      "firstName": {
        "type": "string"
      },
      "lastName": {
        "type": "string"
      },
      "email": {
        "type": "string",
        "range": "email",
        "keyboard": "email-address"
      },
      "dockerhub": {
        "type": "string",
        "title": "Docker Hub username"
      },
      "github": {
        "type": "string",
        "title": "Github username"
      },
      "formattedName": {
        "type": "string",
        "displayAs": "{1} {2}",
        "group": [
          "firstName",
          "lastName"
        ],
        "readOnly": true,
        "displayName": true
      },
      "photos": {
        "type": "array",
        "range": "photo",
        "inlined": true,
        "cameraType": "front",
        "items": {
          "ref": "tradle.Photo"
        }
      }
    },
    "required": [
      "firstName",
      "lastName",
      "email",
      "dockerhub"
    ],
    "viewCols": [
      "firstName",
      "lastName",
      "email",
      "dockerhub",
      "github"
    ]
  },
  "tradle.Bookmark": {
    "id": "tradle.Bookmark",
    "type": "tradle.Model",
    "title": "Bookmark",
    "notEditable": true,
    "properties": {
      "message": {
        "type": "string",
        "readOnly": true,
        "skipLabel": true,
        "displayName": true
      },
      "bookmark": {
        "type": "object",
        "range": "json",
        "readOnly": true
      }
    },
    "required": [
      "bookmark"
    ],
    "viewCols": [
      "bookmark"
    ]
  },
  "tradle.Check": {
    "id": "tradle.Check",
    "type": "tradle.Model",
    "title": "Check",
    "abstract": true,
    "properties": {
      "provider": {
        "type": "string",
        "readOnly": true
      },
      "status": {
        "type": "object",
        "ref": "tradle.Status",
        "readOnly": true
      },
      "message": {
        "type": "string",
        "displayName": true,
        "readOnly": true
      },
      "isPending": {
        "type": "boolean"
      },
      "application": {
        "type": "object",
        "ref": "tradle.Application"
      }
    },
    "required": [
      "provider"
    ]
  },
  "tradle.Confirmation": {
    "id": "tradle.Confirmation",
    "type": "tradle.Model",
    "title": "Confirmation",
    "notEditable": true,
    "properties": {
      "message": {
        "type": "string",
        "readOnly": true,
        "skipLabel": true,
        "displayName": true
      },
      "confirmationFor": {
        "type": "object",
        "ref": "tradle.ProductApplication",
        "readOnly": true
      },
      "forms": {
        "type": "array",
        "items": {
          "type": "object",
          "ref": "tradle.Form"
        }
      }
    },
    "required": [
      "message"
    ],
    "viewCols": [
      "message"
    ]
  },
  "tradle.Context": {
    "id": "tradle.Context",
    "type": "tradle.Model",
    "title": "Context",
    "isInterface": true,
    "properties": {
      "contextId": {
        "type": "string"
      }
    },
    "required": [
      "contextId"
    ]
  },
  "tradle.Country": {
    "id": "tradle.Country",
    "subClassOf": "tradle.Enum",
    "title": "Country",
    "sort": "country",
    "type": "tradle.Model",
    "properties": {
      "country": {
        "displayName": true,
        "type": "string"
      }
    },
    "enum": [
      {
        "id": "AD",
        "title": "Andorra"
      },
      {
        "id": "AE",
        "title": "United Arab Emirates"
      },
      {
        "id": "AF",
        "title": "Afghanistan"
      },
      {
        "id": "AG",
        "title": "Antigua and Barbuda"
      },
      {
        "id": "AI",
        "title": "Anguilla"
      },
      {
        "id": "AL",
        "title": "Albania"
      },
      {
        "id": "AM",
        "title": "Armenia"
      },
      {
        "id": "AO",
        "title": "Angola"
      },
      {
        "id": "AQ",
        "title": "Antarctica"
      },
      {
        "id": "AR",
        "title": "Argentina"
      },
      {
        "id": "AS",
        "title": "American Samoa"
      },
      {
        "id": "AT",
        "title": "Austria"
      },
      {
        "id": "AU",
        "title": "Australia"
      },
      {
        "id": "AW",
        "title": "Aruba"
      },
      {
        "id": "AX",
        "title": "Öland Islands"
      },
      {
        "id": "AZ",
        "title": "Azerbaijan"
      },
      {
        "id": "BA",
        "title": "Bosnia and Herzegovina"
      },
      {
        "id": "BB",
        "title": "Barbados"
      },
      {
        "id": "BD",
        "title": "Bangladesh"
      },
      {
        "id": "BE",
        "title": "Belgium"
      },
      {
        "id": "BF",
        "title": "Burkina Faso"
      },
      {
        "id": "BG",
        "title": "Bulgaria"
      },
      {
        "id": "BH",
        "title": "Bahrain"
      },
      {
        "id": "BI",
        "title": "Burundi"
      },
      {
        "id": "BJ",
        "title": "Benin"
      },
      {
        "id": "BL",
        "title": "Saint Barthélemy"
      },
      {
        "id": "BM",
        "title": "Bermuda"
      },
      {
        "id": "BN",
        "title": "Brunei Darussalam"
      },
      {
        "id": "BO",
        "title": "Bolivia"
      },
      {
        "id": "BQ",
        "title": "Caribbean Netherlands "
      },
      {
        "id": "BR",
        "title": "Brazil"
      },
      {
        "id": "BS",
        "title": "Bahamas"
      },
      {
        "id": "BT",
        "title": "Bhutan"
      },
      {
        "id": "BV",
        "title": "Bouvet Island"
      },
      {
        "id": "BW",
        "title": "Botswana"
      },
      {
        "id": "BY",
        "title": "Belarus"
      },
      {
        "id": "BZ",
        "title": "Belize"
      },
      {
        "id": "CA",
        "title": "Canada"
      },
      {
        "id": "CC",
        "title": "Cocos (Keeling) Islands"
      },
      {
        "id": "CD",
        "title": "Congo, Democratic Republic of"
      },
      {
        "id": "CF",
        "title": "Central African Republic"
      },
      {
        "id": "CG",
        "title": "Congo"
      },
      {
        "id": "CH",
        "title": "Switzerland"
      },
      {
        "id": "CI",
        "title": "Côte d'Ivoire"
      },
      {
        "id": "CK",
        "title": "Cook Islands"
      },
      {
        "id": "CL",
        "title": "Chile"
      },
      {
        "id": "CM",
        "title": "Cameroon"
      },
      {
        "id": "CN",
        "title": "China"
      },
      {
        "id": "CO",
        "title": "Colombia"
      },
      {
        "id": "CR",
        "title": "Costa Rica"
      },
      {
        "id": "CU",
        "title": "Cuba"
      },
      {
        "id": "CV",
        "title": "Cape Verde"
      },
      {
        "id": "CW",
        "title": "Curaçao"
      },
      {
        "id": "CX",
        "title": "Christmas Island"
      },
      {
        "id": "CY",
        "title": "Cyprus"
      },
      {
        "id": "CZ",
        "title": "Czech Republic"
      },
      {
        "id": "DE",
        "title": "Germany"
      },
      {
        "id": "DJ",
        "title": "Djibouti"
      },
      {
        "id": "DK",
        "title": "Denmark"
      },
      {
        "id": "DM",
        "title": "Dominica"
      },
      {
        "id": "DO",
        "title": "Dominican Republic"
      },
      {
        "id": "DZ",
        "title": "Algeria"
      },
      {
        "id": "EC",
        "title": "Ecuador"
      },
      {
        "id": "EE",
        "title": "Estonia"
      },
      {
        "id": "EG",
        "title": "Egypt"
      },
      {
        "id": "EH",
        "title": "Western Sahara"
      },
      {
        "id": "ER",
        "title": "Eritrea"
      },
      {
        "id": "ES",
        "title": "Spain"
      },
      {
        "id": "ET",
        "title": "Ethiopia"
      },
      {
        "id": "FI",
        "title": "Finland"
      },
      {
        "id": "FJ",
        "title": "Fiji"
      },
      {
        "id": "FK",
        "title": "Falkland Islands"
      },
      {
        "id": "FM",
        "title": "Micronesia, Federated States of"
      },
      {
        "id": "FO",
        "title": "Faroe Islands"
      },
      {
        "id": "FR",
        "title": "France"
      },
      {
        "id": "GA",
        "title": "Gabon"
      },
      {
        "id": "GB",
        "title": "United Kingdom"
      },
      {
        "id": "GD",
        "title": "Grenada"
      },
      {
        "id": "GE",
        "title": "Georgia"
      },
      {
        "id": "GF",
        "title": "French Guiana"
      },
      {
        "id": "GG",
        "title": "Guernsey"
      },
      {
        "id": "GH",
        "title": "Ghana"
      },
      {
        "id": "GI",
        "title": "Gibraltar"
      },
      {
        "id": "GL",
        "title": "Greenland"
      },
      {
        "id": "GM",
        "title": "Gambia"
      },
      {
        "id": "GN",
        "title": "Guinea"
      },
      {
        "id": "GP",
        "title": "Guadeloupe"
      },
      {
        "id": "GQ",
        "title": "Equatorial Guinea"
      },
      {
        "id": "GR",
        "title": "Greece"
      },
      {
        "id": "GS",
        "title": "South Georgia and the South Sandwich Islands"
      },
      {
        "id": "GT",
        "title": "Guatemala"
      },
      {
        "id": "GU",
        "title": "Guam"
      },
      {
        "id": "GW",
        "title": "Guinea-Bissau"
      },
      {
        "id": "GY",
        "title": "Guyana"
      },
      {
        "id": "HK",
        "title": "Hong Kong"
      },
      {
        "id": "HM",
        "title": "Heard and McDonald Islands"
      },
      {
        "id": "HN",
        "title": "Honduras"
      },
      {
        "id": "HR",
        "title": "Croatia"
      },
      {
        "id": "HT",
        "title": "Haiti"
      },
      {
        "id": "HU",
        "title": "Hungary"
      },
      {
        "id": "ID",
        "title": "Indonesia"
      },
      {
        "id": "IE",
        "title": "Ireland"
      },
      {
        "id": "IL",
        "title": "Israel"
      },
      {
        "id": "IM",
        "title": "Isle of Man"
      },
      {
        "id": "IN",
        "title": "India"
      },
      {
        "id": "IO",
        "title": "British Indian Ocean Territory"
      },
      {
        "id": "IQ",
        "title": "Iraq"
      },
      {
        "id": "IR",
        "title": "Iran"
      },
      {
        "id": "IS",
        "title": "Iceland"
      },
      {
        "id": "IT",
        "title": "Italy"
      },
      {
        "id": "JE",
        "title": "Jersey"
      },
      {
        "id": "JM",
        "title": "Jamaica"
      },
      {
        "id": "JO",
        "title": "Jordan"
      },
      {
        "id": "JP",
        "title": "Japan"
      },
      {
        "id": "KE",
        "title": "Kenya"
      },
      {
        "id": "KG",
        "title": "Kyrgyzstan"
      },
      {
        "id": "KH",
        "title": "Cambodia"
      },
      {
        "id": "KI",
        "title": "Kiribati"
      },
      {
        "id": "KM",
        "title": "Comoros"
      },
      {
        "id": "KN",
        "title": "Saint Kitts and Nevis"
      },
      {
        "id": "KP",
        "title": "North Korea"
      },
      {
        "id": "KR",
        "title": "South Korea"
      },
      {
        "id": "KW",
        "title": "Kuwait"
      },
      {
        "id": "KY",
        "title": "Cayman Islands"
      },
      {
        "id": "KZ",
        "title": "Kazakhstan"
      },
      {
        "id": "LA",
        "title": "Lao People's Democratic Republic"
      },
      {
        "id": "LB",
        "title": "Lebanon"
      },
      {
        "id": "LC",
        "title": "Saint Lucia"
      },
      {
        "id": "LI",
        "title": "Liechtenstein"
      },
      {
        "id": "LK",
        "title": "Sri Lanka"
      },
      {
        "id": "LR",
        "title": "Liberia"
      },
      {
        "id": "LS",
        "title": "Lesotho"
      },
      {
        "id": "LT",
        "title": "Lithuania"
      },
      {
        "id": "LU",
        "title": "Luxembourg"
      },
      {
        "id": "LV",
        "title": "Latvia"
      },
      {
        "id": "LY",
        "title": "Libya"
      },
      {
        "id": "MA",
        "title": "Morocco"
      },
      {
        "id": "MC",
        "title": "Monaco"
      },
      {
        "id": "MD",
        "title": "Moldova"
      },
      {
        "id": "ME",
        "title": "Montenegro"
      },
      {
        "id": "MF",
        "title": "Saint-Martin (France)"
      },
      {
        "id": "MG",
        "title": "Madagascar"
      },
      {
        "id": "MH",
        "title": "Marshall Islands"
      },
      {
        "id": "MK",
        "title": "Macedonia"
      },
      {
        "id": "ML",
        "title": "Mali"
      },
      {
        "id": "MM",
        "title": "Myanmar"
      },
      {
        "id": "MN",
        "title": "Mongolia"
      },
      {
        "id": "MO",
        "title": "Macau"
      },
      {
        "id": "MP",
        "title": "Northern Mariana Islands"
      },
      {
        "id": "MQ",
        "title": "Martinique"
      },
      {
        "id": "MR",
        "title": "Mauritania"
      },
      {
        "id": "MS",
        "title": "Montserrat"
      },
      {
        "id": "MT",
        "title": "Malta"
      },
      {
        "id": "MU",
        "title": "Mauritius"
      },
      {
        "id": "MV",
        "title": "Maldives"
      },
      {
        "id": "MW",
        "title": "Malawi"
      },
      {
        "id": "MX",
        "title": "Mexico"
      },
      {
        "id": "MY",
        "title": "Malaysia"
      },
      {
        "id": "MZ",
        "title": "Mozambique"
      },
      {
        "id": "NA",
        "title": "Namibia"
      },
      {
        "id": "NC",
        "title": "New Caledonia"
      },
      {
        "id": "NE",
        "title": "Niger"
      },
      {
        "id": "NF",
        "title": "Norfolk Island"
      },
      {
        "id": "NG",
        "title": "Nigeria"
      },
      {
        "id": "NI",
        "title": "Nicaragua"
      },
      {
        "id": "NL",
        "title": "The Netherlands"
      },
      {
        "id": "NO",
        "title": "Norway"
      },
      {
        "id": "NP",
        "title": "Nepal"
      },
      {
        "id": "NR",
        "title": "Nauru"
      },
      {
        "id": "NU",
        "title": "Niue"
      },
      {
        "id": "NZ",
        "title": "New Zealand"
      },
      {
        "id": "OM",
        "title": "Oman"
      },
      {
        "id": "PA",
        "title": "Panama"
      },
      {
        "id": "PE",
        "title": "Peru"
      },
      {
        "id": "PF",
        "title": "French Polynesia"
      },
      {
        "id": "PG",
        "title": "Papua New Guinea"
      },
      {
        "id": "PH",
        "title": "Philippines"
      },
      {
        "id": "PK",
        "title": "Pakistan"
      },
      {
        "id": "PL",
        "title": "Poland"
      },
      {
        "id": "PM",
        "title": "St. Pierre and Miquelon"
      },
      {
        "id": "PN",
        "title": "Pitcairn"
      },
      {
        "id": "PR",
        "title": "Puerto Rico"
      },
      {
        "id": "PS",
        "title": "Palestine, State of"
      },
      {
        "id": "PT",
        "title": "Portugal"
      },
      {
        "id": "PW",
        "title": "Palau"
      },
      {
        "id": "PY",
        "title": "Paraguay"
      },
      {
        "id": "QA",
        "title": "Qatar"
      },
      {
        "id": "RE",
        "title": "Réunion"
      },
      {
        "id": "RO",
        "title": "Romania"
      },
      {
        "id": "RS",
        "title": "Serbia"
      },
      {
        "id": "RU",
        "title": "Russian Federation"
      },
      {
        "id": "RW",
        "title": "Rwanda"
      },
      {
        "id": "SA",
        "title": "Saudi Arabia"
      },
      {
        "id": "SB",
        "title": "Solomon Islands"
      },
      {
        "id": "SC",
        "title": "Seychelles"
      },
      {
        "id": "SD",
        "title": "Sudan"
      },
      {
        "id": "SE",
        "title": "Sweden"
      },
      {
        "id": "SG",
        "title": "Singapore"
      },
      {
        "id": "SH",
        "title": "Saint Helena"
      },
      {
        "id": "SI",
        "title": "Slovenia"
      },
      {
        "id": "SJ",
        "title": "Svalbard and Jan Mayen Islands"
      },
      {
        "id": "SK",
        "title": "Slovakia"
      },
      {
        "id": "SL",
        "title": "Sierra Leone"
      },
      {
        "id": "SM",
        "title": "San Marino"
      },
      {
        "id": "SN",
        "title": "Senegal"
      },
      {
        "id": "SO",
        "title": "Somalia"
      },
      {
        "id": "SR",
        "title": "Suriname"
      },
      {
        "id": "SS",
        "title": "South Sudan"
      },
      {
        "id": "ST",
        "title": "Sao Tome and Principe"
      },
      {
        "id": "SV",
        "title": "El Salvador"
      },
      {
        "id": "SX",
        "title": "Sint Maarten (Dutch part)"
      },
      {
        "id": "SY",
        "title": "Syria"
      },
      {
        "id": "SZ",
        "title": "Swaziland"
      },
      {
        "id": "TC",
        "title": "Turks and Caicos Islands"
      },
      {
        "id": "TD",
        "title": "Chad"
      },
      {
        "id": "TF",
        "title": "French Southern Territories"
      },
      {
        "id": "TG",
        "title": "Togo"
      },
      {
        "id": "TH",
        "title": "Thailand"
      },
      {
        "id": "TJ",
        "title": "Tajikistan"
      },
      {
        "id": "TK",
        "title": "Tokelau"
      },
      {
        "id": "TL",
        "title": "Timor-Leste"
      },
      {
        "id": "TM",
        "title": "Turkmenistan"
      },
      {
        "id": "TN",
        "title": "Tunisia"
      },
      {
        "id": "TO",
        "title": "Tonga"
      },
      {
        "id": "TR",
        "title": "Turkey"
      },
      {
        "id": "TT",
        "title": "Trinidad and Tobago"
      },
      {
        "id": "TV",
        "title": "Tuvalu"
      },
      {
        "id": "TW",
        "title": "Taiwan"
      },
      {
        "id": "TZ",
        "title": "Tanzania"
      },
      {
        "id": "UA",
        "title": "Ukraine"
      },
      {
        "id": "UG",
        "title": "Uganda"
      },
      {
        "id": "UM",
        "title": "United States Minor Outlying Islands"
      },
      {
        "id": "US",
        "title": "United States"
      },
      {
        "id": "UY",
        "title": "Uruguay"
      },
      {
        "id": "UZ",
        "title": "Uzbekistan"
      },
      {
        "id": "VA",
        "title": "Vatican"
      },
      {
        "id": "VC",
        "title": "Saint Vincent and the Grenadines"
      },
      {
        "id": "VE",
        "title": "Venezuela"
      },
      {
        "id": "VG",
        "title": "Virgin Islands (British)"
      },
      {
        "id": "VI",
        "title": "Virgin Islands (U.S.)"
      },
      {
        "id": "VN",
        "title": "Vietnam"
      },
      {
        "id": "VU",
        "title": "Vanuatu"
      },
      {
        "id": "WF",
        "title": "Wallis and Futuna Islands"
      },
      {
        "id": "WS",
        "title": "Samoa"
      },
      {
        "id": "YE",
        "title": "Yemen"
      },
      {
        "id": "YT",
        "title": "Mayotte"
      },
      {
        "id": "ZA",
        "title": "South Africa"
      },
      {
        "id": "ZM",
        "title": "Zambia"
      },
      {
        "id": "ZW",
        "title": "Zimbabwe"
      }
    ]
  },
  "tradle.CreditCards": {
    "id": "tradle.CreditCards",
    "type": "tradle.Model",
    "title": "Credit Cards",
    "properties": {}
  },
  "tradle.Currency": {
    "id": "tradle.Currency",
    "type": "tradle.Model",
    "title": "Currency",
    "subClassOf": "tradle.Enum",
    "sort": "code",
    "properties": {
      "currencyName": {
        "type": "string"
      },
      "code": {
        "type": "string"
      },
      "symbol": {
        "type": "string"
      },
      "currency": {
        "type": "string",
        "displayAs": "{1} - {2}",
        "group": [
          "code",
          "currencyName"
        ]
      }
    },
    "enum": [
      {
        "title": "ADB Unit of Account",
        "id": "XUA"
      },
      {
        "title": "Afghani",
        "id": "AFN"
      },
      {
        "title": "Algerian Dinar",
        "id": "DZD"
      },
      {
        "title": "Argentine Peso",
        "id": "ARS"
      },
      {
        "title": "Armenian Dram",
        "id": "AMD"
      },
      {
        "title": "Aruban Florin",
        "id": "AWG"
      },
      {
        "title": "Australian Dollar",
        "id": "AUD"
      },
      {
        "title": "Azerbaijanian Manat",
        "id": "AZN"
      },
      {
        "title": "Bahamian Dollar",
        "id": "BSD"
      },
      {
        "title": "Bahraini Dinar",
        "id": "BHD"
      },
      {
        "title": "Baht",
        "id": "THB"
      },
      {
        "title": "Balboa",
        "id": "PAB"
      },
      {
        "title": "Barbados Dollar",
        "id": "BBD"
      },
      {
        "title": "Belarusian Ruble",
        "id": "BYN"
      },
      {
        "title": "Belarusian Ruble",
        "id": "BYR"
      },
      {
        "title": "Belize Dollar",
        "id": "BZD"
      },
      {
        "title": "Bermudian Dollar",
        "id": "BMD"
      },
      {
        "title": "Boliviano",
        "id": "BOB"
      },
      {
        "title": "Bolívar",
        "id": "VEF"
      },
      {
        "title": "Bond Markets Unit European Composite Unit (EURCO)",
        "id": "XBA"
      },
      {
        "title": "Bond Markets Unit European Monetary Unit (E.M.U.-6)",
        "id": "XBB"
      },
      {
        "title": "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",
        "id": "XBD"
      },
      {
        "title": "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",
        "id": "XBC"
      },
      {
        "title": "Brazilian Real",
        "id": "BRL"
      },
      {
        "title": "Brunei Dollar",
        "id": "BND"
      },
      {
        "title": "Bulgarian Lev",
        "id": "BGN"
      },
      {
        "title": "Burundi Franc",
        "id": "BIF"
      },
      {
        "title": "CFA Franc BCEAO",
        "id": "XOF"
      },
      {
        "title": "CFA Franc BEAC",
        "id": "XAF"
      },
      {
        "title": "CFP Franc",
        "id": "XPF"
      },
      {
        "title": "Cabo Verde Escudo",
        "id": "CVE"
      },
      {
        "title": "Canadian Dollar",
        "id": "CAD"
      },
      {
        "title": "Cayman Islands Dollar",
        "id": "KYD"
      },
      {
        "title": "Chilean Peso",
        "id": "CLP"
      },
      {
        "title": "Codes specifically reserved for testing purposes",
        "id": "XTS"
      },
      {
        "title": "Colombian Peso",
        "id": "COP"
      },
      {
        "title": "Comoro Franc",
        "id": "KMF"
      },
      {
        "title": "Congolese Franc",
        "id": "CDF"
      },
      {
        "title": "Convertible Mark",
        "id": "BAM"
      },
      {
        "title": "Cordoba Oro",
        "id": "NIO"
      },
      {
        "title": "Costa Rican Colon",
        "id": "CRC"
      },
      {
        "title": "Cuban Peso",
        "id": "CUP"
      },
      {
        "title": "Czech Koruna",
        "id": "CZK"
      },
      {
        "title": "Dalasi",
        "id": "GMD"
      },
      {
        "title": "Danish Krone",
        "id": "DKK"
      },
      {
        "title": "Denar",
        "id": "MKD"
      },
      {
        "title": "Djibouti Franc",
        "id": "DJF"
      },
      {
        "title": "Dobra",
        "id": "STD"
      },
      {
        "title": "Dominican Peso",
        "id": "DOP"
      },
      {
        "title": "Dong",
        "id": "VND"
      },
      {
        "title": "East Caribbean Dollar",
        "id": "XCD"
      },
      {
        "title": "Egyptian Pound",
        "id": "EGP"
      },
      {
        "title": "El Salvador Colon",
        "id": "SVC"
      },
      {
        "title": "Ethiopian Birr",
        "id": "ETB"
      },
      {
        "title": "Euro",
        "id": "EUR"
      },
      {
        "title": "Falkland Islands Pound",
        "id": "FKP"
      },
      {
        "title": "Fiji Dollar",
        "id": "FJD"
      },
      {
        "title": "Forint",
        "id": "HUF"
      },
      {
        "title": "Ghana Cedi",
        "id": "GHS"
      },
      {
        "title": "Gibraltar Pound",
        "id": "GIP"
      },
      {
        "title": "Gold",
        "id": "XAU"
      },
      {
        "title": "Gourde",
        "id": "HTG"
      },
      {
        "title": "Guarani",
        "id": "PYG"
      },
      {
        "title": "Guinea Franc",
        "id": "GNF"
      },
      {
        "title": "Guyana Dollar",
        "id": "GYD"
      },
      {
        "title": "Hong Kong Dollar",
        "id": "HKD"
      },
      {
        "title": "Hryvnia",
        "id": "UAH"
      },
      {
        "title": "Iceland Krona",
        "id": "ISK"
      },
      {
        "title": "Indian Rupee",
        "id": "INR"
      },
      {
        "title": "Iranian Rial",
        "id": "IRR"
      },
      {
        "title": "Iraqi Dinar",
        "id": "IQD"
      },
      {
        "title": "Jamaican Dollar",
        "id": "JMD"
      },
      {
        "title": "Jordanian Dinar",
        "id": "JOD"
      },
      {
        "title": "Kenyan Shilling",
        "id": "KES"
      },
      {
        "title": "Kina",
        "id": "PGK"
      },
      {
        "title": "Kip",
        "id": "LAK"
      },
      {
        "title": "Kuna",
        "id": "HRK"
      },
      {
        "title": "Kuwaiti Dinar",
        "id": "KWD"
      },
      {
        "title": "Kwanza",
        "id": "AOA"
      },
      {
        "title": "Kyat",
        "id": "MMK"
      },
      {
        "title": "Lari",
        "id": "GEL"
      },
      {
        "title": "Lebanese Pound",
        "id": "LBP"
      },
      {
        "title": "Lek",
        "id": "ALL"
      },
      {
        "title": "Lempira",
        "id": "HNL"
      },
      {
        "title": "Leone",
        "id": "SLL"
      },
      {
        "title": "Liberian Dollar",
        "id": "LRD"
      },
      {
        "title": "Libyan Dinar",
        "id": "LYD"
      },
      {
        "title": "Lilangeni",
        "id": "SZL"
      },
      {
        "title": "Loti",
        "id": "LSL"
      },
      {
        "title": "Malagasy Ariary",
        "id": "MGA"
      },
      {
        "title": "Malawi Kwacha",
        "id": "MWK"
      },
      {
        "title": "Malaysian Ringgit",
        "id": "MYR"
      },
      {
        "title": "Mauritius Rupee",
        "id": "MUR"
      },
      {
        "title": "Mexican Peso",
        "id": "MXN"
      },
      {
        "title": "Mexican Unidad de Inversion (UDI)",
        "id": "MXV"
      },
      {
        "title": "Moldovan Leu",
        "id": "MDL"
      },
      {
        "title": "Moroccan Dirham",
        "id": "MAD"
      },
      {
        "title": "Mozambique Metical",
        "id": "MZN"
      },
      {
        "title": "Mvdol",
        "id": "BOV"
      },
      {
        "title": "Naira",
        "id": "NGN"
      },
      {
        "title": "Nakfa",
        "id": "ERN"
      },
      {
        "title": "Namibia Dollar",
        "id": "NAD"
      },
      {
        "title": "Nepalese Rupee",
        "id": "NPR"
      },
      {
        "title": "Netherlands Antillean Guilder",
        "id": "ANG"
      },
      {
        "title": "New Israeli Sheqel",
        "id": "ILS"
      },
      {
        "title": "New Taiwan Dollar",
        "id": "TWD"
      },
      {
        "title": "New Zealand Dollar",
        "id": "NZD"
      },
      {
        "title": "Ngultrum",
        "id": "BTN"
      },
      {
        "title": "North Korean Won",
        "id": "KPW"
      },
      {
        "title": "Norwegian Krone",
        "id": "NOK"
      },
      {
        "title": "Ouguiya",
        "id": "MRO"
      },
      {
        "title": "Pakistan Rupee",
        "id": "PKR"
      },
      {
        "title": "Palladium",
        "id": "XPD"
      },
      {
        "title": "Pataca",
        "id": "MOP"
      },
      {
        "title": "Pa’anga",
        "id": "TOP"
      },
      {
        "title": "Peso Convertible",
        "id": "CUC"
      },
      {
        "title": "Peso Uruguayo",
        "id": "UYU"
      },
      {
        "title": "Philippine Peso",
        "id": "PHP"
      },
      {
        "title": "Platinum",
        "id": "XPT"
      },
      {
        "title": "Pound Sterling",
        "id": "GBP"
      },
      {
        "title": "Pula",
        "id": "BWP"
      },
      {
        "title": "Qatari Rial",
        "id": "QAR"
      },
      {
        "title": "Quetzal",
        "id": "GTQ"
      },
      {
        "title": "Rand",
        "id": "ZAR"
      },
      {
        "title": "Rial Omani",
        "id": "OMR"
      },
      {
        "title": "Riel",
        "id": "KHR"
      },
      {
        "title": "Romanian Leu",
        "id": "RON"
      },
      {
        "title": "Rufiyaa",
        "id": "MVR"
      },
      {
        "title": "Rupiah",
        "id": "IDR"
      },
      {
        "title": "Russian Ruble",
        "id": "RUB"
      },
      {
        "title": "Rwanda Franc",
        "id": "RWF"
      },
      {
        "title": "SDR (Special Drawing Right)",
        "id": "XDR"
      },
      {
        "title": "Saint Helena Pound",
        "id": "SHP"
      },
      {
        "title": "Saudi Riyal",
        "id": "SAR"
      },
      {
        "title": "Serbian Dinar",
        "id": "RSD"
      },
      {
        "title": "Seychelles Rupee",
        "id": "SCR"
      },
      {
        "title": "Silver",
        "id": "XAG"
      },
      {
        "title": "Singapore Dollar",
        "id": "SGD"
      },
      {
        "title": "Sol",
        "id": "PEN"
      },
      {
        "title": "Solomon Islands Dollar",
        "id": "SBD"
      },
      {
        "title": "Som",
        "id": "KGS"
      },
      {
        "title": "Somali Shilling",
        "id": "SOS"
      },
      {
        "title": "Somoni",
        "id": "TJS"
      },
      {
        "title": "South Sudanese Pound",
        "id": "SSP"
      },
      {
        "title": "Sri Lanka Rupee",
        "id": "LKR"
      },
      {
        "title": "Sucre",
        "id": "XSU"
      },
      {
        "title": "Sudanese Pound",
        "id": "SDG"
      },
      {
        "title": "Surinam Dollar",
        "id": "SRD"
      },
      {
        "title": "Swedish Krona",
        "id": "SEK"
      },
      {
        "title": "Syrian Pound",
        "id": "SYP"
      },
      {
        "title": "Taka",
        "id": "BDT"
      },
      {
        "title": "Tala",
        "id": "WST"
      },
      {
        "title": "Tanzanian Shilling",
        "id": "TZS"
      },
      {
        "title": "Tenge",
        "id": "KZT"
      },
      {
        "title": "The codes assigned for transactions where no currency is involved",
        "id": "XXX"
      },
      {
        "title": "Trinidad and Tobago Dollar",
        "id": "TTD"
      },
      {
        "title": "Tugrik",
        "id": "MNT"
      },
      {
        "title": "Tunisian Dinar",
        "id": "TND"
      },
      {
        "title": "Turkish Lira",
        "id": "TRY"
      },
      {
        "title": "Turkmenistan New Manat",
        "id": "TMT"
      },
      {
        "title": "UAE Dirham",
        "id": "AED"
      },
      {
        "title": "US Dollar",
        "id": "USD"
      },
      {
        "title": "Uganda Shilling",
        "id": "UGX"
      },
      {
        "title": "Unidad de Fomento",
        "id": "CLF"
      },
      {
        "title": "Unidad de Valor Real",
        "id": "COU"
      },
      {
        "title": "Uruguay Peso en Unidades Indexadas (URUIURUI)",
        "id": "UYI"
      },
      {
        "title": "Uzbekistan Sum",
        "id": "UZS"
      },
      {
        "title": "Vatu",
        "id": "VUV"
      },
      {
        "title": "WIR Euro",
        "id": "CHE"
      },
      {
        "title": "WIR Franc",
        "id": "CHW"
      },
      {
        "title": "Won",
        "id": "KRW"
      },
      {
        "title": "Yemeni Rial",
        "id": "YER"
      },
      {
        "title": "Yen",
        "id": "JPY"
      },
      {
        "title": "Yuan Renminbi",
        "id": "CNY"
      },
      {
        "title": "Zambian Kwacha",
        "id": "ZMW"
      },
      {
        "title": "Zimbabwe Dollar",
        "id": "ZWL"
      },
      {
        "title": "Zloty",
        "id": "PLN"
      }
    ]
  },
  "tradle.CustomerWaiting": {
    "id": "tradle.CustomerWaiting",
    "title": "Customer waiting",
    "type": "tradle.Model",
    "properties": {
      "message": {
        "type": "string"
      },
      "time": {
        "type": "date",
        "readOnly": true
      },
      "welcome": {
        "type": "boolean",
        "readOnly": true
      }
    },
    "viewCols": [
      "message"
    ],
    "required": []
  },
  "tradle.DataBundle": {
    "id": "tradle.DataBundle",
    "title": "Data Bundle",
    "type": "tradle.Model",
    "properties": {
      "message": {
        "type": "string"
      },
      "items": {
        "inlined": true,
        "type": "array",
        "items": {
          "ref": "tradle.Object"
        }
      }
    },
    "viewCols": [
      "message",
      "items"
    ],
    "required": [
      "items"
    ]
  },
  "tradle.DataClaim": {
    "id": "tradle.DataClaim",
    "title": "Data Claim",
    "type": "tradle.Model",
    "properties": {
      "claimId": {
        "type": "string"
      }
    },
    "viewCols": [
      "claimId"
    ],
    "required": [
      "claimId"
    ]
  },
  "tradle.DeliveryError": {
    "type": "tradle.Model",
    "id": "tradle.DeliveryError",
    "title": "Delivery Error",
    "properties": {
      "counterparty": {
        "type": "string"
      },
      "time": {
        "type": "number"
      }
    },
    "primaryKeys": {
      "hashKey": "counterparty"
    }
  },
  "tradle.Document": {
    "id": "tradle.Document",
    "type": "tradle.Model",
    "title": "Document",
    "isInterface": true,
    "properties": {
      "container": {
        "type": "object",
        "ref": "tradle.Form"
      },
      "photo": {
        "type": "array",
        "inlined": true,
        "items": {
          "ref": "tradle.Photo"
        }
      }
    }
  },
  "tradle.DraftApplication": {
    "type": "tradle.Model",
    "title": "Draft Application",
    "id": "tradle.DraftApplication",
    "properties": {
      "applicantName": {
        "type": "string"
      },
      "applicant": {
        "type": "object",
        "ref": "tradle.Identity"
      },
      "dateStarted": {
        "type": "date"
      },
      "dateCompleted": {
        "type": "date"
      },
      "dateEvaluated": {
        "type": "date"
      },
      "dateModified": {
        "type": "date"
      },
      "context": {
        "type": "string"
      },
      "request": {
        "type": "object",
        "ref": "tradle.Form"
      },
      "requestFor": {
        "type": "string",
        "range": "model",
        "displayName": true
      },
      "formPrefills": {
        "type": "array",
        "allowToAdd": true,
        "items": {
          "ref": "tradle.FormPrefill",
          "backlink": "draft"
        }
      },
      "invites": {
        "type": "array",
        "allowToAdd": true,
        "items": {
          "ref": "tradle.Invite",
          "backlink": "draft"
        }
      }
    },
    "viewCols": [
      "applicantName",
      "requestFor",
      "dateStarted",
      "dateModified",
      "dateCompleted"
    ]
  },
  "tradle.Education": {
    "id": "tradle.Education",
    "title": "Education",
    "type": "tradle.Model",
    "subClassOf": "tradle.Form",
    "interfaces": [
      "tradle.Document",
      "tradle.Verifiable"
    ],
    "properties": {
      "highestDegree": {
        "type": "object",
        "ref": "tradle.EducationDegree"
      },
      "major": {
        "type": "object",
        "ref": "tradle.Major"
      },
      "diploma": {
        "type": "object",
        "allowPicturesFromLibrary": true,
        "ref": "tradle.Photo"
      }
    },
    "required": [
      "highestDegree",
      "major",
      "diploma"
    ],
    "viewCols": [
      "highestDegree",
      "major",
      "diploma"
    ]
  },
  "tradle.EducationDegree": {
    "id": "tradle.EducationDegree",
    "title": "Degree of education",
    "type": "tradle.Model",
    "subClassOf": "tradle.Enum",
    "properties": {
      "educationDegree": {
        "displayName": true,
        "type": "string"
      }
    }
  },
  "tradle.EducationNL": {
    "id": "tradle.EducationNL",
    "title": "Education",
    "subClassOf": "tradle.Enum",
    "type": "tradle.Model",
    "properties": {
      "education": {
        "displayName": true,
        "type": "string"
      }
    },
    "enum": [
      {
        "id": "elementary",
        "title": "Elementary School"
      },
      {
        "id": "highSchool",
        "title": "High School"
      },
      {
        "id": "vocationalJ",
        "title": "Vocational Secondary School (Junior)"
      },
      {
        "id": "vocationalS",
        "title": "Vocational Secondary School (Senior)"
      },
      {
        "id": "college",
        "title": "College"
      },
      {
        "id": "university",
        "title": "University"
      }
    ]
  },
  "tradle.EmailAddress": {
    "id": "tradle.EmailAddress",
    "title": "Email Address",
    "subClassOf": "tradle.Form",
    "type": "tradle.Model",
    "properties": {
      "email": {
        "type": "string",
        "range": "email",
        "keyboard": "email-address"
      }
    },
    "required": [
      "email"
    ],
    "viewCols": [
      "email"
    ]
  },
  "tradle.EmailCheck": {
    "type": "tradle.Model",
    "id": "tradle.EmailCheck",
    "title": "Email Check",
    "subClassOf": "tradle.Check",
    "description": "check for who controls an email address",
    "properties": {
      "provider": {
        "type": "string",
        "readOnly": true
      },
      "status": {
        "type": "object",
        "ref": "tradle.Status",
        "readOnly": true
      },
      "emailAddress": {
        "type": "string",
        "range": "email",
        "readOnly": true
      },
      "application": {
        "type": "object",
        "ref": "tradle.Application"
      },
      "user": {
        "type": "object",
        "ref": "tradle.Identity"
      },
      "dateExpires": {
        "type": "date"
      }
    },
    "required": [
      "provider",
      "emailAddress"
    ],
    "viewCols": [
      "emailAddress",
      "status",
      "provider"
    ]
  },
  "tradle.EmployeeOnboarding": {
    "id": "tradle.EmployeeOnboarding",
    "type": "tradle.Model",
    "title": "Employee Onboarding",
    "subClassOf": "tradle.FinancialProduct",
    "forms": [
      "tradle.Name"
    ],
    "properties": {
      "productType": {
        "type": "string",
        "readOnly": true,
        "displayName": true
      }
    }
  },
  "tradle.Enum": {
    "id": "tradle.Enum",
    "title": "Enum",
    "type": "tradle.Model",
    "properties": {}
  },
  "tradle.File": {
    "id": "tradle.File",
    "type": "tradle.Model",
    "title": "File",
    "properties": {
      "url": {
        "type": "string",
        "readOnly": true
      },
      "size": {
        "type": "number",
        "readOnly": true
      },
      "name": {
        "type": "string",
        "readOnly": true
      },
      "mimeType": {
        "type": "string",
        "readOnly": true
      }
    },
    "required": [
      "name",
      "mimeType",
      "url",
      "size"
    ]
  },
  "tradle.FinancialProduct": {
    "id": "tradle.FinancialProduct",
    "type": "tradle.Model",
    "title": "Financial Product",
    "abstract": true,
    "properties": {
      "organization": {
        "type": "object",
        "readOnly": true,
        "ref": "tradle.Organization"
      }
    },
    "viewCols": [
      "_t",
      "organization"
    ]
  },
  "tradle.ForgetMe": {
    "id": "tradle.ForgetMe",
    "title": "Forget Me",
    "type": "tradle.Model",
    "properties": {
      "time": {
        "type": "date",
        "readOnly": true
      },
      "message": {
        "type": "string"
      }
    },
    "viewCols": [
      "message"
    ],
    "required": []
  },
  "tradle.ForgotYou": {
    "id": "tradle.ForgotYou",
    "title": "Forgot You",
    "type": "tradle.Model",
    "properties": {
      "time": {
        "type": "date",
        "readOnly": true
      },
      "message": {
        "type": "string"
      }
    },
    "viewCols": [
      "message"
    ],
    "required": []
  },
  "tradle.Form": {
    "id": "tradle.Form",
    "title": "Form",
    "abstract": true,
    "type": "tradle.Model",
    "properties": {}
  },
  "tradle.FormError": {
    "id": "tradle.FormError",
    "title": "Form Error",
    "type": "tradle.Model",
    "properties": {
      "time": {
        "type": "date",
        "readOnly": true
      },
      "message": {
        "type": "string",
        "sample": "lorem.sentence"
      },
      "prefill": {
        "type": "object",
        "ref": "tradle.Form",
        "readOnly": true,
        "inlined": true,
        "partial": true
      },
      "requestedProperties": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "message": {
              "type": "string"
            }
          }
        }
      },
      "errors": {
        "type": "array",
        "inlined": true,
        "items": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "error": {
              "type": "string"
            }
          }
        }
      },
      "context": {
        "type": "string"
      },
      "lens": {
        "type": "string",
        "range": "model",
        "readOnly": true
      }
    },
    "viewCols": [
      "message",
      "errors"
    ],
    "required": [
      "prefill",
      "errors",
      "message"
    ]
  },
  "tradle.FormPrefill": {
    "id": "tradle.FormPrefill",
    "title": "Form Prefill",
    "type": "tradle.Model",
    "interfaces": [
      "tradle.Item"
    ],
    "properties": {
      "prefill": {
        "type": "object",
        "ref": "tradle.Form",
        "inlined": true,
        "partial": true
      },
      "draft": {
        "type": "object",
        "readOnly": true,
        "ref": "tradle.DraftApplication"
      }
    },
    "viewCols": [
      "draft",
      "prefill"
    ],
    "required": [
      "draft",
      "prefill"
    ]
  },
  "tradle.FormRequest": {
    "id": "tradle.FormRequest",
    "type": "tradle.Model",
    "title": "Form Request",
    "autoCreate": true,
    "properties": {
      "message": {
        "type": "string",
        "displayName": true,
        "sample": "lorem.sentence"
      },
      "product": {
        "type": "string",
        "range": "model",
        "readOnly": true
      },
      "form": {
        "type": "string",
        "range": "model",
        "readOnly": true
      },
      "lens": {
        "type": "string",
        "range": "model",
        "readOnly": true
      },
      "time": {
        "type": "date",
        "readOnly": true
      },
      "welcome": {
        "type": "boolean",
        "readOnly": true
      },
      "verifiers": {
        "type": "array",
        "inlined": true,
        "items": {
          "ref": "tradle.ServiceProvider"
        }
      },
      "prefill": {
        "type": "object",
        "ref": "tradle.Form",
        "readOnly": true,
        "inlined": true,
        "partial": true
      },
      "requireRawData": {
        "type": "boolean"
      },
      "chooser": {
        "type": "object",
        "inlined": true,
        "ref": "tradle.PropertyChooser"
      },
      "context": {
        "type": "string"
      }
    },
    "required": [
      "message",
      "form"
    ],
    "viewCols": [
      "message",
      "form",
      "product",
      "time"
    ]
  },
  "tradle.HandSignature": {
    "type": "tradle.Model",
    "id": "tradle.HandSignature",
    "title": "Hand Signature",
    "subClassOf": "tradle.Form",
    "properties": {
      "signatureFor": {
        "type": "array",
        "readOnly": true,
        "items": {
          "ref": "tradle.Object"
        }
      },
      "signature": {
        "type": "string",
        "skipLabel": true,
        "signature": true
      }
    },
    "editCols": [
      "signature"
    ],
    "required": [
      "signatureFor",
      "signature"
    ]
  },
  "tradle.HowToFund": {
    "id": "tradle.HowToFund",
    "title": "How To Fund",
    "subClassOf": "tradle.Enum",
    "type": "tradle.Model",
    "properties": {
      "howToFund": {
        "displayName": true,
        "type": "string"
      }
    },
    "enum": [
      {
        "id": "cash",
        "title": "Cash"
      },
      {
        "id": "check",
        "title": "Check"
      },
      {
        "id": "direct",
        "title": "Direct to Bank"
      }
    ]
  },
  "tradle.Identity": {
    "id": "tradle.Identity",
    "type": "tradle.Model",
    "title": "Identity",
    "plural": "Identities",
    "properties": {
      "pubkeys": {
        "type": "array",
        "readOnly": true,
        "inlined": true,
        "items": {
          "type": "object",
          "ref": "tradle.PubKey"
        }
      }
    },
    "required": [
      "pubkeys"
    ]
  },
  "tradle.IdentityPublishRequest": {
    "id": "tradle.IdentityPublishRequest",
    "title": "Identity Publish Request",
    "type": "tradle.Model",
    "properties": {
      "identity": {
        "type": "object",
        "ref": "tradle.Identity",
        "inlined": true
      },
      "name": {
        "type": "string"
      }
    },
    "viewCols": [
      "identity"
    ]
  },
  "tradle.IdentityPublished": {
    "id": "tradle.IdentityPublished",
    "type": "tradle.Model",
    "title": "Identity Published",
    "properties": {
      "identity": {
        "type": "string"
      }
    },
    "required": [
      "identity"
    ]
  },
  "tradle.Intersection": {
    "id": "tradle.Intersection",
    "type": "tradle.Model",
    "title": "Intersection",
    "isInterface": true,
    "properties": {
      "a": {
        "type": "object",
        "ref": "tradle.Object"
      },
      "b": {
        "type": "object",
        "ref": "tradle.Object"
      }
    }
  },
  "tradle.Introduction": {
    "id": "tradle.Introduction",
    "title": "Introduction",
    "type": "tradle.Model",
    "properties": {
      "identity": {
        "type": "object",
        "ref": "tradle.Identity",
        "inlined": true
      },
      "name": {
        "type": "string",
        "sample": "name.findName"
      },
      "message": {
        "type": "string"
      }
    },
    "viewCols": [
      "message",
      "identity"
    ],
    "required": [
      "identity"
    ]
  },
  "tradle.Invite": {
    "type": "tradle.Model",
    "title": "Invite",
    "id": "tradle.Invite",
    "subClassOf": "tradle.Form",
    "properties": {
      "recipient": {
        "type": "string",
        "description": "who to email this link",
        "range": "email"
      },
      "subject": {
        "type": "string"
      },
      "body": {
        "type": "string"
      },
      "inviteLink": {
        "type": "string",
        "description": "the link to share",
        "readOnly": true
      },
      "buttonText": {
        "type": "string",
        "description": "the text on the big button in their email"
      },
      "signature": {
        "type": "string",
        "description": "signature in the footer, e.g. \"-Tradle Team\""
      },
      "draft": {
        "type": "object",
        "readOnly": true,
        "ref": "tradle.DraftApplication"
      }
    },
    "editCols": [
      "recipient",
      "subject",
      "body",
      "buttonText",
      "signature"
    ],
    "required": [
      "recipient"
    ]
  },
  "tradle.Item": {
    "id": "tradle.Item",
    "type": "tradle.Model",
    "title": "Item",
    "isInterface": true,
    "properties": {
      "container": {
        "type": "object",
        "ref": "tradle.Form"
      }
    }
  },
  "tradle.Language": {
    "id": "tradle.Language",
    "subClassOf": "tradle.Enum",
    "title": "Language",
    "type": "tradle.Model",
    "properties": {
      "language": {
        "displayName": true,
        "type": "string"
      }
    },
    "enum": [
      {
        "title": "English",
        "id": "en"
      },
      {
        "title": "Dutch",
        "id": "nl"
      }
    ]
  },
  "tradle.Major": {
    "id": "tradle.Major",
    "title": "Major",
    "type": "tradle.Model",
    "subClassOf": "tradle.Enum",
    "properties": {
      "major": {
        "displayName": true,
        "type": "string"
      }
    },
    "enum": [
      {
        "id": "businessAdministration",
        "title": "Business Administration"
      },
      {
        "id": "entrepreneurship",
        "title": "Entrepreneurship"
      },
      {
        "id": "animation",
        "title": "Animation"
      },
      {
        "id": "computerSystemsAnalysis",
        "title": "Computer Systems Analysis"
      },
      {
        "id": "neurobiology",
        "title": "Neurobiology"
      },
      {
        "id": "accounting",
        "title": "Accounting"
      },
      {
        "id": "internationalBusiness",
        "title": "International Business"
      },
      {
        "id": "finance",
        "title": "Finance"
      },
      {
        "id": "digitalCommunicationsAndMultimedia",
        "title": "Digital Communications and Multimedia"
      },
      {
        "id": "networkDesignAndAdministration",
        "title": "Network Design and Administration"
      }
    ]
  },
  "tradle.MaritalStatus": {
    "id": "tradle.MaritalStatus",
    "title": "Marital Status",
    "type": "tradle.Model",
    "subClassOf": "tradle.Enum",
    "properties": {
      "status": {
        "displayName": true,
        "type": "string"
      }
    },
    "enum": [
      {
        "id": "single",
        "title": "Single"
      },
      {
        "id": "married",
        "title": "Married"
      },
      {
        "id": "marriedPA",
        "title": "Married with prenuptial agreement"
      },
      {
        "id": "civil",
        "title": "Civil partnership"
      },
      {
        "id": "livingTogether",
        "title": "Living together with agreement"
      }
    ]
  },
  "tradle.MediaSnippet": {
    "id": "tradle.MediaSnippet",
    "type": "tradle.Model",
    "title": "Media Snippet",
    "subClassOf": "tradle.Form",
    "interfaces": [
      "tradle.Verifiable",
      "tradle.Document"
    ],
    "verifiableAspects": {
      "authenticity": {
        "methods": [
          "tradle.VisualVerificationMethod"
        ]
      }
    },
    "properties": {
      "headline": {
        "type": "string"
      },
      "summary": {
        "type": "string"
      },
      "url": {
        "type": "string",
        "range": "url"
      },
      "publisher": {
        "type": "string"
      },
      "datePublished": {
        "type": "date"
      },
      "photos": {
        "type": "array",
        "range": "photo",
        "inlined": true,
        "items": {
          "ref": "tradle.Photo"
        }
      }
    },
    "required": [
      "summary",
      "publisher",
      "datePublished"
    ],
    "gridCols": [
      "headline",
      "publisher",
      "datePublished"
    ],
    "viewCols": [
      "headline",
      "summary",
      "publisher",
      "datePublished",
      "photos"
    ]
  },
  "tradle.MerkleLeaf": {
    "id": "tradle.MerkleLeaf",
    "type": "tradle.Model",
    "title": "Merkle Leaf",
    "properties": {
      "index": {
        "type": "number"
      },
      "data": {
        "type": "string"
      }
    },
    "required": [
      "index",
      "data"
    ]
  },
  "tradle.MerkleNode": {
    "id": "tradle.MerkleNode",
    "type": "tradle.Model",
    "title": "Merkle Node",
    "properties": {
      "index": {
        "type": "number"
      },
      "hash": {
        "type": "string"
      }
    },
    "required": [
      "index",
      "hash"
    ]
  },
  "tradle.Message": {
    "id": "tradle.Message",
    "type": "tradle.Model",
    "title": "Message",
    "properties": {
      "recipientPubKey": {
        "type": "object",
        "inlined": true,
        "properties": {
          "curve": {
            "type": "string"
          },
          "pub": {
            "type": "bytes"
          }
        }
      },
      "object": {
        "type": "object",
        "inlined": true,
        "ref": "tradle.Object"
      },
      "time": {
        "type": "date"
      },
      "context": {
        "type": "string"
      },
      "forward": {
        "type": "string"
      },
      "originalSender": {
        "type": "string",
        "description": "for proxied messages"
      },
      "originalRecipient": {
        "type": "string",
        "description": "for proxied messages"
      },
      "inReplyTo": {
        "type": "string"
      },
      "iOfN": {
        "type": "object",
        "properties": {
          "i": {
            "type": "number"
          },
          "n": {
            "type": "number"
          }
        }
      },
      "_n": {
        "type": "number",
        "readOnly": true,
        "immutable": true,
        "description": "message sequence number, for this recipient",
        "sample": "random.number"
      },
      "_q": {
        "type": "string",
        "readOnly": true,
        "immutable": true,
        "description": "link to the previous message sent to this recipient",
        "sample": "hash"
      },
      "_recipient": {
        "type": "string",
        "virtual": true
      },
      "_payloadType": {
        "type": "string",
        "virtual": true
      },
      "_payloadLink": {
        "type": "string",
        "virtual": true
      },
      "_payloadRecipient": {
        "type": "string",
        "virtual": true
      },
      "_inbound": {
        "type": "boolean",
        "virtual": true
      },
      "_counterparty": {
        "type": "string",
        "virtual": true,
        "description": "_author if inbound, _recipient otherwise"
      },
      "_dcounterparty": {
        "type": "string",
        "virtual": true,
        "description": "property used for indexing in/outbound messages by counterparty"
      }
    },
    "required": [
      "recipientPubKey",
      "object",
      "time"
    ],
    "primaryKeys": {
      "hashKey": "_counterparty",
      "rangeKey": "time"
    },
    "indexes": [
      {
        "hashKey": "_dcounterparty",
        "rangeKey": "time"
      },
      {
        "hashKey": "context",
        "rangeKey": "time"
      },
      {
        "hashKey": "_link"
      }
    ]
  },
  "tradle.Method": {
    "id": "tradle.Method",
    "type": "tradle.Model",
    "title": "Method",
    "inlined": true,
    "abstract": true,
    "properties": {
      "aspect": {
        "type": "string",
        "readOnly": true
      }
    },
    "required": [
      "aspect"
    ]
  },
  "tradle.ModelsPack": {
    "id": "tradle.ModelsPack",
    "title": "Models Pack",
    "type": "tradle.Model",
    "properties": {
      "versionId": {
        "type": "string"
      },
      "namespace": {
        "type": "string"
      },
      "models": {
        "type": "array",
        "readOnly": true,
        "inlined": true,
        "items": {
          "type": "object",
          "ref": "tradle.Model"
        }
      }
    },
    "required": [
      "versionId"
    ]
  },
  "tradle.Money": {
    "id": "tradle.Money",
    "type": "tradle.Model",
    "title": "Money",
    "inlined": true,
    "properties": {
      "value": {
        "type": "number",
        "sample": {
          "random.number": {
            "min": 1000,
            "max": 100000000
          }
        }
      },
      "currency": {
        "type": "enum",
        "oneOf": [
          {
            "USD": "$"
          },
          {
            "GBP": "£"
          },
          {
            "EUR": "€"
          },
          {
            "KWD": "د.ك"
          },
          {
            "ANG": "ƒ"
          },
          {
            "HNL": "L"
          },
          {
            "MYR": "RM"
          },
          {
            "COP": "$"
          },
          {
            "PHP": "₱"
          },
          {
            "MDL": "L"
          },
          {
            "MRO": "UM"
          },
          {
            "INR": "₨"
          },
          {
            "CRC": "₡"
          },
          {
            "ISK": "kr"
          },
          {
            "MXN": "$"
          },
          {
            "DZD": "د.ج"
          },
          {
            "CLP": "$"
          },
          {
            "JMD": "$"
          },
          {
            "QAR": "ر.ق"
          },
          {
            "LRD": "$"
          },
          {
            "LVL": "Ls"
          },
          {
            "GIP": "£"
          },
          {
            "GEL": "ლ"
          },
          {
            "AMD": "դր."
          },
          {
            "MGA": "MGA"
          },
          {
            "MUR": "₨"
          },
          {
            "CAD": "$"
          },
          {
            "BMD": "$"
          },
          {
            "ZMK": "ZK"
          },
          {
            "IRR": "﷼"
          },
          {
            "BZD": "$"
          },
          {
            "SBD": "$"
          },
          {
            "MNT": "₮"
          },
          {
            "TOP": "T$"
          },
          {
            "TTD": "$"
          },
          {
            "GMD": "D"
          },
          {
            "KYD": "$"
          },
          {
            "SYP": "£"
          },
          {
            "PGK": "K"
          },
          {
            "XOF": "Fr"
          },
          {
            "THB": "฿"
          },
          {
            "LAK": "₭"
          },
          {
            "EGP": "£"
          },
          {
            "BGN": "лв"
          },
          {
            "SRD": "$"
          },
          {
            "SHP": "£"
          },
          {
            "UAH": "₴"
          },
          {
            "VUV": "Vt"
          },
          {
            "JOD": "د.ا"
          },
          {
            "KRW": "₩"
          },
          {
            "MMK": "K"
          },
          {
            "PYG": "₲"
          },
          {
            "TMM": "m"
          },
          {
            "TJS": "ЅМ"
          },
          {
            "PLN": "zł"
          },
          {
            "BBD": "$"
          },
          {
            "HRK": "kn"
          },
          {
            "NIO": "C$"
          },
          {
            "BYR": "Br"
          },
          {
            "RUB": "р."
          },
          {
            "GYD": "$"
          },
          {
            "ARS": "$"
          },
          {
            "RWF": "Fr"
          },
          {
            "CHF": "Fr"
          },
          {
            "AED": "د.إ"
          },
          {
            "MWK": "MK"
          },
          {
            "LBP": "ل.ل"
          },
          {
            "TWD": "$"
          },
          {
            "HTG": "G"
          },
          {
            "NPR": "₨"
          },
          {
            "CDF": "Fr"
          },
          {
            "LSL": "L"
          },
          {
            "LKR": "ரூ"
          },
          {
            "UZS": "UZS"
          },
          {
            "IQD": "ع.د"
          },
          {
            "PKR": "₨"
          },
          {
            "ILS": "₪"
          },
          {
            "BHD": "ب.د"
          },
          {
            "BOB": "Bs."
          },
          {
            "MAD": "د.م."
          },
          {
            "MKD": "ден"
          },
          {
            "JPY": "¥"
          },
          {
            "SCR": "₨"
          },
          {
            "BTN": "BTN"
          },
          {
            "UYU": "$"
          },
          {
            "SZL": "L"
          },
          {
            "CZK": "Kč"
          },
          {
            "STD": "Db"
          },
          {
            "BSD": "$"
          },
          {
            "FJD": "$"
          },
          {
            "ALL": "L"
          },
          {
            "KES": "Sh"
          },
          {
            "SAR": "ر.س"
          },
          {
            "OMR": "ر.ع."
          },
          {
            "KPW": "₩"
          },
          {
            "SOS": "Sh"
          },
          {
            "NZD": "$"
          },
          {
            "SGD": "$"
          },
          {
            "KZT": "Т"
          },
          {
            "BND": "$"
          },
          {
            "LTL": "Lt"
          },
          {
            "CUP": "$"
          },
          {
            "GTQ": "Q"
          },
          {
            "TND": "د.ت"
          },
          {
            "BAM": "KM"
          },
          {
            "ZAR": "R"
          },
          {
            "AOA": "Kz"
          },
          {
            "HUF": "Ft"
          },
          {
            "PAB": "B/."
          },
          {
            "RON": "RON"
          },
          {
            "AFN": "؋"
          },
          {
            "EEK": "KR"
          },
          {
            "BIF": "Fr"
          },
          {
            "WST": "T"
          },
          {
            "DJF": "Fr"
          },
          {
            "MOP": "P"
          },
          {
            "KMF": "Fr"
          },
          {
            "BRL": "R$"
          },
          {
            "TZS": "Sh"
          },
          {
            "SEK": "kr"
          },
          {
            "HKD": "$"
          },
          {
            "XAF": "Fr"
          },
          {
            "GNF": "Fr"
          },
          {
            "MTL": "₤"
          },
          {
            "CVE": "$"
          },
          {
            "NOK": "kr"
          },
          {
            "ETB": "ETB"
          },
          {
            "IDR": "Rp"
          },
          {
            "SLL": "Le"
          },
          {
            "BWP": "P"
          },
          {
            "DKK": "kr"
          },
          {
            "CNY": "¥"
          },
          {
            "CSD": "CSD"
          },
          {
            "NGN": "₦"
          },
          {
            "VND": "₫"
          },
          {
            "VEB": "Bs"
          },
          {
            "MZN": "MZN"
          },
          {
            "BDT": "৳"
          },
          {
            "CYP": "£"
          },
          {
            "ERN": "ERN"
          },
          {
            "YER": "﷼"
          },
          {
            "GPD": "£"
          },
          {
            "AUD": "$"
          },
          {
            "FKP": "£"
          },
          {
            "SDD": "SDD"
          },
          {
            "NAD": "$"
          },
          {
            "KGS": "KGS"
          },
          {
            "XCD": "$"
          },
          {
            "SKK": "Sk"
          },
          {
            "GHC": "₵"
          },
          {
            "XPF": "Fr"
          },
          {
            "MVR": "ރ."
          },
          {
            "KHR": "៛"
          },
          {
            "LYD": "ل.د"
          },
          {
            "AWG": "ƒ"
          },
          {
            "AZN": "AZN"
          },
          {
            "ZWD": "$"
          },
          {
            "PEN": "S/."
          },
          {
            "DOP": "$"
          },
          {
            "UGX": "Sh"
          },
          {
            "TRY": "₤"
          }
        ],
        "sample": "currency"
      }
    },
    "required": [
      "value",
      "currency"
    ]
  },
  "tradle.MyEmployeeOnboarding": {
    "id": "tradle.MyEmployeeOnboarding",
    "title": "My Employee Pass",
    "subClassOf": "tradle.MyProduct",
    "type": "tradle.Model",
    "properties": {
      "_t": {
        "type": "string",
        "readOnly": true
      },
      "from": {
        "type": "object",
        "readOnly": true,
        "ref": "tradle.Identity"
      },
      "to": {
        "type": "object",
        "readOnly": true,
        "ref": "tradle.Identity"
      },
      "entityRole": {
        "type": "string"
      },
      "myProductId": {
        "title": "Employee ID",
        "type": "string"
      },
      "firstName": {
        "type": "string"
      },
      "lastName": {
        "type": "string"
      }
    },
    "required": [
      "myProductId"
    ],
    "viewCols": [
      "myProductId"
    ]
  },
  "tradle.MyIdentities": {
    "id": "tradle.MyIdentities",
    "type": "tradle.Model",
    "title": "My Identities",
    "properties": {
      "currentIdentity": {
        "type": "object",
        "ref": "tradle.Identity",
        "readOnly": true
      },
      "allIdentities": {
        "type": "array",
        "items": {
          "type": "object",
          "ref": "tradle.Identity"
        }
      }
    }
  },
  "tradle.MyProduct": {
    "id": "tradle.MyProduct",
    "title": "My Product",
    "type": "tradle.Model",
    "properties": {
      "myProductId": {
        "type": "string"
      }
    }
  },
  "tradle.MyRemediation": {
    "id": "tradle.MyRemediation",
    "title": "My Remediation",
    "subClassOf": "tradle.MyProduct",
    "type": "tradle.Model",
    "properties": {
      "myProductId": {
        "title": "Remediation ID",
        "type": "string"
      }
    },
    "required": [
      "myProductId"
    ],
    "viewCols": [
      "myProductId"
    ]
  },
  "tradle.Name": {
    "id": "tradle.Name",
    "title": "Name",
    "subClassOf": "tradle.Form",
    "type": "tradle.Model",
    "properties": {
      "givenName": {
        "title": "Given name(s)",
        "type": "string",
        "sample": "name.firstName"
      },
      "surname": {
        "type": "string",
        "sample": "name.lastName"
      }
    },
    "required": [
      "givenName",
      "surname"
    ],
    "viewCols": [
      "givenName",
      "surname"
    ]
  },
  "tradle.Nationality": {
    "id": "tradle.Nationality",
    "title": "Nationality",
    "subClassOf": "tradle.Enum",
    "type": "tradle.Model",
    "sort": "nationality",
    "properties": {
      "nationality": {
        "displayName": true,
        "type": "string"
      }
    }
  },
  "tradle.NewMessageModel": {
    "id": "tradle.NewMessageModel",
    "type": "tradle.Model",
    "title": "New message model",
    "properties": {
      "url": {
        "type": "string",
        "displayName": true
      }
    }
  },
  "tradle.NextFormRequest": {
    "id": "tradle.NextFormRequest",
    "title": "NextFormRequest",
    "type": "tradle.Model",
    "properties": {
      "after": {
        "type": "string"
      }
    },
    "viewCols": [
      "after"
    ],
    "required": [
      "after"
    ]
  },
  "tradle.Object": {
    "type": "tradle.Model",
    "id": "tradle.Object",
    "title": "Object",
    "description": "the base Object model from which all inherit",
    "abstract": true,
    "properties": {
      "_t": {
        "type": "string",
        "readOnly": true,
        "immutable": true,
        "description": "the instance type"
      },
      "_s": {
        "type": "string",
        "readOnly": true,
        "immutable": true,
        "description": "signature",
        "sample": "sig"
      },
      "_r": {
        "type": "string",
        "readOnly": true,
        "immutable": true,
        "description": "the link to the original version of this object (permalink)",
        "sample": "hash"
      },
      "_p": {
        "type": "string",
        "immutable": true,
        "readOnly": true,
        "description": "the link to the previous version of this object",
        "sample": "hash"
      },
      "_z": {
        "type": "string",
        "readOnly": true,
        "immutable": true,
        "description": "nonce",
        "sample": "hash"
      },
      "_o": {
        "type": "string",
        "readOnly": true,
        "immutable": true,
        "description": "owner",
        "sample": "hash"
      },
      "_seal": {
        "type": "object",
        "ref": "tradle.Seal",
        "readOnly": true,
        "immutable": true,
        "inlined": true,
        "virtual": true
      },
      "time": {
        "type": "date",
        "readOnly": true,
        "immutable": true,
        "sample": "timestamp.recent"
      },
      "_author": {
        "type": "string",
        "virtual": true,
        "readOnly": true,
        "description": "this object author's identity's permalink",
        "sample": "hash"
      },
      "_link": {
        "type": "string",
        "virtual": true,
        "readOnly": true,
        "sample": "hash"
      },
      "_prevlink": {
        "type": "string",
        "virtual": true,
        "readOnly": true,
        "sample": "hash"
      },
      "_permalink": {
        "type": "string",
        "virtual": true,
        "readOnly": true,
        "sample": "hash"
      },
      "_time": {
        "type": "number",
        "virtual": true,
        "readOnly": true,
        "sample": "timestamp.recent"
      },
      "_cut": {
        "type": "array",
        "virtual": true,
        "readOnly": true,
        "items": {
          "type": "string"
        }
      },
      "_displayName": {
        "type": "string",
        "virtual": true,
        "readOnly": true
      },
      "_sigPubKey": {
        "type": "string",
        "virtual": true,
        "readOnly": true,
        "sample": "hash"
      },
      "_virtual": {
        "type": "array",
        "inlined": true,
        "virtual": true,
        "items": {
          "type": "string"
        }
      }
    },
    "required": [
      "_t",
      "_s"
    ]
  },
  "tradle.Organization": {
    "id": "tradle.Organization",
    "type": "tradle.Model",
    "title": "Organization",
    "sort": "lastMessageTime",
    "properties": {
      "name": {
        "type": "string",
        "displayName": true
      },
      "domain": {
        "type": "string",
        "description": "primary web domain"
      },
      "email": {
        "type": "string",
        "range": "email",
        "keyboard": "email-address"
      },
      "city": {
        "type": "string"
      },
      "country": {
        "type": "object",
        "ref": "tradle.Country"
      },
      "postalCode": {
        "type": "string"
      },
      "region": {
        "type": "string"
      },
      "street": {
        "type": "string"
      },
      "formattedAddress": {
        "type": "string",
        "displayAs": "{1}, {2}, {3}, {4}",
        "group": [
          "street",
          "city",
          "region",
          "postalCode"
        ],
        "title": "Address",
        "readOnly": true
      },
      "contacts": {
        "type": "array",
        "hidden": true,
        "readOnly": true,
        "items": {
          "type": "object",
          "ref": "tradle.Profile",
          "backlink": "organization"
        }
      },
      "lastMessage": {
        "type": "string"
      },
      "lastMessageTime": {
        "type": "date"
      },
      "inactive": {
        "type": "boolean"
      },
      "photos": {
        "type": "array",
        "range": "photo",
        "inlined": true,
        "items": {
          "ref": "tradle.Photo"
        }
      },
      "verifications": {
        "type": "array",
        "readOnly": true,
        "items": {
          "type": "object",
          "ref": "tradle.Verification",
          "backlink": "from"
        }
      },
      "forms": {
        "type": "array",
        "icon": "ios-paper-outline",
        "readOnly": true,
        "items": {
          "type": "object",
          "ref": "tradle.Form",
          "backlink": "to"
        }
      },
      "securityCodes": {
        "hidden": true,
        "type": "array",
        "readOnly": true,
        "items": {
          "type": "object",
          "ref": "tradle.SecurityCode",
          "backlink": "organization"
        }
      }
    },
    "required": [
      "name"
    ],
    "viewCols": [
      "name",
      "photos",
      "forms",
      "verifications"
    ],
    "gridCols": [
      "name",
      "lastMessage",
      "lastMessageTime"
    ],
    "editCols": [
      "name",
      "street",
      "city",
      "region",
      "country"
    ]
  },
  "tradle.PairingData": {
    "id": "tradle.PairingData",
    "title": "Pairing Data",
    "type": "tradle.Model",
    "properties": {
      "identity": {
        "type": "object",
        "ref": "tradle.Identity",
        "inlined": true
      },
      "nonce": {
        "type": "string"
      },
      "rendezvous": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          }
        }
      }
    },
    "required": [
      "identity",
      "nonce",
      "rendezvous"
    ]
  },
  "tradle.PairingRequest": {
    "id": "tradle.PairingRequest",
    "title": "Pairing Request",
    "type": "tradle.Model",
    "properties": {
      "identity": {
        "type": "object",
        "ref": "tradle.Identity",
        "inlined": true
      },
      "auth": {
        "type": "string"
      }
    },
    "required": [
      "identity",
      "auth"
    ]
  },
  "tradle.PairingResponse": {
    "id": "tradle.PairingResponse",
    "title": "Pairing Response",
    "type": "tradle.Model",
    "properties": {
      "identity": {
        "type": "object",
        "ref": "tradle.Identity",
        "inlined": true
      },
      "prev": {
        "type": "object",
        "ref": "tradle.Identity",
        "inlined": true
      }
    },
    "required": [
      "identity",
      "prev"
    ]
  },
  "tradle.Partial": {
    "id": "tradle.Partial",
    "type": "tradle.Model",
    "title": "Partial",
    "properties": {
      "resource": {
        "type": "object",
        "ref": "tradle.Message"
      },
      "provider": {
        "type": "object",
        "readOnly": true,
        "ref": "tradle.Organization",
        "displayName": true
      },
      "root": {
        "type": "object",
        "readOnly": true,
        "inlined": true,
        "ref": "tradle.MerkleNode"
      },
      "proof": {
        "type": "array",
        "readOnly": true,
        "inlined": true,
        "items": {
          "ref": "tradle.MerkleNode"
        }
      },
      "leaves": {
        "type": "array",
        "readOnly": true,
        "inlined": true,
        "items": {
          "ref": "tradle.MerkleLeaf"
        }
      },
      "sig": {
        "type": "string",
        "readOnly": true
      },
      "type": {
        "type": "string",
        "readOnly": true
      },
      "context": {
        "type": "string",
        "readOnly": true
      }
    }
  },
  "tradle.Passport": {
    "id": "tradle.Passport",
    "type": "tradle.Model",
    "title": "Passport",
    "interfaces": [
      "tradle.Verifiable"
    ],
    "verifiableAspects": {
      "authenticity": {
        "methods": [
          "tradle.VisualVerificationMethod",
          "tradle.APIBasedVerificationMethod"
        ]
      },
      "ownership": {
        "methods": [
          "tradle.VisualVerificationMethod"
        ]
      },
      "validity": {
        "methods": [
          "tradle.VisualVerificationMethod"
        ]
      }
    },
    "subClassOf": "tradle.Form",
    "properties": {
      "issuingCountry": {
        "type": "object",
        "ref": "tradle.Country"
      },
      "passportNumber": {
        "type": "number",
        "maxLength": 9,
        "minLength": 9,
        "displayName": true
      },
      "surname": {
        "type": "string"
      },
      "givenName": {
        "type": "string"
      },
      "nationality": {
        "type": "object",
        "ref": "tradle.Nationality"
      },
      "dateOfBirth": {
        "type": "date"
      },
      "sex": {
        "type": "object",
        "ref": "tradle.Sex"
      },
      "placeOfBirth": {
        "type": "string"
      },
      "dateOfIssue": {
        "type": "date"
      },
      "authority": {
        "type": "string",
        "displayName": true
      },
      "dateOfExpiry": {
        "type": "date",
        "displayName": true
      },
      "country": {
        "type": "object",
        "ref": "tradle.Country"
      },
      "time": {
        "type": "date",
        "readOnly": true
      },
      "photos": {
        "type": "array",
        "inlined": true,
        "items": {
          "ref": "tradle.Photo"
        }
      }
    },
    "required": [
      "country",
      "photos",
      "issuingCountry",
      "passportNumber",
      "surname",
      "givenName",
      "nationality",
      "dateOfBirth",
      "sex",
      "placeOfBirth",
      "dateOfIssue",
      "authority",
      "dateOfExpiry"
    ],
    "viewCols": [
      "country",
      "issuingCountry",
      "passportNumber",
      "surname",
      "givenName",
      "nationality",
      "dateOfBirth",
      "sex",
      "placeOfBirth",
      "dateOfIssue",
      "authority",
      "dateOfExpiry"
    ]
  },
  "tradle.PassportVerification": {
    "id": "tradle.PassportVerification",
    "type": "tradle.Model",
    "title": "Passport Verification",
    "interfaces": [
      "tradle.Verifiable"
    ],
    "properties": {
      "codeOfIssuing": {
        "type": "string"
      },
      "passportNumber": {
        "type": "number",
        "maxLength": 9,
        "minLength": 9,
        "displayName": true
      },
      "surname": {
        "type": "string"
      },
      "givenName": {
        "type": "string"
      },
      "nationality": {
        "type": "string"
      },
      "dateOfBirth": {
        "type": "date"
      },
      "sex": {
        "type": "object",
        "ref": "tradle.Sex"
      },
      "placeOfBirth": {
        "type": "string"
      },
      "dateOfIssue": {
        "type": "date"
      },
      "authority": {
        "type": "string",
        "displayName": true
      },
      "dateOfExpiry": {
        "type": "date",
        "displayName": true
      },
      "time": {
        "type": "date",
        "readOnly": true
      },
      "photos": {
        "type": "array",
        "inlined": true,
        "items": {
          "ref": "tradle.Photo"
        }
      },
      "country": {
        "type": "object",
        "ref": "tradle.Country"
      },
      "verifications": {
        "type": "array",
        "readOnly": true,
        "items": {
          "backlink": "document",
          "ref": "tradle.Verification"
        }
      }
    },
    "required": [
      "photos",
      "codeOfIssuing",
      "passportNumber",
      "surname",
      "givenName",
      "nationality",
      "dateOfBirth",
      "sex",
      "placeOfBirth",
      "dateOfIssue",
      "authority",
      "dateOfExpiry"
    ],
    "gridCols": [
      "passportNumber",
      "dateOfExpiry",
      "time"
    ],
    "viewCols": [
      "codeOfIssuing",
      "passportNumber",
      "surname",
      "givenName",
      "nationality",
      "dateOfBirth",
      "sex",
      "placeOfBirth",
      "dateOfIssue",
      "authority",
      "dateOfExpiry"
    ]
  },
  "tradle.Phone": {
    "id": "tradle.Phone",
    "type": "tradle.Model",
    "title": "Phone",
    "icon": "ios-call-outline",
    "inlined": true,
    "properties": {
      "phoneType": {
        "type": "object",
        "ref": "tradle.PhoneTypes"
      },
      "number": {
        "type": "string",
        "range": "phone",
        "keyboard": "phone-pad",
        "sample": "phone.phoneNumber"
      },
      "myPhones": {
        "type": "string",
        "displayAs": "{2} {1}",
        "group": [
          "phoneType",
          "number"
        ],
        "readOnly": true,
        "skipLabel": true
      }
    },
    "required": [
      "phoneType",
      "number"
    ],
    "viewCols": [
      "myPhones"
    ]
  },
  "tradle.PhoneTypes": {
    "id": "tradle.PhoneTypes",
    "title": "Phone Types",
    "subClassOf": "tradle.Enum",
    "type": "tradle.Model",
    "properties": {
      "phoneType": {
        "displayName": true,
        "type": "string"
      }
    },
    "enum": [
      {
        "id": "home",
        "title": "Home"
      },
      {
        "id": "mobile",
        "title": "Mobile"
      },
      {
        "id": "work",
        "title": "Work"
      }
    ]
  },
  "tradle.Photo": {
    "id": "tradle.Photo",
    "type": "tradle.Model",
    "title": "Photo",
    "inlined": true,
    "properties": {
      "url": {
        "type": "string",
        "readOnly": true,
        "sample": {
          "image.dataUri": [
            800,
            600
          ]
        }
      },
      "width": {
        "type": "number",
        "readOnly": true,
        "sample": {
          "random.number": {
            "min": 100,
            "max": 2000
          }
        }
      },
      "height": {
        "type": "number",
        "readOnly": true,
        "sample": {
          "random.number": {
            "min": 100,
            "max": 2000
          }
        }
      }
    },
    "required": [
      "url"
    ]
  },
  "tradle.ProductApplication": {
    "id": "tradle.ProductApplication",
    "title": "Product Application",
    "interfaces": [
      "tradle.Context"
    ],
    "type": "tradle.Model",
    "properties": {
      "product": {
        "type": "string",
        "displayName": true
      },
      "time": {
        "type": "date",
        "readOnly": true
      },
      "session": {
        "type": "string"
      },
      "welcome": {
        "type": "boolean",
        "readOnly": true
      },
      "contextId": {
        "type": "string"
      }
    },
    "viewCols": [
      "product"
    ],
    "required": [
      "product",
      "contextId"
    ]
  },
  "tradle.ProductList": {
    "id": "tradle.ProductList",
    "title": "Product List",
    "type": "tradle.Model",
    "properties": {
      "message": {
        "type": "string"
      },
      "list": {
        "type": "array",
        "readOnly": true,
        "inlined": true,
        "items": {
          "type": "object",
          "ref": "tradle.Model"
        }
      }
    },
    "viewCols": [
      "message"
    ],
    "required": [
      "message",
      "list"
    ]
  },
  "tradle.ProductRequest": {
    "id": "tradle.ProductRequest",
    "title": "Product Request",
    "subClassOf": "tradle.Form",
    "interfaces": [
      "tradle.Context"
    ],
    "type": "tradle.Model",
    "properties": {
      "requestFor": {
        "type": "string",
        "range": "model",
        "displayName": true
      },
      "contextId": {
        "type": "string",
        "readOnly": true,
        "immutable": true
      }
    },
    "viewCols": [
      "requestFor",
      "contextId"
    ],
    "required": [
      "requestFor",
      "contextId"
    ]
  },
  "tradle.Profile": {
    "id": "tradle.Profile",
    "type": "tradle.Model",
    "title": "Profile",
    "sort": "lastMessageTime",
    "plural": "Profiles",
    "properties": {
      "securityCode": {
        "type": "string",
        "readOnly": true
      },
      "city": {
        "type": "string"
      },
      "country": {
        "type": "object",
        "ref": "tradle.Country"
      },
      "postalCode": {
        "type": "string"
      },
      "region": {
        "type": "string"
      },
      "street": {
        "type": "string"
      },
      "formattedAddress": {
        "type": "string",
        "displayAs": "{1}, {2}, {3} {4}, {5}",
        "group": [
          "street",
          "city",
          "region",
          "postalCode",
          "country"
        ],
        "title": "Address",
        "readOnly": true
      },
      "firstName": {
        "type": "string"
      },
      "lastName": {
        "type": "string"
      },
      "address_group": {
        "title": "Home Address",
        "type": "string"
      },
      "employment_group": {
        "title": "Employment",
        "type": "string"
      },
      "formatted": {
        "type": "string",
        "displayAs": "{2} {1}",
        "group": [
          "lastName",
          "firstName"
        ],
        "readOnly": true,
        "displayName": true
      },
      "language": {
        "type": "object",
        "ref": "tradle.Language"
      },
      "middleName": {
        "type": "string"
      },
      "organization": {
        "type": "object",
        "readOnly": true,
        "ref": "tradle.Organization"
      },
      "bot": {
        "type": "boolean",
        "readOnly": true
      },
      "isEmployee": {
        "type": "boolean",
        "readOnly": true
      },
      "verifiedByMe": {
        "type": "array",
        "allowRoles": "me",
        "icon": "ios-checkmark-circle-outline",
        "items": {
          "readOnly": true,
          "ref": "tradle.Verification",
          "backlink": "from"
        }
      },
      "myProducts": {
        "type": "array",
        "title": "Products",
        "icon": "ios-disc-outline",
        "allowRoles": "me",
        "items": {
          "readOnly": true,
          "ref": "tradle.MyProduct",
          "backlink": "to"
        }
      },
      "myVerifications": {
        "type": "array",
        "title": "Verifications",
        "allowRoles": "me",
        "icon": "ios-checkmark-circle-outline",
        "items": {
          "readOnly": true,
          "ref": "tradle.Verification",
          "backlink": "to"
        }
      },
      "myForms": {
        "type": "array",
        "title": "My Data",
        "allowRoles": "me",
        "icon": "ios-body-outline",
        "items": {
          "readOnly": true,
          "ref": "tradle.Form",
          "backlink": "from"
        }
      },
      "myDocuments": {
        "type": "array",
        "title": "Documents",
        "allowRoles": "me",
        "icon": "ios-paper-outline",
        "items": {
          "readOnly": true,
          "ref": "tradle.Document",
          "backlink": "from"
        }
      },
      "useTouchId": {
        "type": "boolean"
      },
      "useGesturePassword": {
        "type": "boolean"
      },
      "photos": {
        "type": "array",
        "range": "photo",
        "allowPicturesFromLibrary": true,
        "cameraType": "front",
        "inlined": true,
        "items": {
          "ref": "tradle.Photo"
        }
      },
      "coverPhoto": {
        "inlined": true,
        "type": "object",
        "allowPicturesFromLibrary": true,
        "coverPhoto": true,
        "ref": "tradle.Photo"
      },
      "summary": {
        "type": "string"
      },
      "lastMessage": {
        "type": "string"
      },
      "lastMessageTime": {
        "type": "date"
      },
      "websites": {
        "type": "array",
        "inlined": true,
        "items": {
          "ref": "tradle.WebSite"
        }
      }
    },
    "required": [
      "firstName"
    ],
    "gridCols": [
      "formatted",
      "lastMessage",
      "lastMessageTime",
      "organization"
    ],
    "viewCols": [
      "address_group",
      "formattedAddress",
      "employment_group",
      "organization",
      "myForms",
      "myDocuments",
      "myVerifications",
      "websites",
      "coverPhoto",
      "photos"
    ],
    "editCols": [
      "firstName",
      "coverPhoto"
    ]
  },
  "tradle.ProgressMessage": {
    "id": "tradle.ProgressMessage",
    "type": "tradle.Model",
    "title": "Progress Message",
    "autoCreate": true,
    "properties": {
      "message": {
        "type": "string",
        "displayName": true
      },
      "time": {
        "type": "date",
        "readOnly": true
      },
      "progress": {
        "type": "number"
      }
    },
    "required": [
      "progress"
    ],
    "viewCols": [
      "progress"
    ]
  },
  "tradle.PropertyChooser": {
    "id": "tradle.PropertyChooser",
    "type": "tradle.Model",
    "title": "Property Chooser",
    "inlined": true,
    "properties": {
      "property": {
        "type": "string",
        "displayName": true,
        "readOnly": true
      },
      "oneOf": {
        "type": "array",
        "readOnly": true,
        "items": {
          "type": "string"
        }
      }
    }
  },
  "tradle.PubKey": {
    "type": "tradle.Model",
    "id": "tradle.PubKey",
    "title": "Public Key",
    "properties": {
      "type": {
        "readOnly": true,
        "type": "string"
      },
      "purpose": {
        "readOnly": true,
        "type": "string"
      },
      "pub": {
        "readOnly": true,
        "type": "string"
      },
      "fingerprint": {
        "readOnly": true,
        "type": "string"
      },
      "curve": {
        "type": "string",
        "description": "curve for EC keys"
      },
      "networkName": {
        "readOnly": true,
        "type": "string"
      },
      "link": {
        "type": "string",
        "description": "link to latest identity version",
        "virtual": true
      },
      "permalink": {
        "type": "string",
        "description": "link to original identity",
        "virtual": true
      }
    },
    "primaryKeys": {
      "hashKey": "pub"
    },
    "indexes": [
      {
        "hashKey": "permalink",
        "rangeKey": "link"
      }
    ],
    "required": [
      "type",
      "fingerprint",
      "pub"
    ]
  },
  "tradle.Remediation": {
    "id": "tradle.Remediation",
    "title": "Remediation",
    "type": "tradle.Model",
    "subClassOf": "tradle.FinancialProduct",
    "forms": [],
    "properties": {}
  },
  "tradle.RemediationSimpleMessage": {
    "id": "tradle.RemediationSimpleMessage",
    "type": "tradle.Model",
    "title": "Remediation Simple Message",
    "autoCreate": true,
    "properties": {
      "message": {
        "type": "string",
        "displayName": true
      },
      "time": {
        "type": "date",
        "readOnly": true
      }
    },
    "required": [
      "message"
    ],
    "viewCols": [
      "message",
      "time"
    ]
  },
  "tradle.Residence": {
    "id": "tradle.Residence",
    "type": "tradle.Model",
    "title": "Residence",
    "subClassOf": "tradle.Form",
    "properties": {
      "streetAddress": {
        "type": "string",
        "sample": "address.streetAddress"
      },
      "city": {
        "type": "string",
        "sample": "address.city"
      },
      "postalCode": {
        "type": "string",
        "sample": "address.zipCode"
      },
      "region": {
        "type": "string",
        "sample": "address.state"
      },
      "country": {
        "type": "object",
        "ref": "tradle.Country"
      },
      "residenceType": {
        "type": "object",
        "title": "Residence Type",
        "displayName": true,
        "ref": "tradle.ResidenceType"
      },
      "formattedAddress": {
        "type": "string",
        "displayAs": "{2}, {3}, {4}",
        "group": [
          "residenceType",
          "streetAddress",
          "city",
          "postalCode"
        ],
        "title": "Address",
        "readOnly": true
      },
      "address_group": {
        "type": "string",
        "title": "Address",
        "list": [
          "streetAddress",
          "city",
          "postalCode",
          "country"
        ]
      }
    },
    "required": [
      "residenceType",
      "city",
      "streetAddress",
      "postalCode"
    ],
    "editCols": [
      "residenceType",
      "address_group"
    ],
    "viewCols": [
      "residenceType",
      "formattedAddress"
    ]
  },
  "tradle.ResidenceType": {
    "id": "tradle.ResidenceType",
    "title": "Residence Type",
    "subClassOf": "tradle.Enum",
    "type": "tradle.Model",
    "properties": {
      "value": {
        "displayName": true,
        "type": "string"
      }
    },
    "enum": [
      {
        "id": "primary",
        "title": "Primary Residence"
      },
      {
        "id": "secondary",
        "title": "Second Home"
      },
      {
        "id": "investment",
        "title": "Investment Property"
      }
    ]
  },
  "tradle.ResidentialStatus": {
    "id": "tradle.ResidentialStatus",
    "title": "Residential Status",
    "type": "tradle.Model",
    "subClassOf": "tradle.Enum",
    "properties": {
      "status": {
        "displayName": true,
        "type": "string"
      }
    },
    "enum": [
      {
        "id": "withMortgage",
        "title": "Home owner (with mortgage)"
      },
      {
        "id": "withoutMortgage",
        "title": "Home owner (without mortgage)"
      },
      {
        "id": "tenantP",
        "title": "Tenant (private)"
      },
      {
        "id": "tenantC",
        "title": "Tenant (counsel)"
      },
      {
        "id": "livingWithParents",
        "title": "Living with parents"
      }
    ]
  },
  "tradle.SalaryVerification": {
    "id": "tradle.SalaryVerification",
    "type": "tradle.Model",
    "title": "Salary Verification",
    "style": {
      "backgroundColor": "#E1FAF9"
    },
    "properties": {
      "message": {
        "type": "string",
        "title": "Description",
        "displayName": true
      },
      "blockchainUrl": {
        "type": "string",
        "readOnly": true
      },
      "transactionHash": {
        "readOnly": true,
        "type": "string"
      },
      "time": {
        "type": "date",
        "readOnly": true
      },
      "photos": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "tags": {
              "type": "string",
              "skipLabel": true
            },
            "url": {
              "type": "string",
              "readOnly": true
            },
            "width": {
              "type": "number",
              "readOnly": true
            },
            "height": {
              "type": "number",
              "readOnly": true
            }
          }
        },
        "required": [
          "title",
          "url"
        ]
      },
      "verifications": {
        "type": "array",
        "readOnly": true,
        "items": {
          "backlink": "document",
          "ref": "tradle.Verification"
        },
        "required": [
          "contact"
        ]
      },
      "additionalInfo": {
        "type": "array",
        "items": {
          "ref": "tradle.AdditionalInfo",
          "backlink": "document"
        }
      }
    },
    "required": [
      "message"
    ],
    "gridCols": [
      "message",
      "time"
    ],
    "viewCols": [
      "message",
      "time",
      "photos",
      "verifications"
    ]
  },
  "tradle.Seal": {
    "type": "tradle.Model",
    "id": "tradle.Seal",
    "title": "Seal",
    "description": "a seal on a blockchain for an object",
    "properties": {
      "link": {
        "type": "string",
        "readOnly": true,
        "immutable": true
      },
      "forResource": {
        "type": "object",
        "ref": "tradle.Object",
        "readOnly": true
      },
      "txId": {
        "type": "string",
        "readOnly": true,
        "immutable": true
      },
      "blockchain": {
        "type": "string",
        "readOnly": true,
        "immutable": true
      },
      "network": {
        "type": "string",
        "readOnly": true,
        "immutable": true
      },
      "time": {
        "type": "date",
        "readOnly": true,
        "immutable": true
      },
      "counterparty": {
        "type": "string",
        "readOnly": true,
        "immutable": true
      }
    },
    "required": [
      "link",
      "txId",
      "blockchain",
      "network"
    ],
    "viewCols": [
      "forResource",
      "txId",
      "blockchain",
      "network"
    ]
  },
  "tradle.SealState": {
    "type": "tradle.Model",
    "id": "tradle.SealState",
    "title": "Seal State",
    "properties": {
      "sealId": {
        "type": "string"
      },
      "link": {
        "type": "string"
      },
      "permalink": {
        "type": "string"
      },
      "forResource": {
        "type": "object",
        "ref": "tradle.Object"
      },
      "counterparty": {
        "type": "string"
      },
      "blockchain": {
        "type": "string"
      },
      "network": {
        "type": "string"
      },
      "address": {
        "type": "string"
      },
      "pubKey": {
        "type": "object",
        "range": "json"
      },
      "watchType": {
        "type": "string"
      },
      "confirmations": {
        "type": "number"
      },
      "write": {
        "type": "boolean"
      },
      "errors": {
        "type": "object",
        "range": "json"
      },
      "unconfirmed": {
        "type": "boolean"
      },
      "unsealed": {
        "type": "boolean"
      },
      "txId": {
        "type": "string"
      },
      "dateSealed": {
        "type": "number"
      },
      "dateWriteCanceled": {
        "type": "date"
      }
    },
    "primaryKeys": [
      "sealId"
    ],
    "indexes": [
      {
        "hashKey": "link",
        "rangeKey": "sealId"
      },
      {
        "hashKey": "unsealed",
        "rangeKey": "sealId"
      },
      {
        "hashKey": "unconfirmed",
        "rangeKey": "sealId"
      }
    ],
    "required": [
      "sealId",
      "link"
    ]
  },
  "tradle.SecurityCode": {
    "id": "tradle.SecurityCode",
    "type": "tradle.Model",
    "title": "Security Code",
    "properties": {
      "code": {
        "type": "string",
        "readOnly": true
      },
      "organization": {
        "type": "object",
        "ref": "tradle.Organization"
      }
    }
  },
  "tradle.SelfIntroduction": {
    "id": "tradle.SelfIntroduction",
    "title": "Self introduction",
    "type": "tradle.Model",
    "properties": {
      "identity": {
        "type": "object",
        "ref": "tradle.Identity",
        "inlined": true
      },
      "name": {
        "type": "string"
      },
      "message": {
        "type": "string"
      }
    },
    "viewCols": [
      "message",
      "identity"
    ],
    "required": [
      "identity"
    ]
  },
  "tradle.ServiceProvider": {
    "id": "tradle.ServiceProvider",
    "type": "tradle.Model",
    "title": "Service Provider Server Info",
    "properties": {
      "permalink": {
        "type": "string",
        "readOnly": true
      },
      "url": {
        "type": "string",
        "readOnly": true
      }
    },
    "required": [
      "permalink",
      "url"
    ]
  },
  "tradle.Settings": {
    "id": "tradle.Settings",
    "type": "tradle.Model",
    "title": "Settings",
    "properties": {
      "url": {
        "title": "Server URL",
        "type": "string",
        "keyboard": "url"
      }
    },
    "viewCols": [
      "url"
    ],
    "required": [
      "url"
    ]
  },
  "tradle.Sex": {
    "id": "tradle.Sex",
    "title": "Sex",
    "subClassOf": "tradle.Enum",
    "type": "tradle.Model",
    "properties": {
      "sex": {
        "displayName": true,
        "type": "string"
      }
    },
    "enum": [
      {
        "id": "Male",
        "title": "Male"
      },
      {
        "id": "Female",
        "title": "Female"
      }
    ]
  },
  "tradle.ShareContext": {
    "id": "tradle.ShareContext",
    "title": "Share Context",
    "type": "tradle.Model",
    "properties": {
      "context": {
        "type": "object",
        "ref": "tradle.ProductApplication"
      },
      "with": {
        "type": "array",
        "items": {
          "type": "object",
          "ref": "tradle.Identity"
        }
      }
    },
    "required": [
      "with",
      "context"
    ]
  },
  "tradle.ShareRequest": {
    "id": "tradle.ShareRequest",
    "type": "tradle.Model",
    "title": "Share Request",
    "properties": {
      "links": {
        "type": "array",
        "immutable": true,
        "items": {
          "type": "string"
        }
      },
      "with": {
        "type": "array",
        "immutable": true,
        "items": {
          "ref": "tradle.Identity"
        }
      }
    },
    "required": [
      "links",
      "with"
    ]
  },
  "tradle.SharedResource": {
    "id": "tradle.SharedResource",
    "type": "tradle.Model",
    "title": "Shared Resource",
    "autoCreate": true,
    "properties": {
      "message": {
        "type": "string",
        "displayName": true
      },
      "resource": {
        "type": "object",
        "ref": "tradle.Form",
        "readOnly": true
      },
      "time": {
        "type": "date",
        "readOnly": true
      }
    },
    "required": [
      "message",
      "resource"
    ],
    "viewCols": [
      "message",
      "resource",
      "time"
    ]
  },
  "tradle.SimpleMessage": {
    "id": "tradle.SimpleMessage",
    "type": "tradle.Model",
    "title": "Simple Message",
    "autoCreate": true,
    "properties": {
      "message": {
        "type": "string",
        "displayName": true
      },
      "photos": {
        "type": "array",
        "range": "photo",
        "inlined": true,
        "items": {
          "ref": "tradle.Photo"
        }
      },
      "time": {
        "type": "date",
        "readOnly": true
      },
      "welcome": {
        "type": "boolean",
        "readOnly": true
      }
    },
    "required": [
      "message"
    ],
    "viewCols": [
      "message",
      "time"
    ]
  },
  "tradle.SkillVerification": {
    "id": "tradle.SkillVerification",
    "type": "tradle.Model",
    "title": "Skill Verification",
    "style": {
      "backgroundColor": "#FAF9E1"
    },
    "properties": {
      "message": {
        "type": "string",
        "title": "Description",
        "displayName": true
      },
      "blockchainUrl": {
        "type": "string",
        "readOnly": true
      },
      "transactionHash": {
        "readOnly": true,
        "type": "string"
      },
      "time": {
        "type": "date",
        "readOnly": true
      },
      "photos": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "tags": {
              "type": "string",
              "skipLabel": true
            },
            "url": {
              "type": "string",
              "readOnly": true
            },
            "width": {
              "type": "number",
              "readOnly": true
            },
            "height": {
              "type": "number",
              "readOnly": true
            }
          }
        },
        "required": [
          "title",
          "url"
        ]
      },
      "verifications": {
        "type": "array",
        "readOnly": true,
        "items": {
          "backlink": "document",
          "ref": "tradle.Verification"
        }
      },
      "additionalInfo": {
        "type": "array",
        "items": {
          "ref": "tradle.AdditionalInfo",
          "backlink": "document"
        }
      }
    },
    "required": [
      "message"
    ],
    "gridCols": [
      "message",
      "time"
    ],
    "viewCols": [
      "message",
      "time",
      "photos",
      "verifications"
    ]
  },
  "tradle.Status": {
    "id": "tradle.Status",
    "title": "Status",
    "subClassOf": "tradle.Enum",
    "type": "tradle.Model",
    "properties": {
      "status": {
        "displayName": true,
        "type": "string"
      }
    },
    "enum": [
      {
        "id": "pass",
        "title": "Pass"
      },
      {
        "id": "fail",
        "title": "Fail"
      },
      {
        "id": "error",
        "title": "Error"
      }
    ]
  },
  "tradle.StylesPack": {
    "id": "tradle.StylesPack",
    "title": "Styles Pack",
    "type": "tradle.Model",
    "properties": {
      "logoNeedsText": {
        "type": "boolean"
      },
      "linkColor": {
        "type": "string"
      },
      "productRowBgColor": {
        "type": "string"
      },
      "productRowTextColor": {
        "type": "string"
      },
      "sharedWithBg": {
        "type": "string"
      },
      "sharedWithVerificationBg": {
        "type": "string"
      },
      "verifiedHeaderColor": {
        "type": "string"
      },
      "verifiedHeaderTextColor": {
        "type": "string"
      },
      "verifiedTextColor": {
        "type": "string"
      },
      "verifiedBorderColor": {
        "type": "string"
      },
      "verifiedLinkColor": {
        "type": "string"
      },
      "verifiedBg": {
        "type": "string"
      },
      "verifiedSourcesColor": {
        "type": "string"
      },
      "confirmationColor": {
        "type": "string"
      },
      "confirmationBg": {
        "type": "string"
      },
      "fixErrorColor": {
        "type": "string"
      },
      "backgroundColor": {
        "type": "string"
      },
      "productBgColor": {
        "type": "string"
      },
      "myMessageLinkColor": {
        "type": "string"
      },
      "myMessageBackgroundColor": {
        "type": "string"
      },
      "formErrorBorder": {
        "type": "string"
      },
      "formErrorColor": {
        "type": "string"
      },
      "formErrorBg": {
        "type": "string"
      },
      "shareContextTextColor": {
        "type": "string"
      },
      "shareContextBackgroundColor": {
        "type": "string"
      },
      "currentContextTextColor": {
        "type": "string"
      },
      "currentContextBackgroundColor": {
        "type": "string"
      },
      "contextBackgroundColor": {
        "type": "string"
      },
      "contextTextColor": {
        "type": "string"
      },
      "contextBorderColor": {
        "type": "string"
      },
      "shareButtonBackgroundColor": {
        "type": "string"
      },
      "listBg": {
        "type": "string"
      },
      "listColor": {
        "type": "string"
      },
      "sourcedVerificationBgColor": {
        "type": "string"
      },
      "sourcedVerificationTextColor": {
        "type": "string"
      },
      "navBarBackgroundColor": {
        "type": "string"
      },
      "navBarBorderColor": {
        "type": "string"
      },
      "navBarBorderWidth": {
        "type": "number"
      },
      "messageSentStatus": {
        "type": "string"
      },
      "incomingMessageBgColor": {
        "type": "string"
      },
      "incomingMessageTextColor": {
        "type": "string"
      },
      "incomingMessageOpaqueTextColor": {
        "type": "string"
      },
      "submitBarInFooter": {
        "type": "boolean"
      },
      "logo": {
        "type": "object",
        "inlined": true,
        "ref": "tradle.Photo"
      },
      "backgroundImage": {
        "type": "object",
        "inlined": true,
        "ref": "tradle.Photo"
      },
      "splashscreen": {
        "type": "object",
        "ref": "tradle.TourPage",
        "inlined": true
      }
    }
  },
  "tradle.TermsAndConditions": {
    "id": "tradle.TermsAndConditions",
    "type": "tradle.Model",
    "title": "Terms and Conditions",
    "subClassOf": "tradle.Form",
    "notEditable": true,
    "notShareable": true,
    "properties": {
      "termsAndConditions": {
        "type": "string",
        "readOnly": true,
        "markdown": true
      }
    },
    "viewCols": [
      "termsAndConditions"
    ],
    "required": [
      "termsAndConditions"
    ]
  },
  "tradle.Tour": {
    "id": "tradle.Tour",
    "type": "tradle.Model",
    "title": "Tour",
    "properties": {
      "message": {
        "type": "string"
      },
      "pages": {
        "type": "array",
        "inlined": true,
        "description": "urls of tour pages",
        "items": {
          "ref": "tradle.TourPage"
        }
      },
      "dotColor": {
        "type": "string"
      },
      "activeDotColor": {
        "type": "string"
      },
      "leftTextColor": {
        "type": "string"
      },
      "rightTextColor": {
        "type": "string"
      },
      "skipBtnText": {
        "type": "string"
      },
      "nextBtnText": {
        "type": "string"
      },
      "doneBtnText": {
        "type": "string"
      },
      "showDots": {
        "type": "boolean"
      },
      "showSkipButton": {
        "type": "boolean"
      },
      "showDoneButton": {
        "type": "boolean"
      }
    },
    "required": [
      "message",
      "pages"
    ]
  },
  "tradle.TourPage": {
    "id": "tradle.TourPage",
    "type": "tradle.Model",
    "title": "Tour Page",
    "properties": {
      "url": {
        "type": "string"
      },
      "title": {
        "type": "string"
      },
      "description": {
        "type": "string"
      },
      "img": {
        "type": "string"
      },
      "imgStyle": {
        "type": "object",
        "properties": {
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          }
        }
      },
      "backgroundColor": {
        "type": "string"
      },
      "fontColor": {
        "type": "string"
      },
      "level": {
        "type": "number"
      }
    }
  },
  "tradle.UtilityBillVerification": {
    "id": "tradle.UtilityBillVerification",
    "type": "tradle.Model",
    "title": "Utility Bill Verification",
    "subClassOf": "tradle.Form",
    "style": {
      "backgroundColor": "#EBE1FA"
    },
    "properties": {
      "billDate": {
        "type": "date",
        "displayName": true
      },
      "issuedBy": {
        "type": "string"
      },
      "firstName": {
        "type": "string"
      },
      "lastName": {
        "type": "string"
      },
      "city": {
        "type": "string"
      },
      "country": {
        "type": "object",
        "ref": "tradle.Country"
      },
      "postalCode": {
        "type": "string"
      },
      "region": {
        "type": "string"
      },
      "street": {
        "type": "string"
      },
      "formattedAddress": {
        "type": "string",
        "displayAs": "{1} {2}, {3}, {4}",
        "group": [
          "street",
          "city",
          "region",
          "postalCode"
        ],
        "title": "Address",
        "readOnly": true
      },
      "blockchainUrl": {
        "type": "string",
        "readOnly": true
      },
      "transactionHash": {
        "readOnly": true,
        "type": "string"
      },
      "time": {
        "type": "date",
        "readOnly": true
      },
      "photos": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "tags": {
              "type": "string",
              "skipLabel": true
            },
            "url": {
              "type": "string",
              "readOnly": true
            },
            "width": {
              "type": "number",
              "readOnly": true
            },
            "height": {
              "type": "number",
              "readOnly": true
            }
          }
        },
        "required": [
          "title",
          "url"
        ]
      },
      "verifications": {
        "type": "array",
        "readOnly": true,
        "items": {
          "backlink": "document",
          "ref": "tradle.Verification"
        }
      }
    },
    "required": [
      "photos",
      "billDate",
      "issuedBy",
      "firstName",
      "lastName",
      "city",
      "street",
      "postalCode",
      "region"
    ],
    "gridCols": [
      "formattedAddress",
      "billDate",
      "time"
    ],
    "viewCols": [
      "issuedBy",
      "formattedAddress",
      "billDate",
      "time"
    ]
  },
  "tradle.Verifiable": {
    "id": "tradle.Verifiable",
    "type": "tradle.Model",
    "title": "Verifiable",
    "isInterface": true,
    "properties": {
      "verifiableAspects": {
        "type": "array",
        "items": {
          "ref": "tradle.Aspect"
        }
      },
      "evidentiaryDocuments": {
        "type": "array",
        "items": {
          "ref": "tradle.Verifiable"
        }
      }
    }
  },
  "tradle.Verification": {
    "id": "tradle.Verification",
    "type": "tradle.Model",
    "title": "Verification",
    "icon": "ios-checkmark-circle-outline",
    "autoCreate": true,
    "properties": {
      "document": {
        "type": "object",
        "readOnly": true,
        "ref": "tradle.Form",
        "title": "Verified document"
      },
      "message": {
        "type": "string",
        "title": "Description",
        "displayName": true
      },
      "dateVerified": {
        "type": "date",
        "skipLabel": true,
        "readOnly": true
      },
      "organization": {
        "type": "object",
        "ref": "tradle.Organization"
      },
      "cancel": {
        "type": "boolean",
        "immutable": true
      },
      "sources": {
        "type": "array",
        "readOnly": true,
        "inlined": true,
        "items": {
          "ref": "tradle.Verification"
        }
      },
      "method": {
        "type": "object",
        "readOnly": true,
        "inlined": true,
        "ref": "tradle.Method"
      }
    },
    "required": [
      "document"
    ],
    "viewCols": [
      "document",
      "dateVerified",
      "organization",
      "method",
      "sources"
    ]
  },
  "tradle.VisualVerificationMethod": {
    "id": "tradle.VisualVerificationMethod",
    "type": "tradle.Model",
    "title": "Visual Verification Method",
    "subClassOf": "tradle.Method",
    "properties": {
      "aspect": {
        "type": "string"
      },
      "documentPresence": {
        "type": "string"
      },
      "ownerPresence": {
        "type": "string"
      },
      "title": {
        "type": "string",
        "readOnly": true,
        "displayName": true,
        "displayAs": "based on document ownership checked by visual inspection in person",
        "group": []
      },
      "photos": {
        "type": "array",
        "inlined": true,
        "items": {
          "ref": "tradle.Photo"
        }
      }
    },
    "required": [
      "aspect"
    ],
    "viewCols": [
      "aspect",
      "ownerPresence",
      "documentPresence",
      "photos"
    ]
  },
  "tradle.WebSite": {
    "id": "tradle.WebSite",
    "type": "tradle.Model",
    "title": "Web site",
    "icon": "ios-globe-outline",
    "inlined": true,
    "properties": {
      "url": {
        "skipLabel": true,
        "type": "string",
        "range": "url"
      }
    },
    "viewCols": [
      "url"
    ],
    "required": [
      "url"
    ]
  }
}
