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 }