aboutsummaryrefslogblamecommitdiffstats
path: root/graphql/schema.graphql
blob: 73e457c5b7265057227cf1b2505965cf7aaa91ad (plain) (tree)
1
2
3
4
5
6
7
8
9

            
           
 
                                                   
               
                                                       
                       
                                                        
                           
                                                          
                      
                                                         
                    

 
                                           
             
                                

               
                               



                           

 
                        
                        
                    








                     
                                    
                                  
                                   

                 
                                    
                  
 
                                                   
                 






             
                                   
                    
                                  



                          
                          
                      





                     
                  

 




                                       
                                    
                     
                              
                 
                                                    


             
                                                      




                  
                 

 
                                                        
             



                 
              

 
                                                          



                  
                 

 
                                                         
             





                 
                                                           
             


                 

                    

 











                             




                         

                                                 






                                 

 
                                                     
             






                                 

 






















                                                      
                                  
                    
                        
                    
                
                                         
                     
                                                              


                  
                              
              
                                       
                 
                                        
            

 
          

                  
                 
                
                   


                  
 
           
                                                                                
                 
                                                                                 
                  
                                                       
              
                                                      


                       










                                                                                 
             
                                                                                
                 
                                                                                 
                  
                                                       
              
                                                      

                         

 
                 
          
                                                                                
                 
                                                                                 
                  
                                                       
              
                                                      
             
                                          
                 
                   

                           
 


                                     
 
 
               
                                                                                 
 
                                                                                      





                                                                                            
 
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!

  """An url to an avatar"""
  avatarUrl: 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 item in the timeline of events"""
interface TimelineItem {
  hash: Hash!
}

"""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 {
  hash: Hash!
  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 {
  hash: Hash!
  author: Person!
  date: Time!

  status: Status!
}

type LabelChangeOperation implements Operation & Authored {
  hash: Hash!
  author: Person!
  date: Time!

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

type TimelineItemConnection {
  edges: [TimelineItemEdge!]!
  nodes: [TimelineItem!]!
  pageInfo: PageInfo!
  totalCount: Int!
}

type TimelineItemEdge {
  cursor: String!
  node: TimelineItem!
}

type CommentHistoryStep {
  message: String!
  date: Time!
}

type CreateTimelineItem implements TimelineItem {
  hash: Hash!
  author: Person!
  message: String!
  files: [Hash!]!
  createdAt: Time!
  lastEdit: Time!
  edited: Boolean!
  history: [CommentHistoryStep!]!
}

type AddCommentTimelineItem implements TimelineItem {
  hash: Hash!
  author: Person!
  message: String!
  files: [Hash!]!
  createdAt: Time!
  lastEdit: Time!
  edited: Boolean!
  history: [CommentHistoryStep!]!
}

type LabelChangeTimelineItem implements TimelineItem {
  hash: Hash!
  author: Person!
  date: Time!
  added: [Label!]!
  removed: [Label!]!
}

type SetStatusTimelineItem implements TimelineItem {
  hash: Hash!
  author: Person!
  date: Time!
  status: Status!
}

type SetTitleTimelineItem implements TimelineItem {
  hash: Hash!
  author: Person!
  date: Time!
  title: String!
  was: String!
}

"""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!

  timeline(
    """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
  ): TimelineItemConnection!

  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
    """A query to select and order bugs"""
    query: String
  ): 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!
}