{
  "validateUpsert": true,
  "properties": {
    "id": {
      "type": "string",
      "id": true,
      "json": false
    },
    "facetName": {
      "type": "string",
      "required": true,
      "json": false
    },
    "readonly": {
      "type": "boolean",
      "json": false
    },
    "name": {
      "type": "string",
      "required": true
    },
    "description": {
      "type": "string"
    },
    "plural": "string",
    "base": "string",
    "strict": "boolean",
    "public": "boolean",
    "idInjection": {
      "type": "boolean",
      "default": true
    },
    "scopes": "object",
    "indexes": "object",
    "options": {
      "type": "object",
      "default": {
        "validateUpsert": true
      }
    }
  },
  "public": true,
  "dataSource": "db",
  "options": {
    "defaultDir": "models",
    "defaultConfigFile": "models/$name.json",
    "configFiles": [
      "models/*.json"
    ],
    "configExtensions": [
      "json"
    ]
  },
  "base": "Definition",
  "relations": {
    "facet": {
      "type": "belongsTo",
      "model": "Facet",
      "foreignKey": "facetName"
    },
    "properties": {
      "embed": {
        "as": "object",
        "key": "name"
      },
      "type": "hasMany",
      "model": "ModelProperty",
      "foreignKey": "modelId"
    },
    "validations": {
      "embed": {
        "as": "array"
      },
      "type": "hasMany",
      "model": "PropertyValidation",
      "foreignKey": "modelId"
    },
    "relations": {
      "embed": {
        "as": "object",
        "key": "name"
      },
      "type": "hasMany",
      "model": "ModelRelation",
      "foreignKey": "modelId"
    },
    "accessControls": {
      "embed": {
        "name": "acls",
        "as": "array",
        "includeIndex": true
      },
      "type": "hasMany",
      "model": "ModelAccessControl",
      "foreignKey": "modelId"
    },
    "methods": {
      "embed": {
        "as": "object",
        "keyGetter": "getJsonKey"
      },
      "type": "hasMany",
      "model": "ModelMethod",
      "foreignKey": "modelId"
    },
    "views": {
      "type": "hasMany",
      "model": "ViewDefinition",
      "foreignKey": "modelId"
    }
  }
}
