GraphQL


GraphQL API Documentation 

Schema

schema {
  query: Query
  mutation: Mutation
}
    

Types

Query

type Query {
  posts: [Post!]!
  post(id: ID!): Post
  search(keyword: String!): [SearchResult!]!
  users: [User!]!
}
    

Mutation

type Mutation {
  addPost(input: NewPostInput!): Post!
  registerUser(input: NewUserInput!): User!
}
    

Post

type Post implements Node {
  id: ID!
  title: String!
  content: String!
  status: PostStatus!
  author: User!
}
    

User

type User implements Node {
  id: ID!
  name: String!
  role: UserRole!
  posts: [Post!]!
}
    

Node Interface

interface Node {
  id: ID!
}
    

Enums

PostStatus

enum PostStatus {
  DRAFT
  PUBLISHED
  ARCHIVED
}
    

UserRole

enum UserRole {
  ADMIN
  EDITOR
  READER
}
    

Union

union SearchResult = Post | User
    

Input Types

NewPostInput

input NewPostInput {
  title: String!
  content: String!
  authorId: ID!
}
    

NewUserInput

input NewUserInput {
  name: String!
  role: UserRole!
}