input FileInfoInput {
  name: String
  alternativeText: String
  caption: String
}

type UsersPermissionsMe {
  id: ID!
  username: String!
  email: String!
  confirmed: Boolean
  blocked: Boolean
  role: UsersPermissionsMeRole
}

type UsersPermissionsMeRole {
  id: ID!
  name: String!
  description: String
  type: String
}

input UsersPermissionsRegisterInput {
  username: String!
  email: String!
  password: String!
}

input UsersPermissionsLoginInput {
  identifier: String!
  password: String!
  provider: String = "local"
}

type UsersPermissionsLoginPayload {
  jwt: String
  user: UsersPermissionsMe!
}

type UserPermissionsPasswordPayload {
  ok: Boolean!
}

type Category {
  id: ID!
  created_at: DateTime!
  updated_at: DateTime!
  name: String
  published_at: DateTime
  products(sort: String, limit: Int, start: Int, where: JSON): [Product]
}

type CategoryConnection {
  values: [Category]
  groupBy: CategoryGroupBy
  aggregate: CategoryAggregator
}

type CategoryAggregator {
  count: Int
  totalCount: Int
}

type CategoryGroupBy {
  id: [CategoryConnectionId]
  created_at: [CategoryConnectionCreated_at]
  updated_at: [CategoryConnectionUpdated_at]
  name: [CategoryConnectionName]
  published_at: [CategoryConnectionPublished_at]
}

type CategoryConnectionId {
  key: ID
  connection: CategoryConnection
}

type CategoryConnectionCreated_at {
  key: DateTime
  connection: CategoryConnection
}

type CategoryConnectionUpdated_at {
  key: DateTime
  connection: CategoryConnection
}

type CategoryConnectionName {
  key: String
  connection: CategoryConnection
}

type CategoryConnectionPublished_at {
  key: DateTime
  connection: CategoryConnection
}

input CategoryInput {
  name: String
  products: [ID]
  published_at: DateTime
  created_by: ID
  updated_by: ID
}

input editCategoryInput {
  name: String
  products: [ID]
  published_at: DateTime
  created_by: ID
  updated_by: ID
}

input createCategoryInput {
  data: CategoryInput
}

type createCategoryPayload {
  category: Category
}

input updateCategoryInput {
  where: InputID
  data: editCategoryInput
}

type updateCategoryPayload {
  category: Category
}

input deleteCategoryInput {
  where: InputID
}

type deleteCategoryPayload {
  category: Category
}

type OrderDetail {
  id: ID!
  created_at: DateTime!
  updated_at: DateTime!
  quantity: String!
  order: Order
  product: Product
  published_at: DateTime
}

type OrderDetailConnection {
  values: [OrderDetail]
  groupBy: OrderDetailGroupBy
  aggregate: OrderDetailAggregator
}

type OrderDetailAggregator {
  count: Int
  totalCount: Int
}

type OrderDetailGroupBy {
  id: [OrderDetailConnectionId]
  created_at: [OrderDetailConnectionCreated_at]
  updated_at: [OrderDetailConnectionUpdated_at]
  quantity: [OrderDetailConnectionQuantity]
  order: [OrderDetailConnectionOrder]
  product: [OrderDetailConnectionProduct]
  published_at: [OrderDetailConnectionPublished_at]
}

type OrderDetailConnectionId {
  key: ID
  connection: OrderDetailConnection
}

type OrderDetailConnectionCreated_at {
  key: DateTime
  connection: OrderDetailConnection
}

type OrderDetailConnectionUpdated_at {
  key: DateTime
  connection: OrderDetailConnection
}

type OrderDetailConnectionQuantity {
  key: String
  connection: OrderDetailConnection
}

type OrderDetailConnectionOrder {
  key: ID
  connection: OrderDetailConnection
}

type OrderDetailConnectionProduct {
  key: ID
  connection: OrderDetailConnection
}

type OrderDetailConnectionPublished_at {
  key: DateTime
  connection: OrderDetailConnection
}

input OrderDetailInput {
  quantity: String
  order: ID
  product: ID
  published_at: DateTime
  created_by: ID
  updated_by: ID
}

input editOrderDetailInput {
  quantity: String
  order: ID
  product: ID
  published_at: DateTime
  created_by: ID
  updated_by: ID
}

input createOrderDetailInput {
  data: OrderDetailInput
}

type createOrderDetailPayload {
  orderDetail: OrderDetail
}

input updateOrderDetailInput {
  where: InputID
  data: editOrderDetailInput
}

type updateOrderDetailPayload {
  orderDetail: OrderDetail
}

input deleteOrderDetailInput {
  where: InputID
}

type deleteOrderDetailPayload {
  orderDetail: OrderDetail
}

type Order {
  id: ID!
  created_at: DateTime!
  updated_at: DateTime!
  date: DateTime
  shipped: Boolean
  user: UsersPermissionsUser
  published_at: DateTime
  details(sort: String, limit: Int, start: Int, where: JSON): [OrderDetail]
}

type OrderConnection {
  values: [Order]
  groupBy: OrderGroupBy
  aggregate: OrderAggregator
}

type OrderAggregator {
  count: Int
  totalCount: Int
}

type OrderGroupBy {
  id: [OrderConnectionId]
  created_at: [OrderConnectionCreated_at]
  updated_at: [OrderConnectionUpdated_at]
  date: [OrderConnectionDate]
  shipped: [OrderConnectionShipped]
  user: [OrderConnectionUser]
  published_at: [OrderConnectionPublished_at]
}

type OrderConnectionId {
  key: ID
  connection: OrderConnection
}

type OrderConnectionCreated_at {
  key: DateTime
  connection: OrderConnection
}

type OrderConnectionUpdated_at {
  key: DateTime
  connection: OrderConnection
}

type OrderConnectionDate {
  key: DateTime
  connection: OrderConnection
}

type OrderConnectionShipped {
  key: Boolean
  connection: OrderConnection
}

type OrderConnectionUser {
  key: ID
  connection: OrderConnection
}

type OrderConnectionPublished_at {
  key: DateTime
  connection: OrderConnection
}

input OrderInput {
  date: DateTime
  shipped: Boolean
  user: ID
  details: [ID]
  published_at: DateTime
  created_by: ID
  updated_by: ID
}

input editOrderInput {
  date: DateTime
  shipped: Boolean
  user: ID
  details: [ID]
  published_at: DateTime
  created_by: ID
  updated_by: ID
}

input createOrderInput {
  data: OrderInput
}

type createOrderPayload {
  order: Order
}

input updateOrderInput {
  where: InputID
  data: editOrderInput
}

type updateOrderPayload {
  order: Order
}

input deleteOrderInput {
  where: InputID
}

type deleteOrderPayload {
  order: Order
}

type Product {
  id: ID!
  created_at: DateTime!
  updated_at: DateTime!
  name: String!
  description: String!
  unit_price: Float
  category: Category
  photo: UploadFile
  published_at: DateTime
  details(sort: String, limit: Int, start: Int, where: JSON): [OrderDetail]
}

type ProductConnection {
  values: [Product]
  groupBy: ProductGroupBy
  aggregate: ProductAggregator
}

type ProductAggregator {
  count: Int
  totalCount: Int
  sum: ProductAggregatorSum
  avg: ProductAggregatorAvg
  min: ProductAggregatorMin
  max: ProductAggregatorMax
}

type ProductAggregatorSum {
  unit_price: Float
}

type ProductAggregatorAvg {
  unit_price: Float
}

type ProductAggregatorMin {
  unit_price: Float
}

type ProductAggregatorMax {
  unit_price: Float
}

type ProductGroupBy {
  id: [ProductConnectionId]
  created_at: [ProductConnectionCreated_at]
  updated_at: [ProductConnectionUpdated_at]
  name: [ProductConnectionName]
  description: [ProductConnectionDescription]
  unit_price: [ProductConnectionUnit_price]
  category: [ProductConnectionCategory]
  photo: [ProductConnectionPhoto]
  published_at: [ProductConnectionPublished_at]
}

type ProductConnectionId {
  key: ID
  connection: ProductConnection
}

type ProductConnectionCreated_at {
  key: DateTime
  connection: ProductConnection
}

type ProductConnectionUpdated_at {
  key: DateTime
  connection: ProductConnection
}

type ProductConnectionName {
  key: String
  connection: ProductConnection
}

type ProductConnectionDescription {
  key: String
  connection: ProductConnection
}

type ProductConnectionUnit_price {
  key: Float
  connection: ProductConnection
}

type ProductConnectionCategory {
  key: ID
  connection: ProductConnection
}

type ProductConnectionPhoto {
  key: ID
  connection: ProductConnection
}

type ProductConnectionPublished_at {
  key: DateTime
  connection: ProductConnection
}

input ProductInput {
  name: String!
  description: String!
  unit_price: Float
  category: ID
  details: [ID]
  photo: ID
  published_at: DateTime
  created_by: ID
  updated_by: ID
}

input editProductInput {
  name: String
  description: String
  unit_price: Float
  category: ID
  details: [ID]
  photo: ID
  published_at: DateTime
  created_by: ID
  updated_by: ID
}

input createProductInput {
  data: ProductInput
}

type createProductPayload {
  product: Product
}

input updateProductInput {
  where: InputID
  data: editProductInput
}

type updateProductPayload {
  product: Product
}

input deleteProductInput {
  where: InputID
}

type deleteProductPayload {
  product: Product
}

type UploadFile {
  id: ID!
  created_at: DateTime!
  updated_at: DateTime!
  name: String!
  alternativeText: String
  caption: String
  width: Int
  height: Int
  formats: JSON
  hash: String!
  ext: String
  mime: String!
  size: Float!
  url: String!
  previewUrl: String
  provider: String!
  provider_metadata: JSON
  related(sort: String, limit: Int, start: Int, where: JSON): [Morph]
}

type UploadFileConnection {
  values: [UploadFile]
  groupBy: UploadFileGroupBy
  aggregate: UploadFileAggregator
}

type UploadFileAggregator {
  count: Int
  totalCount: Int
  sum: UploadFileAggregatorSum
  avg: UploadFileAggregatorAvg
  min: UploadFileAggregatorMin
  max: UploadFileAggregatorMax
}

type UploadFileAggregatorSum {
  width: Float
  height: Float
  size: Float
}

type UploadFileAggregatorAvg {
  width: Float
  height: Float
  size: Float
}

type UploadFileAggregatorMin {
  width: Float
  height: Float
  size: Float
}

type UploadFileAggregatorMax {
  width: Float
  height: Float
  size: Float
}

type UploadFileGroupBy {
  id: [UploadFileConnectionId]
  created_at: [UploadFileConnectionCreated_at]
  updated_at: [UploadFileConnectionUpdated_at]
  name: [UploadFileConnectionName]
  alternativeText: [UploadFileConnectionAlternativeText]
  caption: [UploadFileConnectionCaption]
  width: [UploadFileConnectionWidth]
  height: [UploadFileConnectionHeight]
  formats: [UploadFileConnectionFormats]
  hash: [UploadFileConnectionHash]
  ext: [UploadFileConnectionExt]
  mime: [UploadFileConnectionMime]
  size: [UploadFileConnectionSize]
  url: [UploadFileConnectionUrl]
  previewUrl: [UploadFileConnectionPreviewUrl]
  provider: [UploadFileConnectionProvider]
  provider_metadata: [UploadFileConnectionProvider_metadata]
}

type UploadFileConnectionId {
  key: ID
  connection: UploadFileConnection
}

type UploadFileConnectionCreated_at {
  key: DateTime
  connection: UploadFileConnection
}

type UploadFileConnectionUpdated_at {
  key: DateTime
  connection: UploadFileConnection
}

type UploadFileConnectionName {
  key: String
  connection: UploadFileConnection
}

type UploadFileConnectionAlternativeText {
  key: String
  connection: UploadFileConnection
}

type UploadFileConnectionCaption {
  key: String
  connection: UploadFileConnection
}

type UploadFileConnectionWidth {
  key: Int
  connection: UploadFileConnection
}

type UploadFileConnectionHeight {
  key: Int
  connection: UploadFileConnection
}

type UploadFileConnectionFormats {
  key: JSON
  connection: UploadFileConnection
}

type UploadFileConnectionHash {
  key: String
  connection: UploadFileConnection
}

type UploadFileConnectionExt {
  key: String
  connection: UploadFileConnection
}

type UploadFileConnectionMime {
  key: String
  connection: UploadFileConnection
}

type UploadFileConnectionSize {
  key: Float
  connection: UploadFileConnection
}

type UploadFileConnectionUrl {
  key: String
  connection: UploadFileConnection
}

type UploadFileConnectionPreviewUrl {
  key: String
  connection: UploadFileConnection
}

type UploadFileConnectionProvider {
  key: String
  connection: UploadFileConnection
}

type UploadFileConnectionProvider_metadata {
  key: JSON
  connection: UploadFileConnection
}

input FileInput {
  name: String!
  alternativeText: String
  caption: String
  width: Int
  height: Int
  formats: JSON
  hash: String!
  ext: String
  mime: String!
  size: Float!
  url: String!
  previewUrl: String
  provider: String!
  provider_metadata: JSON
  related: [ID]
  created_by: ID
  updated_by: ID
}

input editFileInput {
  name: String
  alternativeText: String
  caption: String
  width: Int
  height: Int
  formats: JSON
  hash: String
  ext: String
  mime: String
  size: Float
  url: String
  previewUrl: String
  provider: String
  provider_metadata: JSON
  related: [ID]
  created_by: ID
  updated_by: ID
}

input deleteFileInput {
  where: InputID
}

type deleteFilePayload {
  file: UploadFile
}

type UsersPermissionsPermission {
  id: ID!
  type: String!
  controller: String!
  action: String!
  enabled: Boolean!
  policy: String
  role: UsersPermissionsRole
}

type UsersPermissionsRole {
  id: ID!
  name: String!
  description: String
  type: String
  permissions(sort: String, limit: Int, start: Int, where: JSON): [UsersPermissionsPermission]
  users(sort: String, limit: Int, start: Int, where: JSON): [UsersPermissionsUser]
}

type UsersPermissionsRoleConnection {
  values: [UsersPermissionsRole]
  groupBy: UsersPermissionsRoleGroupBy
  aggregate: UsersPermissionsRoleAggregator
}

type UsersPermissionsRoleAggregator {
  count: Int
  totalCount: Int
}

type UsersPermissionsRoleGroupBy {
  id: [UsersPermissionsRoleConnectionId]
  name: [UsersPermissionsRoleConnectionName]
  description: [UsersPermissionsRoleConnectionDescription]
  type: [UsersPermissionsRoleConnectionType]
}

type UsersPermissionsRoleConnectionId {
  key: ID
  connection: UsersPermissionsRoleConnection
}

type UsersPermissionsRoleConnectionName {
  key: String
  connection: UsersPermissionsRoleConnection
}

type UsersPermissionsRoleConnectionDescription {
  key: String
  connection: UsersPermissionsRoleConnection
}

type UsersPermissionsRoleConnectionType {
  key: String
  connection: UsersPermissionsRoleConnection
}

input RoleInput {
  name: String!
  description: String
  type: String
  permissions: [ID]
  users: [ID]
  created_by: ID
  updated_by: ID
}

input editRoleInput {
  name: String
  description: String
  type: String
  permissions: [ID]
  users: [ID]
  created_by: ID
  updated_by: ID
}

input createRoleInput {
  data: RoleInput
}

type createRolePayload {
  role: UsersPermissionsRole
}

input updateRoleInput {
  where: InputID
  data: editRoleInput
}

type updateRolePayload {
  role: UsersPermissionsRole
}

input deleteRoleInput {
  where: InputID
}

type deleteRolePayload {
  role: UsersPermissionsRole
}

type UsersPermissionsUser {
  id: ID!
  created_at: DateTime!
  updated_at: DateTime!
  username: String!
  email: String!
  provider: String
  confirmed: Boolean
  blocked: Boolean
  role: UsersPermissionsRole
  phone: String
  adress: String
  birthdate: DateTime
  orders(sort: String, limit: Int, start: Int, where: JSON): [Order]
}

type UsersPermissionsUserConnection {
  values: [UsersPermissionsUser]
  groupBy: UsersPermissionsUserGroupBy
  aggregate: UsersPermissionsUserAggregator
}

type UsersPermissionsUserAggregator {
  count: Int
  totalCount: Int
}

type UsersPermissionsUserGroupBy {
  id: [UsersPermissionsUserConnectionId]
  created_at: [UsersPermissionsUserConnectionCreated_at]
  updated_at: [UsersPermissionsUserConnectionUpdated_at]
  username: [UsersPermissionsUserConnectionUsername]
  email: [UsersPermissionsUserConnectionEmail]
  provider: [UsersPermissionsUserConnectionProvider]
  confirmed: [UsersPermissionsUserConnectionConfirmed]
  blocked: [UsersPermissionsUserConnectionBlocked]
  role: [UsersPermissionsUserConnectionRole]
  phone: [UsersPermissionsUserConnectionPhone]
  adress: [UsersPermissionsUserConnectionAdress]
  birthdate: [UsersPermissionsUserConnectionBirthdate]
}

type UsersPermissionsUserConnectionId {
  key: ID
  connection: UsersPermissionsUserConnection
}

type UsersPermissionsUserConnectionCreated_at {
  key: DateTime
  connection: UsersPermissionsUserConnection
}

type UsersPermissionsUserConnectionUpdated_at {
  key: DateTime
  connection: UsersPermissionsUserConnection
}

type UsersPermissionsUserConnectionUsername {
  key: String
  connection: UsersPermissionsUserConnection
}

type UsersPermissionsUserConnectionEmail {
  key: String
  connection: UsersPermissionsUserConnection
}

type UsersPermissionsUserConnectionProvider {
  key: String
  connection: UsersPermissionsUserConnection
}

type UsersPermissionsUserConnectionConfirmed {
  key: Boolean
  connection: UsersPermissionsUserConnection
}

type UsersPermissionsUserConnectionBlocked {
  key: Boolean
  connection: UsersPermissionsUserConnection
}

type UsersPermissionsUserConnectionRole {
  key: ID
  connection: UsersPermissionsUserConnection
}

type UsersPermissionsUserConnectionPhone {
  key: String
  connection: UsersPermissionsUserConnection
}

type UsersPermissionsUserConnectionAdress {
  key: String
  connection: UsersPermissionsUserConnection
}

type UsersPermissionsUserConnectionBirthdate {
  key: DateTime
  connection: UsersPermissionsUserConnection
}

input UserInput {
  username: String!
  email: String!
  provider: String
  password: String
  resetPasswordToken: String
  confirmationToken: String
  confirmed: Boolean
  blocked: Boolean
  role: ID
  phone: String
  adress: String
  birthdate: DateTime
  orders: [ID]
  created_by: ID
  updated_by: ID
}

input editUserInput {
  username: String
  email: String
  provider: String
  password: String
  resetPasswordToken: String
  confirmationToken: String
  confirmed: Boolean
  blocked: Boolean
  role: ID
  phone: String
  adress: String
  birthdate: DateTime
  orders: [ID]
  created_by: ID
  updated_by: ID
}

input createUserInput {
  data: UserInput
}

type createUserPayload {
  user: UsersPermissionsUser
}

input updateUserInput {
  where: InputID
  data: editUserInput
}

type updateUserPayload {
  user: UsersPermissionsUser
}

input deleteUserInput {
  where: InputID
}

type deleteUserPayload {
  user: UsersPermissionsUser
}

union Morph = UsersPermissionsMe | UsersPermissionsMeRole | UsersPermissionsLoginPayload | UserPermissionsPasswordPayload | Category | CategoryConnection | CategoryAggregator | CategoryGroupBy | CategoryConnectionId | CategoryConnectionCreated_at | CategoryConnectionUpdated_at | CategoryConnectionName | CategoryConnectionPublished_at | createCategoryPayload | updateCategoryPayload | deleteCategoryPayload | OrderDetail | OrderDetailConnection | OrderDetailAggregator | OrderDetailGroupBy | OrderDetailConnectionId | OrderDetailConnectionCreated_at | OrderDetailConnectionUpdated_at | OrderDetailConnectionQuantity | OrderDetailConnectionOrder | OrderDetailConnectionProduct | OrderDetailConnectionPublished_at | createOrderDetailPayload | updateOrderDetailPayload | deleteOrderDetailPayload | Order | OrderConnection | OrderAggregator | OrderGroupBy | OrderConnectionId | OrderConnectionCreated_at | OrderConnectionUpdated_at | OrderConnectionDate | OrderConnectionShipped | OrderConnectionUser | OrderConnectionPublished_at | createOrderPayload | updateOrderPayload | deleteOrderPayload | Product | ProductConnection | ProductAggregator | ProductAggregatorSum | ProductAggregatorAvg | ProductAggregatorMin | ProductAggregatorMax | ProductGroupBy | ProductConnectionId | ProductConnectionCreated_at | ProductConnectionUpdated_at | ProductConnectionName | ProductConnectionDescription | ProductConnectionUnit_price | ProductConnectionCategory | ProductConnectionPhoto | ProductConnectionPublished_at | createProductPayload | updateProductPayload | deleteProductPayload | UploadFile | UploadFileConnection | UploadFileAggregator | UploadFileAggregatorSum | UploadFileAggregatorAvg | UploadFileAggregatorMin | UploadFileAggregatorMax | UploadFileGroupBy | UploadFileConnectionId | UploadFileConnectionCreated_at | UploadFileConnectionUpdated_at | UploadFileConnectionName | UploadFileConnectionAlternativeText | UploadFileConnectionCaption | UploadFileConnectionWidth | UploadFileConnectionHeight | UploadFileConnectionFormats | UploadFileConnectionHash | UploadFileConnectionExt | UploadFileConnectionMime | UploadFileConnectionSize | UploadFileConnectionUrl | UploadFileConnectionPreviewUrl | UploadFileConnectionProvider | UploadFileConnectionProvider_metadata | deleteFilePayload | UsersPermissionsPermission | UsersPermissionsRole | UsersPermissionsRoleConnection | UsersPermissionsRoleAggregator | UsersPermissionsRoleGroupBy | UsersPermissionsRoleConnectionId | UsersPermissionsRoleConnectionName | UsersPermissionsRoleConnectionDescription | UsersPermissionsRoleConnectionType | createRolePayload | updateRolePayload | deleteRolePayload | UsersPermissionsUser | UsersPermissionsUserConnection | UsersPermissionsUserAggregator | UsersPermissionsUserGroupBy | UsersPermissionsUserConnectionId | UsersPermissionsUserConnectionCreated_at | UsersPermissionsUserConnectionUpdated_at | UsersPermissionsUserConnectionUsername | UsersPermissionsUserConnectionEmail | UsersPermissionsUserConnectionProvider | UsersPermissionsUserConnectionConfirmed | UsersPermissionsUserConnectionBlocked | UsersPermissionsUserConnectionRole | UsersPermissionsUserConnectionPhone | UsersPermissionsUserConnectionAdress | UsersPermissionsUserConnectionBirthdate | createUserPayload | updateUserPayload | deleteUserPayload

input InputID {
  id: ID!
}

enum PublicationState {
  LIVE
  PREVIEW
}

type AdminUser {
  id: ID!
  username: String
  firstname: String!
  lastname: String!
}

type Query {
  category(id: ID!, publicationState: PublicationState): Category
  categories(sort: String, limit: Int, start: Int, where: JSON, publicationState: PublicationState): [Category]
  categoriesConnection(sort: String, limit: Int, start: Int, where: JSON): CategoryConnection
  orderDetail(id: ID!, publicationState: PublicationState): OrderDetail
  orderDetails(sort: String, limit: Int, start: Int, where: JSON, publicationState: PublicationState): [OrderDetail]
  orderDetailsConnection(sort: String, limit: Int, start: Int, where: JSON): OrderDetailConnection
  order(id: ID!, publicationState: PublicationState): Order
  orders(sort: String, limit: Int, start: Int, where: JSON, publicationState: PublicationState): [Order]
  ordersConnection(sort: String, limit: Int, start: Int, where: JSON): OrderConnection
  product(id: ID!, publicationState: PublicationState): Product
  products(sort: String, limit: Int, start: Int, where: JSON, publicationState: PublicationState): [Product]
  productsConnection(sort: String, limit: Int, start: Int, where: JSON): ProductConnection
  files(sort: String, limit: Int, start: Int, where: JSON, publicationState: PublicationState): [UploadFile]
  filesConnection(sort: String, limit: Int, start: Int, where: JSON): UploadFileConnection
  role(id: ID!, publicationState: PublicationState): UsersPermissionsRole

  """
  Retrieve all the existing roles. You can't apply filters on this query.
  """
  roles(sort: String, limit: Int, start: Int, where: JSON, publicationState: PublicationState): [UsersPermissionsRole]
  rolesConnection(sort: String, limit: Int, start: Int, where: JSON): UsersPermissionsRoleConnection
  user(id: ID!, publicationState: PublicationState): UsersPermissionsUser
  users(sort: String, limit: Int, start: Int, where: JSON, publicationState: PublicationState): [UsersPermissionsUser]
  usersConnection(sort: String, limit: Int, start: Int, where: JSON): UsersPermissionsUserConnection
  me: UsersPermissionsMe
}

type Mutation {
  createCategory(input: createCategoryInput): createCategoryPayload
  updateCategory(input: updateCategoryInput): updateCategoryPayload
  deleteCategory(input: deleteCategoryInput): deleteCategoryPayload
  createOrderDetail(input: createOrderDetailInput): createOrderDetailPayload
  updateOrderDetail(input: updateOrderDetailInput): updateOrderDetailPayload
  deleteOrderDetail(input: deleteOrderDetailInput): deleteOrderDetailPayload
  createOrder(input: createOrderInput): createOrderPayload
  updateOrder(input: updateOrderInput): updateOrderPayload
  deleteOrder(input: deleteOrderInput): deleteOrderPayload
  createProduct(input: createProductInput): createProductPayload
  updateProduct(input: updateProductInput): updateProductPayload
  deleteProduct(input: deleteProductInput): deleteProductPayload

  """Delete one file"""
  deleteFile(input: deleteFileInput): deleteFilePayload

  """Create a new role"""
  createRole(input: createRoleInput): createRolePayload

  """Update an existing role"""
  updateRole(input: updateRoleInput): updateRolePayload

  """Delete an existing role"""
  deleteRole(input: deleteRoleInput): deleteRolePayload

  """Create a new user"""
  createUser(input: createUserInput): createUserPayload

  """Update an existing user"""
  updateUser(input: updateUserInput): updateUserPayload

  """Delete an existing user"""
  deleteUser(input: deleteUserInput): deleteUserPayload
  upload(refId: ID, ref: String, field: String, source: String, file: Upload!): UploadFile!
  multipleUpload(refId: ID, ref: String, field: String, source: String, files: [Upload]!): [UploadFile]!
  updateFileInfo(id: ID!, info: FileInfoInput!): UploadFile!
  login(input: UsersPermissionsLoginInput!): UsersPermissionsLoginPayload!
  register(input: UsersPermissionsRegisterInput!): UsersPermissionsLoginPayload!
  forgotPassword(email: String!): UserPermissionsPasswordPayload
  resetPassword(password: String!, passwordConfirmation: String!, code: String!): UsersPermissionsLoginPayload
  emailConfirmation(confirmation: String!): UsersPermissionsLoginPayload
}

"""
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")

"""
A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.
"""
scalar DateTime

"""A time string with format: HH:mm:ss.SSS"""
scalar Time

"""
A date string, such as 2007-12-03, compliant with the `full-date` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.
"""
scalar Date

"""The `Long` scalar type represents 52-bit integers"""
scalar Long

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