# Generic inputs/types type Address @aws_cognito_user_pools { name: String! companyName: String streetAddress: String! postCode: String city: String! state: String country: String! phoneNumber: String! } type Response @aws_cognito_user_pools { success: Boolean! } input AddressInput @aws_cognito_user_pools { name: String! companyName: String streetAddress: String! postCode: String city: String! state: String country: String! phoneNumber: String! } # Delivery inputs/types type DeliveryPricingResponse @aws_cognito_user_pools { pricing: Int! } type Delivery @aws_cognito_user_pools(cognito_groups: ["admin", "delivery"]) { orderId: String! address: Address! } type PaginatedDeliveries @aws_cognito_user_pools(cognito_groups: ["admin", "delivery"]) { deliveries: [Delivery!]! nextToken: String } input DeliveryPricingInput @aws_cognito_user_pools { products: [ProductInput!]! address: AddressInput! } input DeliveryInput @aws_cognito_user_pools(cognito_groups: ["admin", "delivery"]) { orderId: String! } # Orders inputs/types input CreateOrderRequest @aws_cognito_user_pools { products: [ProductInput!]! address: AddressInput! deliveryPrice: Int! paymentToken: String! } type CreateOrderResponse @aws_cognito_user_pools { success: Boolean! message: String! errors: [String!] order: Order } type Order @aws_cognito_user_pools { orderId: ID! userId: String! createdDate: String! modifiedDate: String! status: String! products: [Product!]! address: Address! deliveryPrice: Int! total: Int! } type PaginatedOrders @aws_cognito_user_pools { orders: [Order!]! nextToken: String } # Products inputs/types type Package { width: Int length: Int height: Int weight: Int } type PaginatedProducts { products: [Product!]! nextToken: String } type Product { productId: ID! createdDate: String modifiedDate: String name: String! package: Package! category: String tags: [String] pictures: [String] price: Int! quantity: Int } input PackageInput @aws_cognito_user_pools { width: Int length: Int height: Int weight: Int } input ProductInput @aws_cognito_user_pools { productId: ID! createdDate: String modifiedDate: String name: String! package: PackageInput! category: String tags: [String] pictures: [String] price: Int! quantity: Int } # Warehouse inputs/types type PackagingRequest @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) { orderId: String! status: String! products: [PackagingRequestProduct!]! } type PackagingRequestProduct @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) { productId: String! quantity: Int! } type PaginatedPackagingRequestIds @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) { packagingRequestIds: [String!]! nextToken: String } input PackagingInput @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) { orderId: String! } input UpdatePackagingProductInput @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) { orderId: String! productId: String! quantity: Int! } # Queries type Query { # Delivery queries getDeliveryPricing(input: DeliveryPricingInput!): DeliveryPricingResponse! @aws_cognito_user_pools getNewDeliveries(nextToken: String): PaginatedDeliveries! @aws_cognito_user_pools(cognito_groups: ["admin", "delivery"]) getDelivery(input: DeliveryInput!): Delivery @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) # Orders queries getOrders(nextToken: String): PaginatedOrders! @aws_cognito_user_pools getOrder(orderId: ID!): Order @aws_cognito_user_pools # Products queries getProducts(nextToken: String): PaginatedProducts! getProduct(productId: ID!): Product getProductsByCategory(category: String!): PaginatedProducts! # Warehouse queries getNewPackagingRequestIds(nextToken: String): PaginatedPackagingRequestIds! @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) getPackagingRequest(input: PackagingInput!): PackagingRequest @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) } # Mutations type Mutation { # Delivery mutations startDelivery(input: DeliveryInput!): Response! @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) failDelivery(input: DeliveryInput!): Response! @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) completeDelivery(input: DeliveryInput!): Response! @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) # Orders mutations createOrder(order: CreateOrderRequest!): CreateOrderResponse! @aws_cognito_user_pools # Warehouse mutations startPackaging(input: PackagingInput!): Response! @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) updatePackagingProduct(input: UpdatePackagingProductInput!): Response! @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) completePackaging(input: PackagingInput!): Response! @aws_cognito_user_pools(cognito_groups: ["admin", "warehouse"]) } schema { query: Query mutation: Mutation }