aboutsummaryrefslogblamecommitdiffstats
path: root/graphql/schema.graphql
blob: 14b2bec51a0db7203556f3d6aeaf7d99fbd4c8ea (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                      
                      

                                                     














                                                                           












                                       
                        








                     




















                                  
                          





                     
                       











































                                                          

                    








                        
                              

                    
                    
 












                                                          
            

 
          





                                                    
                   
 
                                                       
 
                                                           

 



                                                  
 


                                     
 
scalar Time
scalar Label

# 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
}

input ConnectionInput {
  # 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
}

# 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!]!
  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!
}

enum Status {
  OPEN
  CLOSED
}

# An object that has an author.
interface Authored {
  # The author of this object.
  author: Person!
}

type OperationConnection {
  edges: [OperationEdge!]!
  pageInfo: PageInfo!
  totalCount: Int!
}

type OperationEdge {
  cursor: String!
  node: OperationUnion!
}

# 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!
}

type SetTitleOperation implements Operation, Authored {
  author: Person!
  date: Time!

  title: String!
}

type AddCommentOperation implements Operation, Authored {
  author: Person!
  date: Time!

  message: String!
}

type SetStatusOperation implements Operation, Authored {
  author: Person!
  date: Time!

  status: Status!
}

type LabelChangeOperation implements Operation, Authored {
  author: Person!
  date: Time!

  added: [Label!]!
  removed: [Label!]!
}

union OperationUnion =
    CreateOperation
  | SetTitleOperation
  | AddCommentOperation
  | SetStatusOperation
  | LabelChangeOperation

# The connection type for Bug.
type BugConnection {
  # A list of edges.
  edges: [BugEdge!]!

  # 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!
  title: String!
  status: Status!

  # A list of labels associated with the repository.
  labels: [Label!]!

  comments(input: ConnectionInput!): CommentConnection!

  operations(input: ConnectionInput!): OperationConnection!
}

type Repository {
  allBugs(input: ConnectionInput!): BugConnection!
  bug(prefix: String!): Bug
}

type Query {
  defaultRepository: Repository
  repository(id: String!): Repository
}