Resources

API – Showrooms

API Base URL: https://api-platform.vntana.com

For a collection of all Endpoints in our Admin API, view the documentation here. To view the collection of Public Endpoints, view the documentation hereNote: In the following guide and aforementioned documentation, you will see referenced in numerous Endpoints something called a Client. This refers to the workspaces one can create on the Platform within an Organization. The Client nomenclature is a legacy reference being replaced with Workspace.

Getting Started

Using the VNTANA Admin API automating the full process of Showroom integration is possible, including the creation, publishing, and sharing of Showrooms. When creating or updating a Showroom, you can designate asset groupings, add images and style to the showroom, remove assets, and add organization level Showroom tags.

 

As with all endpoints in the VNTANA Admin API, you must first properly authenticate, generating a Refresh Token as below. View this guide for a more complete look at authentication.

  1. Log in using an Authentication Key or email / password.

    • Returns an x-auth-token in the Response Headers.

  2. Retrieve a list of Organizations and store the needed Organization’s UUID.

    • Pass the x-auth-token from Step 1 in the Request Headers.

      1
      { ‘x-auth-token’ : ‘Bearer ‘ + x_auth_token }
    • This step can be skipped if the Organization UUID is already stored locally.

  3. Generate a Refresh Token for the Organization.

    • Pass the x-auth-token from Step 1 in the Request Headers.

      1
      2
      3
      4
      {
      ‘x-auth-token’ : ‘Bearer ‘ + x_auth_token
      ‘organizationUuid’ : ‘string’
      }
    • Returns the Refresh Token as the Response Header x-auth-token.

  4. Retrieve a list of Workspaces and store the needed UUID.

    • Pass the x-auth-token in the Request Headers.

    • This step can be skipped if the Workspace UUID is already stored locally.

  5. Generate a Refresh Token for the Workspace (Organization Admin / Owner users must skip this step).

    • Pass the Refresh Token from Step 3 in the Request Headers with the Organization and Workspace UUIDs.

      1
      2
      3
      4
      5
      {
      ‘x-auth-token’ : ‘Bearer ‘ + refreshToken,
      ‘organizationUuid’ : ‘string’,
      ‘clientUuid’ : ‘string’
      }
    • Returns the Refresh Token as the Response Header x-auth-token.

Showrooms

Creating / Updating a Showroom

When creating a Showroom, you will be able to define the namegroupstagsUuidslayoutAttributes, and a logoBlobId, granting full control over the structure of the Showroom. This step does not include the creation of tags or addition of Assets as these will have to occur at different stages in the process. Note: In order for tags to be added at this step they have to have been created first to make use of their tagUuid and creation of these tags requires a unique showrooms related endpoint as they are Organization level tags as opposed to the standard Workspace level tags you apply to your Assets. More on this later.

To create a Showroom via the API you will have to call the following endpoint:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Method: POST
Endpoint: /v1/showrooms
Headers: { “x-auth-token” : “Bearer ” + refreshToken }
Request Body:
{
“name” : “Test Showroom”,
“tagsUuids” : [“tag-uuid-1”, “tag-uuid-2”],
“logoBlobId” : “string”,
“groups” : [
{
[
“title” : “Group 1”,
“dividers” : [“TOP”, “BOTTOM”],
“visible” : “true”,
“productsInfo” : [
{
“productUuid” : “string”,
“visible” : true,
“order” : 1
},
{
“productUuid” : “string”,
“visible” : true,
“order” : 2
}
]
]
}
],
“layoutAttributes” : {
“PRODUCTS_PER_ROW” : 3,
“TEXT_COLOR” : “#000000”,
“FONT_FAMILY” : “Roboto”,
“BACKGROUND_COLOR” : “#ffffff”,
“BACKGROUND_IMAGE_BLOB_ID” : null,
“DIVIDER_COLOR” : “#000000”,
“IMAGE_STYLE” : null
}
}
  • name: This is the name of the Showroom which will be visible on the Showroom view page.
  • tagsUuids: A list of tagUuid’s to be added to the Showroom. These refer to Showroom tags which are not the same as the tags applied to Assets.
  • logoBlobId: the blobId of an already uploaded image to be used as the Showroom logo. This image can be uploaded using a special showroom specific endpoint.
  • groups: You can create groupings for the assets added to the Showroom to ensure specific assets appear together.
  • layoutAttributes: Certain aspects of the pages style have been opened up and can be set with this object. More on this below.

The response from a successful showroom creation is as follows:

1
2
3
4
5
6
7
{
“success”: true,
“errors”: [],
“response”: {
“uuid”: “string”
}
}
Groups

The groups object allows you to designate where the assets you add to the Showroom will appear. If you only pass a single group in this object then all assets will be in the order given, however if you add multiple then their order will be related to the other assets in their group, and the groups will be ordered based on the order they are passed in the object.

  • title: This will be used to identify the group and will be visible above the first entry in the group (not visible in legacy version of Showroom).
  • dividers: Indicate whether you would like dividers for this group. This value can be TOP or BOTTOM.
  • visible: Indicate whether this group should be visible from share links or not.
  • productsInfo: The individual assets to be added in this group.
    • productUuid: The UUID of an asset to be added.
    • visible: Indicates whether this asset should be visible from share links or not.
    • order: The spot this asset should be placed in. Is specific to this group and starts at spot 1.
Layout Attributes

In addition to the overall layout of your assets in groups, you can also add some style to your Showroom.

  • PRODUCTS_PER_ROW: Indicates the max number of assets per row. If set to 4 but you have a group of 3 that group will be on it’s own row. Can be 3, 4, or 5.

  • TEXT_COLOR: Hex value of a color for the font used on the Showroom.

  • FONT_FAMILY: The name of a font family to use. Default is Roboto.

  • BACKGROUND_COLOR: Hex value to be use for the background color of the Showroom.

  • BACKGROUND_IMAGE_BLOB_ID: BlobId of an image to be used as the background of the Showroom. This is optional.

  • DIVIDER_COLOR: Hex value to be used for the color of all dividers in the Showroom.

  • IMAGE_STYLE: Cover, Contain, Tile

Updating a Showroom

In order to update a showroom you will call almost the same endpoint as when creating, adding the Showrooms UUID in the request body and changing to a PUT request instead of POST:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Method: PUT
Endpoint: /v1/showrooms
Headers: { “x-auth-token” : “Bearer ” + refreshToken }
Request Body:
{
“uuid” : “string”
“name” : “Test Showroom”,
“tagsUuids” : [“tag-uuid-1”, “tag-uuid-2”],
“logoBlobId” : “string”,
“groups” : [
{
[
“title” : “Group 1”,
“dividers” : [“TOP”, “BOTTOM”],
“visible” : “true”,
“productsInfo” : [
{
“productUuid” : “string”,
“visible” : true,
“order” : 1
},
{
“productUuid” : “string”,
“visible” : true,
“order” : 2
}
]
]
}
],
“layoutAttributes” : {
“PRODUCTS_PER_ROW” : 3,
“TEXT_COLOR” : “#000000”,
“FONT_FAMILY” : “Roboto”,
“BACKGROUND_COLOR” : “#ffffff”,
“BACKGROUND_IMAGE_BLOB_ID” : null,
“DIVIDER_COLOR” : “#000000”,
“IMAGE_STYLE” : null
}
}

Important: Do note that when updating a Showroom, the data that is passed is the data the Showroom will contain. This means that if you intend for all or some of the Assets already contained in the Showroom to be retained you have to pass their information again in the Update call.

Retrieving Showroom Data

When needing to interact with a Showroom to either update it’s data or view certain information about it there are two methods available. If you do not already have the showroomUuid then you can do a search of all Showrooms in your Organization, or if you do have this UUID you can directly call it’s data. Of the two methods, the request by UUID will provide significantly more information, including information on the assets contained within, and as such calling both may be necessary (if the showroomUuid is not already known)

Searching Showrooms

To search a showroom you will need to call the following endpoint:

1
2
3
4
5
6
7
8
Method: POST
Endpoint: /v2/showrooms/search
Headers: { “x-auth-token” : “Bearer ” + refreshToken }
Request Body: {
“page” : 1,
“size” : 10,
“searchTerm” : “string”
}

For this endpoint you simply need to pass the page of results you wish to see and how many results per page (size) the response should contain. Note: this is a v2 endpoint. This will provide a response like the following:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
“success”: true,
“errors”: [],
“response”: {
“totalCount”: 1,
“grid”: [
{
“uuid”: “string”,
“name”: “API Search Test”,
“organizationUuid”: “string”,
“clientUuids”: [
“string”
],
“productsCount”: 1,
“variantGroupsCount”: 0,
“tags”: null,
“logoBlobId”: “”,
“created”: “2023-04-05T23:11:57.177”,
“updated”: “2023-04-05T23:16:46.356”
}
]
}
}

In this response you can find the showroomUuid (uuid) for each showroom, as well as the number of assets in each showroom and the clientUuid’s for the workspaces the included assets belong to.

Retrieving Showroom by UUID

The second method of obtaining a Showrooms details is to directly pull it by using the showroomUuid of the showroom in question. To do this call the following methd:

1
2
3
4
Method: POST
Endpoint: /v2/showrooms/get-by-uuid
Headers: { “x-auth-token” : “Bearer ” + refreshToken }
Request Body: { “uuid” : “string” }

This will return a much more verbose response containing not only the showroom data found from a search but also data on the assets contained within. Expand below for an example response.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
{
“success”: true,
“errors”: [],
“response”: {
“uuid”: “string”,
“name”: “API Test”,
“organizationUuid”: “string”,
“clientUuids”: [
“string”
],
“products”: [
{
“uuid”: “string”,
“name”: “string”,
“clientUuid”: “string”,
“clientSlug”: “string”,
“description”: “”,
“productStatus”: “LIVE”,
“locations”: [],
“tags”: [],
“attributes”: {
“key”: “value”
},
“conversionStatus”: “COMPLETED”,
“asset”: {
“thumbnailBlobId”: “string”,
“assetOriginalName”: “string”,
“models”: [
{
“uuid”: “string”,
“conversionFormat”: “GLB”,
“conversionStatus”: “COMPLETED”,
“modelBlobId”: “string”,
“modelSize”: 803700
},
{
“uuid”: “string”,
“conversionFormat”: “FBX”,
“conversionStatus”: “COMPLETED”,
“modelBlobId”: “string”,
“modelSize”: 741712
},
{
“uuid”: “string”,
“conversionFormat”: “USDZ”,
“conversionStatus”: “COMPLETED”,
“modelBlobId”: “string”,
“modelSize”: 898444
}
]
},
“rendererConfigs”: null,
“created”: “2023-03-29T15:54:19.85”,
“updated”: “2023-03-29T15:55:07.319”
}
],
“hasDeletedProducts”: false,
“totalCount”: 1,
“logoBlobId”: “”,
“viewInfo”: {
“layoutAttributes”: {
“DIVIDER_COLOR”: “#000000”,
“PRODUCTS_PER_ROW”: “3”,
“TEXT_COLOR”: “#000000”,
“FONT_FAMILY”: “Roboto”,
“BACKGROUND_IMAGE_BLOB_ID”: null,
“BACKGROUND_COLOR”: “#123456”,
“IMAGE_STYLE”: null
},
“groups”: [
{
“uuid”: “string”,
“title”: “string”,
“productsInfo”: [
{
“product”: {
“uuid”: “string”,
“name”: “string”,
“clientUuid”: “string”,
“clientSlug”: “string”,
“description”: “”,
“productStatus”: “LIVE”,
“locations”: [],
“tags”: [],
“attributes”: {
“Job ID”: “1680105259”
},
“conversionStatus”: “COMPLETED”,
“asset”: {
“thumbnailBlobId”: “string”,
“assetOriginalName”: “string”,
“models”: [
{
“uuid”: “string”,
“conversionFormat”: “GLB”,
“conversionStatus”: “COMPLETED”,
“modelBlobId”: “string”,
“modelSize”: 803700
},
{
“uuid”: “string”,
“conversionFormat”: “FBX”,
“conversionStatus”: “COMPLETED”,
“modelBlobId”: “string”,
“modelSize”: 741712
},
{
“uuid”: “string”,
“conversionFormat”: “USDZ”,
“conversionStatus”: “COMPLETED”,
“modelBlobId”: “string”,
“modelSize”: 898444
}
]
},
“rendererConfigs”: null,
“created”: “2023-03-29T15:54:19.85”,
“updated”: “2023-03-29T15:55:07.319”
},
“visible”: true,
“order”: 1
}
],
“dividers”: [
“TOP”,
“BOTTOM”
],
“visible”: true
}
]
},
“tags”: null,
“created”: “2023-04-05T23:11:57.177”,
“updated”: “2023-04-05T23:16:46.356”
}
}

Showroom Tags

One of the extra parameters that can be passed to the Showroom creation endpoint is tagsUuids. This is a list containing the UUID’s of any Showroom tags you have created and wish to be associated with the new room being created. Like tags on the VNTANA Platform in general, these are great ways to filter showrooms when attempting to search either on the Platform or via the API, especially when you have a lot of showrooms. However, unlike normal tags that you apply to individual Assets or Variant Groups/Configurators, these tags are Organization level and can be seen/accessed by all Workspaces.

Through the API there are two endpoints to handle these tags: creating and searching.

Creating a Showroom Tag

When creating a Showroom tag you must simply call the following endpoint:

1
2
3
4
5
6
Method: POST
Endpoint: /v1/showrooms/tags
Headers: { “x-auth-token” : “Bearer ” + refreshToken }
Request Body: {
“name” : “string”,
}

The refreshToken you pass in the header will determine the Organization this tag is created in, and the name will be used to determine if the tag can be created (no duplicates). A successful creation will return the following response:

1
2
3
4
5
6
7
{
“success”: true,
“errors”: [],
“response”: {
“uuid”: “string”
}
}

The uuid can then be passed into the tagsUuids list of the showroom creation/update endpoints to add this tag to the Showroom. If you attempt to create a tag that already exists, you will instead get the following error and have to do a search for the tag to retrieve its UUID:

Unique Errors

  • TAG_ALREADY_EXISTS_FOR_ORGANIZATION_AND_NAME: Indicates a showroom specific tag already exists of the same name in this Organization.
Searching Showroom Tags

To search for and retrieve the UUID of a showroom tag that already exists you can call the following endpoint:

1
2
3
4
5
6
7
8
Method: POST
Endpoint: /v1/showrooms/tags/search
Headers: { “x-auth-token” : “Bearer ” + refreshToken }
Request Body: {
“searchTerm”: “Test Tag”,
“page” : 1,
“size” : 10
}
  • searchTerm: This is what the endpoint will use to determine the results that’ll be returned. The endpoint will return exact matches first, otherwise using relevance based filtering of the results.
  • page: Indicates the page of results you wish to have returned. 1 is the first page.
  • size: Indicates pagination of results, how many results should be returned per page.

A successful request will return the following response:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
“success”: true,
“errors”: [],
“response”: {
“totalCount”: 1,
“grid”: [
{
“uuid”: “string”,
“name”: “Test Tag”
}
]
}
}

When no exact match is found or expected, you can simply iterate over the results in grid to check the name of the tag and then pass the UUID into the create/update showroom endpoint to add it to a showroom.

Showroom Images

You can upload images to be included in Showrooms. These are not inherently tied to any single Showroom, instead they are stored and you can use the blobId associated with the uploaded image to add as a Showroom logo or background image. To upload an image call the following endpoint:

1
2
3
4
Method: POST
Endpoint: /v1/showrooms/upload/images
Headers: { “x-auth-token” : “Bearer ” + refreshToken }
Form-Data: “file” : fileData

The refreshToken passed will determine the Organization the image is uploaded to. You will pass the image as form-data in the request, with name “file”. Note: In Postman you will have to add “file” to the key field of the form-data. If you are having trouble passing an image from Postman check our guide on using the collections as Postman has some blocking default behavior.

If you’ve successfully uploaded an image, you will receive the following response:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
“success”: true,
“errors”: [],
“response”: {
“blobId”: “string.jpg”,
“blobSize”: 136572,
“metaData”: {
“content-length”: “136572”,
“original-name”: “Profile_Avatar.jpg”,
“content-type”: “image/jpeg”,
“creator-uuid”: “”,
“requested-ip”: “”,
“created-date”: “2023-04-06 15:24:02”
}
}
}

The blobId can be passed in the creation/update request for a Showroom as well as can be used to re-download the image if desired (see the expandable section below for downloading a Showroom image).

In order to download an image you’ve uploaded for a showroom, you can call the following endpoint:

1
2
3
Method: GET
Endpoint: /v1/showrooms/images/{blobId}
Headers: { “x-auth-token” : “Bearer ” + refreshToken }

 

This will return the byte data of the image which can be saved to a file or transferred along to another location. The refreshToken is used to indicate the Organization the image is in, and the blobId passed in the endpoint indicates which image is to be downloaded.

Showroom Attributes

With Showrooms, a key feature are the Attributes. These are key : value pairs of data which are displayed under each asset in the Showroom, allowing you to show pertinent information such as MSRP, Sizes, and SKU to viewers. It is important to note these are set at the Asset level, the Showroom simply pulls all possible options from the Assets you’ve selected to be added. It may be necessary for you to confirm what attributes are being displayed on a showroom and to do so you can call the following endpoint:

1
2
3
Method: GET
Endpoint: /v1/showrooms/{showroomUuid}/products-attributes
Headers: { “x-auth-token” : “Bearer ” + refreshToken }

Simply pass the showroomUuid in the URL and your refreshToken in the headers and you will receive a response like the following:

1
2
3
4
5
6
7
8
9
{
“success”: true,
“errors”: [],
“response”: {
“attributeKeys”: [
“Job ID”
]
}
}

Note: This only returns the key of the attributes as it is intended to showcase which attributes are being applied and each asset can have a different value for the same key. To view individual values you will have to inspect the individual assets themselves.

Share Links

A new feature of showrooms are customer specific share links. The old version of share links remains to ensure they are still usable, but these will not display any styling or grouping. Customer specific share links will however display these settings, and can be created via the API.

Create Share Link

To create a single share link you will call the following endpoint:

1
2
3
4
5
6
7
8
9
10
Method: POST
Endpoint: /v1/showrooms/sharelinks
Headers: { “x-auth-token” : “Bearer ” + refreshToken }
Request Body: {
“showroomUuid” : “string”,
“customerName” : “string”,
“logoBlobId” : “string” or null,
“productAttributes” : [“key”, “key”],
“expirationData” : “2029-12-12”
}

You will pass the showroomUuid that the share link should be created for, as well as the customerName. This customerName does not get associated with any account, but rather acts as an identifier on the showroom managers side as to who that share link is for. Once you’ve created the share link, you can then individually invite viewers and / or editors via the Share Links tab on the Platform where you will send invites directly to their email, this cannot be done via the API.

A sample response for creating a share link is as follows:

1
2
3
4
5
6
7
{
“success”: true,
“errors”: [],
“response”: {
“uuid”: “string”
}
}

In addition to creating a share link, you can update an existing share link. The endpoint is almost the same as the create endpoint, different only in that it will be a PUT request with the uuid of the share link added to the request body:

1
2
3
4
5
6
7
8
9
10
Method: PUT
Endpoint: /v1/showrooms/sharelinks
Headers: { “x-auth-token” : “Bearer ” + refreshToken}
Request Body: {
“uuid” : “string”,
“customerName” : “string”,
“logoBlobId” : null,
“productAttributes” : [“key”],
“expirationDate” : “2026-12-12”
}

Unique Errors

  • SHOWROOM_NOT_FOUND: Indicates the showroomUuid does not match any showroom found within the Organization tied to your refreshToken.

Retrieving Share Links

Similar to showrooms, there are two methods available to retrieve information on the share links that have been created for a particular showroom. You can do a general search in which a designated number of share links will be returned or a specific data retrieval using a shareLinkUuid.

Retrieving Share Link by UUID

Once a share link has been created, you use the uuid from its response to retrieve its data for storage. To do this, pass the uuid in as shareLinkUuid in the URL of the following endpoint:

1
2
3
Method: GET
Endpoint: /v1/showrooms/sharelinks/{sharelinkUuid}
Headers: { “x-auth-token” : “Bearer ” + refreshToken }

This will return the following:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
“success”: true,
“errors”: [],
“response”: {
“uuid”: “string”,
“showroomUuid”: “string”,
“customerName”: “Test Customer”,
“logoBlobId”: null,
“status”: “DRAFT”,
“publicLink”: “string”,
“usersCount”: 0,
“expirationDate”: null,
“created”: “2023-04-06T19:40:03.158”,
“updated”: “2023-04-06T19:40:03.191”,
“productAttributes”: [
“Job ID”,
“Test”
],
“organizationUuid”: “string”
}
}

You can see how many users have access to the share link, the attributes used in the Showroom, the showroomUuid, as well as the status of the share link. Finally, included in the response is the publicLink. This is the link that invited users will use to actually access the Showroom without having to be invited to the full Organization. You can grant these users Viewer or Editor privileges, with the latter being able to change order counts. Note: Creating the Sharelink does not invite users, this currently has to be done on the platform, simply visit the Showrooms page, go to the Sharelink you created and click the ‘Add User’ icon in the Users section of the page. The Sharelink must be in the LIVE status for users to view the contents at the link.

Searching for Share Links

Using the API you can also retrieve a list of all available share links in a showroom. This will allow you to make use of the data contained, update their status, and retrieve their public links. To do this use the following endpoint:

1
2
3
4
5
6
7
Method: POST
Endpoint: /v1/showrooms/{showroomUuid}/sharelinks
Headers: { “x-auth-token” : “Bearer ” + refreshToken }
Request Body: {
“page” : 1,
“size” : 20
}

Passing the showroomUuid in the URL of the endpoint, you can designate the number or results to be returned by indicating how you wish the results to be paginated. Page will indicate which page of results to return while size indicates how many results should be in each page. Below is an example of a response from this endpoint, it is almost identical to the retrieval by UUID endpoint, but will contain entries for each share link returned.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
“success”: true,
“errors”: [],
“response”: {
“totalCount”: 1,
“grid”: [
{
“uuid”: “string”,
“showroomUuid”: “string”,
“customerName”: “Test Customer”,
“logoBlobId”: null,
“status”: “LIVE”,
“publicLink”: “string”,
“usersCount”: 0,
“expirationDate”: null,
“created”: “2023-04-06T19:40:03.158”,
“updated”: “2023-04-06T19:41:35.929”,
“productAttributes”: [
“Job ID”,
“Test”
],
“organizationUuid”: “string”
}
]
}
}

Getting Combined Showroom and Share Link Data

In addition to the individual methods allowing you to retrieve data on a specific Showroom or Sharelink, there is an endpoint that can be utilized to get a detailed set of data for a sharelink and the assets it shows in the showroom. To get this data you will simply need the shareLinkUuid and will call this endpoint:

1
2
3
4
5
6
Method: POST
Endpoint: /v1/showrooms/combined-sharelink
Headers: { “x-auth-token” : “Bearer ” + refreshToken }
Request Body: {
“shareLinkUuid” : “string”
}

This will return a detailed overview of the share link itself, the showroom, as well as the assets within. Below shows an example response.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
{
“success”: true,
“errors”: [],
“response”: {
“uuid”: “string”,
“name”: “API Update Test”,
“organizationName”: “string”,
“clientUuids”: [
“string”
],
“groupsCount”: 1,
“logoBlobId”: “”,
“created”: “2023-04-05T23:11:57.177”,
“updated”: “2023-04-05T23:16:46.356”,
“shareLink”: {
“uuid”: “string”,
“showroomUuid”: “string”,
“customerName”: “string”,
“logoBlobId”: null,
“status”: “DRAFT”,
“publicLink”: “string”,
“usersCount”: 0,
“expirationDate”: null,
“productAttributes”: [
“Job ID”,
“Test”
]
},
“viewInfo”: {
“layoutAttributes”: {
“FONT_FAMILY”: “Roboto”,
“DIVIDER_COLOR”: “#000000”,
“PRODUCTS_PER_ROW”: “3”,
“TEXT_COLOR”: “#000000”,
“BACKGROUND_IMAGE_BLOB_ID”: null,
“IMAGE_STYLE”: null,
“BACKGROUND_COLOR”: “#123456”
},
“groups”: [
{
“uuid”: “string”,
“title”: “Group 2”,
“productsInfo”: [
{
“product”: {
“uuid”: “string”,
“name”: “string”,
“clientUuid”: “string”,
“clientSlug”: “string”,
“description”: “”,
“productStatus”: “LIVE”,
“locations”: [],
“tags”: [],
“attributes”: {
“Job ID”: “1680105259”
},
“conversionStatus”: “COMPLETED”,
“asset”: {
“thumbnailBlobId”: “string”,
“assetOriginalName”: “string”,
“models”: [
{
“uuid”: “string”,
“conversionFormat”: “GLB”,
“conversionStatus”: “COMPLETED”,
“modelBlobId”: “string”,
“modelSize”: 803700
},
{
“uuid”: “string”,
“conversionFormat”: “FBX”,
“conversionStatus”: “COMPLETED”,
“modelBlobId”: “string”,
“modelSize”: 741712
},
{
“uuid”: “string”,
“conversionFormat”: “USDZ”,
“conversionStatus”: “COMPLETED”,
“modelBlobId”: “string”,
“modelSize”: 898444
}
]
},
“rendererConfigs”: null,
“created”: “2023-03-29T15:54:19.85”,
“updated”: “2023-03-29T15:55:07.319”
},
“visible”: true,
“order”: 1
}
],
“dividers”: [
“TOP”,
“BOTTOM”
],
“visible”: true
}
]
}
}
}

Share Link Order Counts

Another new feature of the Showrooms is the ability for Editor users invited via a share link to add ‘Order’ counts to individual assets, the totals of which can be downloaded by the Showroom’s manager. It is possible to accomplish this via the API if you wish to implement the the Showrooms order count functionality without the UI provided by VNTANA, or wish to simply implement your own script to scrape a spreadsheet and place order counts based on the data within.

Adding an Order Count to an Asset

When an Editor user accesses their share link, they will be able to add individual order counts to the Assets within, which is then visible to the Showroom Manager. To accomplish this via the API you will have to call the following endpoint:

1
2
3
4
5
6
7
8
9
Method: POST
Endpoint: /v1/showrooms/sharelinks/order-item
Headers: { “x-auth-token” : “Bearer ” + refreshToken }
Request Body: {
“shareLinkUuid” : “string”,
“orderItem” : {
“productUuid” : “string,
“count” : 5
}

This will have to be done on an individual Asset basis similar to in the actual share link itself. An example response is as follows:

1
2
3
4
5
6
7
{
“success”: true,
“errors”: [],
“response”: {
“uuid”: “string”
}
}

Special Errors:

  • SHARELINK_NOT_FOUND: Indicates an incorrect shareLinkUuid passed

Get Order Count By Share Link

In addition to adding order counts to assets in a share link, you can also retrieve the order counts in the share link. This will return a complete list of assets in the share link and their current order count. To do this call the following endpoint:

1
2
3
Method: GET
Endpoint: /v1/showrooms/sharelinks/{{sharelinkUuid}}/order
Headers: { “x-auth-token” : “Bearer ” + refreshToken }

A successful request will return the following response:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
“success”: true,
“errors”: [],
“response”: {
“uuid”: “string”,
“productOrderItems”: [
{
“productUuid”: “string”,
“count”: 5
}
],
“variantGroupOrderItems”: {},
“createdBy”: {
“uuid”: “string”,
“email”: “string”,
“name”: “string”
},
“lastUpdatedBy”: {
“uuid”: “string”,
“email”: “string”,
“name”: “string”
},
“shareLinkUuid”: “string”
}
}

Postman Collection

You can download the below Postman collection to test out each of these Hotspot based interactions. The collection includes everything needed to run a chain of endpoints for Authentication and Asset search, while the Hotspot endpoints will require some manual input for the various parameters needed in these endpoints. To run any part as a collection, simply uncheck any Authentication endpoints you don’t need based on your user access (see our Authentication guide for a detailed explanation) as well as enter the Hotspot parameters you wish to pass along such as the type

To run the endpoints individually, make sure to activate the deactivated X-AUTH-TOKEN header for each endpoint, and ensure all the necessary parameters are entered in the body or query params of each. For more information on using Postman collections, see our guide.

On This Page

Accelerate Your
Digital Transformation

Learn how our platform can automate your 3D process.

Tap the magnifying glass to the left of your screen to search our resources.