Roomle Documentation
  • Overview
  • Quick Start Guides
    • Create you first 3D Viewer & AR
      • Sign up & upgrade your license plan in Rubens Admin
      • Create a product for the Rubens 3D Viewer
      • Batch upload products into your catalogue
    • Convert your static product into a material configurator
  • Rubens Products
    • Overview
    • Architectural overview
    • Rubens Products vs. Rubens SDK
    • Rubens 3D Viewer & AR
      • Getting started
    • Rubens Configurator
      • Getting started
      • Integration
        • Setup the configurator
        • Listen to events
          • Request a product
          • Parts list changes
          • Analytic events
          • Button clicks
        • Trigger API functions
          • Implement custom buttons
        • How to use prices in Rubens Configurator?
          • Use the parts list for calculating prices
          • Use Rubens Price Service
          • Use your own backend for calculating prices
        • Analytics Event
          • Rubens Configurator + Google Analytics (GDPR)
        • Customise shareable links
        • Handle CORS
      • Customisation
        • Hide Bottom Bar
        • Custom parts list print
        • Enable / Disable buttons
        • Override labels
        • Skinning options
          • Colors
          • Font
        • Localization
        • Change floor material
        • Highlighting in the configurator
      • Recipes
        • Implement custom AR button
        • Add product variants
        • Parameter outside of the configurator
        • Load different products into the configurator
    • Rubens Room Designer
      • Getting started
      • Integration
        • Setup Room Designer
        • Listen to events
          • onSavePlan
        • Call 3D Scene functions
          • Trigger request plan button
        • How to use prices in Room Designer?
          • Use Rubens Price Service
          • Use your own backend for calculating prices
        • Handle CORS
      • Customisation
        • Hide Bottom Bar
        • Enable / Disable buttons
        • Override labels
        • Skinning options
          • Colors
          • Font
        • Add products from an external catalog
        • Add custom overlays (advanced)
        • Localization
      • Recipes
        • Load different plans into the scene
        • Adding items to the scene
    • Rubens Products Reference
      • Classes
        • ExposedAnalyticsCallbacks.ExposedAnalyticsCallbacks
        • ExposedApi.ExposedApi
        • ExposedApi.Internal.Connector
        • ExposedApi.Internal.ExposedApiDragGhost
        • ExposedApi.Internal.ExposedApiDragHandler
        • ExposedApi.Internal.Libs
        • ExposedApi.Internal.MessageHandler
        • ExposedApi.Internal.RoomleSdkWrapper
        • ExposedApi.Internal.SdkConnector
        • ExposedApi.Internal.SdkConnectorConfigurator
        • ExposedApi.Internal.SdkConnectorPlanner
        • ExposedApi.Internal.SdkConnectorViewer
        • ExposedApi.Internal.UiCallbacks
        • ExposedApi.Internal.default-1
        • ExposedApi.Internal.default-2
        • ExposedApi.Internal.default
        • ExposedCallbacks.ExposedCallbacks
        • RoomleConfiguratorApi.default
      • Enums
        • ExposedApi.Internal.BUTTONACTIONS
        • ExposedApi.Internal.GACATEGORY
        • ExposedApi.Internal.GACUSTOM
        • ExposedApi.Internal.SDKMODULES
        • Types.UIBUTTON
        • Types.UIELEMENTS
      • Interfaces
        • ExposedApi.Internal.Analytics
        • ExposedApi.Internal.CollectionViewComponentIcon
        • ExposedApi.Internal.CollectionViewElement
        • ExposedApi.Internal.CollectionViewUiState
        • ExposedApi.Internal.CommonUiState
        • ExposedApi.Internal.CoreData
        • ExposedApi.Internal.CoreState
        • ExposedApi.Internal.DragGhostOptions
        • ExposedApi.Internal.DragInOptions
        • ExposedApi.Internal.DragInSettings
        • ExposedApi.Internal.EmbeddingCommand
        • ExposedApi.Internal.EmbeddingResponse
        • ExposedApi.Internal.GridViewElement
        • ExposedApi.Internal.GridViewUiState
        • ExposedApi.Internal.GridViewVariantElement
        • ExposedApi.Internal.IncomingMessageBus
        • ExposedApi.Internal.KernelBoundsFormatted
        • ExposedApi.Internal.OutgoingMessageBus
        • ExposedApi.Internal.OverlayState
        • ExposedApi.Internal.ParameterGroup
        • ExposedApi.Internal.PartlistResponse
        • ExposedApi.Internal.PlannerCoreData
        • ExposedApi.Internal.PlannerUiState
        • ExposedApi.Internal.PointRect
        • ExposedApi.Internal.SampleRoom
        • ExposedApi.Internal.SceneSelection
        • ExposedApi.Internal.SharedUiState
        • ExposedApi.Internal.StoreState
        • ExposedApi.Internal.TabCategory
        • ExposedApi.Internal.Translator
        • ExposedApi.Internal.UiLabels
        • ExposedApi.Internal.UiPossibleChildTagWithKey
        • ExposedApi.Internal.UiState
        • ExposedApi.Internal.WrapLines
        • ExposedCallbacks.Labels
        • ExposedCallbacks.Price
        • ExposedCallbacks.Internal.SaveDraftPayload
        • RoomleConfiguratorApi.RoomleEmbeddingApiKeys
        • Types.ConfiguratorSettings
        • Types.CustomViewSettingsForIframe
        • Types.CustomViewSettingsForOverlay
        • Types.CustomViews
        • Types.CustomViewsCallbacks
        • Types.EmbeddingSkin
        • Types.HelpCenterSetting
        • Types.ThumbnailsSettings
        • Types.UiInitData
        • Types.UiState
        • Types.VariantsMap
        • Types.Internal.CustomTutorialTranslation
        • Types.Internal.CustomViewSettingsBase
        • Types.Internal.PartlistPrintPayload
        • Types.Internal.SidebarEventTypes
        • Types.Internal.UiFeatureFlags
      • Modules
        • ExposedAnalyticsCallbacks
        • ExposedApi.Internal
        • ExposedApi
        • ExposedCallbacks.Internal
        • ExposedCallbacks
        • RoomleConfiguratorApi
        • Types.Internal
        • Types
      • Translate-labels
  • Rubens SDK
    • Overview
    • Getting Started
    • Rubens Modules
    • Rubens GLB Viewer
      • Getting started
      • Scene Customisation
        • Environment
        • Transparent Background
    • Rubens Configurator
      • Getting Started
      • Configurator Concepts
      • Listen to events
      • Control 3D Scene
      • Scene Customisation
        • Environment
        • Transparent Background
      • Different types of configurations
      • How to change a configuration
    • Rubens Planner (Room Designer)
      • Getting started
      • Listen to events
      • Control 3D Scene
      • Scene Customisation
        • Environment
        • Transparent Background
    • Rubens SDK Reference
      • Classes
        • EnvironmentDynamicEnvironmentSettingLoader.default
        • LightsettingDynamicLightSettingLoader.default
        • SceneSettingsLoader.default
        • Configurator.Configurator
        • Configurator.Internal.CommunicationInterface
        • Configurator.Internal.GlobalCallback
        • Configurator.Internal.MainThreadToWorker
        • Configurator.Internal.RoomleError
        • Configurator.Internal.UiCallback
        • Configurator.Internal.default-1
        • Configurator.Internal.default-2
        • Configurator.Internal.default-3
        • Configurator.Internal.default-4
        • Configurator.Internal.default-5
        • Configurator.Internal.default-6
        • Configurator.Internal.default-7
        • Configurator.Internal.default-8
        • Configurator.Internal.default-9
        • Configurator.Internal.default
        • RoomleConfigurator.Internal.AORenderPass
        • RoomleConfigurator.Internal.AbstractModel
        • RoomleConfigurator.Internal.AbstractModelWrapper
        • RoomleConfigurator.Internal.BakedGroundContactShadowPass
        • RoomleConfigurator.Internal.BaseMaterial
        • RoomleConfigurator.Internal.BlendAoAndAShadowMaterial
        • RoomleConfigurator.Internal.BlendAoPassDepthMaterial
        • RoomleConfigurator.Internal.BlurPass
        • RoomleConfigurator.Internal.CameraUpdate
        • RoomleConfigurator.Internal.CopyTransformMaterial
        • RoomleConfigurator.Internal.DebugPass
        • RoomleConfigurator.Internal.EMSConstant
        • RoomleConfigurator.Internal.EmsArray
        • RoomleConfigurator.Internal.EmsList
        • RoomleConfigurator.Internal.EnvironmentMapDecodeMaterial
        • RoomleConfigurator.Internal.GBufferMaterialCache
        • RoomleConfigurator.Internal.GBufferRenderPass
        • RoomleConfigurator.Internal.GroundContactCamera
        • RoomleConfigurator.Internal.GroundReflectionIntensityMaterial
        • RoomleConfigurator.Internal.GroundReflectionPass
        • RoomleConfigurator.Internal.InputEvent
        • RoomleConfigurator.Internal.KernelAtticArray
        • RoomleConfigurator.Internal.KernelObjectConfigurationArray
        • RoomleConfigurator.Internal.KernelPlanObjectList
        • RoomleConfigurator.Internal.LightSample
        • RoomleConfigurator.Internal.LightSource
        • RoomleConfigurator.Internal.LinearDepthRenderMaterial
        • RoomleConfigurator.Internal.NormalAndDepthRenderMaterial
        • RoomleConfigurator.Internal.ObjectRenderCache
        • RoomleConfigurator.Internal.ObjectToWallLineArray
        • RoomleConfigurator.Internal.OccurrenceMap
        • RoomleConfigurator.Internal.OutlinePass
        • RoomleConfigurator.Internal.OutlineRenderer
        • RoomleConfigurator.Internal.Panel
        • RoomleConfigurator.Internal.PassRenderer
        • RoomleConfigurator.Internal.PlanObjectList
        • RoomleConfigurator.Internal.PlanObjectPtr
        • RoomleConfigurator.Internal.PointArray
        • RoomleConfigurator.Internal.PoissonDenoiseRenderPass
        • RoomleConfigurator.Internal.PostProcessingMaterialPlugin
        • RoomleConfigurator.Internal.PromiseQueue
        • RoomleConfigurator.Internal.RenderCacheManager
        • RoomleConfigurator.Internal.RenderCacheMapItem
        • RoomleConfigurator.Internal.RenderPass
        • RoomleConfigurator.Internal.RenderPassManager
        • RoomleConfigurator.Internal.RoomLightSourceDistributionArray
        • RoomleConfigurator.Internal.RoomleWebGLRenderer
        • RoomleConfigurator.Internal.SceneEventInfo
        • RoomleConfigurator.Internal.SceneRenderPass
        • RoomleConfigurator.Internal.SceneRenderer
        • RoomleConfigurator.Internal.SceneRendererGUI
        • RoomleConfigurator.Internal.SceneVolume
        • RoomleConfigurator.Internal.ScreenSpaceShadowMapPass
        • RoomleConfigurator.Internal.SelectionHandlerEvent
        • RoomleConfigurator.Internal.ShadowAndAoPass
        • RoomleConfigurator.Internal.ShadowGroundPlane
        • RoomleConfigurator.Internal.ShadowMapPassOverrideMaterialCache
        • RoomleConfigurator.Internal.ShadowTypeConfiguration
        • RoomleConfigurator.Internal.default-1
        • RoomleConfigurator.Internal.default-10
        • RoomleConfigurator.Internal.default-11
        • RoomleConfigurator.Internal.default-12
        • RoomleConfigurator.Internal.default-13
        • RoomleConfigurator.Internal.default-14
        • RoomleConfigurator.Internal.default-15
        • RoomleConfigurator.Internal.default-16
        • RoomleConfigurator.Internal.default-17
        • RoomleConfigurator.Internal.default-18
        • RoomleConfigurator.Internal.default-19
        • RoomleConfigurator.Internal.default-2
        • RoomleConfigurator.Internal.default-20
        • RoomleConfigurator.Internal.default-21
        • RoomleConfigurator.Internal.default-22
        • RoomleConfigurator.Internal.default-23
        • RoomleConfigurator.Internal.default-24
        • RoomleConfigurator.Internal.default-25
        • RoomleConfigurator.Internal.default-26
        • RoomleConfigurator.Internal.default-27
        • RoomleConfigurator.Internal.default-28
        • RoomleConfigurator.Internal.default-29
        • RoomleConfigurator.Internal.default-3
        • RoomleConfigurator.Internal.default-30
        • RoomleConfigurator.Internal.default-31
        • RoomleConfigurator.Internal.default-32
        • RoomleConfigurator.Internal.default-33
        • RoomleConfigurator.Internal.default-34
        • RoomleConfigurator.Internal.default-35
        • RoomleConfigurator.Internal.default-36
        • RoomleConfigurator.Internal.default-37
        • RoomleConfigurator.Internal.default-38
        • RoomleConfigurator.Internal.default-39
        • RoomleConfigurator.Internal.default-4
        • RoomleConfigurator.Internal.default-40
        • RoomleConfigurator.Internal.default-41
        • RoomleConfigurator.Internal.default-42
        • RoomleConfigurator.Internal.default-43
        • RoomleConfigurator.Internal.default-44
        • RoomleConfigurator.Internal.default-45
        • RoomleConfigurator.Internal.default-46
        • RoomleConfigurator.Internal.default-47
        • RoomleConfigurator.Internal.default-48
        • RoomleConfigurator.Internal.default-49
        • RoomleConfigurator.Internal.default-5
        • RoomleConfigurator.Internal.default-50
        • RoomleConfigurator.Internal.default-51
        • RoomleConfigurator.Internal.default-52
        • RoomleConfigurator.Internal.default-53
        • RoomleConfigurator.Internal.default-54
        • RoomleConfigurator.Internal.default-55
        • RoomleConfigurator.Internal.default-6
        • RoomleConfigurator.Internal.default-7
        • RoomleConfigurator.Internal.default-8
        • RoomleConfigurator.Internal.default-9
        • RoomleConfigurator.Internal.default
        • RoomleConfigurator.default
        • ServicesConfiguratorUiCallback.Internal.AddOnSpotArray-1
        • ServicesConfiguratorUiCallback.Internal.AddOnSpotArray
        • ServicesConfiguratorUiCallback.Internal.CatalogItem
        • ServicesConfiguratorUiCallback.Internal.CatalogItemPtrList
        • ServicesConfiguratorUiCallback.Internal.ComponentArray-1
        • ServicesConfiguratorUiCallback.Internal.ComponentArray
        • ServicesConfiguratorUiCallback.Internal.ConfigurationArray-1
        • ServicesConfiguratorUiCallback.Internal.ConfigurationArray
        • ServicesConfiguratorUiCallback.Internal.ConstructionObject
        • ServicesConfiguratorUiCallback.Internal.ConstructionObjectSet
        • ServicesConfiguratorUiCallback.Internal.DockPairToLineArray-1
        • ServicesConfiguratorUiCallback.Internal.DockPairToLineArray
        • ServicesConfiguratorUiCallback.Internal.DockPairToPointArray-1
        • ServicesConfiguratorUiCallback.Internal.DockPairToPointArray
        • ServicesConfiguratorUiCallback.Internal.EMSReference
        • ServicesConfiguratorUiCallback.Internal.EmsSet
        • ServicesConfiguratorUiCallback.Internal.ExternalReference
        • ServicesConfiguratorUiCallback.Internal.Floor
        • ServicesConfiguratorUiCallback.Internal.FloorMaterial
        • ServicesConfiguratorUiCallback.Internal.IntArray-1
        • ServicesConfiguratorUiCallback.Internal.IntArray
        • ServicesConfiguratorUiCallback.Internal.LongArray
        • ServicesConfiguratorUiCallback.Internal.Node
        • ServicesConfiguratorUiCallback.Internal.ObjectGroup
        • ServicesConfiguratorUiCallback.Internal.ParamKeyValuePairArray-1
        • ServicesConfiguratorUiCallback.Internal.ParamKeyValuePairArray
        • ServicesConfiguratorUiCallback.Internal.ParameterArray-1
        • ServicesConfiguratorUiCallback.Internal.ParameterArray
        • ServicesConfiguratorUiCallback.Internal.ParameterGroupArray-1
        • ServicesConfiguratorUiCallback.Internal.ParameterGroupArray
        • ServicesConfiguratorUiCallback.Internal.ParameterValueArray-1
        • ServicesConfiguratorUiCallback.Internal.ParameterValueArray
        • ServicesConfiguratorUiCallback.Internal.PartArray-1
        • ServicesConfiguratorUiCallback.Internal.PartArray
        • ServicesConfiguratorUiCallback.Internal.PartListParameterArray-1
        • ServicesConfiguratorUiCallback.Internal.PartListParameterArray
        • ServicesConfiguratorUiCallback.Internal.Plan
        • ServicesConfiguratorUiCallback.Internal.PlanElement
        • ServicesConfiguratorUiCallback.Internal.PlanImage
        • ServicesConfiguratorUiCallback.Internal.PlanMeasure
        • ServicesConfiguratorUiCallback.Internal.PlanModelViewHelper
        • ServicesConfiguratorUiCallback.Internal.PlanObjectObjectSet
        • ServicesConfiguratorUiCallback.Internal.PlanObjectPtrList
        • ServicesConfiguratorUiCallback.Internal.PlanObjectPtrVector
        • ServicesConfiguratorUiCallback.Internal.PlanText
        • ServicesConfiguratorUiCallback.Internal.PointArray
        • ServicesConfiguratorUiCallback.Internal.PossibleChildArray-1
        • ServicesConfiguratorUiCallback.Internal.PossibleChildArray
        • ServicesConfiguratorUiCallback.Internal.RangeArray-1
        • ServicesConfiguratorUiCallback.Internal.RangeArray
        • ServicesConfiguratorUiCallback.Internal.SizeTArray
        • ServicesConfiguratorUiCallback.Internal.StringArray
        • ServicesConfiguratorUiCallback.Internal.UnitMeasureFormatter-1
        • ServicesConfiguratorUiCallback.Internal.UnitMeasureFormatter
        • ServicesConfiguratorUiCallback.Internal.VariableArray-1
        • ServicesConfiguratorUiCallback.Internal.VariableArray
        • ServicesConfiguratorUiCallback.Internal.VariantArray-1
        • ServicesConfiguratorUiCallback.Internal.VariantArray
        • ServicesConfiguratorUiCallback.Internal.Vector2fArray
        • ServicesConfiguratorUiCallback.Internal.Wall
        • ServicesConfiguratorUiCallback.Internal.WallMaterial
        • ServicesConfiguratorUiCallback.default
        • GlbViewer.GlbViewer
        • RoomleGlbViewer.GlbViewerUiCallbacks
        • RoomleGlbViewer.Internal.default-1
        • RoomleGlbViewer.Internal.default-2
        • RoomleGlbViewer.Internal.default-3
        • RoomleGlbViewer.Internal.default
        • RoomleGlbViewer.default
        • Planner.Planner
        • RoomlePlanner.Internal.PlannerSelectionHandlerEvent
        • RoomlePlanner.Internal.SceneEventInfo
        • RoomlePlanner.Internal.default-1
        • RoomlePlanner.Internal.default-10
        • RoomlePlanner.Internal.default-11
        • RoomlePlanner.Internal.default-12
        • RoomlePlanner.Internal.default-13
        • RoomlePlanner.Internal.default-14
        • RoomlePlanner.Internal.default-15
        • RoomlePlanner.Internal.default-16
        • RoomlePlanner.Internal.default-17
        • RoomlePlanner.Internal.default-18
        • RoomlePlanner.Internal.default-19
        • RoomlePlanner.Internal.default-2
        • RoomlePlanner.Internal.default-20
        • RoomlePlanner.Internal.default-21
        • RoomlePlanner.Internal.default-22
        • RoomlePlanner.Internal.default-23
        • RoomlePlanner.Internal.default-24
        • RoomlePlanner.Internal.default-3
        • RoomlePlanner.Internal.default-4
        • RoomlePlanner.Internal.default-5
        • RoomlePlanner.Internal.default-6
        • RoomlePlanner.Internal.default-7
        • RoomlePlanner.Internal.default-8
        • RoomlePlanner.Internal.default-9
        • RoomlePlanner.Internal.default
        • RoomlePlanner.default
        • RoomlePlannerUiCallback.default
        • TypingsKernel.Internal.BindingError
        • TypingsKernel.Internal.InternalError
        • TypingsKernel.Internal.UnboundTypeError
      • Enums
        • UtilsShims.WINDOWEVENT
        • Configurator.Internal.ASSETKEYS
        • Configurator.Internal.ERRORCODES
        • Configurator.Internal.PROMISECATEGORY
        • Configurator.Internal.RAPIPATHS
        • Configurator.Internal.SHORTTYPES
        • Configurator.Internal.WORKERMESSAGE
        • RoomleConfigurator.PARAMETERUPDATETYPE
        • RoomleConfigurator.Internal.BASECONTEXT
        • RoomleConfigurator.Internal.DrawingType
        • RoomleConfigurator.Internal.INPUTEVENTTYPE
        • RoomleConfigurator.Internal.INTERSECTIONMODE
        • RoomleConfigurator.Internal.KERNELTYPE
        • RoomleConfigurator.Internal.PARAMETERKERNELTYPE
        • RoomleConfigurator.Internal.RenderMode
        • RoomleConfigurator.Internal.ResizingAnchor
        • RoomleConfigurator.Internal.SELECTIONMODE
        • RoomleConfigurator.Internal.STATE-1
        • RoomleConfigurator.Internal.STATE-2
        • RoomleConfigurator.Internal.STATE
        • RoomleConfigurator.Internal.SnapMode
        • ServicesConfiguratorUiCallback.Internal.MaterialSourceType
        • ServicesConfiguratorUiCallback.Internal.PlanElementType
        • ServicesConfiguratorUiCallback.Internal.PlanObjectSide
        • ServicesConfiguratorUiCallback.Internal.Type-1
        • ServicesConfiguratorUiCallback.Internal.Type
        • ServicesConfiguratorUiCallback.Internal.Unit-1
        • ServicesConfiguratorUiCallback.Internal.Unit
        • ServicesConfiguratorUiCallback.Internal.UnitStringType-1
        • ServicesConfiguratorUiCallback.Internal.UnitStringType
        • ServicesConfiguratorUiCallback.Internal.UnitType-1
        • ServicesConfiguratorUiCallback.Internal.UnitType
        • RoomlePlanner.Internal.MODE
        • RoomlePlanner.Internal.PLANNERSCENEEVENTSTATE
        • TypingsKernel.DIMENSIONINGTYPE
        • TypingsKernel.ExportType
        • TypingsKernel.Internal.PARAMETERUNITTYPES
        • TypingsRapiTypes.MAILTYPE
        • TypingsRapiTypes.RAPIADDITIONALCONTENTS
        • TypingsRapiTypes.RAPITEXTURETYPE
        • TypingsRapiTypes.RapiFavoriteType
      • Interfaces
        • CommonInterfaces.Base64Image
        • CommonInterfaces.CanvasOffset
        • CommonInterfaces.Position2
        • CommonInterfaces.Position3
        • EnvironmentDynamicEnvironmentSettingLoader.EnvironmentDetails
        • EnvironmentDynamicEnvironmentSettingLoader.EnvironmentSetting
        • LightsettingDynamicLightSettingLoader.DynamicLight
        • LightsettingDynamicLightSettingLoader.DynamicLightSettingSource
        • SceneSettingsLoader.SceneSettings
        • UtilsShims.CommonInitData
        • UtilsShims.ConfiguratorInitData
        • UtilsShims.FeatureFlags
        • UtilsShims.GlobalInitDataDefinition
        • UtilsShims.InitDataDefinition
        • UtilsShims.PlannerInitData
        • Configurator.Internal.AppState
        • Configurator.Internal.CommunicationInterfaceCallback
        • Configurator.Internal.Context
        • Configurator.Internal.CustomShadingParameters
        • Configurator.Internal.ExternalEmbeddable
        • Configurator.Internal.ExternalObjectApiConfiguration
        • Configurator.Internal.ExternalObjectDebugConfiguration
        • Configurator.Internal.ExternalObjectMaterialConfiguration
        • Configurator.Internal.ExternalObjectUiConfiguration
        • Configurator.Internal.ExternalObjectUiSliderRange
        • Configurator.Internal.FetchOptions
        • Configurator.Internal.KernelMessageMetaInfo
        • Configurator.Internal.LifeCycleCallbacks
        • Configurator.Internal.ListenersMap
        • Configurator.Internal.NetworkRequestValidations
        • Configurator.Internal.QueuedElement
        • Configurator.Internal.RapiError
        • Configurator.Internal.RapiRelationDefinition
        • Configurator.Internal.SaveOptions
        • RoomleConfigurator.Internal.AOPassParameters
        • RoomleConfigurator.Internal.AORenderPassParameters
        • RoomleConfigurator.Internal.ActiveShadowLight
        • RoomleConfigurator.Internal.Anchor
        • RoomleConfigurator.Internal.AtticDimension
        • RoomleConfigurator.Internal.BakedGroundContactShadowConstructorParameters
        • RoomleConfigurator.Internal.BakedGroundContactShadowParameters
        • RoomleConfigurator.Internal.BlendAoAndAShadowMaterialParameters
        • RoomleConfigurator.Internal.BlendAoPassDepthMaterialParameters
        • RoomleConfigurator.Internal.CameraParameter
        • RoomleConfigurator.Internal.CameraTarget
        • RoomleConfigurator.Internal.ChildEntityMode
        • RoomleConfigurator.Internal.CleanupOptions
        • RoomleConfigurator.Internal.CommonConfiguratorKernelCallbackI
        • RoomleConfigurator.Internal.ComponentEventInfo
        • RoomleConfigurator.Internal.ConfigurationLoadedResponse
        • RoomleConfigurator.Internal.ConfiguratorDebugAPI
        • RoomleConfigurator.Internal.ConfiguratorKernelAccessCallbackI
        • RoomleConfigurator.Internal.ConfiguratorKernelCallbackI
        • RoomleConfigurator.Internal.ConfiguratorViewModelCallbackI
        • RoomleConfigurator.Internal.ContinuousDrawingManager
        • RoomleConfigurator.Internal.CopyTransformMaterialParameters
        • RoomleConfigurator.Internal.DenoisePass
        • RoomleConfigurator.Internal.DimensionDefinition
        • RoomleConfigurator.Internal.DynamicPassUpdateRequirements
        • RoomleConfigurator.Internal.EMSReference
        • RoomleConfigurator.Internal.EnvMapParams
        • RoomleConfigurator.Internal.EnvironmentMapResult
        • RoomleConfigurator.Internal.ExternalElement
        • RoomleConfigurator.Internal.ExternalMeta
        • RoomleConfigurator.Internal.ExternalObjectContour
        • RoomleConfigurator.Internal.ExternalObjectGroup
        • RoomleConfigurator.Internal.ExternalObjectGroupPosition
        • RoomleConfigurator.Internal.ExternalObjectLoadConfiguration
        • RoomleConfigurator.Internal.ExternalObjectRootModule
        • RoomleConfigurator.Internal.ExternalObjectSegment
        • RoomleConfigurator.Internal.GBufferNormalDepthMaterialParameters
        • RoomleConfigurator.Internal.GBufferParameters
        • RoomleConfigurator.Internal.GBufferRenderTargetsParameters
        • RoomleConfigurator.Internal.GBufferTextures
        • RoomleConfigurator.Internal.GLTFScene
        • RoomleConfigurator.Internal.GlobalAPI
        • RoomleConfigurator.Internal.GroundReflectionConstructorParameters
        • RoomleConfigurator.Internal.GroundReflectionIntensityMaterialParameters
        • RoomleConfigurator.Internal.GroundReflectionParameters
        • RoomleConfigurator.Internal.HomagIxArticleParams
        • RoomleConfigurator.Internal.HomagIxHeaderParams
        • RoomleConfigurator.Internal.HomagIxOrderParams
        • RoomleConfigurator.Internal.InputEventAttatchment
        • RoomleConfigurator.Internal.KernelAccessCallbackI
        • RoomleConfigurator.Internal.KernelAttic
        • RoomleConfigurator.Internal.KernelFloor
        • RoomleConfigurator.Internal.KernelFloorMaterial
        • RoomleConfigurator.Internal.KernelObject
        • RoomleConfigurator.Internal.KernelObjectConfiguration
        • RoomleConfigurator.Internal.KernelRoomWall
        • RoomleConfigurator.Internal.KernelUnitFormatter
        • RoomleConfigurator.Internal.KernelUtilityForUi
        • RoomleConfigurator.Internal.KernelWall
        • RoomleConfigurator.Internal.KernelWallMaterial
        • RoomleConfigurator.Internal.LightSourceConfiguration
        • RoomleConfigurator.Internal.Listener
        • RoomleConfigurator.Internal.ListenerCallback
        • RoomleConfigurator.Internal.ListenersMap
        • RoomleConfigurator.Internal.LutImageDefinition
        • RoomleConfigurator.Internal.LutPassParameters
        • RoomleConfigurator.Internal.MeasurementBase
        • RoomleConfigurator.Internal.MessageObject
        • RoomleConfigurator.Internal.NodePlanObject
        • RoomleConfigurator.Internal.Object3DRoomleEventMap
        • RoomleConfigurator.Internal.ObjectCacheData
        • RoomleConfigurator.Internal.ObjectCacheEntry
        • RoomleConfigurator.Internal.ObjectMeasurements
        • RoomleConfigurator.Internal.ObjectToWallLine
        • RoomleConfigurator.Internal.OffsetCamera
        • RoomleConfigurator.Internal.OrthographicOffsetCamera
        • RoomleConfigurator.Internal.OutlineParameters
        • RoomleConfigurator.Internal.OutlinePassParameters
        • RoomleConfigurator.Internal.OutlineRendererParameters
        • RoomleConfigurator.Internal.PerspectiveOffsetCamera
        • RoomleConfigurator.Internal.Plan
        • RoomleConfigurator.Internal.PlanElement
        • RoomleConfigurator.Internal.PlanInteractionHandler
        • RoomleConfigurator.Internal.PlanMeasure
        • RoomleConfigurator.Internal.PlanModelViewHelper
        • RoomleConfigurator.Internal.PlanNode
        • RoomleConfigurator.Internal.PlanObject
        • RoomleConfigurator.Internal.PlanOverview
        • RoomleConfigurator.Internal.PlannerKernelCallbackI
        • RoomleConfigurator.Internal.PluginConfigMap
        • RoomleConfigurator.Internal.PoissonDenoiseParameters
        • RoomleConfigurator.Internal.PoissonDenoisePassParameters
        • RoomleConfigurator.Internal.PrepareImageOptions
        • RoomleConfigurator.Internal.PreviewComponent
        • RoomleConfigurator.Internal.PreviewLineComponent
        • RoomleConfigurator.Internal.PreviewLineSegment
        • RoomleConfigurator.Internal.PromiseExecutor
        • RoomleConfigurator.Internal.Rectangle
        • RoomleConfigurator.Internal.RectangleReferencePoints
        • RoomleConfigurator.Internal.RenderCache
        • RoomleConfigurator.Internal.RoomLightSourceDistribution
        • RoomleConfigurator.Internal.RoomleComponent
        • RoomleConfigurator.Internal.RoomleComponentFactory
        • RoomleConfigurator.Internal.RoomleToolsCoreUICallback
        • RoomleConfigurator.Internal.RubensAPI
        • RoomleConfigurator.Internal.SavedIdbData
        • RoomleConfigurator.Internal.ScenePlugin
        • RoomleConfigurator.Internal.ScenePluginHooks
        • RoomleConfigurator.Internal.SceneRendererChangeParameters
        • RoomleConfigurator.Internal.SceneRendererParameters
        • RoomleConfigurator.Internal.ScreenSpaceShadowMapConstructorParameters
        • RoomleConfigurator.Internal.ScreenSpaceShadowMapParameters
        • RoomleConfigurator.Internal.ScriptData
        • RoomleConfigurator.Internal.ShadowAndAoPassConstructorParameters
        • RoomleConfigurator.Internal.ShadowAndAoPassParameters
        • RoomleConfigurator.Internal.ShadowAndAoPassSettings
        • RoomleConfigurator.Internal.ShadowGroundPlaneParameters
        • RoomleConfigurator.Internal.ShadowLightSource
        • RoomleConfigurator.Internal.ShadowParameters
        • RoomleConfigurator.Internal.ShadowTypeParameters
        • RoomleConfigurator.Internal.StaticComponent
        • RoomleConfigurator.Internal.SubComponentWaiter
        • RoomleConfigurator.Internal.ToolsCoreContextCallback
        • RoomleConfigurator.Internal.ToolsCoreInterface
        • RoomleConfigurator.Internal.WallSide
        • RoomleConfigurator.Internal.PassUpdateStates
        • ServicesConfiguratorUiCallback.UIComponentInfo
        • ServicesConfiguratorUiCallback.Internal.ConfiguratorDebugCallbacks
        • ServicesConfiguratorUiCallback.Internal.ConfiguratorKernelContainer
        • ServicesConfiguratorUiCallback.Internal.KernelCube
        • ServicesConfiguratorUiCallback.Internal.PlannerKernelContainer
        • ServicesConfiguratorUiCallback.Internal.WallExtensionType
        • RoomleGlbViewer.RenderEntry
        • RoomleGlbViewer.Internal.GLBRenderWorkerListener
        • RoomleGlbViewer.Internal.RenderCameraInformation
        • RoomlePlanner.BatchPaintMaterial
        • RoomlePlanner.InteractionOptions
        • RoomlePlanner.RoomlePlannerCallback
        • RoomlePlanner.SceneEvents
        • RoomlePlanner.WallDefinition
        • RoomlePlanner.Internal.ConstructionMeasurements
        • RoomlePlanner.Internal.ConstructionPlanObject
        • RoomlePlanner.Internal.ExternalObjectAPI
        • RoomlePlanner.Internal.FloorAreaData
        • RoomlePlanner.Internal.LeftOrRightWallSide
        • RoomlePlanner.Internal.LocalStorageEntry
        • RoomlePlanner.Internal.PlanObjectEventInfo
        • RoomlePlanner.Internal.PrepareImageOptionsPlanner
        • RoomlePlanner.Internal.Store
        • RoomlePlanner.Internal.WallPlanObject
        • RoomlePlannerUiCallback.SelectionPayload
        • RoomlePlannerUiCallback.Internal.ConstructionMeasurementsTransferable
        • RoomlePlannerUiCallback.Internal.ExternalObjectUiCallback
        • RoomlePlannerUiCallback.Internal.ObjectMeasurementsTransferable
        • RoomlePlannerUiCallback.Internal.PlanObjectPosition
        • TypingsKernel.AddOnSpot
        • TypingsKernel.AssetRequest
        • TypingsKernel.AssetResponse
        • TypingsKernel.AssetType
        • TypingsKernel.ConfigurationExporter
        • TypingsKernel.ConfigurationObject
        • TypingsKernel.ConfiguratorKernelClass
        • TypingsKernel.DebugClient
        • TypingsKernel.DebugValueMapChange
        • TypingsKernel.DebugValueMapDump
        • TypingsKernel.Dimensioning
        • TypingsKernel.DockLine
        • TypingsKernel.DockPair
        • TypingsKernel.DockingLineSegment
        • TypingsKernel.EmscriptenList
        • TypingsKernel.EmscriptenMap
        • TypingsKernel.ExternalAttributeInformation
        • TypingsKernel.ExternalModuleInformation
        • TypingsKernel.HomagIxArticleData
        • TypingsKernel.KernelActionValue
        • TypingsKernel.KernelAddOnSpot
        • TypingsKernel.KernelAnimation
        • TypingsKernel.KernelAnimationAction
        • TypingsKernel.KernelCatalogItem
        • TypingsKernel.KernelComponent
        • TypingsKernel.KernelComponentTypeDto
        • TypingsKernel.KernelConfiguration
        • TypingsKernel.KernelConfigurationLoadedData
        • TypingsKernel.KernelContainer
        • TypingsKernel.KernelCube
        • TypingsKernel.KernelDockPairToLine
        • TypingsKernel.KernelDockPairToPoint
        • TypingsKernel.KernelEnum
        • TypingsKernel.KernelExternalObjectDocking
        • TypingsKernel.KernelMatrix4
        • TypingsKernel.KernelMeshAnimation
        • TypingsKernel.KernelMeshAttributes
        • TypingsKernel.KernelMeshBuffer
        • TypingsKernel.KernelObjectInformation
        • TypingsKernel.KernelObjectPtrList
        • TypingsKernel.KernelParamKeyValuePair
        • TypingsKernel.KernelParameter
        • TypingsKernel.KernelParameterGroup
        • TypingsKernel.KernelParameterValue
        • TypingsKernel.KernelPart
        • TypingsKernel.KernelPartList
        • TypingsKernel.KernelPartListParameter
        • TypingsKernel.KernelPartListPrice
        • TypingsKernel.KernelPlanObject
        • TypingsKernel.KernelPlanObjectBase
        • TypingsKernel.KernelPlanObjectComponent
        • TypingsKernel.KernelPossibleChild
        • TypingsKernel.KernelRange
        • TypingsKernel.KernelValue
        • TypingsKernel.KernelVariable
        • TypingsKernel.KernelVariant
        • TypingsKernel.KernelVector2f
        • TypingsKernel.KernelVector3
        • TypingsKernel.KernelVector3f
        • TypingsKernel.KernelViewType
        • TypingsKernel.ObjectConfigurationType
        • TypingsKernel.ObjectGroupPtr
        • TypingsKernel.ParamterKeyValue
        • TypingsKernel.PlanObject
        • TypingsKernel.UiKernelParameter
        • TypingsKernel.UiKernelRange
        • TypingsKernel.UiPlanObject
        • TypingsKernel.UiPossibleChild
        • TypingsKernel.UiPossibleChildTag
        • TypingsKernel.VariantsList
        • TypingsKernel.WasmDbEntry
        • TypingsRapiTypes.AdditionalInfo
        • TypingsRapiTypes.Asset
        • TypingsRapiTypes.AssetItem
        • TypingsRapiTypes.Element
        • TypingsRapiTypes.LinksCollection
        • TypingsRapiTypes.RapiAdditionalContent
        • TypingsRapiTypes.RapiAuth
        • TypingsRapiTypes.RapiBaseColor
        • TypingsRapiTypes.RapiCatalog
        • TypingsRapiTypes.RapiComponent
        • TypingsRapiTypes.RapiConfiguration
        • TypingsRapiTypes.RapiConfigurationEnhanced
        • TypingsRapiTypes.RapiConfiguratorSettings
        • TypingsRapiTypes.RapiElement
        • TypingsRapiTypes.RapiFavorite
        • TypingsRapiTypes.RapiItem
        • TypingsRapiTypes.RapiJson
        • TypingsRapiTypes.RapiJsonBox
        • TypingsRapiTypes.RapiMaterial
        • TypingsRapiTypes.RapiMaterialGroup
        • TypingsRapiTypes.RapiMaterialShading
        • TypingsRapiTypes.RapiMesh
        • TypingsRapiTypes.RapiMeshData
        • TypingsRapiTypes.RapiMeta
        • TypingsRapiTypes.RapiPackage
        • TypingsRapiTypes.RapiPlan
        • TypingsRapiTypes.RapiPlanAsset
        • TypingsRapiTypes.RapiPlanSetting
        • TypingsRapiTypes.RapiPlanSnapshotGetData
        • TypingsRapiTypes.RapiPlanSnapshotGetDataWith3dUrls
        • TypingsRapiTypes.RapiPlanSnapshotPostData
        • TypingsRapiTypes.RapiPrice
        • TypingsRapiTypes.RapiRetailer
        • TypingsRapiTypes.RapiRole
        • TypingsRapiTypes.RapiShortId
        • TypingsRapiTypes.RapiSkin
        • TypingsRapiTypes.RapiTag
        • TypingsRapiTypes.RapiTagForUi
        • TypingsRapiTypes.RapiTagGeneric
        • TypingsRapiTypes.RapiTenant
        • TypingsRapiTypes.RapiTexture
        • TypingsRapiTypes.RapiUser
        • TypingsRapiTypes.RapiUserSetting
        • TypingsRapiTypes.RoomleSortable
        • TypingsRapiTypes.UserAction
      • Modules
        • CommonInterfaces
        • EnvironmentDynamicEnvironmentSettingLoader
        • LightsettingDynamicLightSettingLoader.Internal
        • LightsettingDynamicLightSettingLoader
        • SceneSettingsLoader
        • UtilsShims.Internal
        • UtilsShims
        • Configurator.Internal
        • Configurator
        • RoomleConfigurator.Internal
        • RoomleConfigurator
        • ServicesConfiguratorUiCallback.Internal
        • ServicesConfiguratorUiCallback
        • GlbViewer
        • RoomleGlbViewer.Internal
        • RoomleGlbViewer
        • Planner
        • RoomlePlanner.Internal
        • RoomlePlanner
        • RoomlePlannerUiCallback.Internal
        • RoomlePlannerUiCallback
        • TypingsKernel.Internal
        • TypingsKernel
        • TypingsRapiTypes
  • Rubens admin
    • Rubens Admin Help
      • Getting started
      • Dashboard
      • Catalogs
      • Tags
      • Products
      • Components
      • Meshes
      • Materials
      • Import/Export
      • Administration
    • Requirements & Sample products
      • 3D Assets Requirements
      • Material & Textures Requirements
      • Sample products and files
  • Content Creation
    • Overview
    • Material Definition
      • Ideas
      • References
      • Resources
    • Blender Addon
    • Scripting Resources
      • Environment Setup for Making Roomle Content
      • Hello World Example for Roomle Component Scripting
      • Rubens CLI Setup and Usage Tutorial
      • Using Code Snippets to Instantly Load Offline Component Definitions
      • How to Debug Content
      • Introduction to Making Level 2 Material Configurators
      • Meshes Conversion and Upload
      • Set Up Materials
      • Level 2 Component Definition
      • Set Up Product Entries
      • Level 2-4 Content Requirements for 3D Data
      • 3D Models & Meshes
      • Prerequisities for Roomle Content Scripters
      • Level 3 Component Definition Basics
      • Parameters
      • Roomle Script Language Reference
      • Example: Scripting a Table from Primitives
      • Example: Parameterized Shelf System
      • SubComponents
      • Basic Docking Topics
      • Global Parameters and Parameter Context
      • Advanced Part List Topics
      • Dimensioning
      • Pricing
      • Advanced Docking Logic
      • Using GetMaterialPropery Function
      • Tenant Settings
      • Roomle Content Project Data Structure
      • Roomle Content Naming Conventions
      • Processes and Good Practices
      • Real Configurator Examples - Chairs, Armchairs, Footstools
      • Simple Colour Changing Product Scripting Example
      • 4-Post Shelving System Example
      • Office Table System Example
      • Scripting Template: Complex Sofa
      • Scripting Template: Two-Part Sofa System
      • Scripting Template: Simple Sofa System
      • Scripting Template: Wardrobe
      • Processing Meshes with Blender
    • Importer
    • IDM
      • About IDM
      • Data format
      • Extension files
      • Conversion
      • Docking logic
      • Part lists
      • Price logic
    • RoomleScript Reference
      • Configurationformat
      • Configuration and Plan
      • Error code list
      • Configurator Features
      • Configurator Script
      • Coordinate Systems
  • WHATS NEW?
    • 2025
      • May 2025
      • April 2025
      • March 2025
      • February 2025
      • January 2025
    • 2024
      • December 2024
      • November 2024
      • October 2024
      • September 2024
      • August 2024
      • July 2024
      • June 2024
      • May 2024
      • April 2024
      • March 2024
  • REST API
    • REST API Reference
      • RAPI Documentation
      • Webhook
      • Endpoints
        • AssetController
        • Authentication
        • CatalogController
        • CatalogElementAdditionalInfo
        • ComponentController
        • ConfigurationController
        • ConfiguratorController
        • Item
        • MaterialController
        • MeshController
        • PlanController
        • PlanSnapshotController
        • PriceController
        • PriceServiceController
        • ShortIdController
        • Skin
        • Statistics
        • TagController
        • Tenant
        • TextureController
        • User
        • UserSettings
    • Product Matching
  • Changelogs
    • Rubens Configurator Changelog
    • Rubens SDK Changelog
    • Rubens Admin Changelog
    • Material Definition Changelog
Powered by GitBook
On this page
  • Overview
  • Description
  • Catalog Object
  • JSON Fields
  • Concepts
  • CatalogDrafts
  • Visibility
  • Batch Uploader Feedback Codes
  • API Reference
  • Catalogs
  • ElementAdditionalInformation
  • Items
  • Materials
  • Tags
  • Components
  • Prices
  • Meshes
  • Drafts
  • Imports
  1. REST API
  2. REST API Reference
  3. Endpoints

CatalogController

PreviousAuthenticationNextCatalogElementAdditionalInfo

Last updated 1 month ago

Overview

Description

Path /v2/catalogs

Handles all request regarding catalog: creating, updating, deleting.

Catalog Object

An example for a catalog JSON object.

{
  "catalog": {
    "translations": [
      {
        "id": "7fb1db43-b997-4703-be83-6e3e975b901a",
        "language": "en",
        "label": "label in language",
        "description": "description in language",
        "created": "2024-05-24T07:42:20.000Z",
        "updated": "2024-05-24T07:42:21.000Z"
      }
    ],
    "id": "<catalog_id>",
    "free": false,
    "public": false,
    "featured": false,
    "created": "2024-05-24T07:42:20.000Z",
    "updated": "2024-05-24T07:42:21.000Z",
    "active": true,
    "hidden": false,
    "visibilityStatus": 0,
    "publiclyOrderable": false,
    "mandatory": false,
    "draftOf": "<parent_catalog_id>",
    "draftStatus": {
      "draftCatalogId": "<draft_catalog_id>",
      "targetCatalogId": "<live_catalog_id>",
      "status": 10,
      "progress": 0,
      "locksLiveCatalog": true,
      "lockDraftCatalog": false,
      "mergePolicies": {}
    },
    "links": {
      "items": "/catalogs/<catalog_id>/items",
      "catalogSets": "/catalogs/<catalog_id>/catalogSets",
      "allItems": "/catalogs/<catalog_id>/allItems",
      "components": "/catalogs/<catalog_id>/components",
      "materials": "/catalogs/<catalog_id>/materials",
      "textures": "/catalogs/<catalog_id>/textures",
      "allTags": "/catalogs/<catalog_id>/allTags",
      "rootTags": "/catalogs/<catalog_id>/rootTags",
      "retailers": "/catalogs/<catalog_id>/retailers",
      "retailerInfos": "/catalogs/<catalog_id>/retailerInfos",
      "visibleToTenants": "/catalogs/<catalog_id>/visibleToTenants",
      "visibleToUsers": "/catalogs/<catalog_id>/visibleToUsers",
      "meshes": "/catalogs/<catalog_id>/meshes",
      "imports": "/catalogs/<catalog_id>/imports",
      "catalogElementAdditionalInfos": "/catalogs/<catalog_id>/catalogElementAdditionalInfos"
    },
    "language": "en",
    "name": "catalog name",
    "label": "catalog label",
    "orderable": false,
    "requestable": false,
    "retailPriceAllowed": false,
    "hiddenByUser": false,
    "hiddenByTenant": true,
    "tenantIsOwner": true,
    "purchased": false,
    "tags": [
      "<catalog tags>"
    ],
    "rootTags": [
      "<catalog root tags>"
    ],
    "tenant": "<my_tenant_id>",
    "branded": true,
    "shownInOverview": false,
    "accessibleByTenants": [
      "tenant_name"
    ]
  }
}

Responses are usually wrapped in a meta object, which contains additional information about the response and may contain a single catalog or a list of catalogs.

{
    "catalog": 
        {catalogObject},
    "catalogs": [
        {catalogObject1},
        {catalogObject2},
        ...
    ],
    "meta": {
        "lastUpdated": "2018-01-23T09:15:39.000Z",
        "cached": false,
        "total": 2,
        "serverTime": "2019-03-14T12:29:08.549Z"
    }
}

JSON Fields

  • id

  • active - deprecated - superseded by visibilityStatus

  • hidden - deprecated - superseded by visibilityStatus

  • visibilityStatus : possible values

    • 0 : SHOWN (visible everywhere)

    • 1 : SHOWN_IN_CMS (visible only in cms context)

    • 2 : ARCHIVED (hidden everywhere)

  • created

  • updated

  • draftStatus (Explained below in the concepts section)

  • tenant

  • links (api links to the materials, items etc. in the catalog)

  • draftOf (If this is a draft catalog then this field denotes the live Catalog from which this draft is created or the live catalog this draft is pointing to)

Concepts

CatalogDrafts

It is possible to create drafts of catalogs for updating data without directly changing live data. A catalog can have multiple drafts simultaneously. Each draft belongs to exactly one catalog.

Each Draft has an associated CatalogDraftStatus. The status contains additional information like

  • mergePolicies - the merge policies to be used when the draft is published

  • releaseLog - the log of the publishing process

The draftStatus can be updated by including the status object in the PUT /:draftId (updating the catalogDraft directly).

Possible Status of the draft:

  • FAILED(-1)

  • CREATED(0)

  • IN_PROGRESS(10)

  • READY_TO_REVIEW(20)

  • READY_FOR_PUBLISHING(30)

  • IS_PUBLISHED(40)

Publishing

For publishing a draft, its status must first be set to READY_FOR_PUBLISHING. Any draft with this status can be published by sending a POST /:productionCatalogId/drafts/:draftId/publish where productionCatalogId is the id of the live catalog.

When a draft is published, the data of the draft is moved to the live catalog according to the merge policies. The draft Catalog is completely removed but an archived catalog is created with the same id as the draft catalog. The archived version includes a snapshot of the catalog before the publishing. Also including the draftStatus from the original draft with the status updated to PUBLISHED.

In case of any error, the archived snapshot can be put back into the live catalog by calling POST /:productionCatalogId/drafts/:draftId/unpublish. This flips all archived data back to live and any corresponding live data back to the draft and sets the draft back to READY_FOR_PUBLISHING.

Visibility

A short description how our catalog visibility currently works and what the thoughts behind are.

We differ between two aspects for each element (item, material, tags, etc.)

  1. allowed to see an element

  2. wants to see an element (will be referred as visible in further explanation)

Every request will be checked if the requester is allowed to see requested elements. The second check will be different based on what the requester is actually asking. To have a better base to explain take a look at following sketch.

               Catalog
     /       /        \         \
Material -- Tags -- Items -- Components
    |                  |
Textures           AdditionalContent        

All requests which will go down in the hierarchy for example v2/catalogs/:id/items will return all items which the requester is allowed to see and not only visible. That means - there may be more items in the result set, than the requester wants to show in the catalog. Therefore, a property like hiddenis set on the element and the requester has to decide.

All requests which are sideways like v2/items/:id/tags or v2/tags/:id/materials will return all tags or material which are assigned to that tag and will be restricted to allowed to see and only visible elements. That means - the requester only gets elements it wants to see.

The last possible way to query elements is by attaching a filter. For example an ids[] filter. Which will return an element if the requester is allowed to see that element. If the requester is instead asking for all items or materials via v2/items or v2/materials only elements which are allowed to see and are visible will be returned.

Batch Uploader Feedback Codes

We differentiate between three different types.

  • infos

  • warnings

  • errors

Whereby infos are more infos about the process (currently not used) and warnings is a report, that something expected was missing but will not stop the process.

There are feedbacks with additional information like which column and line number this feedback is meant for, but there are also more general errors like not being able to read a ZIP file.

The Expected batch upload document is utf8. If the encoding is not utf8 we try guessing the encoding and return a warning.

Warnings

Code
Description

1011

CSV file is missing data

1012

Unsupported encoding

1013

CSV contains empty lines

1014

CSV contains a deprecated column

1020

File structure in ZIP is not supported

1021

File in ZIP not found

1022

File in ZIP is not used by the data within CSV

1023

Folder in ZIP is not a valid combined id

1024

Ignored data found

1110

Empty file

1111

cannot create archived element

1120

Expected but not mandatory field is empty

1121

Data value is superseded by other data

1126

Old id used

1130

One or more given tag ids not found

1301

Currency symbol have more than one symbol

Errors

Code
Description

2000

Wrong separator used, please use , instead

2001

Missing rights

2002

Limit reached

2005

Invalid ID - tag-id already belongs to another catalog

2010

CSV file is missing

2011

CSV file is not readable

2012

ID contains invalid Characters(-+^*\s)

2020

ZIP file is missing

2021

ZIP file is not readable

2022

ZIP file does not contain a CSV file

2023

ZIP file does not contain needed file

2024

File in ZIP not readable or invalid

2100

Could not find element with id

2110

Invalid line

2111

Invalid line - wrong number of columns

2112

Invalid line - multiple lines with same id

2120

Mandatory ID column is empty

2121

Mandatory column is empty

2122

Invalid json in column

2123

Mismatching ids in json and ID column

2124

Missing file scheme in column

2125

Column is invalid (probably contains :)

2126

Old id used

2127

Invalid id, id start with catalog id

2128

referenced id in data field is invalid

2130

Error selecting element

2131

Error adding element

2132

Not allowed to override, please set allowUpdate

2133

Error updating element

2200

DAP job is already processing

2210

No valid file entry was found in given data. No DAP job got created

2211

Error on preparing DAP job

2220

Error on creating DAP job

2300

Error sending prices to price engine

2301

Error creating prices on price engine

API Reference

Catalogs

POST / - Create-Catalog

Create a new Catalog based on the body in the post request.

Accepts: application/json Generates: application/json

GET /:id

Returns the specific catalog

Generates: application/json

PUT /:id (json)

Accepts: application/json Generates: application/json

Parameters:

  • id : the external identifier of the catalog

PUT /:id (multipart)

updates assets on a catalog

Accepts: multipart-formdata

Generates: application/json

parameters:

  • file : datafile to be uploaded

  • type: type of the asset

possible types are:

  • images:

    • "coverImage" - as image file

    • "brandIcon" - as image file

    • "featuredImage" - as image file

DELETE /:id/:assetType

deletes an asset from a specific catalog

Accepts: application/json Generates: application/json

possible asset types are:

  • "coverImage"

  • "brandIcon"

  • "featuredImage"

Response (204 NO CONTENT): deleted

DELETE /:id

Accepts: application/json

Generates: application/json

No live Catalogs can be deleted at this time. Only Drafts can be deleted. It deletes also Items, Tags, Import History e.g.

Response (204 NO CONTENT): deleted

ElementAdditionalInformation

ElementAdditionalInformation object

{
  "id": "7fb1db43-b997-4703-be83-6e3e975b901a",
  "type": "parameter",
  "key": "key",
  "parentIdFilter": "parentIdFilter",
  "catalog": "catalog",
  "tooltip": {
    "en": "tooltip in english",
    "de": "tooltip in german"
  },
  "fullInfo": {
    "key": "value"
  }
}

ElementAdditionalInformation Fields

  • id: globally unique id of this element (automatically generated)

  • type: type of the information. This defines how the key and parentIdFilter is interpreted. Can be parameter, paramValue, material, component or item

  • key: the key of the element which this info belongs to. Interpretation depends on the type

  • parentIdFilter: space seperated list of ids where to apply this. usually extIds of elements within the catalog

  • catalog: id of the catalog where this information belongs to

  • tooltip: map of language:tooltip pairs containing the tooltip to show for this element in this language

  • fullInfo: json containing additional information linked to the given key

CSV fields

  • additionalInfo_id: globally unique id of this element (automatically generated)

  • type: type of the information. This defines how the key and parentIdFilter is interpreted. Can be parameter, paramValue, material, component or item

  • key: the key of the element which this info belongs to. Interpretation depends on the type

  • parentIdFilter: space seperated list of ids where to apply this. usually extIds of elements within the catalog

  • tooltip: map of language:tooltip pairs containing the tooltip to show for this element in this language

  • fullInfo: json containing additional information linked to the given key

GET /:id/elementAdditionalInformations

Generates: application/json, text/csv

Returns all elements of requested catalog

Response:

{
    "catalogElementAdditionalInfos": [
        infoObject1,
        infoObject2,
        ...
    ],
    "meta": {
        "lastUpdated": "2018-01-23T09:15:39.000Z",
        "total": 2,
        "serverTime": "2019-03-14T12:29:08.549Z"
    }
}

POST /:id/elementAdditionalInformations

Batch uploading elementAdditionalInformations

Accepts: multipart-formdata Generates: application/json

Parameters:

  • file: a csv file

  • allowUpdate: boolean - whether existing elements are allowed to be updated/overridden. default is false.

If any error occurs, no changes are made. If the content contains an existing id, but allowUpdate = false, this is interpreted as an error and nothing is changed.

CSV fields

Items

Item object

JSON fields

GET /:id/items

Generates: application/json, text/csv

Returns all items of requested catalog

Query Parameters

Name
Type
Comment

deltaSince

Date String with timezone

example 2016-06-01T07:54:07.000Z. The response will be reduced toonly updated items after given date

POST /:id/items

Accepts: multipart-formdata

Generates: json

Batch uploading items

Parameters:

  • file: a csv file

  • allowUpdate: boolean - whether existing materials are allowed to be updated/overridden. default is false.

If any error occurs, no changes are made. If the content contains an existing id, but allowUpdate = false, this is interpreted as an error and nothing is changed.

If any error occurs during this process (preprocessing, checking and creating packages), the request will be canceled, no changes are made and a detailed import log with warnings and errors will be returned as JSON. If the content contains an existing id, but allowUpdate = false, this is interpreted as an error and nothing is changed.

CSV fields

  • tag_ids_to_add : all tags ids to add separated by ' ' (whitespace).

  • tag_ids_to_remove : all tags ids to remove separated by ' ' (whitespace).

  • asset_source : can contain a public URL from where to take the asset source for this item

POST /:id/threeDimensionalAssets - DEPRECATED

since 2.42.0 - August 2024

Materials

GET /:id/materials

Generates: application/json, text/csv

Query Parameters

Name
Type
Comment

embedTextures

Boolean

If true the textures are included as embedded json objects/ csv columns, default is false

returns all materials from the given catalog, when in cms-context this returns all the hidden and inactive material as well.

POST /:id/materials

Accepts: multipart-formdata

Generates: json

Batch uploading materials

Parameters:

  • file: either a csv or a zip with a csv within and additional files like images.

  • allowUpdate: boolean - whether existing materials are allowed to be updated/overriden. default is false.

If any error occurs, no changes are made. If the content contains an existing id, but allowUpdate = false, this is interpreted as an error and nothing is changed.

The csv can contain references to files in the zip (zip://...) if its part of a zip, or url links for images that should be used as new material thumbnail/texture image.

CSV fields

  • tag_ids_to_add : all tag ids to add separated by ' ' (whitespace).

  • tag_ids_to_remove : all tag ids to remove separated by ' ' (whitespace).

  • texture_mappings_to_delete: the textures to be deleted, defined by type. seperated by ' ' (whitespace)

If texture fields are provided, the given textures replace existing textures with those types. Only textures listed in texture_mappings_to_delete are deleted.

  • tex<N>_mapping: the mapping for the texture (e.g. "RGB", "RGBA", "XYZ" ...)

  • tex<N>_mmwidth

  • tex<N>_mmheight

  • tex<N>_tileable: 0 for false, 1 for true

  • tex<N>_image:

    • zip:// for relative path in the zip

    • https:// for public URL for the image to be used

Tags

GET /:id/tags

Generates: application/json, text/csv

returns all tags from the given catalog.

POST /:id/tags

Accepts: multipart-formdata

Generates: json

Batch uploading tags

Parameters:

  • file: input file for the upload (.csv)

  • allowUpdate: boolean whether existing tags are allowed to be updated/overriden. default is false.

If any error occurs, no changes are made.

CSV fields

  • ignores the fields

    • item_ids

    • material_ids

    • component_ids

    • parent_tag_ids

  • additionally includes the (optional) fields

    • material_ids_to_add : all material ids to add separated by ' ' (whitespace).

    • material_ids_to_remove : all material ids to remove separated by ' ' (whitespace).

    • items_ids_to_add : all items ids to add separated by ' ' (whitespace).

    • items_ids_to_remove : all items ids to remove separated by ' ' (whitespace).

    • component_ids_to_add : all component ids to add separated by ' ' (whitespace).

    • component_ids_to_remove : all component ids to remove separated by ' ' (whitespace).

    • parent_tag_ids_to_add : all parent_tag ids to add separated by ' ' (whitespace).

    • parent_tag_ids_to_remove : all parent_tag ids to remove separated by ' ' (whitespace).

GET /:id/tagBatch Deprecated

use /:id/tags instead with header accept = text/csv

POST /:id/tagBatch Deprecated

use /:id/tags instead with header accept = text/csv

PUT /:id/tagBatch Deprecated

use POST /:id/tags instead with header accept = text/csv and query parameter allowUpdates = true

GET /:id/allTags

Generates: json

Returns all tags of requested catalog

If the request comes from a cms-context, it will also return the hidden tags.

Components

GET /:id/components

Generates: application/json, text/csv

returns all components from the given catalog.

POST /:id/components

Batch uploading components

Accepts: multipart-formdata Generates: json

Parameters:

  • file: input file for the upload (.csv) or (.zip)

  • allowUpdate: boolean whether existing components are allowed to be updated/overridden. default is false.

ZIP explanation:

The .zip file has to contain a .csv file and component definitions as .json files. In order correctly detect your wanted component definition file, you have to add a column "component_definition" to your .csv file. As values the columns should contain zip://fileName.json. The value could also contain a directory structure to better organize your .zip file. Which could yield to following value zip://aFolder/aSecondFolder/component1.json

Should there be any error like not prefixing with zip:// or just having a typo or forgot to add files to your zip, a bad request (400) will be thrown and an import log will be attached. In the import log you should be able to read, what went wrong or has to be adjusted.

The component_definition column can also contain weblinks. In this case its assumed that the link returns a componentDefinition as UTF-8 string.

If any error occurs, no changes are made. If the content contains an existing id and allowUpdate = false a conflict (

  1. will be returned with an import log.

CSV fields

  • ignores the fields:

    • tag_ids

  • additionally includes (optional) fields:

    • tag_ids_to_add : all tags ids to add separated by ' ' (whitespace).

    • tag_ids_to_remove : all tags ids to remove separated by ' ' (whitespace).

GET /:id/componentBatch Deprecated

POST /:id/componentBatch Deprecated

PUT /:id/componentBatch Deprecated

Prices

GET /:id/prices

Generates: application/json, text/csv

Returns all prices from the given catalog. Requesting user has to have admin rights for the given catalog.

POST /:id/prices

Accepts: multipart-formdata Generates: application/json

Batch uploading prices

Side information:

Given CSV will be parsed and converted to fit our price engine needs and then forwarded to it. There can be errors where the upload is correct but we encounter problems when accessing our price engine.

Meshes

GET /:id/meshes (json)

Generates: application/json, text/csv

returns all the mesh objects in the given catalog.

Query Parameters

Name
Type
Comment

embedSources

Boolean

true/false if true the meshes contain the assetSource column with links to saved sources. This allows a reimport of the meshes. Default is false

GET /:id/meshes (zip)

Generates: application/zip

query-param:

  • format - format of requested meshes (accepted values - crt)

  • quality - quality level of meshData (accepted value Integer 0-100)

POST /:id/meshes (multipart)

Accepts: multipart-formdata Generates: application/json

Batch uploading meshes

Parameters:

  • file: a csv

  • allowUpdate: boolean - whether existing meshes are allowed to be updated/overridden. default is false.

If any error occurs, no changes are made. If the content contains an existing id, but allowUpdate = false, this is interpreted as an error and nothing is changed.

CSV fields

Drafts

GET /:id/drafts

Generates: application/json

Returns all catalogs that are drafts of the given catalog, including published ones. Requesting user has to have Catalog Management rights for the given catalog.

{
  "catalogs": [
    <listOfCatalogObjects>
  ]
}

POST /:id/drafts (json)

Accepts: application/json

Generates: application/json

used to create an empty draft of this catalog. If it is the first draft for this catalog, locksLiveCatalog is set to true. In case there are already drafts active, it's set to false.

POST /:id/drafts (multipart)

Accepts: multipart-formdata Generates: application/json

used to create a draft of this catalog for automatic importing.

Send a zip and type to this endpoint for starting the automatic import. will happen asynchronously.

bodyparameters:

  • file: zip file to import from

  • type: type id of the source format. Currently supported: bb, idmp,idmw

PUT /:id/drafts/:draftid - DEPRECATED

since 2.35.3 - October 2022

POST /:id/drafts/:draftId/publish - publishes this draft

Accepts: application/json Generates: application/json

publishes all data from this draft according to the defined merge policies

POST /:id/drafts/:draftId/unpublish - reverts the changes of a published this draft

Accepts: application/json Generates: application/json

undoes the publishing of this draft. any data that was added to the catalog (was in the draft before but not in the catalog) stays in the catalog even after the unpublish. Only data that was swapped between live and draft is swapped back.

Imports

CatalogImportStatus object example

{
  "id": "uniqueIdentifierString",
  "draftCatalogExtId": "catalogId_draft5",
  "sourceCatalogExtId": "catalogId",
  "importType": "idmw",
  "mergePolicies": {
    "items": "replace",
    "components": "ignore",
    "materials": "merge",
    "tags": "ignore",
    "prices": "replace",
    "meshes": "ignore"
  },
  "status": 10,
  "progress": 100,
  "importLog": {
    "messages": [
      {
        "context": "importer",
        "type": "ERROR",
        "message": "an error message",
        "detail": ""
      },
      {
        "context": "importer",
        "type": "WARN",
        "message": "a warning message",
        "detail": ""
      },
      {
        "context": "importer",
        "type": "INFO",
        "message": "an info message",
        "detail": ""
      }
    ],
    "numWarnings": 1,
    "numErrors": 1
  },
  "email": "import.triggered.by@email.com",
  "created": "2021-02-13T23:31:30.000Z",
  "updated": "2021-08-13T23:51:42.000Z",
  "sourceFile": "https://roomle-catalogs.storage.googleapis.com/source/file/location/source_1234567890.zip"
}

CatalogImportStatus fields

  • id - String - unique id

  • draftCatalogExtId - String - externalId of the draft catalog

  • sourceCatalogExtId - String - externalId of the source catalog

  • importType - String - type of import

  • mergePolicies - JSONObject - nested MergePolicies json object - contains the Merge policies used for the import

  • status - Integer - integer representing the status

    • CREATED(10)

    • PROCESSING(20)

    • SUCCESS(30)

    • FAILED(-1)

  • progress - Integer - integer representing the current progress of the import (0-100)

  • importLog - String - serialized ImportLog object - contains the logs of the import process

  • email - String - email of the user who started the import

  • created - Date - date of creation

  • updated - Date - date of update

  • sourceFile - String - url of zip file used for the import

GET /:id/imports

Accepts: application/json Generates: application/json

Returns a list of the imports for the given draft catalog.

POST /:id/imports (multipart)

Accepts: multipart-formdata Generates: application/json

used to make re-imports into existing drafts. A reimport is only possible for a draft that originated as an import.

The multi-part must contain:

  • file - the source file for the import

  • mergePolicies - String - serialized merge policies between the current draft and the reimport are required

  • type: type id of the source format. Currently supported: bb, idmp,idmw

PUT /:id/imports/:importId

Accepts: application/json Generates: application/json

used to update the status of an import. Response contains the updated import object.

Body:

Response (201 CREATED):

Response (200 OK):

Response (200 OK): updated .

Response (200 OK): updated .

For more information on the assets, please check

For more information on the assets, please check

ElementAdditionalInformation objects are described in

Contains all fields specified in .

check

Response (200 OK): list of

Contains all field specified in Ignores the content of tag_ids. Additionally it includes the (optional) fields

use instead

Response (200 OK): list of

Contains all field specified in including the (optional) fields

Response (200 OK): list of

Contains all field specified in :

Response (200 OK): list of

Response (200 OK): list of

Contains all field specified in

use instead

use instead

use instead

Response (200 OK): list of

Response (200 OK): Objects are as described in the mesh )

returns a zip containing the meshData for the given catalog, that match the query params. Currently supports only crt format returned quality will be equal, better or closest match. The zip also contains a csv, the same returned by the

Contains all field specified in the . The asset_source column must contain weblinks. Its assumed that the link returns a valid mesh file of obj, ply or crt format. The API will process the sources asynchronously.

use instead

ElementAssets
ElementAssets
CatalogElementAdditionalInformation JSON Object
Description
Catalog Object
JSON Fields
Concepts
CatalogDrafts
Publishing a draft
Visibility
Batch Uploader Feedback Codes
Warnings
Errors
API Reference
Catalogs
POST / - Create-Catalog
GET /:id
PUT /:id (json)
PUT /:id (multipart)
DELETE /:id/:assetType
DELETE /:id
Items
Item object
GET /id/items
POST /id/items
Materials
GET /id/materials
POST /id/materials
Tags
GET /id/tags
POST /id/tags
GET /id/allTags
Prices
GET /id/prices
POST /id/prices
Components
GET /id/components
POST /id/components
Meshes
GET /id/meshes (json)
GET /id/meshes (zip)
GET /id/meshes (csv)
POST /id/meshes (multipart)
Drafts
GET /id/drafts
POST /id/drafts - Create empty draft
POST /id/drafts - Create from ZIP
Imports
CatalogImportStatus Object
CatalogImportStatus Fields
GET /id/imports
POST /id/imports
PUT /id/imports/:importId
Catalog JSON Object
Catalog JSON Object
Catalog JSON Object
Catalog Json Object
Catalog Json Object
CSV fields
POST /id/items
GET /:id/components
POST /:id/components
POST /:id/components
csv endpoint
GET /id/meshes (csv)
POST /:id/imports/
Tag Object
Tag Object
Tag Object
Material Object
Material CSV fields
Item JSON Object
Item Object
Item CSV fields
Price Object
Component Object
Component CSV Fields
GET