{ "$id": "projects-db", "title": "Project Database Data", "description": "Project properties as they are stored in the database", "type": "object", "additionalProperties": false, "required": [ "_id", "iid", "name", "description", "members", "accessControl", "componentIidIndex", "components", "created", "createdBy", "lastUpdated", "lastUpdatedBy" ], "properties": { "_id": { "$ref": "common-db#/definitions/document-identifier" }, "iid": { "$ref": "common#/definitions/iid" }, "name": { "$ref": "projects-common#/definitions/name" }, "description": { "$ref": "projects-common#/definitions/description" }, "members": { "$ref": "#/definitions/members" }, "accessControl": { "$ref": "projects-common#/definitions/accessControl" }, "componentIidIndex": { "$ref": "projects-common#/definitions/componentIidIndex" }, "components": { "$ref": "projects-common#/definitions/components" }, "folders": { "$ref": "#/definitions/folders" }, "created": { "$ref": "common-db#/definitions/mongodb-iso-date" }, "createdBy": { "$ref": "common-db#/definitions/account-identifier" }, "lastUpdated": { "$ref": "common-db#/definitions/mongodb-iso-date" }, "lastUpdatedBy": { "$ref": "common-db#/definitions/account-identifier" }, "versionHistory": { "$ref": "projects-common#/definitions/versionHistory" }, "gitConfiguration": { "$ref": "projects-common#/definitions/gitConfiguration" } }, "definitions": { "account": { "oneOf": [ { "type": "object", "required": [ "_id" ], "additionalProperties": false, "properties": { "_id": { "$ref": "common-db#/definitions/account-identifier" } } }, { "type": "object", "required": [ "_id", "provenance", "username", "missing" ], "additionalProperties": false, "properties": { "_id": { "$ref": "common-db#/definitions/account-identifier" }, "provenance": { "type": "string" }, "username": { "type": "string" }, "missing": { "const": true } } } ] }, "group": { "oneOf": [ { "type": "object", "required": [ "_id" ], "additionalProperties": false, "properties": { "_id": { "$ref": "common-db#/definitions/document-identifier" } } }, { "type": "object", "required": [ "_id", "provenance", "name", "missing" ], "additionalProperties": false, "properties": { "_id": { "$ref": "common-db#/definitions/document-identifier" }, "provenance": { "type": "string" }, "name": { "type": "string" }, "missing": { "const": true } } } ] }, "members": { "type": "array", "items": { "$ref": "#/definitions/membersEntry" } }, "membersEntry": { "oneOf": [ { "description": "A reference to an existing account or group", "type": "object", "required": [ "type", "_id", "role" ], "additionalProperties": false, "properties": { "type": { "type": "string", "enum": [ "account", "group" ] }, "_id": { "$ref": "common-db#/definitions/document-identifier" }, "role": { "type": "string", "enum": [ "owner", "editor", "operator", "viewer" ] } } }, { "description": "A missing account", "type": "object", "required": [ "type", "role", "missing", "_id", "provenance", "username" ], "additionalProperties": false, "properties": { "type": { "const": "account" }, "missing": { "const": true }, "_id": { "$ref": "common-db#/definitions/document-identifier" }, "provenance": { "type": "string" }, "username": { "type": "string" }, "role": { "type": "string", "enum": [ "owner", "editor", "operator", "viewer" ] } } }, { "description": "A missing group", "type": "object", "required": [ "type", "role", "missing", "_id", "provenance", "name" ], "additionalProperties": false, "properties": { "type": { "const": "group" }, "missing": { "const": true }, "_id": { "$ref": "common-db#/definitions/document-identifier" }, "provenance": { "type": "string" }, "name": { "type": "string" }, "role": { "type": "string", "enum": [ "owner", "editor", "operator", "viewer" ] } } } ] }, "folders": { "title": "Project folders", "description": "A list of folders and their members", "type": "array", "items": { "oneOf": [ { "$ref": "common-db#/definitions/folderNode" }, { "$ref": "common-db#/definitions/componentNode" } ] } } } }