todo/data/schema.graphql (119 lines of code) (raw):
type Query {
user(id: String): User
"""Fetches an object given its ID"""
node(
"""The ID of an object"""
id: ID!
): Node
}
type User implements Node {
"""The ID of an object"""
id: ID!
userId: String!
todos(status: String = "any", after: String, first: Int, before: String, last: Int): TodoConnection
totalCount: Int!
completedCount: Int!
}
"""An object with an ID"""
interface Node {
"""The id of the object."""
id: ID!
}
"""A connection to a list of items."""
type TodoConnection {
"""Information to aid in pagination."""
pageInfo: PageInfo!
"""A list of edges."""
edges: [TodoEdge]
}
"""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
}
"""An edge in a connection."""
type TodoEdge {
"""The item at the end of the edge"""
node: Todo
"""A cursor for use in pagination"""
cursor: String!
}
type Todo implements Node {
"""The ID of an object"""
id: ID!
text: String!
complete: Boolean!
}
type Mutation {
addTodo(input: AddTodoInput!): AddTodoPayload
changeTodoStatus(input: ChangeTodoStatusInput!): ChangeTodoStatusPayload
markAllTodos(input: MarkAllTodosInput!): MarkAllTodosPayload
removeCompletedTodos(input: RemoveCompletedTodosInput!): RemoveCompletedTodosPayload
removeTodo(input: RemoveTodoInput!): RemoveTodoPayload
renameTodo(input: RenameTodoInput!): RenameTodoPayload
}
type AddTodoPayload {
todoEdge: TodoEdge!
user: User!
clientMutationId: String
}
input AddTodoInput {
text: String!
userId: ID!
clientMutationId: String
}
type ChangeTodoStatusPayload {
todo: Todo!
user: User!
clientMutationId: String
}
input ChangeTodoStatusInput {
complete: Boolean!
id: ID!
userId: ID!
clientMutationId: String
}
type MarkAllTodosPayload {
changedTodos: [Todo!]
user: User!
clientMutationId: String
}
input MarkAllTodosInput {
complete: Boolean!
userId: ID!
clientMutationId: String
}
type RemoveCompletedTodosPayload {
deletedTodoIds: [ID!]
user: User!
clientMutationId: String
}
input RemoveCompletedTodosInput {
userId: ID!
clientMutationId: String
}
type RemoveTodoPayload {
deletedTodoId: ID!
user: User!
clientMutationId: String
}
input RemoveTodoInput {
id: ID!
userId: ID!
clientMutationId: String
}
type RenameTodoPayload {
todo: Todo!
clientMutationId: String
}
input RenameTodoInput {
id: ID!
text: String!
clientMutationId: String
}