{
  "name": "Frame",
  "plural": "frames",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "mixins": {
    "Timestamp": {},
    "IsPublicOrOwner": {}
  },
  "scope": {
    "order": "created",
    "include": {
      "current_artwork": true,
      "managers": true,
      "owner": true
    }
  },
  "properties": {
    "name": {
      "type": "string",
      "required": true
    },
    "display_name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "connected": {
      "type": "boolean"
    },
    "settings": {
      "type": "object",
      "required": true,
      "default": {}
    },
    "is_public": {
      "type": "boolean",
      "required": true,
      "default": false
    },
    "extensions": {
      "type": "object",
      "required": true,
      "default": {
        "openframe-image": "*",
        "openframe-glslviewer": "*",
        "openframe-website": "*",
        "openframe-video": "*"
      }
    },
    "formats": {
      "type": "object",
      "require": true,
      "default": {}
    }
  },
  "validations": [],
  "relations": {
    "owner": {
      "type": "belongsTo",
      "model": "OpenframeUser",
      "foreignKey": "ownerId"
    },
    "managers": {
      "type": "hasAndBelongsToMany",
      "model": "OpenframeUser"
    },
    "current_artwork": {
      "type": "belongsTo",
      "model": "Artwork",
      "foreignKey": "currentArtworkId"
    }
  },
  "acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY"
    },
    {
      "accessType": "READ",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "ALLOW"
    },
    {
      "accessType": "WRITE",
      "principalType": "ROLE",
      "principalId": "$owner",
      "permission": "ALLOW"
    },
    {
      "accessType": "EXECUTE",
      "principalType": "ROLE",
      "principalId": "$frameManager",
      "permission": "ALLOW",
      "property": "update_current_artwork"
    },
    {
      "accessType": "EXECUTE",
      "principalType": "ROLE",
      "principalId": "$frameManager",
      "permission": "ALLOW",
      "property": "update_managers_by_username"
    },
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "admin",
      "permission": "ALLOW"
    }
  ],
  "methods": {}
}
