Skip to content

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 paramDescriptionExample
nameName of the assembly designFD-500
revisionRevision number of the design5
projectProject uuid (also stdlib)b68be32e-262a-4f12-9b79-4b4bc8918d9b
scheduled_prod_dateScheduled production date exists in its linked actual assemblies2024-07-12
client_order_idClient order id exists in its linked actual assemblieswhatever_clien_string

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:

Endpoint: https://produuz.it/api/v2/cloudstorage/packages/?assembly_design=52f251f2-dad6-4fdc-837c-f278d29cb1b7

  • 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.