Configurator Parameter Overrides
Update Logic Documentation
Purpose
This documentation explains how the system dynamically overrides parameters in a configurator’s parameter_list
based on API user input. The logic ensures only the necessary fields are updated without breaking unrelated configuration data.
🔑 Trigger Conditions
Overrides are applied only if all the following are true:
open_api_for_user = true
(passed as request attribute).Matching override data exists in the options field of the
open_api_tokens
table.The current configurator option has a matching ID in the
parameter_list
.
📦 Data Source
Override data is stored in the options
column of the open_api_tokens table as a JSON object.
Example structure:
{
"1400": {
"id": -47801593,
"model_id": 606,
"material_id": 600,
"material_category_id": 113
},
"1401": {
"id": -18512702,
"model_id": 606,
"material_id": 603,
"material_category_id": 114
},
"1402": {
"id": -52272568,
"selected": false
},
"1403": {
"id": -17245477,
"text_value": "Coffee time",
"custom_color": true,
"text_font_size": "52",
"text_font_family": "Birthstone Bounce",
"text_color_category_id": -1
}
}
🧠 Option-Type-Based Logic
Option Type
Fields Updated
Notes
select, radio, checkbox, select_thumb, arrows
selected
Set selected = true
when option.id == override.id
.
material
model_id
, material_id
, material_category_id
Replaces full material info when IDs match.
text
text_value
, custom_color
, text_font_size
, text_font_family
, text_color_category_id
Used for custom text overrides.
numeral
numerical_default
Updates quantity or numeric inputs.
patterns
(n/a)
No updates; reserved for future extension.
default
(n/a)
No action taken.
📌 Example Use Case
Overriding configurator options with Open API Token data
Stored JSON in options
column:
{
"1445": {
"id": -16245477,
"numerical_default": 3
},
"1403": {
"id": -17245477,
"text_value": "Coffee time",
"custom_color": false,
"text_font_size": "52",
"text_font_family": "Birthstone Bounce",
"text_color_category_id": -1
}
}
Override Logic (by Type)
1. Select, Radio, Checkbox, Select_Thumb, Arrows
$option['selected'] = ($option['id'] === $overrideData['id']);
2. Material
if ($option['id'] === $overrideData['id']) {
$option['model_id'] = $overrideData['model_id'] ?? $option['model_id'];
$option['material_id'] = $overrideData['material_id'] ?? $option['material_id'];
$option['material_category_id'] = $overrideData['material_category_id'] ?? $option['material_category_id'];
}
3. Text
if ($option['id'] === $overrideData['id']) {
$option['text_value'] = $overrideData['text_value'] ?? $option['text_value'];
$option['custom_color'] = $overrideData['custom_color'] ?? $option['custom_color'];
$option['text_font_size'] = $overrideData['text_font_size'] ?? $option['text_font_size'];
$option['text_font_family'] = $overrideData['text_font_family'] ?? $option['text_font_family'];
$option['text_color_category_id'] = $overrideData['text_color_category_id'] ?? $option['text_color_category_id'];
}
4. Numeral
if ($option['id'] === $overrideData['id'] && isset($overrideData['numerical_default'])) {
$option['numerical_default'] = $overrideData['numerical_default'];
}
5. Patterns
No override logic is applied.
6. Default
No action is taken.
📌 Example API Request
Endpoint:
POST /api/open-api/v1/configurator-options/set/new-options
Body (form-data):
options = {"1436":{"id":-47801593,"model_id":606,"material_id":600,"selected_parts":["Rugby_Ball"]}}
🔄 Example API Response
{
"data": "http://simp3d.local/configurator/share/fc34308a4984b8d65e9d3dd0538feab4/web/eyJpdiI6Ii9ideCoyRU80ejBLUVJvRjI4U3hxZFE9PSIsInZhbHVlIjoiRzJKTU0...",
"success": true,
"message": "Configurator options updated successfully."
}
The data
key contains a shareable URL that loads the configurator with the applied overrides.
✅ Summary
Override logic is modular per option_type.
Supports external control via API tokens.
Ensures data validation before applying overrides.
Prevents breaking the structure or overriding unrelated parameters.
Last updated
Was this helpful?