git-bug/graphql/schema.graphql
2018-09-14 12:41:59 +02:00

205 lines
4.5 KiB
GraphQL

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