Appearance
API TUTORIAL – POST DESIGNS
Intro
This document provides a shallow guide on how to post designs and upload files
INFO
The base URL for the produuz.it API V2 is: https://back.produuz.it/api/v2/
Post a Design
Only a project uuid and a design name is needed. The project uuid can be also a standard library uuid, since internally stdlibs are also projects.
Endpoint: https://back.produuz.it/api/v2/constructibles/assembly_designs/
- Method: POST.
- Request Body: Design object.
- Response: Serialized created design.
Example Request Payload
json
{
"project": "uuid-of-the-project",
"name": "D-10001", // Design name
"meta": {}, // This will be filled by the system if needed
"tipo": "timber_panel" // "timber_panel", "module_unit", ...
}{
"project": "uuid-of-the-project",
"name": "D-10001", // Design name
"meta": {}, // This will be filled by the system if needed
"tipo": "timber_panel" // "timber_panel", "module_unit", ...
}Example Response Payload
json
{
"project": "uuid-of-the-project",
"parent_designs": [],
"from_stdlib": false,
"uuid": "340c1149-7f85-4a83-bede-10089e462069",
"created": "2025-09-15T17:11:59.548625Z",
"modified": "2025-09-15T17:11:59.548641Z",
"name": "D-10001",
"revision": 0,
"resources": {},
"meta": {
"analysis": "waiting",
"bruto_area": 0,
"ifc_assembly_name": "unknown"
},
"tipo": "timber_panel"
}{
"project": "uuid-of-the-project",
"parent_designs": [],
"from_stdlib": false,
"uuid": "340c1149-7f85-4a83-bede-10089e462069",
"created": "2025-09-15T17:11:59.548625Z",
"modified": "2025-09-15T17:11:59.548641Z",
"name": "D-10001",
"revision": 0,
"resources": {},
"meta": {
"analysis": "waiting",
"bruto_area": 0,
"ifc_assembly_name": "unknown"
},
"tipo": "timber_panel"
}UPLOAD FILES
Get the resources package object:
Endpoint: https://back.produuz.it/api/v2/constructibles/assembly_designs/get_or_create/
Example Request Payload
json
{
"name": "resources",
"assembly_design": "340c1149-7f85-4a83-bede-10089e462069"
}{
"name": "resources",
"assembly_design": "340c1149-7f85-4a83-bede-10089e462069"
}Example Response Payload
json
{
"uuid": "6d85a4b6-2c8d-4708-a6d5-5e78469c1029",
"name": "resources",
"meta": {},
"assembly": null,
"assembly_design": "340c1149-7f85-4a83-bede-10089e462069",
"module": null,
"module_design": null,
"proof": null,
"issue": null,
"part": null,
"part_design": null,
"production_line": null,
"project": null,
"files": []
}{
"uuid": "6d85a4b6-2c8d-4708-a6d5-5e78469c1029",
"name": "resources",
"meta": {},
"assembly": null,
"assembly_design": "340c1149-7f85-4a83-bede-10089e462069",
"module": null,
"module_design": null,
"proof": null,
"issue": null,
"part": null,
"part_design": null,
"production_line": null,
"project": null,
"files": []
}Once you have the package uuid, you have to request a presigned URL to upload a file to AWS S3.
Example Request Payload
json
{
"name": "D-10001.ifc",
"short_name": "D-10001",
"type": "application/octet-stream",
"meta": {
"section": "assembly_ifc",
"tipo": "timber_panel",
"ext": "ifc",
"status": ["uploaded"],
"design_name": "D-10001"
}
}{
"name": "D-10001.ifc",
"short_name": "D-10001",
"type": "application/octet-stream",
"meta": {
"section": "assembly_ifc",
"tipo": "timber_panel",
"ext": "ifc",
"status": ["uploaded"],
"design_name": "D-10001"
}
}Example Response Payload
json
{
"url": "https://woodwall-test.s3.amazonaws.com",
"method": "POST",
"fields": {
"acl": "private",
"Content-Type": "application/octet-stream",
"success_action_status": "201",
"key": "60252ad1-60b5-4d49-92e8-12f159ddf47f/assembly_designs/340c1149-7f85-4a83-bede-10089e462069/resources/3/D-10001.ifc",
"x-amz-algorithm": "AWS4-HMAC-SHA256",
"x-amz-credential": "AKIAJYHY3TI6VK2ZCYQA/20250915/eu-central-1/s3/aws4_request",
"x-amz-date": "20250915T184331Z",
"policy": "eyJleHBpcmF0aW9uIjogIjIwMjUtMDktMTVUMTk6NDM6MzFaIiwgImNvbmRpdGlvbnMiOiBbeyJhY2wiOiAicHJpdmF0ZSJ9LCB7IkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSwgeyJzdWNjZXNzX2FjdGlvbl9zdGF0dXMiOiAiMjAxIn0sIHsiYnVja2V0IjogIndvb2R3YWxsLXRlc3QifSwgeyJrZXkiOiAiNjAyNTJhZDEtNjBiNS00ZDQ5LTkyZTgtMTJmMTU5ZGRmNDdmL2Fzc2VtYmx5X2Rlc2lnbnMvMzQwYzExNDktN2Y4NS00YTgzLWJlZGUtMTAwODllNDYyMDY5L3Jlc291cmNlcy8zL0QtMTAwMDEuaWZjIn0sIHsieC1hbXotYWxnb3JpdGhtIjogIkFXUzQtSE1BQy1TSEEyNTYifSwgeyJ4LWFtei1jcmVkZW50aWFsIjogIkFLSUFKWUhZM1RJNlZLMlpDWVFBLzIwMjUwOTE1L2V1LWNlbnRyYWwtMS9zMy9hd3M0X3JlcXVlc3QifSwgeyJ4LWFtei1kYXRlIjogIjIwMjUwOTE1VDE4NDMzMVoifV19",
"x-amz-signature": "6c83999765a80e91bacbc892ea6187fd59a845bc2d28eef0e2465aebbb8511e4"
},
"headers": {}
}{
"url": "https://woodwall-test.s3.amazonaws.com",
"method": "POST",
"fields": {
"acl": "private",
"Content-Type": "application/octet-stream",
"success_action_status": "201",
"key": "60252ad1-60b5-4d49-92e8-12f159ddf47f/assembly_designs/340c1149-7f85-4a83-bede-10089e462069/resources/3/D-10001.ifc",
"x-amz-algorithm": "AWS4-HMAC-SHA256",
"x-amz-credential": "AKIAJYHY3TI6VK2ZCYQA/20250915/eu-central-1/s3/aws4_request",
"x-amz-date": "20250915T184331Z",
"policy": "eyJleHBpcmF0aW9uIjogIjIwMjUtMDktMTVUMTk6NDM6MzFaIiwgImNvbmRpdGlvbnMiOiBbeyJhY2wiOiAicHJpdmF0ZSJ9LCB7IkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSwgeyJzdWNjZXNzX2FjdGlvbl9zdGF0dXMiOiAiMjAxIn0sIHsiYnVja2V0IjogIndvb2R3YWxsLXRlc3QifSwgeyJrZXkiOiAiNjAyNTJhZDEtNjBiNS00ZDQ5LTkyZTgtMTJmMTU5ZGRmNDdmL2Fzc2VtYmx5X2Rlc2lnbnMvMzQwYzExNDktN2Y4NS00YTgzLWJlZGUtMTAwODllNDYyMDY5L3Jlc291cmNlcy8zL0QtMTAwMDEuaWZjIn0sIHsieC1hbXotYWxnb3JpdGhtIjogIkFXUzQtSE1BQy1TSEEyNTYifSwgeyJ4LWFtei1jcmVkZW50aWFsIjogIkFLSUFKWUhZM1RJNlZLMlpDWVFBLzIwMjUwOTE1L2V1LWNlbnRyYWwtMS9zMy9hd3M0X3JlcXVlc3QifSwgeyJ4LWFtei1kYXRlIjogIjIwMjUwOTE1VDE4NDMzMVoifV19",
"x-amz-signature": "6c83999765a80e91bacbc892ea6187fd59a845bc2d28eef0e2465aebbb8511e4"
},
"headers": {}
}With this payload you are able to upload the file to S3 following the AWS user guides