496 lines
8.8 KiB
GraphQL
496 lines
8.8 KiB
GraphQL
"""
|
|
Photowall Graphql Schema
|
|
"""
|
|
scalar DateTime
|
|
scalar Date
|
|
scalar JSON
|
|
|
|
enum CacheControlScope {
|
|
PUBLIC
|
|
PRIVATE
|
|
}
|
|
|
|
directive @cacheControl(
|
|
maxAge: Int
|
|
scope: CacheControlScope
|
|
inheritMaxAge: Boolean
|
|
) on FIELD_DEFINITION | OBJECT | INTERFACE | UNION
|
|
|
|
type Query {
|
|
orders(pagination: PaginationInput!, filter: DateFilterInput!): OrdersResult
|
|
order(id: ID!): Order
|
|
products(
|
|
pagination: PaginationInput!
|
|
filter: ProductsFilterInput
|
|
): ProductsResult
|
|
product(id: Int!): Product
|
|
productsSearch(q: String!): ProductsSearchResult
|
|
categories: [Category]
|
|
category(id: Int!): Category
|
|
keywords: [Keyword]
|
|
keyword(id: Int!): Keyword
|
|
designers(limit: Int): [Designer]
|
|
designer(id: Int!): Designer
|
|
markets: [Market]
|
|
market(name: String!): Market
|
|
locales: [Locale]
|
|
locale(value: String!): Locale
|
|
interiors(filter: InteriorsFilterInput): [Interior]
|
|
signedFileUploadURL(config: SignedUploadURLInput): SignedUploadURL
|
|
@cacheControl(maxAge: 0)
|
|
}
|
|
|
|
input SignedUploadURLInput {
|
|
contentType: String!
|
|
key: String!
|
|
}
|
|
|
|
input PaginationInput {
|
|
limit: Int!
|
|
"""
|
|
offset is not implemented yet and result will always return as if it was 0. Implement when needed.
|
|
"""
|
|
offset: Int
|
|
}
|
|
|
|
input DateInput {
|
|
from: Date!
|
|
to: Date!
|
|
}
|
|
|
|
input DateFilterInput {
|
|
dates: DateInput
|
|
}
|
|
|
|
input ProductsFilterInput {
|
|
visible: Boolean
|
|
browsable: Boolean
|
|
}
|
|
|
|
type PaginationResult {
|
|
total: Int!
|
|
offset: Int!
|
|
limit: Int!
|
|
}
|
|
|
|
type OrdersResult {
|
|
pagination: PaginationResult!
|
|
items: [Order]
|
|
}
|
|
|
|
type ProductsResult {
|
|
pagination: PaginationResult!
|
|
items: [Product]
|
|
}
|
|
|
|
type ProductsSearchResult {
|
|
q: String!
|
|
"""
|
|
products contains matches for `name` and `artNo`
|
|
"""
|
|
products: [Product]
|
|
batches: [Batch]
|
|
keywords: [Keyword]
|
|
categories: [Category]
|
|
designers: [Designer]
|
|
}
|
|
|
|
input InteriorsFilterInput {
|
|
productId: Int!
|
|
}
|
|
|
|
type SignedUploadURL {
|
|
url: String!
|
|
key: String!
|
|
bucket: String!
|
|
expires: Int!
|
|
}
|
|
|
|
type Market {
|
|
id: ID!
|
|
name: String!
|
|
vat: Float!
|
|
currency: String!
|
|
priceAdjustment: Float!
|
|
}
|
|
|
|
type Locale {
|
|
id: ID!
|
|
value: String!
|
|
name: String!
|
|
fallbackId: Int
|
|
}
|
|
|
|
type Address {
|
|
id: ID!
|
|
firstname: String
|
|
lastname: String
|
|
recipientName: String
|
|
companyname: String
|
|
address1: String
|
|
address2: String
|
|
countryCode: String
|
|
city: String
|
|
zipcode: String
|
|
stateCountyOrRegion: String
|
|
}
|
|
|
|
type ContactInformation {
|
|
email: String
|
|
phone: String
|
|
address: Address
|
|
}
|
|
|
|
type Order {
|
|
id: ID!
|
|
inserted: DateTime!
|
|
paid: Boolean!
|
|
confirmed: Boolean!
|
|
delivered: Boolean!
|
|
newsletter: Boolean
|
|
creditInvoice: Boolean
|
|
canceled: Boolean
|
|
reminder: Boolean
|
|
deliveredDate: DateTime
|
|
countryCode: String
|
|
language: String
|
|
deliveryCountryCode: String
|
|
deliveryMethod: String
|
|
deliveryPrice: String
|
|
deliveryVat: Float
|
|
customerType: String
|
|
paymentType: String
|
|
attention: String
|
|
currency: String
|
|
exchangeRate: Float
|
|
exchangeRateEur: Float
|
|
invoiceId: String
|
|
contractCustomerId: Int
|
|
vatNumber: String
|
|
comment: String
|
|
cancelsOrderId: Int
|
|
cancelledByOrderId: Int
|
|
orderlogId: Int
|
|
resellerStore: String
|
|
orderSum: Float
|
|
klarnaOrderId: String
|
|
pwintyId: Int
|
|
email: String
|
|
phone: String
|
|
deliveryEmail: String
|
|
deliveryPhone: String
|
|
customerFirstname: String
|
|
customerLastname: String
|
|
customerEmail: String
|
|
customerCellphone: String
|
|
flyerIds: String
|
|
billingInformation: ContactInformation
|
|
deliveryInformation: ContactInformation
|
|
billingAddressId: Int
|
|
deliveryAddressId: Int
|
|
"""
|
|
pwinty needs to be updated with market being a subtype
|
|
"""
|
|
market: Market
|
|
locale: Locale
|
|
rows: [OrderRow]
|
|
}
|
|
|
|
type OrderRow {
|
|
id: ID!
|
|
artNo: String
|
|
code: String
|
|
commission: Int
|
|
commissionAmount: Float
|
|
commissionResale: Int
|
|
designer: String
|
|
designerId: Int
|
|
designerPath: String
|
|
discountType: String
|
|
discountValue: Float
|
|
displayHeight: Float
|
|
displayWidth: Float
|
|
edge: String
|
|
frameColor: String
|
|
framed: Int
|
|
group: ProductGroup
|
|
height: Int
|
|
imagedonotprint: Int
|
|
imageprocessed: Int
|
|
imageprocessingrejected: Int
|
|
inserted: DateTime
|
|
material: String
|
|
measureUnit: String
|
|
mirrored: Int
|
|
modifier: String
|
|
name: String
|
|
noShipping: Boolean
|
|
order: Order
|
|
orderId: Int
|
|
path: String
|
|
price: Float
|
|
printId: Int
|
|
process: Boolean
|
|
productGroup: String
|
|
productId: Int
|
|
pwintyImageId: Int
|
|
pwintySku: String
|
|
resolution: Int
|
|
status: String
|
|
type: String
|
|
vat: Float
|
|
weight: Int
|
|
width: Int
|
|
x: Float
|
|
y: Float
|
|
}
|
|
|
|
type Category {
|
|
id: ID!
|
|
name: String
|
|
path: String
|
|
pathNumeric: String
|
|
isLeaf: Int
|
|
depth: Int
|
|
childCount: Int
|
|
lft: Int
|
|
rgt: Int
|
|
products: [Product]
|
|
}
|
|
|
|
type Batch {
|
|
name: String!
|
|
products: [Product]
|
|
}
|
|
|
|
type Product {
|
|
id: ID!
|
|
stockid: Int
|
|
path: String!
|
|
visible: Boolean!
|
|
browsable: Boolean!
|
|
inserted: DateTime!
|
|
updated: DateTime
|
|
printProducts: [PrintProduct]
|
|
blacklisting: [ProductBlacklist]
|
|
categories: [Category]
|
|
designerId: Int
|
|
designer: Designer
|
|
keywords: [Keyword]
|
|
ref1: String
|
|
ref2: String
|
|
ref3: String
|
|
related: [Product]
|
|
wallpaperTypes: [ProductWallpaperType]!
|
|
fields: ProductFields
|
|
orientation: Orientation
|
|
"""
|
|
Will be single values return in later release
|
|
"""
|
|
type: [ProductType]
|
|
}
|
|
|
|
type ProductFields {
|
|
artNo: String!
|
|
name: String!
|
|
height: Int
|
|
width: Int
|
|
photowallResolution: Int
|
|
canvasResolution: Int
|
|
wallpaperResolution: Int
|
|
copyright: String!
|
|
proportionsWarning: Boolean!
|
|
marginWidthMax: Int
|
|
marginWidthMin: Int
|
|
marginHeightMax: Int
|
|
marginHeightMin: Int
|
|
focusXpoint: Float
|
|
focusYpoint: Float
|
|
focusXpoint2: Float
|
|
focusYpoint2: Float
|
|
batch: String
|
|
imageResolution: Int
|
|
printFileWidth: Int
|
|
printFileHeight: Int
|
|
printFileDpi: Int
|
|
comments: String
|
|
}
|
|
|
|
enum Orientation {
|
|
UNKNOWN
|
|
STANDING
|
|
LANDSCAPE
|
|
SQUARE
|
|
}
|
|
|
|
enum ProductGroup {
|
|
PHOTO_WALLPAPER
|
|
CANVAS
|
|
"""
|
|
WALLPAPER is tiling
|
|
"""
|
|
WALLPAPER
|
|
OLD_REMOVED
|
|
DO_IT_YOURSELF_FRAME
|
|
"""
|
|
Not used
|
|
"""
|
|
DESIGNER_WALLPAPER
|
|
POSTER
|
|
FRAMED_PRINT
|
|
UNKNOWN
|
|
}
|
|
|
|
enum ProductType {
|
|
UNKNOWN
|
|
PHOTO
|
|
ILLUSTRATION
|
|
}
|
|
|
|
enum ProductWallpaperType {
|
|
WALLMURAL
|
|
DESIGN
|
|
}
|
|
|
|
type ProductBlacklist {
|
|
id: ID!
|
|
groupId: Int!
|
|
group: ProductGroup!
|
|
market: Market!
|
|
inserted: DateTime!
|
|
updated: DateTime!
|
|
}
|
|
|
|
type PrintProduct {
|
|
id: ID!
|
|
groupId: Int!
|
|
group: ProductGroup!
|
|
inserted: DateTime!
|
|
updated: DateTime
|
|
interiors: [Interior]
|
|
}
|
|
|
|
enum InteriorType {
|
|
WALLPAPER
|
|
PAINTING
|
|
POSTER
|
|
FRAMED_PRINT
|
|
}
|
|
|
|
type Interior {
|
|
"""
|
|
room id
|
|
"""
|
|
id: ID!
|
|
roomName: String
|
|
position: Int
|
|
roomType: String
|
|
uri: String
|
|
roomNumber: Int
|
|
type: InteriorType
|
|
orientation: Orientation
|
|
}
|
|
|
|
type Designer {
|
|
id: ID!
|
|
name: String
|
|
path: String
|
|
orderRows(pagination: PaginationInput!, filter: DateFilterInput): [OrderRow]
|
|
products: [Product]
|
|
}
|
|
|
|
enum KeywordType {
|
|
NOT_SET
|
|
COLOR
|
|
}
|
|
|
|
type Keyword {
|
|
id: ID!
|
|
value: String!
|
|
type: KeywordType
|
|
products: [Product]
|
|
}
|
|
|
|
# Mutations below
|
|
input ProductInfoInput {
|
|
name: String!
|
|
artNo: String!
|
|
path: String!
|
|
batch: String!
|
|
copyright: String!
|
|
ref1: String!
|
|
ref2: String!
|
|
ref3: String!
|
|
designerId: Int
|
|
browsable: Boolean!
|
|
visible: Boolean!
|
|
printFileWidth: Int!
|
|
printFileHeight: Int!
|
|
printFileDpi: Int!
|
|
}
|
|
|
|
input ProductBlacklistingInput {
|
|
"""
|
|
Only ones used are ProductGroup: PHOTO_WALLPAPER CANVAS WALLPAPER POSTER
|
|
"""
|
|
marketId: Int!
|
|
groupIds: [Int]
|
|
}
|
|
|
|
input ProductProportionsInput {
|
|
proportionsWarning: Boolean
|
|
marginWidthMax: Int!
|
|
marginWidthMin: Int!
|
|
marginHeightMax: Int!
|
|
marginHeightMin: Int!
|
|
}
|
|
|
|
type IdNumberResult {
|
|
id: Int!
|
|
}
|
|
|
|
type Mutation {
|
|
addProduct(name: String!, batch: String): Product
|
|
productInfo(productId: Int!, info: ProductInfoInput!): Product
|
|
productFocusPoint(
|
|
productId: Int!
|
|
focusXpoint2: Float!
|
|
focusYpoint2: Float!
|
|
): Product
|
|
productBlacklisting(
|
|
productId: Int!
|
|
markets: [ProductBlacklistingInput]
|
|
): Product
|
|
productGroup(productId: Int!, groupIds: [Int]): Product
|
|
productGroupInteriors(productId: Int!, groupId: Int!, uris: [String]): Product
|
|
productKeywords(productId: Int!, keywordIds: [Int]): Product
|
|
productProportionsWarning(
|
|
productId: Int!
|
|
proportions: ProductProportionsInput!
|
|
): Product
|
|
addOwnInteriorToPrintProduct(
|
|
printId: Int!
|
|
uploadedS3Key: String!
|
|
): IdNumberResult
|
|
productWallpaperType(
|
|
productId: Int!
|
|
wallpaperTypes: [ProductWallpaperType]!
|
|
): Product
|
|
updateProductImage(
|
|
productId: Int!
|
|
uploadedS3Key: String!
|
|
width: Int!
|
|
height: Int!
|
|
): String
|
|
|
|
addRelatedProducts(productId: Int!, articleNumbers: [String]!): Product
|
|
removeRelatedProducts(productId: Int!, relatedProductIds: [Int]!): Product
|
|
|
|
addKeyword(name: String!, type: KeywordType): Keyword
|
|
|
|
addCategoriesToProduct(productId: Int!, categoryIds: [Int]!): Product
|
|
removeCategoriesFromProduct(productId: Int!, categoryIds: [Int]!): Product
|
|
|
|
updateProductComments(productId: Int!, comments: String!): Product
|
|
}
|