Data type ProductData

Beschreibung:

TYRIOS pim saves all product related data in a ProductData type data structure. The data class is one central information architecture used in the online shop, the PIM system, the order management and POS system. 

Please be aware: TYRIOS is an aspect-oriented system and the concrete data structure depends on your system configuration. Especially in case you want to update existing data, please be aware to take all available fields into account or use an update specific API endpoint to avoid data loss.

It is important to understand, that the concrete data structure of products depend on the concrete setup of the system. As a ProductData is a central data class, it is very likely that it is extended by additionally installed apps and modules. A ProductData is one of the most complex data structures in TYRIOS with many sub data classes. It is therefore generally not recommended using the complete data structure, but to use APIs which support partial updates.

Language depending fields

TYRIOS is able to realize multilingual systems in as many languages you want. Therefore, you find in the API languange depending fields e.g. "name_de" for the German name field, "description_de" for the German description and so on. The more languages there are, the more corresponding fields the API provides. German is hereby a required language.

Stock definitions

It is possible with TYRIOS to manage as many stocks you want. Each product therefore needs to provide stock relevant data like stock count, stock base price, stock position, etc. 

Alternative Prices

In TYRIOS it is possible to define alternative prices for different customer groups. The product data structure provides accordingly fields automatically.

General data structure

With the previous information, we can now discuss the general data structure of ProductData objects:

{
  "id": 441, // ID of the product, automatically generated
  "materialNumber": null, // material number. This is not enforced to be unique, but it is recommended
  "name_de": "Product name", // name of the product, required and language depending
  "shortDescription_de": null, // short description, used in order overviews, order details, invoices, ..., optional, however recommended due to legal issues.
  "description_de": null, // full description of the product, supports HTML
  "metaDescription_de": null, // meta description for the product
  "metaKeywords_de": null, // meta keywords as string
  "alternateHtmlTitle_de": null, // an alternative HTML title as string
  "hideDescription": false, //specifies if the description block should be hidden in product detail page
  "basePrice": 0, // total base price, is automatically calculated based on the stock base prices
  "listPrice": null, // net list price
  "price": 32.14, // net price, can save as many decimal points you want
  "isDiscountable": true, // specifies if the product is discountable using coupons
  "pricePrefix": null, // specifies if a prefix should be added to the product price, only possible if there is no sales support activated
  "isFlexPrice": false, // specifies if the client can specify the price
  "minFlexPrice": null, // if isFlexPrice=true, specifies the minimum price
  "defaultFlexPrice": null, // if isFlexPrice=true, specifies the default price
  "maxFlexPrice": null, // if isFlexPrice=true, specifies the max price
  "tax": 19, // specifies he tax value
  "ShopCategoryData": [ // array of ShopCategoryData objects or IDs the product should be assigned to
    {
      "id": 2
    }
  ],
  "carry": false, // specifies, if the product can be delivered (false) or not.
  "freeDelivery": false, // specifies if this product is with free delivery costs
  "visible": true, // specifies if this product is public
  "stockState": "1", // specifies the stock state: 1=available, 2=shortly available, 3=no available
  "stockable": true, // specifies if TYRIOS should activate the stock management
  "stockCount": 0, // specifies the stock count, automatically calculated on stock specific stockCounts
  "isbn": null,
  "ean": null,
  "upc": null,
  "manufacturer": null,
  "brand": null,
  "manufacturerProductNumber": null,
  "MediahelperFile": null, // array of MediahelperFile objects to specify used media. Could be provided as full objects or just be IDs
  "productIcons": null, // array of MediahelperFile objects to specify used media. Could be provided as full objects or just be IDs
  "mainMediaFile": null, // MediahelperFile object or ID for the preview image
  "state": "1", // state of the product: 1=new, 2=used, 3=refurbished
  "googleCategory": null, // google category, required if AdWords should be used
  "googleProductType": null, // google product type, recommended if adWords should be used
  "googleCustomLabel0": null,
  "googleCustomLabel1": null,
  "googleCustomLabel2": null,
  "googleCustomLabel3": null,
  "googleCustomLabel4": null,
  "alternateHtmlTitle": null,
  "CrosssellingProduct": null, // array of ProductData objects for cross selling
  "UpsellingProduct": null,// array of ProductData objects for up selling
  "youtubeURLs": [], // array of youtube URLs that should be embedded
  "unit": "Stk", // product unit, free string
  "searchKeywords": null, // additional search keywords to improve product search within the system
  "productType": 1, // specifies the product type: 1=digital product, 2=physical product, 3=evne
  "energyEfficiencyClass": null, // energy class
  "energyEfficiencyClassDetailImage": null, // MediahelperFile for specifying the energy class image, object or ID
  "multiPack": null,
  "isBundle": false,
  "isAdult": false,
  "gender": null, // gender, possible values: maile / female / unisex
  "ageGroup": null, // age group, possible values: newborn / infant / toddler / kids / adult
  "size": null, // size as string
  "sizeType": null, // possible values: regular / petite / plus / big and tall / maternity
  "sizeSystem": null, // possible values: US / UK / EU / DE / FR / JP / CN / IT / BR / MEX / AU
  "sizeRange": null, // string
  "width": null, // in cm
  "height": null, // in cm
  "depth": null, // in cm 
  "length": null, // in cm 
  "weight": null, // in kg
  "unit4unitPricing": "Stk",
  "unitPricingMeasure": null, // required if base price should be calculated. Specifies the amount of the item
  "unitPricingBaseMeasure": null, // required if base price should be calculated. Specifies the amount the base price is calculated for
  "useUnitPriceAsPresentationPrice": false,
  "offerSupportActivated": false, // specifies if offer requests can be placed
  "season": null,
  "salesSupportActivated": true, // specifies if sales support is activated
  "isPricePubliclyVisible": true, // specifies if price should be shown
  "showHiddenPrice4UsersWithRight": false, // specifies if price is only visible for special users
  "limitPaymentOption": false, // specifies if only special payment options should be supported
  "PaymentOption": [], // Payment options which should be supported. Either specifies as object or as ID
  "limitDeliveryOptionData": false, // specifies if delivery options should be limited.
  "DeliveryOptionData": [], // array of delivery options, objects or IDs
  "alternativeFakturaDescription": null, // specifies alternative texts for invoices,...
  "voucherDataDescription": null, // specifies alternative texts for POS system
  "executeZeroStockCountActions": false, // specifies if an automatism should be activated if there is no stock count any more
  "ZeroStockCountAction": null, array of ZeroStockCountAction definitions.
  "replacementDaysMin": null,
  "replacementDaysMax": null,
  "customsTariffNumber": null,
  "countryOfOrigin": null,
  "SameSeriesProductData": null, //array of products within the same series
  "SparePartsProductData": null, // array of products for spare parts
  "notes": null,
  "hideDeliveryTime": false,
  "hideDeliveryCosts": false,
  "hideProductDetailTabs": false,
  "ProductDataOffer": null, // array of product offers
  "reorderable": true, // specifies if the product can be reordered
  "overbookable": true, // specifies if the product can be overbooked
  "showStockCountMode": "visibleIfLimited",
  "increaseDeliveryTimeOnStockCountOverbooking": true,
  "ProductSpecificOrderAcceptanceText": null,
  "eventAvailableSeats": null,
  "eventTotalSeats": null,
  "eventBasePrice": null,
  "eventStartDate": null,
  "eventEndDate": null,
  "eventLocationName": null,
  "eventStreetAddress": null,
  "eventPostCode": null,
  "eventCity": null,
  "eventCountry": null,
  "rejectRevocationSupport": false,
  "showAdddressInput4OfferRequest": false,
  "requireStreet4OfferRequest": false,
  "requireCity4OfferRequest": false,
  "requireCountry4OfferRequest": false,
  "showPhoneInput4OfferRequest": false,
  "requirePhone4OfferRequest": false,
  "ScaledProductDataPrice": null,
  "ProductDataRightProvisioning": null,
  "ProductSpecificOrderCmsLink": null,
  "ProductDataStateMessage": null,
  "FreeProductDeliveryOptionTerm": null,
  "ProductDataInventoryItem": null,
  "inventoryItemType": "untracked",
  "annotationValue_de": null,
  "searchKeywords_de": [],
  "color_de": [], // colors as array definition, available for every language
  "material_de": [], // material ar array definition, available for every language
  "pattern_de": null, // // pattern as array definition, available for every language
  "alternativeFakturaDescription_de": null,
  "voucherDataDescription_de": null,
  "individualDeliveryPeriod_de": null,
  "productHighlights_de": [],
  "reason4rejectRevocationSupport_de": null,
  "alternativePrice1": null,
  "alternativePrice2": null,
  "alternativePrice3": null,
  "stockCount4LocationHauptlager": 0,
  "basePrice4LocationHauptlager": 0,
  "position4LocationHauptlager": null,
  "minimumStockCount4LocationHauptlager": null,
  "maximumStockCount4LocationHauptlager": null
}

Typically, in your instance, there are in addition many references to ensure that a media cannot be deleted while in use. Depending on the API, these references can be loaded and provided. In addition, the system typically provides preview and download URLs automatically via JSON. 

ProductDataOffer

You can add as many offers you want to a ProductData. The offer is automatically taken into account in the online shop, in the order editor and in POS:

The data structure is like this:

{
    "price": 50, // net price of the offer
    "alternativePrice1": null, // alternative prices as offer
    "alternativePrice2": null,
    "alternativePrice3": null,
    "startTime": "2021-12-31T23:00:00.000Z", // when does the offer start, required, optionally as unix timestamp with milliseconds
    "endTime": "2022-01-30T23:00:00.000Z" // when does the offer end, required, optionally as unix timestamp with milliseconds
}

ZeroStockCountAction

If you want to execute an automatic task when stock gets empty, you need to define a ZeroStockCountAction:

{
    "action": "1", // possible values: 1=set stockState to 2 (inreases the deliery time), 2=set stock state to 3 (not available), 3=unpublish product, 4=delete product
    "afterEventTime": 0, // seconds after the event occurs, 0= immediately
    "validUntil": null, // optional, specifies until which date this rule applies
}

You can specify multiple actions at once. 

 

Vorgehen:

Tips und Tricks:

Abonnieren Sie unseren Newsletter

Bleiben Sie stets informiert. Wir informieren Sie gerne über Produktneuheiten und Angebote.