Frame Builder
Uri: https://api.finerworks.com/v3/frame_builder
Method: POST
This allows you to submit details to validate a framing option, get pricing and info as well as return base64 data you can use to display your frame package.
Body
| Name | Description | Type | Additional information |
|---|---|---|---|
| product_code |
Optional - this will override the config paramter. |
text |
None. |
| config |
Optional - if a product code is not provided, you build your own frame using these options |
frame_config |
None. |
| render |
Optional - can be used to return a base 64 data string which can be used to dislay a frame in your app. Note this will slow down the return response so should only be used if needed for your application. |
frame_render_config |
None. |
Example JSON Body
application/json, text/json
{
"product_code": null,
"config": {
"frame_id": 458,
"width": 18.0,
"height": 20.0,
"mats": [
{
"id": 1,
"windows": [
{
"width": 10.0,
"height": 12.0,
"window_x": 0.0,
"window_y": 0.0,
"mat_image_to_display_url": null
}
]
},
{
"id": 2,
"windows": [
{
"width": 12.0,
"height": 14.0,
"window_x": 0.0,
"window_y": 0.0,
"mat_image_to_display_url": null
}
]
}
],
"glazing": {
"id": 1
},
"units": 0
},
"render": {
"content_type": 0,
"render_size": 500,
"squared": false,
"shadow_inner": false,
"prompt_image": false,
"frame_image_to_display_url": null
}
}
Sample Code Library
curl --location --request sample_method 'https://api.finerworks.comsample_endpoint' \
--header 'Content-Type: application/json' \
--header 'web_api_key: my-web-api-key-goes-here' \
--header 'app_key: my-app-key-goes-here' \
--data-raw '{
"product_code": null,
"config": {
"frame_id": 458,
"width": 18.0,
"height": 20.0,
"mats": [
{
"id": 1,
"windows": [
{
"width": 10.0,
"height": 12.0,
"window_x": 0.0,
"window_y": 0.0,
"mat_image_to_display_url": null
}
]
},
{
"id": 2,
"windows": [
{
"width": 12.0,
"height": 14.0,
"window_x": 0.0,
"window_y": 0.0,
"mat_image_to_display_url": null
}
]
}
],
"glazing": {
"id": 1
},
"units": 0
},
"render": {
"content_type": 0,
"render_size": 500,
"squared": false,
"shadow_inner": false,
"prompt_image": false,
"frame_image_to_display_url": null
}
}'
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.finerworks.comsample_endpoint');
$request->setMethod(HTTP_Request2::METHOD_sample_method);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/json',
'web_api_key' => 'my-web-api-key-goes-here',
'app_key' => 'my-app-key-goes-here'
));
$request->setBody('{
'product_code': null,
'config': {
'frame_id': 458,
'width': 18.0,
'height': 20.0,
'mats': [
{
'id': 1,
'windows': [
{
'width': 10.0,
'height': 12.0,
'window_x': 0.0,
'window_y': 0.0,
'mat_image_to_display_url': null
}
]
},
{
'id': 2,
'windows': [
{
'width': 12.0,
'height': 14.0,
'window_x': 0.0,
'window_y': 0.0,
'mat_image_to_display_url': null
}
]
}
],
'glazing': {
'id': 1
},
'units': 0
},
'render': {
'content_type': 0,
'render_size': 500,
'squared': false,
'shadow_inner': false,
'prompt_image': false,
'frame_image_to_display_url': null
}
}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://api.finerworks.comsample_endpoint");
client.Timeout = -1;
var request = new RestRequest(Method.sample_method);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("web_api_key", "my-web-api-key-goes-here");
request.AddHeader("app_key", "my-app-key-goes-here");
request.AddParameter("application/json", "{
'product_code': null,
'config': {
'frame_id': 458,
'width': 18.0,
'height': 20.0,
'mats': [
{
'id': 1,
'windows': [
{
'width': 10.0,
'height': 12.0,
'window_x': 0.0,
'window_y': 0.0,
'mat_image_to_display_url': null
}
]
},
{
'id': 2,
'windows': [
{
'width': 12.0,
'height': 14.0,
'window_x': 0.0,
'window_y': 0.0,
'mat_image_to_display_url': null
}
]
}
],
'glazing': {
'id': 1
},
'units': 0
},
'render': {
'content_type': 0,
'render_size': 500,
'squared': false,
'shadow_inner': false,
'prompt_image': false,
'frame_image_to_display_url': null
}
}, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
var settings = {
"url": "https://api.finerworks.comsample_endpoint",
"method": "sample_method",
"timeout": 0,
"headers": {
"Content-Type": "application/json",
"web_api_key": "my-web-api-key-goes-here",
"app_key": "my-app-key-goes-here"
},
"data": JSON.stringify({
'product_code': null,
'config': {
'frame_id': 458,
'width': 18.0,
'height': 20.0,
'mats': [
{
'id': 1,
'windows': [
{
'width': 10.0,
'height': 12.0,
'window_x': 0.0,
'window_y': 0.0,
'mat_image_to_display_url': null
}
]
},
{
'id': 2,
'windows': [
{
'width': 12.0,
'height': 14.0,
'window_x': 0.0,
'window_y': 0.0,
'mat_image_to_display_url': null
}
]
}
],
'glazing': {
'id': 1
},
'units': 0
},
'render': {
'content_type': 0,
'render_size': 500,
'squared': false,
'shadow_inner': false,
'prompt_image': false,
'frame_image_to_display_url': null
}
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var https = require('follow-redirects').https;
var fs = require('fs');
var options = {
'method': 'sample_method',
'hostname': 'api.finerworks.com',
'path': 'sample_endpoint',
'headers': {
'Content-Type': 'application/json',
'web_api_key': 'my-web-api-key-goes-here',
'app_key': 'my-app-key-goes-here'
},
'maxRedirects': 20
};
var req = https.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function (chunk) {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
res.on("error", function (error) {
console.error(error);
});
});
var postData = JSON.stringify({
"product_code": null,
"config": {
"frame_id": 458,
"width": 18.0,
"height": 20.0,
"mats": [
{
"id": 1,
"windows": [
{
"width": 10.0,
"height": 12.0,
"window_x": 0.0,
"window_y": 0.0,
"mat_image_to_display_url": null
}
]
},
{
"id": 2,
"windows": [
{
"width": 12.0,
"height": 14.0,
"window_x": 0.0,
"window_y": 0.0,
"mat_image_to_display_url": null
}
]
}
],
"glazing": {
"id": 1
},
"units": 0
},
"render": {
"content_type": 0,
"render_size": 500,
"squared": false,
"shadow_inner": false,
"prompt_image": false,
"frame_image_to_display_url": null
}
});
req.write(postData);
req.end();
require "uri"
require "net/http"
url = URI("https://api.finerworks.comsample_endpoint")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::sample_method.new(url)
request["Content-Type"] = "application/json"
request["web_api_key"] = "my-web-api-key-goes-here"
request["app_key"] = "my-app-key-goes-here"
request.body = "{
'product_code': null,
'config': {
'frame_id': 458,
'width': 18.0,
'height': 20.0,
'mats': [
{
'id': 1,
'windows': [
{
'width': 10.0,
'height': 12.0,
'window_x': 0.0,
'window_y': 0.0,
'mat_image_to_display_url': null
}
]
},
{
'id': 2,
'windows': [
{
'width': 12.0,
'height': 14.0,
'window_x': 0.0,
'window_y': 0.0,
'mat_image_to_display_url': null
}
]
}
],
'glazing': {
'id': 1
},
'units': 0
},
'render': {
'content_type': 0,
'render_size': 500,
'squared': false,
'shadow_inner': false,
'prompt_image': false,
'frame_image_to_display_url': null
}
}"
response = https.request(request)
puts response.read_body
| Name | Description | Type | Additional information |
|---|---|---|---|
| status | response_status |
None. |
|
| base64data |
Byte data used to convert to a base64 string. |
text |
None. |
| frame |
Details surrounding the frame choice. |
frame |
None. |
| mats |
Details surrounding the matting choice |
array (mat) |
None. |
| glazing |
Details surrounding the glazing choice |
glazing |
None. |
| total_price |
Returned cost of frame package. |
decimal |
None. |
Example JSON Response
application/json, text/json
{
"status": {
"success": true,
"status_code": 100,
"message": "sample string 2",
"debug": {}
},
"base64data": "sample string 1",
"frame": {
"id": 1,
"name": "sample string 2",
"thickness": 3.0,
"depth": 4.0,
"float_offset": 5.0,
"rabbet": 6.0,
"lip": 7.0,
"profile_svg_url": "sample string 8",
"sample_image_url_1": "sample string 9",
"sample_image_url_2": "sample string 10",
"sample_image_url_3": "sample string 11",
"min_width": 12.0,
"min_height": 13.0,
"max_width": 14.0,
"max_height": 15.0,
"price_level": 16,
"allow_glazing": true,
"allow_matting": true,
"color": "sample string 19",
"composite": "sample string 20",
"segment_url": "sample string 21",
"sample_length": 22.0,
"class_alias": "sample string 23",
"starting_price": 24.1
},
"mats": [
{
"id": 1,
"name": "sample string 2",
"color": "sample string 3",
"min_width": 4.0,
"min_height": 5.0,
"max_width": 6.0,
"max_height": 7.0,
"composite": "sample string 8",
"starting_price": 9.1
},
{
"id": 1,
"name": "sample string 2",
"color": "sample string 3",
"min_width": 4.0,
"min_height": 5.0,
"max_width": 6.0,
"max_height": 7.0,
"composite": "sample string 8",
"starting_price": 9.1
}
],
"glazing": {
"id": 1,
"name": "sample string 2",
"description": "sample string 3",
"composite": 0,
"image_1": "sample string 8",
"starting_price": 9.1
},
"total_price": 2.0
}