# This file is automatically generated by Keystone, do not modify it manually.
# Modify your Keystone config when you want to change this.

type User {
  id: ID!
  name: String
  email: String
  password: PasswordState
  posts(
    where: PostWhereInput! = {}
    orderBy: [PostOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: PostWhereUniqueInput
  ): [Post!]
  postsCount(where: PostWhereInput! = {}): Int
  moments(
    where: MomentWhereInput! = {}
    orderBy: [MomentOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: MomentWhereUniqueInput
  ): [Moment!]
  momentsCount(where: MomentWhereInput! = {}): Int
  events(
    where: EventWhereInput! = {}
    orderBy: [EventOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: EventWhereUniqueInput
  ): [Event!]
  eventsCount(where: EventWhereInput! = {}): Int
  isAdmin: Boolean
  isEditor: Boolean
  createdAt: DateTime
}

type PasswordState {
  isSet: Boolean!
}

scalar DateTime @specifiedBy(url: "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6")

input UserWhereUniqueInput {
  id: ID
  email: String
}

input UserWhereInput {
  AND: [UserWhereInput!]
  OR: [UserWhereInput!]
  NOT: [UserWhereInput!]
  id: IDFilter
  name: StringFilter
  email: StringFilter
  posts: PostManyRelationFilter
  moments: MomentManyRelationFilter
  events: EventManyRelationFilter
  isAdmin: BooleanFilter
  isEditor: BooleanFilter
  createdAt: DateTimeNullableFilter
}

input IDFilter {
  equals: ID
  in: [ID!]
  notIn: [ID!]
  lt: ID
  lte: ID
  gt: ID
  gte: ID
  not: IDFilter
}

input StringFilter {
  equals: String
  in: [String!]
  notIn: [String!]
  lt: String
  lte: String
  gt: String
  gte: String
  contains: String
  startsWith: String
  endsWith: String
  mode: QueryMode
  not: NestedStringFilter
}

enum QueryMode {
  default
  insensitive
}

input NestedStringFilter {
  equals: String
  in: [String!]
  notIn: [String!]
  lt: String
  lte: String
  gt: String
  gte: String
  contains: String
  startsWith: String
  endsWith: String
  not: NestedStringFilter
}

input PostManyRelationFilter {
  every: PostWhereInput
  some: PostWhereInput
  none: PostWhereInput
}

input MomentManyRelationFilter {
  every: MomentWhereInput
  some: MomentWhereInput
  none: MomentWhereInput
}

input EventManyRelationFilter {
  every: EventWhereInput
  some: EventWhereInput
  none: EventWhereInput
}

input BooleanFilter {
  equals: Boolean
  not: BooleanFilter
}

input DateTimeNullableFilter {
  equals: DateTime
  in: [DateTime!]
  notIn: [DateTime!]
  lt: DateTime
  lte: DateTime
  gt: DateTime
  gte: DateTime
  not: DateTimeNullableFilter
}

input UserOrderByInput {
  id: OrderDirection
  name: OrderDirection
  email: OrderDirection
  isAdmin: OrderDirection
  isEditor: OrderDirection
  createdAt: OrderDirection
}

enum OrderDirection {
  asc
  desc
}

input UserUpdateInput {
  name: String
  email: String
  password: String
  posts: PostRelateToManyForUpdateInput
  moments: MomentRelateToManyForUpdateInput
  events: EventRelateToManyForUpdateInput
  isAdmin: Boolean
  isEditor: Boolean
  createdAt: DateTime
}

input PostRelateToManyForUpdateInput {
  disconnect: [PostWhereUniqueInput!]
  set: [PostWhereUniqueInput!]
  create: [PostCreateInput!]
  connect: [PostWhereUniqueInput!]
}

input MomentRelateToManyForUpdateInput {
  disconnect: [MomentWhereUniqueInput!]
  set: [MomentWhereUniqueInput!]
  create: [MomentCreateInput!]
  connect: [MomentWhereUniqueInput!]
}

input EventRelateToManyForUpdateInput {
  disconnect: [EventWhereUniqueInput!]
  set: [EventWhereUniqueInput!]
  create: [EventCreateInput!]
  connect: [EventWhereUniqueInput!]
}

input UserUpdateArgs {
  where: UserWhereUniqueInput!
  data: UserUpdateInput!
}

input UserCreateInput {
  name: String
  email: String
  password: String
  posts: PostRelateToManyForCreateInput
  moments: MomentRelateToManyForCreateInput
  events: EventRelateToManyForCreateInput
  isAdmin: Boolean
  isEditor: Boolean
  createdAt: DateTime
}

input PostRelateToManyForCreateInput {
  create: [PostCreateInput!]
  connect: [PostWhereUniqueInput!]
}

input MomentRelateToManyForCreateInput {
  create: [MomentCreateInput!]
  connect: [MomentWhereUniqueInput!]
}

input EventRelateToManyForCreateInput {
  create: [EventCreateInput!]
  connect: [EventWhereUniqueInput!]
}

type Image {
  id: ID!
  caption: String
  image: ImageFieldOutput
  createdAt: DateTime
}

type ImageFieldOutput {
  id: ID!
  filesize: Int!
  width: Int!
  height: Int!
  extension: ImageExtension!
  url: String!
}

enum ImageExtension {
  jpg
  png
  webp
  gif
}

input ImageWhereUniqueInput {
  id: ID
}

input ImageWhereInput {
  AND: [ImageWhereInput!]
  OR: [ImageWhereInput!]
  NOT: [ImageWhereInput!]
  id: IDFilter
  caption: StringFilter
  createdAt: DateTimeNullableFilter
}

input ImageOrderByInput {
  id: OrderDirection
  caption: OrderDirection
  createdAt: OrderDirection
}

input ImageUpdateInput {
  caption: String
  image: ImageFieldInput
  createdAt: DateTime
}

input ImageFieldInput {
  upload: Upload!
}

"""
The `Upload` scalar type represents a file upload.
"""
scalar Upload

input ImageUpdateArgs {
  where: ImageWhereUniqueInput!
  data: ImageUpdateInput!
}

input ImageCreateInput {
  caption: String
  image: ImageFieldInput
  createdAt: DateTime
}

type Asset {
  id: ID!
  caption: String
  url: String
  type: AssetTypeType
  createdAt: DateTime
}

enum AssetTypeType {
  video
  audio
}

input AssetWhereUniqueInput {
  id: ID
}

input AssetWhereInput {
  AND: [AssetWhereInput!]
  OR: [AssetWhereInput!]
  NOT: [AssetWhereInput!]
  id: IDFilter
  caption: StringFilter
  url: StringFilter
  type: AssetTypeTypeNullableFilter
  createdAt: DateTimeNullableFilter
}

input AssetTypeTypeNullableFilter {
  equals: AssetTypeType
  in: [AssetTypeType!]
  notIn: [AssetTypeType!]
  not: AssetTypeTypeNullableFilter
}

input AssetOrderByInput {
  id: OrderDirection
  caption: OrderDirection
  url: OrderDirection
  type: OrderDirection
  createdAt: OrderDirection
}

input AssetUpdateInput {
  caption: String
  url: String
  type: AssetTypeType
  createdAt: DateTime
}

input AssetUpdateArgs {
  where: AssetWhereUniqueInput!
  data: AssetUpdateInput!
}

input AssetCreateInput {
  caption: String
  url: String
  type: AssetTypeType
  createdAt: DateTime
}

type Post {
  id: ID!
  slug: String
  title: String
  cover: Image
  description: String
  assets(
    where: AssetWhereInput! = {}
    orderBy: [AssetOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: AssetWhereUniqueInput
  ): [Asset!]
  assetsCount(where: AssetWhereInput! = {}): Int
  images(
    where: ImageWhereInput! = {}
    orderBy: [ImageOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: ImageWhereUniqueInput
  ): [Image!]
  imagesCount(where: ImageWhereInput! = {}): Int
  content: Post_content_Document
  type: PostTypeType
  isPublished: Boolean
  author: User
  categories(
    where: CategoryWhereInput! = {}
    orderBy: [CategoryOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: CategoryWhereUniqueInput
  ): [Category!]
  categoriesCount(where: CategoryWhereInput! = {}): Int
  tags(
    where: TagWhereInput! = {}
    orderBy: [TagOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: TagWhereUniqueInput
  ): [Tag!]
  tagsCount(where: TagWhereInput! = {}): Int
  createdAt: DateTime
}

type Post_content_Document {
  document(hydrateRelationships: Boolean! = false): JSON!
}

enum PostTypeType {
  article
  podcast
}

input PostWhereUniqueInput {
  id: ID
  slug: String
}

input PostWhereInput {
  AND: [PostWhereInput!]
  OR: [PostWhereInput!]
  NOT: [PostWhereInput!]
  id: IDFilter
  slug: StringFilter
  title: StringFilter
  cover: ImageWhereInput
  description: StringFilter
  assets: AssetManyRelationFilter
  images: ImageManyRelationFilter
  type: PostTypeTypeNullableFilter
  isPublished: BooleanFilter
  author: UserWhereInput
  categories: CategoryManyRelationFilter
  tags: TagManyRelationFilter
  createdAt: DateTimeNullableFilter
}

input AssetManyRelationFilter {
  every: AssetWhereInput
  some: AssetWhereInput
  none: AssetWhereInput
}

input ImageManyRelationFilter {
  every: ImageWhereInput
  some: ImageWhereInput
  none: ImageWhereInput
}

input PostTypeTypeNullableFilter {
  equals: PostTypeType
  in: [PostTypeType!]
  notIn: [PostTypeType!]
  not: PostTypeTypeNullableFilter
}

input CategoryManyRelationFilter {
  every: CategoryWhereInput
  some: CategoryWhereInput
  none: CategoryWhereInput
}

input TagManyRelationFilter {
  every: TagWhereInput
  some: TagWhereInput
  none: TagWhereInput
}

input PostOrderByInput {
  id: OrderDirection
  slug: OrderDirection
  title: OrderDirection
  description: OrderDirection
  type: OrderDirection
  isPublished: OrderDirection
  createdAt: OrderDirection
}

input PostUpdateInput {
  slug: String
  title: String
  cover: ImageRelateToOneForUpdateInput
  description: String
  assets: AssetRelateToManyForUpdateInput
  images: ImageRelateToManyForUpdateInput
  content: JSON
  type: PostTypeType
  isPublished: Boolean
  author: UserRelateToOneForUpdateInput
  categories: CategoryRelateToManyForUpdateInput
  tags: TagRelateToManyForUpdateInput
  createdAt: DateTime
}

input ImageRelateToOneForUpdateInput {
  create: ImageCreateInput
  connect: ImageWhereUniqueInput
  disconnect: Boolean
}

input AssetRelateToManyForUpdateInput {
  disconnect: [AssetWhereUniqueInput!]
  set: [AssetWhereUniqueInput!]
  create: [AssetCreateInput!]
  connect: [AssetWhereUniqueInput!]
}

input ImageRelateToManyForUpdateInput {
  disconnect: [ImageWhereUniqueInput!]
  set: [ImageWhereUniqueInput!]
  create: [ImageCreateInput!]
  connect: [ImageWhereUniqueInput!]
}

input UserRelateToOneForUpdateInput {
  create: UserCreateInput
  connect: UserWhereUniqueInput
  disconnect: Boolean
}

input CategoryRelateToManyForUpdateInput {
  disconnect: [CategoryWhereUniqueInput!]
  set: [CategoryWhereUniqueInput!]
  create: [CategoryCreateInput!]
  connect: [CategoryWhereUniqueInput!]
}

input TagRelateToManyForUpdateInput {
  disconnect: [TagWhereUniqueInput!]
  set: [TagWhereUniqueInput!]
  create: [TagCreateInput!]
  connect: [TagWhereUniqueInput!]
}

input PostUpdateArgs {
  where: PostWhereUniqueInput!
  data: PostUpdateInput!
}

input PostCreateInput {
  slug: String
  title: String
  cover: ImageRelateToOneForCreateInput
  description: String
  assets: AssetRelateToManyForCreateInput
  images: ImageRelateToManyForCreateInput
  content: JSON
  type: PostTypeType
  isPublished: Boolean
  author: UserRelateToOneForCreateInput
  categories: CategoryRelateToManyForCreateInput
  tags: TagRelateToManyForCreateInput
  createdAt: DateTime
}

input ImageRelateToOneForCreateInput {
  create: ImageCreateInput
  connect: ImageWhereUniqueInput
}

input AssetRelateToManyForCreateInput {
  create: [AssetCreateInput!]
  connect: [AssetWhereUniqueInput!]
}

input ImageRelateToManyForCreateInput {
  create: [ImageCreateInput!]
  connect: [ImageWhereUniqueInput!]
}

input UserRelateToOneForCreateInput {
  create: UserCreateInput
  connect: UserWhereUniqueInput
}

input CategoryRelateToManyForCreateInput {
  create: [CategoryCreateInput!]
  connect: [CategoryWhereUniqueInput!]
}

input TagRelateToManyForCreateInput {
  create: [TagCreateInput!]
  connect: [TagWhereUniqueInput!]
}

type Moment {
  id: ID!
  title: String
  images(
    where: ImageWhereInput! = {}
    orderBy: [ImageOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: ImageWhereUniqueInput
  ): [Image!]
  imagesCount(where: ImageWhereInput! = {}): Int
  content: Moment_content_Document
  author: User
  categories(
    where: CategoryWhereInput! = {}
    orderBy: [CategoryOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: CategoryWhereUniqueInput
  ): [Category!]
  categoriesCount(where: CategoryWhereInput! = {}): Int
  tags(
    where: TagWhereInput! = {}
    orderBy: [TagOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: TagWhereUniqueInput
  ): [Tag!]
  tagsCount(where: TagWhereInput! = {}): Int
  createdAt: DateTime
}

type Moment_content_Document {
  document(hydrateRelationships: Boolean! = false): JSON!
}

input MomentWhereUniqueInput {
  id: ID
}

input MomentWhereInput {
  AND: [MomentWhereInput!]
  OR: [MomentWhereInput!]
  NOT: [MomentWhereInput!]
  id: IDFilter
  title: StringFilter
  images: ImageManyRelationFilter
  author: UserWhereInput
  categories: CategoryManyRelationFilter
  tags: TagManyRelationFilter
  createdAt: DateTimeNullableFilter
}

input MomentOrderByInput {
  id: OrderDirection
  title: OrderDirection
  createdAt: OrderDirection
}

input MomentUpdateInput {
  title: String
  images: ImageRelateToManyForUpdateInput
  content: JSON
  author: UserRelateToOneForUpdateInput
  categories: CategoryRelateToManyForUpdateInput
  tags: TagRelateToManyForUpdateInput
  createdAt: DateTime
}

input MomentUpdateArgs {
  where: MomentWhereUniqueInput!
  data: MomentUpdateInput!
}

input MomentCreateInput {
  title: String
  images: ImageRelateToManyForCreateInput
  content: JSON
  author: UserRelateToOneForCreateInput
  categories: CategoryRelateToManyForCreateInput
  tags: TagRelateToManyForCreateInput
  createdAt: DateTime
}

type Project {
  id: ID!
  icon: Image
  name: String
  description: String
  link: String
  isPublished: Boolean
  status: ProjectStatusType
  post: Post
  createdAt: DateTime
}

enum ProjectStatusType {
  pending
  constructing
  published
  abandoned
}

input ProjectWhereUniqueInput {
  id: ID
}

input ProjectWhereInput {
  AND: [ProjectWhereInput!]
  OR: [ProjectWhereInput!]
  NOT: [ProjectWhereInput!]
  id: IDFilter
  icon: ImageWhereInput
  name: StringFilter
  description: StringFilter
  link: StringFilter
  isPublished: BooleanFilter
  status: ProjectStatusTypeNullableFilter
  post: PostWhereInput
  createdAt: DateTimeNullableFilter
}

input ProjectStatusTypeNullableFilter {
  equals: ProjectStatusType
  in: [ProjectStatusType!]
  notIn: [ProjectStatusType!]
  not: ProjectStatusTypeNullableFilter
}

input ProjectOrderByInput {
  id: OrderDirection
  name: OrderDirection
  description: OrderDirection
  link: OrderDirection
  isPublished: OrderDirection
  status: OrderDirection
  createdAt: OrderDirection
}

input ProjectUpdateInput {
  icon: ImageRelateToOneForUpdateInput
  name: String
  description: String
  link: String
  isPublished: Boolean
  status: ProjectStatusType
  post: PostRelateToOneForUpdateInput
  createdAt: DateTime
}

input PostRelateToOneForUpdateInput {
  create: PostCreateInput
  connect: PostWhereUniqueInput
  disconnect: Boolean
}

input ProjectUpdateArgs {
  where: ProjectWhereUniqueInput!
  data: ProjectUpdateInput!
}

input ProjectCreateInput {
  icon: ImageRelateToOneForCreateInput
  name: String
  description: String
  link: String
  isPublished: Boolean
  status: ProjectStatusType
  post: PostRelateToOneForCreateInput
  createdAt: DateTime
}

input PostRelateToOneForCreateInput {
  create: PostCreateInput
  connect: PostWhereUniqueInput
}

type Event {
  id: ID!
  slug: String
  title: String
  description: String
  content: Event_content_Document
  isPublished: Boolean
  isHistory: Boolean
  author: User
  categories(
    where: CategoryWhereInput! = {}
    orderBy: [CategoryOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: CategoryWhereUniqueInput
  ): [Category!]
  categoriesCount(where: CategoryWhereInput! = {}): Int
  tags(
    where: TagWhereInput! = {}
    orderBy: [TagOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: TagWhereUniqueInput
  ): [Tag!]
  tagsCount(where: TagWhereInput! = {}): Int
  createdAt: DateTime
}

type Event_content_Document {
  document(hydrateRelationships: Boolean! = false): JSON!
}

input EventWhereUniqueInput {
  id: ID
  slug: String
}

input EventWhereInput {
  AND: [EventWhereInput!]
  OR: [EventWhereInput!]
  NOT: [EventWhereInput!]
  id: IDFilter
  slug: StringFilter
  title: StringFilter
  description: StringFilter
  isPublished: BooleanFilter
  isHistory: BooleanFilter
  author: UserWhereInput
  categories: CategoryManyRelationFilter
  tags: TagManyRelationFilter
  createdAt: DateTimeNullableFilter
}

input EventOrderByInput {
  id: OrderDirection
  slug: OrderDirection
  title: OrderDirection
  description: OrderDirection
  isPublished: OrderDirection
  isHistory: OrderDirection
  createdAt: OrderDirection
}

input EventUpdateInput {
  slug: String
  title: String
  description: String
  content: JSON
  isPublished: Boolean
  isHistory: Boolean
  author: UserRelateToOneForUpdateInput
  categories: CategoryRelateToManyForUpdateInput
  tags: TagRelateToManyForUpdateInput
  createdAt: DateTime
}

input EventUpdateArgs {
  where: EventWhereUniqueInput!
  data: EventUpdateInput!
}

input EventCreateInput {
  slug: String
  title: String
  description: String
  content: JSON
  isPublished: Boolean
  isHistory: Boolean
  author: UserRelateToOneForCreateInput
  categories: CategoryRelateToManyForCreateInput
  tags: TagRelateToManyForCreateInput
  createdAt: DateTime
}

type Category {
  id: ID!
  slug: String
  name: String
  posts(
    where: PostWhereInput! = {}
    orderBy: [PostOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: PostWhereUniqueInput
  ): [Post!]
  postsCount(where: PostWhereInput! = {}): Int
  moments(
    where: MomentWhereInput! = {}
    orderBy: [MomentOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: MomentWhereUniqueInput
  ): [Moment!]
  momentsCount(where: MomentWhereInput! = {}): Int
  events(
    where: EventWhereInput! = {}
    orderBy: [EventOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: EventWhereUniqueInput
  ): [Event!]
  eventsCount(where: EventWhereInput! = {}): Int
}

input CategoryWhereUniqueInput {
  id: ID
  slug: String
}

input CategoryWhereInput {
  AND: [CategoryWhereInput!]
  OR: [CategoryWhereInput!]
  NOT: [CategoryWhereInput!]
  id: IDFilter
  slug: StringFilter
  name: StringFilter
  posts: PostManyRelationFilter
  moments: MomentManyRelationFilter
  events: EventManyRelationFilter
}

input CategoryOrderByInput {
  id: OrderDirection
  slug: OrderDirection
  name: OrderDirection
}

input CategoryUpdateInput {
  slug: String
  name: String
  posts: PostRelateToManyForUpdateInput
  moments: MomentRelateToManyForUpdateInput
  events: EventRelateToManyForUpdateInput
}

input CategoryUpdateArgs {
  where: CategoryWhereUniqueInput!
  data: CategoryUpdateInput!
}

input CategoryCreateInput {
  slug: String
  name: String
  posts: PostRelateToManyForCreateInput
  moments: MomentRelateToManyForCreateInput
  events: EventRelateToManyForCreateInput
}

type Tag {
  id: ID!
  slug: String
  name: String
  posts(
    where: PostWhereInput! = {}
    orderBy: [PostOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: PostWhereUniqueInput
  ): [Post!]
  postsCount(where: PostWhereInput! = {}): Int
  moments(
    where: MomentWhereInput! = {}
    orderBy: [MomentOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: MomentWhereUniqueInput
  ): [Moment!]
  momentsCount(where: MomentWhereInput! = {}): Int
  events(
    where: EventWhereInput! = {}
    orderBy: [EventOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: EventWhereUniqueInput
  ): [Event!]
  eventsCount(where: EventWhereInput! = {}): Int
}

input TagWhereUniqueInput {
  id: ID
  slug: String
}

input TagWhereInput {
  AND: [TagWhereInput!]
  OR: [TagWhereInput!]
  NOT: [TagWhereInput!]
  id: IDFilter
  slug: StringFilter
  name: StringFilter
  posts: PostManyRelationFilter
  moments: MomentManyRelationFilter
  events: EventManyRelationFilter
}

input TagOrderByInput {
  id: OrderDirection
  slug: OrderDirection
  name: OrderDirection
}

input TagUpdateInput {
  slug: String
  name: String
  posts: PostRelateToManyForUpdateInput
  moments: MomentRelateToManyForUpdateInput
  events: EventRelateToManyForUpdateInput
}

input TagUpdateArgs {
  where: TagWhereUniqueInput!
  data: TagUpdateInput!
}

input TagCreateInput {
  slug: String
  name: String
  posts: PostRelateToManyForCreateInput
  moments: MomentRelateToManyForCreateInput
  events: EventRelateToManyForCreateInput
}

"""
The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).
"""
scalar JSON @specifiedBy(url: "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf")

type Mutation {
  createUser(data: UserCreateInput!): User
  createUsers(data: [UserCreateInput!]!): [User]
  updateUser(where: UserWhereUniqueInput!, data: UserUpdateInput!): User
  updateUsers(data: [UserUpdateArgs!]!): [User]
  deleteUser(where: UserWhereUniqueInput!): User
  deleteUsers(where: [UserWhereUniqueInput!]!): [User]
  createImage(data: ImageCreateInput!): Image
  createImages(data: [ImageCreateInput!]!): [Image]
  updateImage(where: ImageWhereUniqueInput!, data: ImageUpdateInput!): Image
  updateImages(data: [ImageUpdateArgs!]!): [Image]
  deleteImage(where: ImageWhereUniqueInput!): Image
  deleteImages(where: [ImageWhereUniqueInput!]!): [Image]
  createAsset(data: AssetCreateInput!): Asset
  createAssets(data: [AssetCreateInput!]!): [Asset]
  updateAsset(where: AssetWhereUniqueInput!, data: AssetUpdateInput!): Asset
  updateAssets(data: [AssetUpdateArgs!]!): [Asset]
  deleteAsset(where: AssetWhereUniqueInput!): Asset
  deleteAssets(where: [AssetWhereUniqueInput!]!): [Asset]
  createPost(data: PostCreateInput!): Post
  createPosts(data: [PostCreateInput!]!): [Post]
  updatePost(where: PostWhereUniqueInput!, data: PostUpdateInput!): Post
  updatePosts(data: [PostUpdateArgs!]!): [Post]
  deletePost(where: PostWhereUniqueInput!): Post
  deletePosts(where: [PostWhereUniqueInput!]!): [Post]
  createMoment(data: MomentCreateInput!): Moment
  createMoments(data: [MomentCreateInput!]!): [Moment]
  updateMoment(where: MomentWhereUniqueInput!, data: MomentUpdateInput!): Moment
  updateMoments(data: [MomentUpdateArgs!]!): [Moment]
  deleteMoment(where: MomentWhereUniqueInput!): Moment
  deleteMoments(where: [MomentWhereUniqueInput!]!): [Moment]
  createProject(data: ProjectCreateInput!): Project
  createProjects(data: [ProjectCreateInput!]!): [Project]
  updateProject(where: ProjectWhereUniqueInput!, data: ProjectUpdateInput!): Project
  updateProjects(data: [ProjectUpdateArgs!]!): [Project]
  deleteProject(where: ProjectWhereUniqueInput!): Project
  deleteProjects(where: [ProjectWhereUniqueInput!]!): [Project]
  createEvent(data: EventCreateInput!): Event
  createEvents(data: [EventCreateInput!]!): [Event]
  updateEvent(where: EventWhereUniqueInput!, data: EventUpdateInput!): Event
  updateEvents(data: [EventUpdateArgs!]!): [Event]
  deleteEvent(where: EventWhereUniqueInput!): Event
  deleteEvents(where: [EventWhereUniqueInput!]!): [Event]
  createCategory(data: CategoryCreateInput!): Category
  createCategories(data: [CategoryCreateInput!]!): [Category]
  updateCategory(where: CategoryWhereUniqueInput!, data: CategoryUpdateInput!): Category
  updateCategories(data: [CategoryUpdateArgs!]!): [Category]
  deleteCategory(where: CategoryWhereUniqueInput!): Category
  deleteCategories(where: [CategoryWhereUniqueInput!]!): [Category]
  createTag(data: TagCreateInput!): Tag
  createTags(data: [TagCreateInput!]!): [Tag]
  updateTag(where: TagWhereUniqueInput!, data: TagUpdateInput!): Tag
  updateTags(data: [TagUpdateArgs!]!): [Tag]
  deleteTag(where: TagWhereUniqueInput!): Tag
  deleteTags(where: [TagWhereUniqueInput!]!): [Tag]
  endSession: Boolean!
  authenticateUserWithPassword(email: String!, password: String!): UserAuthenticationWithPasswordResult
  createInitialUser(data: CreateInitialUserInput!): UserAuthenticationWithPasswordSuccess!
}

union UserAuthenticationWithPasswordResult =
  | UserAuthenticationWithPasswordSuccess
  | UserAuthenticationWithPasswordFailure

type UserAuthenticationWithPasswordSuccess {
  sessionToken: String!
  item: User!
}

type UserAuthenticationWithPasswordFailure {
  message: String!
}

input CreateInitialUserInput {
  name: String
  email: String
  password: String
  isAdmin: Boolean
}

type Query {
  users(
    where: UserWhereInput! = {}
    orderBy: [UserOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: UserWhereUniqueInput
  ): [User!]
  user(where: UserWhereUniqueInput!): User
  usersCount(where: UserWhereInput! = {}): Int
  images(
    where: ImageWhereInput! = {}
    orderBy: [ImageOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: ImageWhereUniqueInput
  ): [Image!]
  image(where: ImageWhereUniqueInput!): Image
  imagesCount(where: ImageWhereInput! = {}): Int
  assets(
    where: AssetWhereInput! = {}
    orderBy: [AssetOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: AssetWhereUniqueInput
  ): [Asset!]
  asset(where: AssetWhereUniqueInput!): Asset
  assetsCount(where: AssetWhereInput! = {}): Int
  posts(
    where: PostWhereInput! = {}
    orderBy: [PostOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: PostWhereUniqueInput
  ): [Post!]
  post(where: PostWhereUniqueInput!): Post
  postsCount(where: PostWhereInput! = {}): Int
  moments(
    where: MomentWhereInput! = {}
    orderBy: [MomentOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: MomentWhereUniqueInput
  ): [Moment!]
  moment(where: MomentWhereUniqueInput!): Moment
  momentsCount(where: MomentWhereInput! = {}): Int
  projects(
    where: ProjectWhereInput! = {}
    orderBy: [ProjectOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: ProjectWhereUniqueInput
  ): [Project!]
  project(where: ProjectWhereUniqueInput!): Project
  projectsCount(where: ProjectWhereInput! = {}): Int
  events(
    where: EventWhereInput! = {}
    orderBy: [EventOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: EventWhereUniqueInput
  ): [Event!]
  event(where: EventWhereUniqueInput!): Event
  eventsCount(where: EventWhereInput! = {}): Int
  categories(
    where: CategoryWhereInput! = {}
    orderBy: [CategoryOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: CategoryWhereUniqueInput
  ): [Category!]
  category(where: CategoryWhereUniqueInput!): Category
  categoriesCount(where: CategoryWhereInput! = {}): Int
  tags(
    where: TagWhereInput! = {}
    orderBy: [TagOrderByInput!]! = []
    take: Int
    skip: Int! = 0
    cursor: TagWhereUniqueInput
  ): [Tag!]
  tag(where: TagWhereUniqueInput!): Tag
  tagsCount(where: TagWhereInput! = {}): Int
  keystone: KeystoneMeta!
  authenticatedItem: AuthenticatedItem
}

union AuthenticatedItem = User

type KeystoneMeta {
  adminMeta: KeystoneAdminMeta!
}

type KeystoneAdminMeta {
  lists: [KeystoneAdminUIListMeta!]!
  list(key: String!): KeystoneAdminUIListMeta
}

type KeystoneAdminUIListMeta {
  key: String!
  itemQueryName: String!
  listQueryName: String!
  hideCreate: Boolean!
  hideDelete: Boolean!
  path: String!
  label: String!
  singular: String!
  plural: String!
  description: String
  initialColumns: [String!]!
  pageSize: Int!
  labelField: String!
  fields: [KeystoneAdminUIFieldMeta!]!
  groups: [KeystoneAdminUIFieldGroupMeta!]!
  initialSort: KeystoneAdminUISort
  isHidden: Boolean!
  isSingleton: Boolean!
}

type KeystoneAdminUIFieldMeta {
  path: String!
  label: String!
  description: String
  isOrderable: Boolean!
  isFilterable: Boolean!
  isNonNull: [KeystoneAdminUIFieldMetaIsNonNull!]
  fieldMeta: JSON
  viewsIndex: Int!
  customViewsIndex: Int
  createView: KeystoneAdminUIFieldMetaCreateView!
  listView: KeystoneAdminUIFieldMetaListView!
  itemView(id: ID): KeystoneAdminUIFieldMetaItemView
  search: QueryMode
}

enum KeystoneAdminUIFieldMetaIsNonNull {
  read
  create
  update
}

type KeystoneAdminUIFieldMetaCreateView {
  fieldMode: KeystoneAdminUIFieldMetaCreateViewFieldMode!
}

enum KeystoneAdminUIFieldMetaCreateViewFieldMode {
  edit
  hidden
}

type KeystoneAdminUIFieldMetaListView {
  fieldMode: KeystoneAdminUIFieldMetaListViewFieldMode!
}

enum KeystoneAdminUIFieldMetaListViewFieldMode {
  read
  hidden
}

type KeystoneAdminUIFieldMetaItemView {
  fieldMode: KeystoneAdminUIFieldMetaItemViewFieldMode
  fieldPosition: KeystoneAdminUIFieldMetaItemViewFieldPosition
}

enum KeystoneAdminUIFieldMetaItemViewFieldMode {
  edit
  read
  hidden
}

enum KeystoneAdminUIFieldMetaItemViewFieldPosition {
  form
  sidebar
}

type KeystoneAdminUIFieldGroupMeta {
  label: String!
  description: String
  fields: [KeystoneAdminUIFieldMeta!]!
}

type KeystoneAdminUISort {
  field: String!
  direction: KeystoneAdminUISortDirection!
}

enum KeystoneAdminUISortDirection {
  ASC
  DESC
}