# MaterialController

# Overview

# Description

This is a material.

Path /v2/materials

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

query-params for every GET-call:

  • embedTextures: true/false if true the materials contain textureObjects additionally to the textures array (with the ids) so that the client doesn't have to request them seperatly

# Material JSON object

An example for a material json object.

{
    "externalIdentifier": "materialExtId1",
    "version": 0,
    "id": "catalog1:materialExtId1",
    "color": "128,128,128",
    "shading": {
        "basecolor": {
            "r": 0.9019607843137255,
            "g": 0.5823529411764706,
            "b": 0.6470588235294118
        },
        "specularity": 0.9999999999999999,
        "metallic": 0,
        "roughness": 0.6,
        "alpha": 1.0
    },
    "properties": {
        "property1": "value1",
        "property2": "value2",
        "property3": "value3",
        "property4": "value4"
    },
    "thumbnail": "thumb",
    "asset": "asset/web/3/assetfile",
    "textures": [
        1
    ],
    "tags": [
        "tag1",
        "tag2"
    ],
    "label": "mat1En",
    "language": "en",
    "catalog": "catalog1",
    "group": "catalog1:group1",
    "links": {
        "textures": "/materials/catalog1:materialExtId1/textures"
    },
    "hidden": false,
    "active": true,
    "updated": "1970-01-01T00:00:00.000Z",
    "created": "1970-01-01T00:00:00.000Z"

}

# fields

  • externalIdentfier
  • version
  • id
  • color
  • shading
  • properties
  • thumbnail
  • asset
  • textures
  • tags
  • label
  • language
  • catalog
  • group
  • links
  • hidden
  • active
  • updated
  • created
  • visibilityStatus : possible values (0, 1, 2)
    • 0 : "shown everywhere (planner, catalog)"
    • 1 : "shown only in Rubens Admin, hidden in planner, catalog"
    • 2 : "hidden everywhere" - item is archived

# GET /v2/materials

List of all materials matching the filter and visible to the Client

Generates: application/json

Response success (200 OK):

{
    "materials": [
        <materialJson>,
        <materialJson>
        ...
    ]
}

Parameters

Name Type Comment
catalogs[] List of strings filters the result to the given catalog ids
embedTextures Boolean If true the textures are included as embedded json objects

# POST /v2/materials

Creates a new material in the catalog provided in the body.

Accepts: application/json Generates: application/json

Body:

{
    "material": <materialJson>
}

Response success (201 CREATED):

{
    "material": <materialJson>
}

# PUT /v2/materials/

Updates the metainformation of a material. Thumbnail needs to be uploaded explicitly (can’t be changed with this call).

Accepts: application/json Generates: application/json

Body:

{
    "material": <materialJson>
}

Response success (200 OK):

{
    "material": <materialJson>
}

# POST /v2/materials//thumbnail

Uploads the thumbnail for the material. Override the last uploaded thumbnail if any.

Accepts: multipart-formdata

Generates: application/json (the adapted material)

Body: thumbnail binary file (filename is only relevant for the ending)

Response success (200 OK):

{
    "material": <materialJson>
}

Updated materialJSON with updated thumbnailUrl.

For uploading a thumbnail to a given material. The image will be uploaded and linked in the material. If the image is bigger than 256x256, it will be resized to fit in to the square 256x256.