# ComponentController

# Overview

# Description

Path /v2/components

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

# Component JSON Object

An example for a component JSON object.

{
    "externalIdentifier": "door_1",
    "catalog": "roomle_white_furniture",
    "id": "roomle_white_furniture:door_1",
    "type": "door",
    "detailType": "other",
    "configuration": "a configuration JSON which describes this configuration.",
    "restrictionsForCore": "Json array of restrictions to be forwarded to the core",
    "active": false,
    "updated": "2016-06-01T07:54:07.000Z",
    "created": "2016-01-13T11:25:17.000Z",
    "perspectiveImage": "https://url-of-perspectiveImage",
    "labels": [],
    "orderable": false,
    "label": "Door",
    "language": "en",
    "links": {
        "tags": "/components/roomle_white_furniture:door_1/tags"
    },
    "version": 0
}

# fields

  • externalIndentifier
  • catalog
  • id
  • type
  • detailType
  • configuration
  • restrictionsForCore
  • active
  • updated
  • created
  • prespectiveImage
  • labels
  • orderable
  • label
  • language
  • links
  • version

# API Reference

# GET /:id

Generates: json

Returns a specific component.

Response:

Component objects are described in section Component JSON Object

{
    "component": componentObject
}

# POST /

Creates a new component.

Accepts: application/json Generates: application/json

Response: Component object as described in section Component JSON Object

{
    "component": componentObject
}

# PUT /:id

Updates an existing component.

Accepts: application/json Generates: application/json

Response: Component object as described in section Component JSON Object

{
    "component": componentObject
}

# GET /:id/tags

Generates: json

Returns all tags which have are assigned to this component.

Response:

Tag objects are described in section Tag JSON Object

{
    "tags": [
        tagObject1,
        tagObject2,
        ...
    ],
    "meta": {
        "total": 2,
        "serverTime": "2019-03-14T13:02:37.222Z"
    }
}

# Component restrictions

Path /v2/components/:id

Restrictions are used to restrict views from showing parameters, parameter-values or addons. A Restriction contains

  • embedId or tenantId : defines where this restriction applies. Either the given tenant in roomle, or the embedding (configurator). if none is given the restriction is global.
  • fromOwner : defines if this restriction is managed by the owner of the catalog, if false, the owner of the target tenant/embed manages it.
  • active : if this restriction is currently active
  • restrictionTarget : "parameter", "valueIn:" or "addOn" what to apply this restriction on
  • restrictionType : EXCLUDE(1) or RESTRICT_TO(2) : exclude means this value should not be shown, restrict_to means only these values should be shown.
  • restrictionValue : the value of the restriction
{
    "id":"idOfTheRestriction",
    "fromOwner":true,
    "embedId":"configuratorId",
    "restrictionTarget":"paramValue:width",
    "restrictionType":2,
    "restrictionValue":"120"
    "active":true
}

# GET /restrictions

Generates: json

returns the restrictions of this component manageable by the current tenant (fromOwner if tenant is owner, matching tenantId or embedds where this tenant is the owner)

# POST /restrictions

Accepts: json

Generates: json

creates a new restriction with the given values

# PUT /restrictions/:id

Accepts: json

Generates: json

updates the given restriction with the given values

# DELETE /restrictions/:id

deletes the given restriction

# GET /:id/perspectiveImage

returns a temporary redirect (307) to the URL of the perspectiveImage for this component