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

            
           




                                                   

                                                    
                                                      
                      
                                                     
                    

 








                                       
                        
                        
                    








                     






                                  


                                               













                               
                          
                      





                     
                  





                                









                                                     
                 






                                                       
              






                                                         
                 












                                                          

                    

 
                              

                    
                    
                

                                     







                                                          
                                    
            

 
          

                  
                 
                
                   


                  
 




















                                                                             

 
                 









                                                                             

                           
 


                                     
 
 
               
                                                                                 
 
                                                                                      





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