directive @oneOf on INPUT_OBJECT type AboveMaxSaldo implements Error { message: String! error: Boolean! maxSaldo: Float! above: Float! } union CreateDepositResponse = CreateDepositSuccess | AboveMaxSaldo | FormErrors type CreateDepositSuccess { transaction: Transaction! } union CreateInventoryTransactionResponse = CreateInventoryTransactionSuccess | FormErrors type CreateInventoryTransactionSuccess { inventoryTransaction: InventoryTransaction! } union CreateOrderResponse = CreateOrderSuccess | InsufficientFunds | FormErrors type CreateOrderSuccess { order: Order! } """Date with time (isoformat)""" scalar DateTime """Decimal (fixed-point)""" scalar Decimal interface Error { message: String! error: Boolean! } type FieldError implements Error { message: String! error: Boolean! field: String! } type FormErrors { fields: [FieldError!]! message: String! error: Boolean! } type InsufficientFunds implements Error { message: String! error: Boolean! amountLacking: Float! } type InventoryReport { products: [InventoryReportProduct!]! inventoryPurchases: Decimal! productSales: Decimal! deposits: Decimal! orderPurchases: Decimal! balanceAtStart: Decimal! balanceAtEnd: Decimal! } type InventoryReportProduct { productId: ID! productName: String! purchaseUnits: Int! purchaseValue: Decimal! salesUnits: Int! salesValue: Decimal! } type InventoryTransaction { id: ID! user: User! product: Product! amount: Int! unitPrice: Decimal! comment: String! created: DateTime! } input InventoryTransactionInput { productId: ID! amount: Int! unitPrice: Decimal! comment: String! = "" } input InventoryTransactionOrdering @oneOf { created: Ordering } """ The GenericScalar scalar type represents a generic GraphQL scalar value that could be: List or Object. """ scalar JSONScalar type Mutation { createInventoryTransaction(data: InventoryTransactionInput!): CreateInventoryTransactionResponse! createOrder(customerId: ID!, orderLines: [OrderLineInput!]!, isExternal: Boolean! = false): CreateOrderResponse! createDeposit(userId: ID!, amount: Int!): CreateDepositResponse! createUser(input: UserInput!): User! } input OffsetPaginationInput { offset: Int! = 0 limit: Int } type Order { id: ID! customer: User orderSum: Decimal! created: DateTime! orderlines: [OrderLine!]! isExternal: Boolean! } type OrderLine { id: ID! order: Order! product: Product! amount: Int! unitPrice: Decimal! } input OrderLineInput { productId: ID! amount: Int! } input OrderOrdering @oneOf { created: Ordering } type OrderStats { yearly: [OrderStatsByTime!]! monthly: [OrderStatsByTime!]! daily: [OrderStatsByTime!]! hourly: [OrderStatsByTime!]! } type OrderStatsByTime { period: Int! count: String! } enum Ordering { ASC ASC_NULLS_FIRST ASC_NULLS_LAST DESC DESC_NULLS_FIRST DESC_NULLS_LAST } type Point { x: String! y: Int! } type Product { id: ID! name: String! imageUrl: String! salePriceInt: Decimal! salePriceExt: Decimal! active: Boolean! inventoryAmount: Int! updated: DateTime! wholesaleUnitPrice: Decimal! wholesaleValue: Decimal! userCounts: JSONScalar! } input ProductFilter { id: ID active: Boolean AND: ProductFilter OR: ProductFilter NOT: ProductFilter DISTINCT: Boolean } type ProductOrderStat { productName: String! data: [Point!]! } type Query { transactionList(ordering: [TransactionOrdering!]! = [], pagination: OffsetPaginationInput): [Transaction!]! inventoryTransactionList(ordering: [InventoryTransactionOrdering!]! = [], pagination: OffsetPaginationInput): [InventoryTransaction!]! inventoryReport(startTime: DateTime!, endTime: DateTime!): InventoryReport! allProducts(filters: ProductFilter): [Product!]! allOrders: [Order!]! orderList(ordering: [OrderOrdering!]! = [], pagination: OffsetPaginationInput): [Order!]! orderStats: OrderStats! productStats: [ProductOrderStat!]! allUsers: [User!]! user(userId: ID!): User! } type TopMonth { period: String! count: Int! sum: Float! } type Transaction { id: ID! user: User! amount: Decimal! created: DateTime! } input TransactionOrdering @oneOf { created: Ordering } type User { id: ID! firstName: String! lastName: String! profile: UserProfile } input UserInput { email: String firstName: String lastName: String } type UserProfile { id: ID! balance: Decimal! image: String! lastPurchaseDate: DateTime! orderSumTotal: Decimal! topMonths: [TopMonth!]! productOrderStats: [ProductOrderStat!]! }