Models
Upload, query, and manage 3D BIM models within projects. Includes endpoints for model import, property queries, quantity calculations, dynamic properties, IFC export, and edit sessions.
Get models in a project.
Returns a list of the accessible models the caller has on the project's main branch, where the import state is valid, ordered by name. A model that has been removed from the project is not listed. Recommended OAuth scope: models:read.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
Response fields
-
- Name
-
models - Type
- array<object>
- Required
- Optional
- Description
- List of models the current user can see in the project.
-
-
- Name
-
id - Type
- string
- Required
- Optional
- Description
- Identifier of the model. Use this as the modelId path parameter.
-
- Name
-
guid - Type
- string
- Required
- Optional
- Description
- Globally unique identifier of the model.
-
- Name
-
name - Type
- string
- Required
- Optional
- Description
- Name of the model.
-
- Name
-
image - Type
- string
- Required
- Optional
- Description
- Public URL of the model thumbnail image, if available.
-
- Name
-
tags - Type
- array<string>
- Required
- Optional
- Description
- A list of tags categorizing the model (e.g. "Architecture", "MEP", "Structural").
-
- Name
-
canEdit - Type
- boolean
- Required
- Optional
- Description
- Indicates whether the current user can modify this model.
-
- Name
-
url - Type
- string
- Required
- Optional
- Description
- Direct URL to open this model in the Qonic web app.
-
- Name
-
latestPublicSource - Type
- object
- Required
- Optional
- Description
- The immutable source state that supplies a model and its shared data.
-
-
- Name
-
projectVersionId - Type
- string
- Required
- Optional
- Description
- Identifier of the complete project snapshot containing the model source.
-
- Name
-
modelVersionId - Type
- string
- Required
- Optional
- Description
- Identifier of the model-specific geometry and property state.
-
- Name
-
sharedDataVersionId - Type
- string
- Required
- Optional
- Description
- Identifier of the project-wide shared data used with the model.
-
-
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The project identifier or request parameters are invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/problem+json
- Description
- The requested resource was not found
Body:
ProblemDetails
Create a new model and start an import.
Creates a new model in the specified project and starts an import process for a previously uploaded file. Recommended OAuth scope: models:write. The file must already be uploaded using a key from the /v1/files/upload-url endpoint. Supported extensions include Revit (.rvt), SketchUp (.skp), Rhino (.3dm), IFC (.ifc) and ZIP (.zip) An import process is started immediately unless the file or arguments are invalid, in which case a standard error response is returned. Any tags supplied that do not yet exist in the project are created automatically and linked to the model. Models cannot be created in the automatically generated sample project; such requests are rejected with a 400 Bad Request.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
Request body
-
- Name
-
modelName - Type
- string
- Required
- Required
- Description
- Name of the model as it will appear in the project.
-
- Name
-
uploadKey - Type
- string
- Required
- Required
- Description
- Storage key returned from GET /v1/files/upload-url, referencing the uploaded model file.
-
- Name
-
uploadFileName - Type
- string
- Required
- Required
- Description
- File name of the uploaded model (including extension). Used to determine the file type (IFC, Revit, SketchUp, Rhino, ZIP).
-
- Name
-
tags - Type
- array<string>
- Required
- Optional
- Description
- A list of tags to categorize the model (e.g. "Architecture", "MEP", "Structural"). Tags that do not yet exist in the project are added to it automatically.
-
- Name
-
defaultRole - Type
- string
- Required
- Optional
- Description
- Optional default role assigned to project members for this model.
Response fields
-
- Name
-
modelId - Type
- string
- Required
- Optional
- Description
- Identifier of the created model.
-
- Name
-
modelGuid - Type
- string
- Required
- Required
- Description
- Globally unique identifier of the created model.
-
- Name
-
id - Type
- string
- Required
- Optional
- Description
- Public identifier of the operation.
-
- Name
-
kind - Type
- "ImportIfc" | "ExportIfc" | "CalculateQuantities" | "CalculateDerivedProperties"
- Required
- Optional
- Description
- Type of operation (for example importing, exporting, calculating quantities).
-
- Name
-
status - Type
- "Queued" | "InProgress" | "Ready" | "Failed"
- Required
- Optional
- Description
- Current status of the operation (queued, in progress, ready, failed).
-
- Name
-
percentageCompleted - Type
- integer
- Required
- Optional
- Description
- Progress of the operation in percent from 0 to 100.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The file, discipline, role, upload URL or other arguments are invalid, or the target project is the sample project.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/problem+json
- Description
- The requested resource was not found
Body:
ProblemDetails
Get available product fields for a model.
Returns the names of product fields that can be requested when querying products in this model. Recommended OAuth scope: models:read.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
Query parameters
-
- Name
-
page - Type
- integer
- Required
- Optional
- Description
- Page number to return (1-based, default 1).
-
- Name
-
pageSize - Type
- integer
- Required
- Optional
- Description
- Number of fields per page (default 1000, max 5000).
Response fields
-
- Name
-
fields - Type
- array<string>
- Required
- Optional
- Description
- Names of fields that can be requested when querying products.
-
- Name
-
fieldDetails - Type
- array<object>
- Required
- Optional
- Description
- Per-property metadata (data type, unit, enumeration values) for the fields on the current page. Fixed attributes such as Guid, Class and Name are plain strings and are not listed here.
-
-
- Name
-
name - Type
- string
- Required
- Optional
- Description
- Property name, as used in the fields and filters of a product query.
-
- Name
-
dataType - Type
- string
- Required
- Optional
- Description
- Underlying value type, e.g. String, Real, Integer, Boolean or Enum. Null when the type cannot be determined.
-
- Name
-
unit - Type
- string
- Required
- Optional
- Description
- Unit of the property value, e.g. Millimetre or SquareMetre. Null when the property is unitless.
-
- Name
-
enumerationValues - Type
- array<string>
- Required
- Optional
- Description
- Allowed values when the property is an enumeration; otherwise null.
-
-
- Name
-
totalCount - Type
- integer
- Required
- Optional
- Description
- Total number of available fields (before pagination).
-
- Name
-
page - Type
- integer
- Required
- Optional
- Description
- The current page number (1-based).
-
- Name
-
pageSize - Type
- integer
- Required
- Optional
- Description
- The maximum number of fields returned per page.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The project or model identifier is invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
Get products in a model using a JSON query.
Returns the requested fields for all products that satisfy the provided filters. The request body must be a JSON object with the following shape: ```json { "fields": ["id", "name", "length"], "filters": [ { "property": "name", "operator": "Equals", "value": "Steel Beam" }, { "property": "status", "operator": "In", "value": ["active", "pending"] } ] } ``` - fields (optional): array of product property names to include in the response. If omitted or empty, all default fields are returned. - filters (optional): array of filter objects. Each filter has: - property: the name of the product property to filter on. - operator: the comparison to apply. Supported values: - Equals: property must be equal to value. - NotEquals: property must not be equal to value. - In: property value must be one of the items in value. - NotIn: property value must not be any of the items in value. - Contains: string property must contain the substring value (case-insensitive). - value: - for Equals, NotEquals, or Contains, a single JSON value (string, number, boolean, etc.); - for In or NotIn, a JSON array of values. All filters are combined with logical AND: only products that satisfy every filter are included in the result. Recommended OAuth scope: models:read.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
Query parameters
-
- Name
-
page - Type
- integer
- Required
- Optional
- Description
- Page number to return (1-based, default 1).
-
- Name
-
pageSize - Type
- integer
- Required
- Optional
- Description
- Number of products per page (default 1000, max 5000).
Request body
-
- Name
-
fields - Type
- array<string>
- Required
- Optional
- Description
- Product fields to include in the response. If null or empty, all available fields will be returned.
-
- Name
-
filters - Type
- array<object>
- Required
- Optional
- Description
- Filters to apply to the products. All filters are combined using logical AND.
-
-
- Name
-
property - Type
- string
- Required
- Required
- Description
- Name of the product property to filter on.
-
- Name
-
value - Type
- any
- Required
- Required
- Description
- Filter value. For the equality operators this is a single value; for the In/NotIn operators it should be a JSON array of values.
-
- Name
-
operator - Type
- "Equals" | "NotEquals" | "In" | "NotIn" | "Contains"
- Required
- Required
- Description
- Operator to apply when comparing the property to the filter value.
-
Response fields
-
- Name
-
totalCount - Type
- integer
- Required
- Optional
- Description
- Total number of products matching the query filters (before pagination).
-
- Name
-
page - Type
- integer
- Required
- Optional
- Description
- The current page number (1-based).
-
- Name
-
pageSize - Type
- integer
- Required
- Optional
- Description
- The maximum number of products returned per page.
-
- Name
-
result - Type
- array<object>
- Required
- Optional
- Description
- Collection of products, each represented as a dictionary of field names and values.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- Filters or parameters are invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
Start a quantity calculation for products in a model.
Starts an asynchronous calculation of quantities for all products that satisfy the given filters. The request body specifies which quantity calculators to use and which filters to apply. The request body must be a JSON object with the following shape: ```json { "calculators": [ "Count", "NetVolume", "GrossArea" ], "filters": [ { "property": "category", "operator": "Equals", "value": "Beam" }, { "property": "status", "operator": "In", "value": [ "active", "pending" ] } ] } ``` - calculators (required): array of calculator names. Supported values: - Count – counts the number of matching products. - Length – sums the length of matching products. - NetArea – sums the net area of matching products. - GrossArea – sums the gross area of matching products. - NetVolume – sums the net volume of matching products. - GrossVolume – sums the gross volume of matching products. - filters (optional): array of filter objects. Each filter has: - property: the name of the product property to filter on. - operator: the comparison to apply. Supported values: - Equals: property must be equal to value. - NotEquals: property must not be equal to value. - In: property value must be one of the items in value. - NotIn: property value must not be any of the items in value. - Contains: string property must contain the substring value (case-insensitive). - value: - for Equals, NotEquals, or Contains, a single JSON value (string, number, boolean, etc.); - for In or NotIn, a JSON array of values. All filters are combined with logical AND: only products that satisfy every filter are included in the calculation. The response contains an operation object that can be polled using the operations endpoint, and used with the quantities result endpoint to obtain the final result. Recommended OAuth scope: models:read.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
Request body
-
- Name
-
calculators - Type
- array<"Count" | "Length" | "NetArea" | "GrossArea" | "NetVolume" | "GrossVolume">
- Required
- Required
- Description
- The calculators to use for quantity calculation (e.g. Count, Length, NetArea).
-
- Name
-
filters - Type
- array<object>
- Required
- Optional
- Description
- Optional filters to restrict which products are included in the calculation.
-
-
- Name
-
property - Type
- string
- Required
- Required
- Description
- Name of the product property to filter on.
-
- Name
-
value - Type
- any
- Required
- Required
- Description
- Filter value. For the equality operators this is a single value; for the In/NotIn operators it should be a JSON array of values.
-
- Name
-
operator - Type
- "Equals" | "NotEquals" | "In" | "NotIn" | "Contains"
- Required
- Required
- Description
- Operator to apply when comparing the property to the filter value.
-
Response fields
-
- Name
-
id - Type
- string
- Required
- Optional
- Description
- Public identifier of the operation.
-
- Name
-
kind - Type
- "ImportIfc" | "ExportIfc" | "CalculateQuantities" | "CalculateDerivedProperties"
- Required
- Optional
- Description
- Type of operation (for example importing, exporting, calculating quantities).
-
- Name
-
status - Type
- "Queued" | "InProgress" | "Ready" | "Failed"
- Required
- Optional
- Description
- Current status of the operation (queued, in progress, ready, failed).
-
- Name
-
percentageCompleted - Type
- integer
- Required
- Optional
- Description
- Progress of the operation in percent from 0 to 100.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The request body is invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
Get the result of a quantity calculation.
Returns the presigned download URL for a completed quantity calculation result. Recommended OAuth scope: models:read. If the operation has not finished or has failed, a standard error response with a descriptive error code and message is returned. Result URLs are temporary and expire after seven days.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
-
- Name
-
operationId - Type
- string
- Required
- Required
- Description
- Identifier of the operation.
Response fields
-
- Name
-
downloadUrl - Type
- string
- Required
- Required
- Description
- Presigned URL to download the quantities result file. Valid for seven days.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The operation is not ready or has failed.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project, model or operation does not exist or is not accessible.
Body:
ErrorView
Get available product dynamic fields for a model.
Returns the names of product dynamic fields that can be requested when querying products in this model. Recommended OAuth scope: models:read.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
Query parameters
-
- Name
-
page - Type
- integer
- Required
- Optional
- Description
- Page number to return (1-based, default 1).
-
- Name
-
pageSize - Type
- integer
- Required
- Optional
- Description
- Number of fields per page (default 1000, max 5000).
Response fields
-
- Name
-
fields - Type
- array<string>
- Required
- Optional
- Description
- Names of fields that can be requested when querying products.
-
- Name
-
fieldDetails - Type
- array<object>
- Required
- Optional
- Description
- Per-property metadata (data type, unit, enumeration values) for the fields on the current page. Fixed attributes such as Guid, Class and Name are plain strings and are not listed here.
-
-
- Name
-
name - Type
- string
- Required
- Optional
- Description
- Property name, as used in the fields and filters of a product query.
-
- Name
-
dataType - Type
- string
- Required
- Optional
- Description
- Underlying value type, e.g. String, Real, Integer, Boolean or Enum. Null when the type cannot be determined.
-
- Name
-
unit - Type
- string
- Required
- Optional
- Description
- Unit of the property value, e.g. Millimetre or SquareMetre. Null when the property is unitless.
-
- Name
-
enumerationValues - Type
- array<string>
- Required
- Optional
- Description
- Allowed values when the property is an enumeration; otherwise null.
-
-
- Name
-
totalCount - Type
- integer
- Required
- Optional
- Description
- Total number of available fields (before pagination).
-
- Name
-
page - Type
- integer
- Required
- Optional
- Description
- The current page number (1-based).
-
- Name
-
pageSize - Type
- integer
- Required
- Optional
- Description
- The maximum number of fields returned per page.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The project or model identifier is invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
Start a dynamic property calculation for products in a model.
Starts an asynchronous calculation of dynamic properties for all products that satisfy the given filters. The request body specifies which dynamic properties to use and which filters to apply. The request body must be a JSON object with the following shape: ```json { "fields": ["Mass", "GrossFootPrintArea"], "filters": [ { "property": "category", "operator": "Equals", "value": "Beam" }, { "property": "status", "operator": "In", "value": [ "active", "pending" ] } ] } ``` - fields (optional): array of product dynamic property names to include in the response. If omitted or empty, all default fields are returned. - filters (optional): array of filter objects. Each filter has: - property: the name of the product property to filter on. Dynamic properties are not supported for filters. - operator: the comparison to apply. Supported values: - Equals: property must be equal to value. - NotEquals: property must not be equal to value. - In: property value must be one of the items in value. - NotIn: property value must not be any of the items in value. - Contains: string property must contain the substring value (case-insensitive). - value: - for Equals, NotEquals, or Contains, a single JSON value (string, number, boolean, etc.); - for In or NotIn, a JSON array of values. All filters are combined with logical AND: only products that satisfy every filter are included in the calculation. The response contains an operation object that can be polled using the operations endpoint, and used with the dynamic properties result endpoint to obtain the final result. Recommended OAuth scope: models:read. More on Dynamic Properties
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
Request body
-
- Name
-
fields - Type
- array<string>
- Required
- Optional
- Description
- Product fields to include in the response. If null or empty, all available fields will be returned.
-
- Name
-
filters - Type
- array<object>
- Required
- Optional
- Description
- Filters to apply to the products. All filters are combined using logical AND.
-
-
- Name
-
property - Type
- string
- Required
- Required
- Description
- Name of the product property to filter on.
-
- Name
-
value - Type
- any
- Required
- Required
- Description
- Filter value. For the equality operators this is a single value; for the In/NotIn operators it should be a JSON array of values.
-
- Name
-
operator - Type
- "Equals" | "NotEquals" | "In" | "NotIn" | "Contains"
- Required
- Required
- Description
- Operator to apply when comparing the property to the filter value.
-
Response fields
-
- Name
-
id - Type
- string
- Required
- Optional
- Description
- Public identifier of the operation.
-
- Name
-
kind - Type
- "ImportIfc" | "ExportIfc" | "CalculateQuantities" | "CalculateDerivedProperties"
- Required
- Optional
- Description
- Type of operation (for example importing, exporting, calculating quantities).
-
- Name
-
status - Type
- "Queued" | "InProgress" | "Ready" | "Failed"
- Required
- Optional
- Description
- Current status of the operation (queued, in progress, ready, failed).
-
- Name
-
percentageCompleted - Type
- integer
- Required
- Optional
- Description
- Progress of the operation in percent from 0 to 100.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The request body is invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
Get the result of a dynamic properties query.
Returns the presigned download URL for a completed dynamic properties query result. Recommended OAuth scope: models:read. If the operation has not finished or has failed, a standard error response with a descriptive error code and message is returned. Result URLs are temporary and expire after seven days.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
-
- Name
-
operationId - Type
- string
- Required
- Required
- Description
- Identifier of the operation.
Response fields
-
- Name
-
downloadUrl - Type
- string
- Required
- Required
- Description
- Presigned URL to download the dynamic properties result file. Valid for seven days.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The operation is not ready or has failed.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project, model or operation does not exist or is not accessible.
Body:
ErrorView
Start a modification session on a model.
Starts an external modification session that groups subsequent changes under a client-generated session id. Recommended OAuth scope: models:write. The request must include an X-Client-Session-Id header. The same value must be sent when calling modification endpoints such as product modification, product deletion, discarding changes and publishing. Sessions expire automatically after 30 minutes of inactivity. Only one active session per user and model is allowed.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The session header or request parameters are invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
End a modification session on a model.
Ends a previously started modification session identified by the X-Client-Session-Id header. If the session has already expired or does not exist, the request succeeds without further effect.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The session header or request parameters are invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
Modify product properties in a model.
Applies one or more modifications to product properties in the model. The request body describes added, updated, deleted or upserted properties grouped by field name and product identifier. Recommended OAuth scope: models:write. The request must include an X-Client-Session-Id header corresponding to an active modification session. If any modification in the request is invalid, no changes are applied and a list of input errors is returned.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
Request body
-
- Name
-
add - Type
- object
- Required
- Optional
- Description
- Properties that should be added for the specified products. Keys are property names, values are keyed by product GUID.
-
- Name
-
update - Type
- object
- Required
- Optional
- Description
- Properties that should be updated on existing products. Keys are property names, values are keyed by product GUID.
-
- Name
-
delete - Type
- object
- Required
- Optional
- Description
- Properties that should be removed from products. Keys are property names, values are keyed by product GUID.
-
- Name
-
addOrUpdate - Type
- object
- Required
- Optional
- Description
- Properties that should be added if missing or updated if they already exist. Keys are property names, values are keyed by product GUID.
Response fields
-
- Name
-
errors - Type
- array<object>
- Required
- Optional
- Description
- Validation errors grouped by product and field.
-
-
- Name
-
guid - Type
- string
- Required
- Optional
- Description
- GUID of the product for which the error occurred.
-
- Name
-
field - Type
- string
- Required
- Optional
- Description
- Name of the field that caused the error.
-
- Name
-
error - Type
- string
- Required
- Optional
- Description
- Short error code describing the type of problem.
-
- Name
-
description - Type
- string
- Required
- Optional
- Description
- Human-readable description of the problem.
-
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The session header or modification payload is invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
Delete a product from a model.
Deletes the product with the given identifier from the model. Recommended OAuth scope: models:write. The request must include an X-Client-Session-Id header corresponding to an active modification session. If the identifier is invalid or the product cannot be removed, a standard error response is returned.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
-
- Name
-
productId - Type
- string
- Required
- Required
- Description
- Identifier of the product to delete.
Response fields
-
- Name
-
errors - Type
- array<object>
- Required
- Optional
- Description
- Validation errors grouped by product and field.
-
-
- Name
-
guid - Type
- string
- Required
- Optional
- Description
- GUID of the product for which the error occurred.
-
- Name
-
field - Type
- string
- Required
- Optional
- Description
- Name of the field that caused the error.
-
- Name
-
error - Type
- string
- Required
- Optional
- Description
- Short error code describing the type of problem.
-
- Name
-
description - Type
- string
- Required
- Optional
- Description
- Human-readable description of the problem.
-
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The identifier is invalid or the product cannot be deleted.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
Publish all personal changes of the current user for the project
Publishes the current user's personal changes for the project as a new public version. Recommended OAuth scope: models:write. The request must include an X-Client-Session-Id header corresponding to an active modification session. If there are no personal changes for the project, the request completes successfully but has no effect. Publishing occurs at project level and can happen in parallel with changes by other users.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model whose changes are being published.
Request body
-
- Name
-
title - Type
- string
- Required
- Required
- Description
- Title for the new public version.
-
- Name
-
description - Type
- string
- Required
- Optional
- Description
- Optional description describing the changes that are being published.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The project identifier is invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
Discard all personal changes of the current user for a model inside of a project
Discards any un-published personal changes for the specified project for the current user. Recommended OAuth scope: models:write. The request must include an X-Client-Session-Id header. If there are no personal changes for the project, the request completes successfully without effect.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The project identifier is invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
Start an IFC export for the latest public version of a model.
Starts an asynchronous IFC export using the latest public version of the given model. Recommended OAuth scope: models:read. The response contains an operation object that can be polled using the operations endpoint, and used with the IFC export result endpoint to obtain the final IFC file.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
Response fields
-
- Name
-
source - Type
- object
- Required
- Optional
- Description
- The immutable source state that supplies a model and its shared data.
-
-
- Name
-
projectVersionId - Type
- string
- Required
- Optional
- Description
- Identifier of the complete project snapshot containing the model source.
-
- Name
-
modelVersionId - Type
- string
- Required
- Optional
- Description
- Identifier of the model-specific geometry and property state.
-
- Name
-
sharedDataVersionId - Type
- string
- Required
- Optional
- Description
- Identifier of the project-wide shared data used with the model.
-
-
- Name
-
id - Type
- string
- Required
- Optional
- Description
- Public identifier of the operation.
-
- Name
-
kind - Type
- "ImportIfc" | "ExportIfc" | "CalculateQuantities" | "CalculateDerivedProperties"
- Required
- Optional
- Description
- Type of operation (for example importing, exporting, calculating quantities).
-
- Name
-
status - Type
- "Queued" | "InProgress" | "Ready" | "Failed"
- Required
- Optional
- Description
- Current status of the operation (queued, in progress, ready, failed).
-
- Name
-
percentageCompleted - Type
- integer
- Required
- Optional
- Description
- Progress of the operation in percent from 0 to 100.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The project or model identifier is invalid.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project or model does not exist or is not accessible.
Body:
ErrorView
Get the result of an IFC export operation.
Returns the result of an IFC export operation as an HTTP redirect to a file, once the operation has finished successfully. If the operation has not finished or has failed, a standard error response with a descriptive error code and message is returned. Result URLs are temporary and expire after seven days.
Path parameters
-
- Name
-
projectId - Type
- string
- Required
- Required
- Description
- Identifier of the project.
-
- Name
-
modelId - Type
- string
- Required
- Required
- Description
- Identifier of the model.
-
- Name
-
operationId - Type
- string
- Required
- Required
- Description
- Identifier of the operation.
Response fields
-
- Name
-
downloadUrl - Type
- string
- Required
- Optional
- Description
- Presigned URL to download the exported IFC file. Valid for seven days.
Error responses
-
- Name
-
400 - Type
- application/json
- Description
- The operation is not ready or has failed.
Body:
ErrorView
-
- Name
-
401 - Type
- application/problem+json
- Description
- Authentication required. Provide a valid Bearer token in the Authorization header.
Body:
ProblemDetails
-
- Name
-
403 - Type
- application/json
- Description
- The user does not have sufficient permissions for this operation.
Body:
ErrorView
-
- Name
-
404 - Type
- application/json
- Description
- The project, model or operation does not exist or is not accessible.
Body:
ErrorView