Temporary notes from last discussion to be included in the main document
interface Object {
id: ID!
created: DateTime!
updated: DateTime
}
type Organization implements Object {
id: ID!
created: DateTime!
updated: DateTime
name: String!
journals: [Journal]
}
# Have a way to extend the base Organization for JournalPublishers
type Journal implements Object {
id: ID!
created: DateTime!
updated: DateTime
journalTitle: String!
manuscripts: [Manuscript]
meta: JournalMeta
}
# Ask Tam about "meta,fields"
type JournalMeta {
publisherName: String
}
type Manuscript implements Object {
id: ID!
created: DateTime!
updated: DateTime
manuscriptVersions: [ManuscriptVersion]
files: [File]
teams: [Team]
reviews: [Review]
status: String
lastStepVisited: String
decision: String
meta: ManuscriptMeta
}
type ManuscriptVersion implements Object {
id: ID!
created: DateTime!
updated: DateTime
files: [File]
teams: [Team]
reviews: [Review]
status: String
lastStepVisited: String
decision: String
meta: ManuscriptMeta
}
type ManuscriptMeta {
title: String!
articleType: String
articleIds: [ArticleId]
abstract: String
subjects: [String]
history: [MetaDate]
publicationDates: [MetaDate]
notes: [Note]
}
type ArticleId {
pubIdType: String
id: String
}
type MetaDate {
type: String
date: DateTime
}
# Implementation guideline: have a separate table for nodes
type Note implements Object {
id: ID!
created: DateTime!
updated: DateTime
notesType: String
content: String
}
# Implementation guideline: use columns in files tables
# to link files to comments and manuscript (comment_id, manuscript_id)
type File implements Object {
id: ID!
created: DateTime!
updated: DateTime
type: String
label: String
filename: String
url: String
mimeType: String
size: Int
}
type Review implements Object {
id: ID!
created: DateTime!
updated: DateTime
comments: [Comment]
recommendation: String
open: Boolean
user: User
}
type Comment {
type: String
content: String
files: [File]
}
type AuditLog {
id: ID!
created: DateTime!
user: User
action: String
object: Object
objectType: String
}
extend type Team {
created: DateTime!
updated: DateTime
teamMembers: [TeamMember]
role: String
objectId: Object
objectType: String
}
type TeamMember {
user: User
status: String
alias: Alias
}
type Alias {
name: Name
email: Email
aff: String
}
extend type User {
created: DateTime!
updated: DateTime
identities: [Identity]
defaultIdentity: String
}
# Todo move ElifeIdentity to elife.graphqls
union Identity = Local | External | ElifeIdentity
type Local {
name: Name
email: Email
aff: String
}
type External {
identifier: String
email: Email
aff: String
}
type Name {
surname: String
givenNames: String
title: String
}
scalar DateTime
scalar Email