scalar Time scalar Label scalar Hash # Information about pagination in a connection. type PageInfo { # When paginating forwards, are there more items? hasNextPage: Boolean! # When paginating backwards, are there more items? hasPreviousPage: Boolean! # When paginating backwards, the cursor to continue. startCursor: String! # When paginating forwards, the cursor to continue. endCursor: String! } # Represents an person in a git object. type Person { # The email of the person. email: String # The name of the person. name: String } type CommentConnection { edges: [CommentEdge!]! nodes: [Comment!]! pageInfo: PageInfo! totalCount: Int! } type CommentEdge { cursor: String! node: Comment! } # Represents a comment on a bug. type Comment implements Authored { # The author of this comment. author: Person! # The message of this comment. message: String! # All media's hash referenced in this comment files: [Hash!]! } enum Status { OPEN CLOSED } # An object that has an author. interface Authored { # The author of this object. author: Person! } type OperationConnection { edges: [OperationEdge!]! nodes: [Operation!]! pageInfo: PageInfo! totalCount: Int! } type OperationEdge { cursor: String! node: Operation! } # An operation applied to a bug. interface Operation { # The operations author. author: Person! # The datetime when this operation was issued. date: Time! } type CreateOperation implements Operation, Authored { author: Person! date: Time! title: String! message: String! files: [Hash!]! } type SetTitleOperation implements Operation, Authored { author: Person! date: Time! title: String! was: String! } type AddCommentOperation implements Operation, Authored { author: Person! date: Time! message: String! files: [Hash!]! } type SetStatusOperation implements Operation, Authored { author: Person! date: Time! status: Status! } type LabelChangeOperation implements Operation, Authored { author: Person! date: Time! added: [Label!]! removed: [Label!]! } # The connection type for Bug. type BugConnection { # A list of edges. edges: [BugEdge!]! nodes: [Bug!]! # Information to aid in pagination. pageInfo: PageInfo! # Identifies the total count of items in the connection. totalCount: Int! } # An edge in a connection. type BugEdge { # A cursor for use in pagination. cursor: String! # The item at the end of the edge. node: Bug! } type Bug { id: String! humanId: String! status: Status! title: String! labels: [Label!]! author: Person! createdAt: Time! lastEdit: Time! comments( # Returns the elements in the list that come after the specified cursor. after: String # Returns the elements in the list that come before the specified cursor. before: String # Returns the first _n_ elements from the list. first: Int # Returns the last _n_ elements from the list. last: Int ): CommentConnection! operations( # Returns the elements in the list that come after the specified cursor. after: String # Returns the elements in the list that come before the specified cursor. before: String # Returns the first _n_ elements from the list. first: Int # Returns the last _n_ elements from the list. last: Int ): OperationConnection! } type Repository { allBugs( # Returns the elements in the list that come after the specified cursor. after: String # Returns the elements in the list that come before the specified cursor. before: String # Returns the first _n_ elements from the list. first: Int # Returns the last _n_ elements from the list. last: Int ): BugConnection! bug(prefix: String!): Bug } type Query { defaultRepository: Repository repository(id: String!): Repository } type Mutation { newBug(repoRef: String, title: String!, message: String!, files: [Hash!]): Bug! addComment(repoRef: String, prefix: String!, message: String!, files: [Hash!]): Bug! changeLabels(repoRef: String, prefix: String!, added: [String!], removed: [String!]): Bug! open(repoRef: String, prefix: String!): Bug! close(repoRef: String, prefix: String!): Bug! setTitle(repoRef: String, prefix: String!, title: String!): Bug! commit(repoRef: String, prefix: String!): Bug! }