Appearance
API TUTORIAL – DESIGNS RETRIEVAL
Intro
This document provides a shallow guide on how to fetch designs information and documentation (including IFCs, DWGs, ...).
INFO
The base URL for the produuz.it API V2 is: https://produuz.it/api/v2/
Design retrieval
Designs database objects can be directly retrieved from the assembly or module design endpoints, building the URL with the UUID of the design.
Endpoint: https://produuz.it/api/v2/constructibles/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/
- Method: GET.
- Request Body: Empty.
- Response: Serialized design.
Example Response Payload
json
{
"project": "16dbfae0-3694-40c8-a86a-d5e438884cae",
"parent_designs": [],
"uuid": "52f251f2-dad6-4fdc-837c-f278d29cb1b7",
"created": "2023-12-22T09:13:44.271301Z",
"modified": "2024-03-20T16:59:28.772614Z",
"name": "H108",
"revision": 3,
"resources": {},
"meta": {
"r": [
[-0.9999999999999998, 0.0, 0.0],
[0.0, 0.0, 0.9999999999999998],
[0.0, 0.9999999999999998, 0.0]
],
"t": [32276.167999999994, 0.0, 9635.709999999997],
"has_ifc": true,
"metrics": {
"x": 3774.0,
"y": 2657.0,
"z": 93.0,
"neto": 10.027518,
"bruto": 10.027518
},
"analysis": "done",
"dwg_count": 0,
"bruto_area": 0,
"actual_count": 11,
"subassemblies": [],
"analysis_nonce": "7019aff5-7f98-4d51-9b67-4265de375250",
"analyzed_ifc_hash": "e63129fbafdf1a5fc857ac435c3b5dc0230092fdbb4ea1455357071610dd8e5d",
"ifc_assembly_meta": {},
"ifc_assembly_name": "unknown"
},
"tipo": ""
}
{
"project": "16dbfae0-3694-40c8-a86a-d5e438884cae",
"parent_designs": [],
"uuid": "52f251f2-dad6-4fdc-837c-f278d29cb1b7",
"created": "2023-12-22T09:13:44.271301Z",
"modified": "2024-03-20T16:59:28.772614Z",
"name": "H108",
"revision": 3,
"resources": {},
"meta": {
"r": [
[-0.9999999999999998, 0.0, 0.0],
[0.0, 0.0, 0.9999999999999998],
[0.0, 0.9999999999999998, 0.0]
],
"t": [32276.167999999994, 0.0, 9635.709999999997],
"has_ifc": true,
"metrics": {
"x": 3774.0,
"y": 2657.0,
"z": 93.0,
"neto": 10.027518,
"bruto": 10.027518
},
"analysis": "done",
"dwg_count": 0,
"bruto_area": 0,
"actual_count": 11,
"subassemblies": [],
"analysis_nonce": "7019aff5-7f98-4d51-9b67-4265de375250",
"analyzed_ifc_hash": "e63129fbafdf1a5fc857ac435c3b5dc0230092fdbb4ea1455357071610dd8e5d",
"ifc_assembly_meta": {},
"ifc_assembly_name": "unknown"
},
"tipo": ""
}
Design filtering
The following props can be set in the URL query params to get a filtered list of matching designs:
Query param | Description | Example |
---|---|---|
name | Name of the assembly design | FD-500 |
revision | Revision number of the design | 5 |
project | Project uuid (also stdlib) | b68be32e-262a-4f12-9b79-4b4bc8918d9b |
scheduled_prod_date | Scheduled production date exists in its linked actual assemblies | 2024-07-12 |
client_order_id | Client order id exists in its linked actual assemblies | whatever_clien_string |
- Method: GET.
- Request Body: Empty.
- URL example: https://produuz.it/api/v2/constructibles/assembly_designs/?name=FD-500&scheduled_prod_date=2024-07-12
This returns our standard paginated response:
json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"project": "b68be32e-262a-4f12-9b79-4b4bc8918d9b",
"parent_designs": [],
"uuid": "9cac093d-08a8-45c9-8959-ad4bbda115d1",
"created": "2023-11-02T14:59:10.967320Z",
"modified": "2024-01-21T16:30:52.034689Z",
"name": "FD-500",
"revision": 0,
"resources": {},
"meta": {
"r": [
[
1.0,
0.0,
0.0
],
[
0.0,
1.0,
0.0
],
[
0.0,
0.0,
1.0
]
],
"t": [
0,
0,
0
],
"has_ifc": true,
"metrics": {
"x": 1262.5,
"y": 125.0,
"z": 2701.0,
"neto": 0.091875,
"bruto": 0.152075
},
"analysis": "done",
"dwg_count": 0,
"bruto_area": 0,
"actual_count": 1,
"subassemblies": [],
"analysis_nonce": "32f947ff-59a5-4bb2-971c-db8f884aa46c",
"analyzed_ifc_hash": "e8c853b176f3428b2bacd0c32a5aee048c44ecc87d4f8e4796d510dfc947a13d",
"ifc_assembly_meta": {
"name": "KERTO",
"ifc_id": "2HJkr6F9T7x8WLpmQ5UHdm",
"ifc_tag": "FD-500"
},
"ifc_assembly_name": "unknown",
"zone_branches_map": {
"0": [
"unknown"
],
"1": [
"plate"
],
"-1": [
"plate"
],
"11": [
"plate"
],
"-10": [
"unknown"
]
}
},
"tipo": ""
}
]
}
HTML form
Raw data
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"project": "b68be32e-262a-4f12-9b79-4b4bc8918d9b",
"parent_designs": [],
"uuid": "9cac093d-08a8-45c9-8959-ad4bbda115d1",
"created": "2023-11-02T14:59:10.967320Z",
"modified": "2024-01-21T16:30:52.034689Z",
"name": "FD-500",
"revision": 0,
"resources": {},
"meta": {
"r": [
[
1.0,
0.0,
0.0
],
[
0.0,
1.0,
0.0
],
[
0.0,
0.0,
1.0
]
],
"t": [
0,
0,
0
],
"has_ifc": true,
"metrics": {
"x": 1262.5,
"y": 125.0,
"z": 2701.0,
"neto": 0.091875,
"bruto": 0.152075
},
"analysis": "done",
"dwg_count": 0,
"bruto_area": 0,
"actual_count": 1,
"subassemblies": [],
"analysis_nonce": "32f947ff-59a5-4bb2-971c-db8f884aa46c",
"analyzed_ifc_hash": "e8c853b176f3428b2bacd0c32a5aee048c44ecc87d4f8e4796d510dfc947a13d",
"ifc_assembly_meta": {
"name": "KERTO",
"ifc_id": "2HJkr6F9T7x8WLpmQ5UHdm",
"ifc_tag": "FD-500"
},
"ifc_assembly_name": "unknown",
"zone_branches_map": {
"0": [
"unknown"
],
"1": [
"plate"
],
"-1": [
"plate"
],
"11": [
"plate"
],
"-10": [
"unknown"
]
}
},
"tipo": ""
}
]
}
HTML form
Raw data
Resources packages
The previous serialized design will carry most important information about it. Files are provided through the cloudstorage/packages endpoint. In this enpodint you can query what file packages in the system are linked to the desired assembly design through a simple query param in the URL. Just like this:
- Method: GET.
- Request Body: Empty.
- Response: List response including all the packages in the "results" field.
Note that this endpoint will return as much packages as the design has. You will find usually 2 packages: "resources" and "heavy_meta".
Heavy meta package holds heavier data that we don't want to store in the database for performance reasons, such as metadata for the 3d viewer.
Resources package is probably the package you want, which holds all the documentation uploaded for the design.
Each package has a list of files that provide a fresh presigned URL for direct secure download of the files from Amazon S3.
For file filtering and comparision, we strongly recommend you using "name", "meta.section" and "meta.version".
json
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"uuid": "730dc15d-f331-412d-a7f3-37a18034f9e4",
"name": "resources",
"meta": {},
"assembly": null,
"assembly_design": "52f251f2-dad6-4fdc-837c-f278d29cb1b7",
"module": null,
"module_design": null,
"proof": null,
"issue": null,
"part": null,
"part_design": null,
"production_line": null,
"project": null,
"files": [
{
"uuid": "79a38d78-fa96-4413-8d42-cbaf6ded9e2d",
"created": "2023-12-22T09:13:02.683107Z",
"name": "H108.ifc",
"short_name": "H108",
"meta": {
"ext": "ifc",
"tipo": null,
"status": ["uploaded", "designs"],
"section": "assembly_ifc",
"version": 1,
"design_name": "H108"
},
"cloud_folder": "16dbfae0-3694-40c8-a86a-d5e438884cae/resources/1",
"presigned_url": "https://woodwall-s3.amazonaws.com/16dbfae0-3694-40c8-a86a-d5e438884cae/resources/1/H108.ifc?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJYHY3TI6VK2ZCYQA%2F20240501%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20240501T164528Z&X-Amz-Expires=600000&X-Amz-SignedHeaders=host&X-Amz-Signature=2ddfa5815be2b3e3acfdb3122f12584732ba45f2ff45e084d8683dc458fed3a1",
"hash": "e63129fbafdf1a5fc857ac435c3b5dc0230092fdbb4ea1455357071610dd8e5d"
}
]
},
{
"uuid": "d4fbc5ea-4e9c-42a3-9057-4a4260d227b4",
"name": "heavy_meta",
"meta": {},
"assembly": null,
"assembly_design": "52f251f2-dad6-4fdc-837c-f278d29cb1b7",
"module": null,
"module_design": null,
"proof": null,
"issue": null,
"part": null,
"part_design": null,
"production_line": null,
"project": null,
"files": [
{
"uuid": "2e77d7e6-5083-4882-baff-34fdb22dc9d8",
"created": "2023-12-22T09:13:48.314408Z",
"name": "viewer_bom",
"short_name": "viewer_bom",
"meta": {
"version": 0
},
"cloud_folder": "16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/0",
"presigned_url": "https://woodwall-s3.amazonaws.com/16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/0/viewer_bom?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJYHY3TI6VK2ZCYQA%2F20240501%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20240501T164529Z&X-Amz-Expires=600000&X-Amz-SignedHeaders=host&X-Amz-Signature=dfe9d59126a6e41b0427e99bb7a7d3ace4655ff9f25fd04ff1222f82185286f4",
"hash": "e072d054c5b6d546cc61ddf436865ab510621a273b1957b63d3081762c518dfe"
},
{
"uuid": "e515422b-88da-4b17-a523-135781c85fb6",
"created": "2023-12-22T09:46:43.958580Z",
"name": "viewer_bom",
"short_name": "viewer_bom",
"meta": {
"version": 1
},
"cloud_folder": "16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/1",
"presigned_url": "https://woodwall-s3.amazonaws.com/16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/1/viewer_bom?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJYHY3TI6VK2ZCYQA%2F20240501%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20240501T164529Z&X-Amz-Expires=600000&X-Amz-SignedHeaders=host&X-Amz-Signature=7902c70fd8000cb9bcd8c4821b2336aa74bdd3231ea3925d387632307db9ee99",
"hash": "e072d054c5b6d546cc61ddf436865ab510621a273b1957b63d3081762c518dfe"
},
{
"uuid": "7ad83c78-9bab-484d-a679-9f1352ab4291",
"created": "2023-12-22T10:20:23.845530Z",
"name": "viewer_bom",
"short_name": "viewer_bom",
"meta": {
"version": 2
},
"cloud_folder": "16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/2",
"presigned_url": "https://woodwall-s3.amazonaws.com/16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/2/viewer_bom?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJYHY3TI6VK2ZCYQA%2F20240501%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20240501T164529Z&X-Amz-Expires=600000&X-Amz-SignedHeaders=host&X-Amz-Signature=040543df00a7728458b0e910cf8282ce85a2a936db77d297f281d5c1f7240c4b",
"hash": "e072d054c5b6d546cc61ddf436865ab510621a273b1957b63d3081762c518dfe"
}
]
}
]
}
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"uuid": "730dc15d-f331-412d-a7f3-37a18034f9e4",
"name": "resources",
"meta": {},
"assembly": null,
"assembly_design": "52f251f2-dad6-4fdc-837c-f278d29cb1b7",
"module": null,
"module_design": null,
"proof": null,
"issue": null,
"part": null,
"part_design": null,
"production_line": null,
"project": null,
"files": [
{
"uuid": "79a38d78-fa96-4413-8d42-cbaf6ded9e2d",
"created": "2023-12-22T09:13:02.683107Z",
"name": "H108.ifc",
"short_name": "H108",
"meta": {
"ext": "ifc",
"tipo": null,
"status": ["uploaded", "designs"],
"section": "assembly_ifc",
"version": 1,
"design_name": "H108"
},
"cloud_folder": "16dbfae0-3694-40c8-a86a-d5e438884cae/resources/1",
"presigned_url": "https://woodwall-s3.amazonaws.com/16dbfae0-3694-40c8-a86a-d5e438884cae/resources/1/H108.ifc?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJYHY3TI6VK2ZCYQA%2F20240501%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20240501T164528Z&X-Amz-Expires=600000&X-Amz-SignedHeaders=host&X-Amz-Signature=2ddfa5815be2b3e3acfdb3122f12584732ba45f2ff45e084d8683dc458fed3a1",
"hash": "e63129fbafdf1a5fc857ac435c3b5dc0230092fdbb4ea1455357071610dd8e5d"
}
]
},
{
"uuid": "d4fbc5ea-4e9c-42a3-9057-4a4260d227b4",
"name": "heavy_meta",
"meta": {},
"assembly": null,
"assembly_design": "52f251f2-dad6-4fdc-837c-f278d29cb1b7",
"module": null,
"module_design": null,
"proof": null,
"issue": null,
"part": null,
"part_design": null,
"production_line": null,
"project": null,
"files": [
{
"uuid": "2e77d7e6-5083-4882-baff-34fdb22dc9d8",
"created": "2023-12-22T09:13:48.314408Z",
"name": "viewer_bom",
"short_name": "viewer_bom",
"meta": {
"version": 0
},
"cloud_folder": "16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/0",
"presigned_url": "https://woodwall-s3.amazonaws.com/16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/0/viewer_bom?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJYHY3TI6VK2ZCYQA%2F20240501%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20240501T164529Z&X-Amz-Expires=600000&X-Amz-SignedHeaders=host&X-Amz-Signature=dfe9d59126a6e41b0427e99bb7a7d3ace4655ff9f25fd04ff1222f82185286f4",
"hash": "e072d054c5b6d546cc61ddf436865ab510621a273b1957b63d3081762c518dfe"
},
{
"uuid": "e515422b-88da-4b17-a523-135781c85fb6",
"created": "2023-12-22T09:46:43.958580Z",
"name": "viewer_bom",
"short_name": "viewer_bom",
"meta": {
"version": 1
},
"cloud_folder": "16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/1",
"presigned_url": "https://woodwall-s3.amazonaws.com/16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/1/viewer_bom?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJYHY3TI6VK2ZCYQA%2F20240501%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20240501T164529Z&X-Amz-Expires=600000&X-Amz-SignedHeaders=host&X-Amz-Signature=7902c70fd8000cb9bcd8c4821b2336aa74bdd3231ea3925d387632307db9ee99",
"hash": "e072d054c5b6d546cc61ddf436865ab510621a273b1957b63d3081762c518dfe"
},
{
"uuid": "7ad83c78-9bab-484d-a679-9f1352ab4291",
"created": "2023-12-22T10:20:23.845530Z",
"name": "viewer_bom",
"short_name": "viewer_bom",
"meta": {
"version": 2
},
"cloud_folder": "16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/2",
"presigned_url": "https://woodwall-s3.amazonaws.com/16dbfae0-3694-40c8-a86a-d5e438884cae/assembly_designs/52f251f2-dad6-4fdc-837c-f278d29cb1b7/heavy_meta/2/viewer_bom?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJYHY3TI6VK2ZCYQA%2F20240501%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20240501T164529Z&X-Amz-Expires=600000&X-Amz-SignedHeaders=host&X-Amz-Signature=040543df00a7728458b0e910cf8282ce85a2a936db77d297f281d5c1f7240c4b",
"hash": "e072d054c5b6d546cc61ddf436865ab510621a273b1957b63d3081762c518dfe"
}
]
}
]
}
INFO
As a last tip, you can better filter your query adding the package name to the URL query params, just like this https://produuz.it/api/v2/cloudstorage/packages/?assembly_design=52f251f2-dad6-4fdc-837c-f278d29cb1b7&name=resources
INFO
You can now also directly filter from constructible client_order_id to get its design packages: the query key is: assembly_design__actuals__client_order_id
INFO
All the content of this page was written for "assembly_designs" endpoint, but same system applies for "module_designs" endpoint.