NAV Navigation
curl

Introduction

Beta

Bimsync REST API v2 is still under development. What does that mean?

Schema

All requests are over HTTPS from the address https://api.bimsync.com/v2. Data is sent and received as JSON, except for resources where files are uploaded or download.

Pagination

Resources that return multiple items are paginated. The default page size is 100 items and can be specified using the pageSize query parameter. Pages are specified using the page query parameter. The page value for the first page is 1.

Name Type Description
page Integer Select a specific page. Default value is 1.
pageSize Integer Select number of items per page. Default value is 100.

Instead of calculating pagination queries yourself, you can find the information in the Link header in paginated responses.

Link: <https://api.bimsync.com/v2/projects?page=2>; rel="next", <https://api.bimsync.com/v2/projects?page=3> rel="last"

The following values are used for rel:

Name Description
next Relation for the next page of items. Omitted if current page is the last.
prev Relation for the previous page of items. Omitted if current page is the first.
first Relation for the first page of items. Omitted if current page is the first.
last Relation for the last page of items. Omitted if current page is the last.

Dates

All dates and times are returned in ISO 8601 format:

YYYY-MM-DDTHH:MM:SSZ

Errors

Errors are returned as an Error object representated as JSON. The reference for each resource have a detailed summary of all errors that can occur.

Common Errors

Status Code Message
401 Unauthorized 10 ACCESS_TOKEN_MISSING Access token is missing
401 Unauthorized 11 ACCESS_TOKEN_INVALID Access token is empty or invalid
401 Unauthorized 12 ACCESS_TOKEN_EXPIRED Access token has expired
500 Internal Server Error 30 INTERNAL_ERROR Internal error

Authentication

Authorization Code Grant

1. Obtain an authorization code

Redirect the user the URL https://api.bimsync.com/oauth2/authorize with the following query parameters set:

Name Type Description
client_id String
response_type String Value must be set to code
state String Optional Any state which may be useful for you application. The state is returned by the response.
redirect_uri String The URL where the response is sent. Must match the registered redirect URI.

If the request is valid and the user authorizes your application Bimsync will redirect back to the redirect URI with the following query parameters:

Name Type Description
code String The authorization code
state String If supplied in authorization request

If the request is valid and the user authorizes your application Bimsync will redirect back to the redirect URI with query parameter error set. Values are specified in section 4.1.2.1 Error Response

2. Obtain an access token

Example

curl -X POST \
    --header "Content-Type: application/x-www-form-urlencoded" \
    --data "grant_type=authorization_code&code=dlZE0KFxhM&redirect_uri=http%3A%2F%2Fclient%2eexample%2Ecom&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET"
    "https://api.bimsync.com/oauth2/token"
{
    "access_token": "W2Lf11j7ZaVFxDc5CFCYJT",
    "refresh_token": "VQE9buKoozaw8Jtpp9t01W"
    "token_type": "bearer",
    "expires_in": 3599
}

After you have received the authorization code you can request an access token.

Method

POST

URL

https://api.bimsync.com/oauth2/token

Request format

application/x-www-form-urlencoded

Request parameters

Name Type Description
grant_type String Value must be set to authorization_code
code String The authorization code
client_id String
client_secret String

Response format

application/json

Response

Name Type Description
access_token String
refresh_token String
token_type String
expires_in Integer

Errors

Specified in section 5.2 Error Response

Refreshing an Access Token

Example

curl -X POST \
    --header "Content-Type: application/x-www-form-urlencoded" \
    --data "grant_type=refresh_token&refresh_token=IDR9ohXbbmnj8Wgcc9g01J&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET"
    "https://api.bimsync.com/oauth2/token"
{
    "access_token": "W2Lf11j7ZaVFxDc5CFCYJT",
    "refresh_token": "VQE9buKoozaw8Jtpp9t01W"
    "token_type": "bearer",
    "expires_in": 3599
}

Method

POST

URL

https://api.bimsync.com/oauth2/token

Request format

application/x-www-form-urlencoded

Request parameters

Name Type Description
grant_type String Value must be set to refresh_token
refresh_token String
client_id String
client_secret String

Response format

application/json

Response

Name Type Description
access_token String
refresh_token String
token_type String
expires_in Integer

Errors

Specified in section 5.2 Error Response

Client Credentials Grant

Example

curl -X POST \
    --header "Content-Type: application/x-www-form-urlencoded" \
    --data "grant_type=client_credentials&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET"
    "https://api.bimsync.com/oauth2/token"
{
    "access_token": "dJ3nS4CmaWLm95noO8Lfku",
    "token_type": "bearer",
    "expires_in": 3599
}

Method

POST

URL

https://api.bimsync.com/oauth2/token

Request format

application/x-www-form-urlencoded

Request parameters

Name Type Description
grant_type String Value must be set to client_credentials
client_id String
client_secret String

Response format

application/json

Response

Name Type Description
access_token String
token_type String
expires_in Integer

Errors

Specified in section 5.2 Error Response

Objects

This describes the objects that are returned from the core resources of the API. Objects returned from IFC resources are specified in the IFC section.

Error

Description

Represents an error.

Fields

Name Type Description
code Integer
message String

Error codes

Code Name Description
10 ACCESS_TOKEN_MISSING
11 ACCESS_TOKEN_INVALID
12 ACCESS_TOKEN_EXPIRED
20 NOT_FOUND
21 FORBIDDEN
22 UNPROCESSABLE_ENTITY
23 EMPTY_FILE
24 BAD_REQUEST
30 INTERNAL_ERROR
100 INSUFFICENT_PRIVILEGE
101 PROJECT_LIMIT_EXCEEDED
102 INVALID_VIEWER_TOKEN
200 INVALID_IFC

User

Example

{
    "createdAt": "2016-09-20T14:32:25Z",
    "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
    "name": "Kristine Knight",
    "username": "kristine.knight@example.com"
}
{
    "createdAt": "2016-09-20T14:55:22Z",
    "id": "524809076a694255b989d236517a55da",
    "name": "Clean Cut Builders",
    "username": null
}

Description

Represents a User, Organization or Team.

A User is someone with a Bimsync account, commonly representing a person.

An Organization represents a company, project organization or an application. Organizations do not have a username and cannot sign in to Bimsync.

A Team represents a group of users within a project. Teams do not have a username and cannot sign in to Bimsync.

Fields

Name Type Description
createdAt Date The date and time the user was created.
id String A unique identifier for a user. Represented as compacted UUID using 32 hexadecimal characters.
name String The name of the user. Limited to 128 characters.
username String The handle the user identifies with. If the User represents an organization or a team the value is always null. Commonly the username will be in email address format. Usernames are unique but subject to change. Use id as an identifier when possible. Limited to 50 characters.

Member

Example

{
    "role": "owner",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    }
}
{
    "role": "member",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "573761199e2147dcae4a7a0661e03a26",
        "name": "Ron Ramirez",
        "username": "ron.ramirez@example.com"
    }
}

Description

Represents project, organization and team memberships. A user can be member of many projects, organizations and teams, and have different roles for each membership:

owner is used for project and organization memberships. A project must contain a single member with the owner role. An owner has full controll of its projects and organization.

administrator is used to delegate most owner privilege to other members of project. Only the owner can delete a project or change owner.

member is used for regular members in projects, organization and teams.

Fields

Name Type Description
role String 'owner', 'adminstrator' or 'member'
user User The User representing the member

Project

Example

{
    "createdAt": "2016-09-26T14:45:05Z",
    "description": "Cutting edge contemporary apartments",
    "id": "af2d8af0fa54465b89bf26dd3d92cfd0",
    "name": "Primavera Tower",
    "updatedAt": "2016-09-26T14:45:40Z"
}

Description

All data in Bimsync belongs to a project. A project can contain models, issues and libraries and has a single owner.

Fields

Name Type Description
createdAt Date The date and time the project was created.
description String A short text describing the project. Limited to 1024 characters.
id String A unique identifier for the project. Represented as compacted UUID using 32 hexadecimal characters.
name String The name of the project. Limited to 512 characters.
updatedAt Date The date and time of the last change in the project.

Model

Example

{
    "id": "67024671cbd642a9b7c84808b4d509f5",
    "name": "ARCH"
}

Description

Represents an IFC model as a set of Revisions. A large building project can contain multiple IFC models. They are often divided by domain (architecture, electrical, etc.)

Fields

Name Type Description
id String A unique identifier for a model. Represented as compacted UUID using 32 hexadecimal characters.
name String The name of the project. Limited to 512 characters.

Revision

Example

{
    "comment": "Initial revision",
    "createdAt": "2016-09-26T14:45:20Z",
    "id": "25fd3cebaf5d443991d3644cc4d8aa4f",
    "model": {
        "id": "67024671cbd642a9b7c84808b4d509f5",
        "name": "ARCH"
    },
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    "version": 1
}

Description

Represents a revision of a Model. A new revision is created by uploading an IFC model.

Fields

Name Type Description
comment String A short text describing the revision. Limited to 64K characters.
createdAt Date The date and time the revision was created.
id String A unique identifier for the revision. Represented as compacted UUID using 32 hexadecimal characters.
model Model The model the revision belongs to.
user User The User that created the revision.
version Integer A number that is incremented for each new revision of a model.

RevisionStatus

Example

{
    "callbackUri": "https://example.com",
    "filename": "ARK.ifc",
    "id": "acbb72736862483f89d77890d47ec119",
    "model": {
        "id": "67024671cbd642a9b7c84808b4d509f5",
        "name": "ARCH"
    },
    "processing": {
        "error": null,
        "progress": 0.0,
        "status": "waiting"
    },
    "revision": null,
    "size": 7483193,
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    }
}

Description

Represents the status of a pending revision.

Fields

Name Type Description
callbackUri String The callback URI specified when uploading the revision.
filename String The filename specified when uploading the revision.
id String A unique identifier for the status. Represented as compacted UUID using 32 hexadecimal characters.
model Model The model the revision will belong to.
processing ProcessingStatus The revision processing status.
revision Revision The newly create revision. Will be null if processing status is FAILURE.
user User The User that is creating the revision.

ProcessingStatus

Example

{
    "error": null,
    "progress": 0.0,
    "status": "waiting"
}
{
    "error": null,
    "progress": 1.0,
    "status": "success"
}

Description

Represents the processing status of a pending revision.

Fields

Name Type Description
progress Number Processing progress as a number between 0.0 and 1.0 .
status String Either 'waiting', 'processing', 'success' or 'failure'.
error Error An error if status is 'failure'.

Library

Note: The Libraries section is currently being implemented. This object is incomplete.

Description

A library represents an object collection containing either documents, links, and bSDD classifications.

Each object in the collection is a LibraryItem. Items can be associated to IFC products.

Fields

Name Type Description
id String A unique identifier for a library. Represented as compacted UUID using 32 hexadecimal characters.
name String The name of the library. Limited to 256 characters.

LibraryItem

Note: The Libraries section is currently being implemented. This object is incomplete.

Description

Represents a single item in a library. Examples of items are documents, links, and bSDD classifications.

Fields

Name Type Description
id String A unique identifier for a library item. Represented as compacted UUID using 32 hexadecimal characters.
name String The name of the library item.

LibraryItemAssociation

Note: The Libraries section is currently being implemented. This object is incomplete.

Description

Represents an association between a library item and an IFC product.

Fields

Name Type Description
createdAt Date The date and time the association was created.
globalId String A 22 character IfcGloballyUniqueId
user User The User that created the association.

ViewerToken

Description

Represents a time limited access token to grant access to viewer data. A token is valid for one hour.

Fields

Name Type Description
revisions Array of Revision The set of revisions the token grants access to.
token String The token value. The token is valid for one hour.
url String URL used to load models in Bimsync Viewer3D loadUrl or Bimsync Viewer2D loadUrl.

Users

Get current user

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/user"
{
    "createdAt": "2016-09-20T14:32:25Z",
    "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
    "name": "Kristine Knight",
    "username": "kristine.knight@example.com"
}

Description

Get the current user.

Method

GET

URL

https://api.bimsync.com/v2/user

Response format

application/json

Response

Returns the current User.

Update current user

Example

curl -X PUT \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data "{ \"name\": \"Kristine Knight\" }" \
    "https://api.bimsync.com/v2/user"
{
    "createdAt": "2016-09-20T14:32:25Z",
    "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
    "name": "Kristine Knight",
    "username": "kristine.knight@example.com"
}

Description

Update the current user.

Method

PUT

URL

https://api.bimsync.com/v2/user

Request format

application/json

Request parameters

Name Type Description
name String Name of the user. Limited to 128 characters.

Response format

application/json

Response

Returns the updated User.

List users

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/users"
[
    {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "573761199e2147dcae4a7a0661e03a26",
        "name": "Ron Ramirez",
        "username": "ron.ramirez@example.com"
    },
    {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "0afa76cf0d3442a982482d93000a49de",
        "name": "Chris Cavazos",
        "username": "chris.cavazos@example.com"
    },
    {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "bcd7bcbc8b4144de855b66280845640b",
        "name": "Chester Cohen",
        "username": "chester.cohen@example.com"
    }
]

Description

List all users managed by the current client. Access token must be generated using the client credential grant type.

Method

GET

URL

https://api.bimsync.com/v2/users

Query parameters

Name Type Description
username String Optional. Filter by username.

Response format

application/json

Response

Returns an array of User.

Errors

Status Code Message
403 Forbidden 21 FORBIDDEN

Get user

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/users/bcd7bcbc8b4144de855b66280845640b"
{
    "createdAt": "2016-09-20T14:32:25Z",
    "id": "bcd7bcbc8b4144de855b66280845640b",
    "name": "Chester Cohen",
    "username": "chester.cohen@example.com"
}

Description

Get a single user. The user must be managed by the current client. Access token must be generated using the client credential grant type.

Method

GET

URL

https://api.bimsync.com/v2/users/:user

Response format

application/json

Response

Returns a User.

Errors

Status Code Message
403 Forbidden 21 FORBIDDEN
404 Not Found 20 NOT_FOUND User (:user) not found

Create user

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data \
        "{ \"name\": \"Kristine Knight\" \
           \"username": \"kristine.knight@example.com\" }" \
    "https://api.bimsync.com/v2/users"
{
    "createdAt": "2016-09-20T14:32:25Z",
    "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
    "name": "Kristine Knight",
    "username": "kristine.knight@example.com"
}

Description

Create a new user that will be managed by the current client. Access token must be generated using the client credential grant type.

Method

POST

URL

https://api.bimsync.com/v2/users

Request format

application/json

Request parameters

Name Type Description
name String Name of the user. Limited to 128 characters.
username String A unique handle in email format. Limited to 50 characters.

Response format

application/json

Response

Returns the created User.

Errors

Status Code Message
403 Forbidden 21 FORBIDDEN
422 Unprocessable entity 22 UNPROCESSABLE_ENTITY Message from input validation

Delete user

Example

curl -X DELETE \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/users/bcd7bcbc8b4144de855b66280845640b"
Status: 204 No Content

Description

Delete a user. The user must be managed by the current client. Access token must be generated using the client credential grant type.

Method

DELETE

URL

https://api.bimsync.com/v2/users

Response

No content

Errors

Status Code Message
403 Forbidden 21 FORBIDDEN
404 Not Found 20 NOT_FOUND User (:user) not found

Organizations

List organizations

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/orgs"
[
    {
        "createdAt": "2016-09-20T14:55:22Z",
        "id": "524809076a694255b989d236517a55da",
        "name": "Clean Cut Builders",
        "username": null
    }
]

Description

List all organizations the current user is a member of.

Method

GET

URL

https://api.bimsync.com/v2/orgs

Response format

application/json

Response

Returns an array of organization User.

Get organization

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/orgs/524809076a694255b989d236517a55da"
{
    "createdAt": "2016-09-20T14:55:22Z",
    "id": "524809076a694255b989d236517a55da",
    "name": "Clean Cut Builders",
    "username": null
}

Description

Get a single organization. The current user must be member of the organization.

Method

GET

URL

https://api.bimsync.com/v2/orgs/:org

Response format

application/json

Response

Returns an organization User.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Organization (:org) not found

Update organization

Example

curl -X PUT \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data "{ \"name\": \"Clean Cut Builders\" }" \
    "https://api.bimsync.com/v2/orgs/524809076a694255b989d236517a55da"
{
    "createdAt": "2016-09-20T14:55:22Z",
    "id": "524809076a694255b989d236517a55da",
    "name": "Clean Cut Builders",
    "username": null
}

Description

Update an organization. The current user must be an owner of the organization.

Method

PUT

URL

https://api.bimsync.com/v2/orgs/:org

Request format

application/json

Request parameters

Name Type Description
name String Name of the organization. Limited to 128 characters

Response format

application/json

Response

Returns the updated organization User.

Errors

Status Code Message
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Organization (:org) not found
422 Unprocessable entity 22 UNPROCESSABLE_ENTITY Message from input validation

List organization members

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/orgs/524809076a694255b989d236517a55da/members"
[
    {
        "role": "owner",
        "user": {
            "createdAt": "2016-09-20T14:32:25Z",
            "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
            "name": "Ann-Marie Hoag",
            "username": "ann.marie.hoag@example.com"
        }
    },
    {
        "role": "member",
        "user": {
            "createdAt": "2016-09-20T14:32:25Z",
            "id": "573761199e2147dcae4a7a0661e03a26",
            "name": "Ron Ramirez",
            "username": "ron.ramirez@example.com"
        }
    },
    {
        "role": "member",
        "user": {
            "createdAt": "2016-09-20T14:32:25Z",
            "id": "0afa76cf0d3442a982482d93000a49de",
            "name": "Chris Cavazos",
            "username": "chris.cavazos@example.com"
        }
    },
    {
        "role": "member",
        "user": {
            "createdAt": "2016-09-20T14:32:25Z",
            "id": "bcd7bcbc8b4144de855b66280845640b",
            "name": "Chester Cohen",
            "username": "chester.cohen@example.com"
        }
    }
]

Description

List organization members. The current user must be member of the organization.

Method

GET

URL

https://api.bimsync.com/v2/orgs/:org/members

Response format

application/json

Response

Returns an array of Member.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Organization (:org) not found

Get organization member

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/orgs/524809076a694255b989d236517a55da/members/bcd7bcbc8b4144de855b66280845640b"
{
    "role": "member",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "bcd7bcbc8b4144de855b66280845640b",
        "name": "Chester Cohen",
        "username": "chester.cohen@example.com"
    }
}

Description

Get organization member. The current user must be member of the organization.

Method

GET

URL

https://api.bimsync.com/v2/orgs/:org/members/:user

Response format

application/json

Response

Returns a Member.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Organization (:org) not found
404 Not Found 20 NOT_FOUND Member (:user) not found

Update organization member

Example

curl -X PUT \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data "{ \"role\": \"owner\" }" \
    "https://api.bimsync.com/v2/orgs/524809076a694255b989d236517a55da/members/bcd7bcbc8b4144de855b66280845640b"
{
    "role": "owner",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "bcd7bcbc8b4144de855b66280845640b",
        "name": "Chester Cohen",
        "username": "chester.cohen@example.com"
    }
}

Description

Update an organization membership. The current user must be an owner of the organization.

Method

PUT

URL

https://api.bimsync.com/v2/orgs/:org/members/:user

Request format

application/json

Request parameters

Name Type Description
role String owner or member

Response format

application/json

Response

Returns the updated Member.

Errors

Status Code Message
400 Bad Request 24 BAD_REQUEST Invalid role (:role)
400 Bad Request 24 BAD_REQUEST Unable to remove last owner (:user)
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Organization (:org) not found
404 Not Found 20 NOT_FOUND Member (:user) not found
422 Unprocessable entity 22 UNPROCESSABLE_ENTITY Message from input validation

Add organization member

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data \
        "{ \"user\": \"bcd7bcbc8b4144de855b66280845640b\" \
           \"role\": \"member\" }" \
    "https://api.bimsync.com/v2/orgs/524809076a694255b989d236517a55da/members"
{
    "role": "member",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "bcd7bcbc8b4144de855b66280845640b",
        "name": "Chester Cohen",
        "username": "chester.cohen@example.com"
    }
}

Description

Add an organization member. The current user must be an owner of the organization.

Method

POST

URL

https://api.bimsync.com/v2/orgs/:org/members

Response format

application/json

Response

Returns the created Member.

Errors

Status Code Message
400 Bad Request 24 BAD_REQUEST Unknown user (:user)
400 Bad Request 24 BAD_REQUEST User (:user) is already a member
400 Bad Request 24 BAD_REQUEST Invalid role (:role)
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Organization (:org) not found
422 Unprocessable entity 22 UNPROCESSABLE_ENTITY Message from input validation

Remove organization member

Example

curl -X DELETE \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/orgs/524809076a694255b989d236517a55da/members/bcd7bcbc8b4144de855b66280845640b"
Status: 204 No Content

Description

Remove an organization member. The current user must be an owner of the organization to remove other members.

There must be at least one other owner in the organization when removing the current user.

Method

DELETE

URL

https://api.bimsync.com/v2/orgs/:org/members/:user

Response format

application/json

Response

No content

Errors

Status Code Message
400 Bad Request 24 BAD_REQUEST Unable to remove last owner (:user)
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Organization (:org) not found
404 Not Found 20 NOT_FOUND Member (:user) not found

Projects

List projects

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects"
[
    {
        "createdAt": "2016-09-23T14:40:29Z",
        "description": "Old Town, Stavanger",
        "id": "989038325613499ea6d35a3d8788b3a9",
        "name": "Old Town High School",
        "updatedAt": "2016-09-23T14:41:57Z"
    },
    {
        "createdAt": "2016-09-26T14:45:05Z",
        "description": "Cutting edge contemporary apartments",
        "id": "af2d8af0fa54465b89bf26dd3d92cfd0",
        "name": "Primavera Tower",
        "updatedAt": "2016-09-26T14:45:40Z"
    }
]

Description

List all projects the current user is member of.

Method

GET

URL

https://api.bimsync.com/v2/projects

Response format

application/json

Response

Returns an array of Project.

Get project

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0"
{
    "createdAt": "2016-09-26T14:45:05Z",
    "description": "Cutting edge contemporary apartments",
    "id": "af2d8af0fa54465b89bf26dd3d92cfd0",
    "name": "Primavera Tower",
    "updatedAt": "2016-09-26T14:45:40Z"
}

Description

Get a project. The current user must be a member of the project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project

Response format

application/json

Response

Returns a Project.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found

Update project

Example

curl -X PUT \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data \
        "{ \"name\": \"Primavera Tower\",
           \"description\": \"Cutting edge contemporary apartments\" }" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0"
{
    "createdAt": "2016-09-26T14:45:05Z",
    "description": "Cutting edge contemporary apartments",
    "id": "af2d8af0fa54465b89bf26dd3d92cfd0",
    "name": "Primavera Tower",
    "updatedAt": "2016-09-26T14:45:40Z"
}

Description

Update a project. The current user must be an adminstrator of the project.

Method

PUT

URL

https://api.bimsync.com/v2/projects/:project

Request format

application/json

Request parameters

Name Type Description
description String A short text describing the project. Limited to 1024 characters.
name String The name of the project. Limited to 512 characters.

Response format

application/json

Response

Returns the updated Project.

Errors

Status Code Message
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Project (:project) not found
422 Unprocessable entity 22 UNPROCESSABLE_ENTITY Message from input validation

Create project

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data \
        "{ \"name\": \"Primavera Tower\",
           \"description\": \"Cutting edge contemporary apartments\" }" \
    "https://api.bimsync.com/v2/projects"
{
    "createdAt": "2016-09-26T14:45:05Z",
    "description": "Cutting edge contemporary apartments",
    "id": "af2d8af0fa54465b89bf26dd3d92cfd0",
    "name": "Primavera Tower",
    "updatedAt": "2016-09-26T14:45:40Z"
}
curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data \
        "{ \"name\": \"Old Town High School\",
           \"description\": \"Old Town, Stavanger\" }" \
    "https://api.bimsync.com/v2/orgs/524809076a694255b989d236517a55da/projects"
{
    "createdAt": "2016-09-23T14:40:29Z",
    "description": "Old Town, Stavanger",
    "id": "989038325613499ea6d35a3d8788b3a9",
    "name": "Old Town High School",
    "updatedAt": "2016-09-23T14:41:57Z"
}

Description

Create a new project. The project will be owned by the current user or the given origanization and count towards the owners project limit.

The current user must be an owner of the organization if the new project will be owned by an organization.

Method

POST

URL

https://api.bimsync.com/v2/projects https://api.bimsync.com/v2/orgs/:org/projects

Request format

application/json

Request parameters

Name Type Description
description A short text describing the project. Limited to 1024 characters.
name String The name of the project. Limited to 512 characters.

Response format

application/json

Response

Returns created Project.

Errors

Status Code Message
403 Forbidden 101 PROJECT_LIMIT_EXCEEDED Project limit exceeded
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Organization (:org) not found
422 Unprocessable entity 22 UNPROCESSABLE_ENTITY Message from input validation

Delete project

Example

curl -X DELETE \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0"
Status: 204 No Content

Description

Delete a project. The current user must be the owner of the project. If the project is owned by an organization, the user must an owner of the organization.

Method

DELETE

URL

https://api.bimsync.com/v2/projects/:project

Response

No content

Errors

Status Code Message
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Project (:project) not found

Members

List members

Example

curl -X PUT \"
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/members"
[
    {
        "role": "owner",
        "user": {
            "createdAt": "2016-09-20T14:32:25Z",
            "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
            "name": "Kristine Knight",
            "username": "kristine.knight@example.com"
        }
    },
    {
        "role": "member",
        "user": {
            "createdAt": "2016-09-20T14:32:25Z",
            "id": "573761199e2147dcae4a7a0661e03a26",
            "name": "Robin Chapel",
            "username": "robin.chapel@example.com"
        }
    }
]

Description

List project members.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/members

Response format

application/json

Response

Returns an array of Member.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found

Get member

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/members/b8dd966cb6d844d3bbaa2705d9e7d980"
{
    "role": "owner",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    }
}

Description

Get a project member.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/members/:user

Response format

application/json

Response

Returns a Member

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Member (:user) not found

Add member

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data \
        "{ \"user\": \"573761199e2147dcae4a7a0661e03a26\",
           \"role\": \"member\" }" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/members"
{
    "role": "member",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "573761199e2147dcae4a7a0661e03a26",
        "name": "Robin Chapel",
        "username": "robin.chapel@example.com"
    }
}

Description

Add a project member. The current user must be an administrator of the project.

Method

POST

URL

https://api.bimsync.com/v2/projects/:project/members

Request format

application/json

Request parameters

Name Type Description
user String The User id for the new member
role String 'adminstrator' or 'member'

Response format

application/json

Response

Returns the created Member.

Errors

Status Code Message
400 Bad Request 24 BAD_REQUEST User (:user) is already a member
400 Bad Request 24 BAD_REQUEST Unknown user (:user)
400 Bad Request 24 BAD_REQUEST Unable to set role (:role)
400 Bad Request 24 BAD_REQUEST Cannot add an existing team as a member (:user)
400 Bad Request 24 BAD_REQUEST Invalid role (:role)
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Project (:project) not found

Remove member

Example

curl -X DELETE \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/members/573761199e2147dcae4a7a0661e03a26"
Status: 204 No Content

Description

Remove a project member. The current user must be a project administrator. The project owner cannot be removed from the project.

Method

DELETE

URL

https://api.bimsync.com/v2/projects/:project/members/:user

Response

No content

Errors

Status Code Message
400 Bad Request 24 BAD_REQUEST Unable to remove last owner (:user)
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Member (:user) not found

Update member

Example

curl -X PUT \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data "{ \"role\": \"administrator\" }" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/members/573761199e2147dcae4a7a0661e03a26"
{
    "role": "administrator",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "573761199e2147dcae4a7a0661e03a26",
        "name": "Robin Chapel",
        "username": "robin.chapel@example.com"
    }
}

Description

Update project membership. The current user must be a project administrator.

Method

PUT

URL

https://api.bimsync.com/v2/projects/:project/members/:user

Request format

application/json

Request parameters

Name Type Description
role String 'adminstrator' or 'member'

Response format

application/json

Response

Returns the upated Member.

Errors

Status Code Message
400 Bad Request 24 BAD_REQUEST User (:user) is already a member
400 Bad Request 24 BAD_REQUEST Unable to set role (:role)
400 Bad Request 24 BAD_REQUEST Invalid role (:role)
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Member (:user) not found

Models & Revisions

Models & Revisions Overview

Bimsync is a platform designed to share and collaborate on digital building models (BIM). Bimsync uses the Industry Foundation Classes (IFC) data model to represents BIM data. IFC is an open standard that provides a high level of interoperability and allow users to exchange data created in different tools.

A building and construction project will most likely have contributors from different domains. It is benefitial to let each design team manage its own BIM, but also a requirement to be able to view the project as a whole. In Bimsync, a project can consist of multiple models. The project contributors can decide what models are needed. The models can be visualized individually or combined in Bimsync Viewer3D and Viewer2D. The model data can be accessed as an aggregated project using the IFC resources in the API.

Related resources:

Sharing the BIM as the design progresses is of great benefit when designing a building. Looking back at a previous version of a model is useful. Bimsync solves this by allowing users to upload each version of a model as a separate revision. Each revision is immutable - its content will never change. Older revisions can always be accessed.

Related resources:

IFC Support

Bimsync supports IFC release IFC2x3 and accepts models in the following formats: IFC-SPF (.ifc), IFC-XML (.ifcXML) and IFC-ZIP (.ifcZIP). IFC files must be syntactically correct but the data population of a model is not formally validated against the IFC schema.

Models can be downloaded in IFC-SPF (.ifc) format.

IFC Processing

When an IFC file is uploaded to Bimsync it must be processed for the content to be available in the platform. IFC files are often large and contain data that is computationally expensive to process.

IFC processing consists of the following steps:

  1. Validation. The IFC file is parsed and the structure of the data is validated. Bimsync will not perform a formal validation of the data against the IFC schema (e.g. WHERE rules in EXPRESS are not enforced).
  2. Create revision. Each entity in the IFC file is assigned a unique ID and the new revision is added to the model.
  3. Process contents. The revision content is processed to generate datasets for Bimsync Viewer2D and Viewer3D. It is indexed to expose the data in the IFC resources.

An API client can pass a URI when uploading a new IFC file to get notified when processing is complete.

List models

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/models"
[
    {
        "id": "67024671cbd642a9b7c84808b4d509f5",
        "name": "ARCH"
    },
    {
        "id": "635acc6129d440848a40eef82c52f6ae",
        "name": "ELEC"
    },
    {
        "id": "f9b1402d0f9f481484551e422138f8a2",
        "name": "STRUCT"
    }
]

Description

List all models in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/models

Response format

application/json

Response

Returns an array of Model.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found

Get model

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Accept: application/json" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/models/67024671cbd642a9b7c84808b4d509f5"
{
    "id": "67024671cbd642a9b7c84808b4d509f5",
    "name": "ARCH"
}

Description

Get a model.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/models/:model

Response format

application/json

Response

Returns a Model.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Model (:model) not found

Download model

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Accept: application/ifc" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/models/67024671cbd642a9b7c84808b4d509f5?normalize=true
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]','Option [Filter: VisibleElements]'),'2;1');
FILE_NAME('M:\\2010\\400-449\\10-409 Bimmy\\10-409 IFC\\ARK\\ARK_Asplund.ifc','2010-10-27T21:32:24',('Architect'),('Building Designer Office'),'PreProc - EDM 5.0','ArchiCAD 13.00 Release 1. Windows Build Number of the Ifc 2x3 interface: 64125 (21-07-2009)\X\0A','The authorising person');
FILE_SCHEMA(('IFC2X3'));
ENDSEC;

DATA;
#1= IFCORGANIZATION('GS','Graphisoft','Graphisoft',$,$);
#2= IFCAPPLICATION(#49650001,'13.0','ArchiCAD 13.0','ArchiCAD');
...

Description

Download the latest revision of a model as IFC.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/models/:model

Query parameters

Name Type Description
normalize Boolean Optional. If set to true the STEP instance names will start at #1, otherwise they will equal its Bimsync object ID.

Response format

application/ifc

Response

IFC

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Model (:model) not found
404 Not Found 20 NOT_FOUND Model (:model) has no revisions

Update model

Example

curl -X PUT \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data "{ \"name\": \"ARCH\" }" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/models/67024671cbd642a9b7c84808b4d509f5"
{
    "id": "67024671cbd642a9b7c84808b4d509f5",
    "name": "ARCH"
}

Description

Update a model. The current user must be an adminstrator of the project.

Method

PUT

URL

https://api.bimsync.com/v2/projects/:project/models/:model

Request format

application/json

Request parameters

Name Type Description
name String Name of the model. Limited to 512 characters.

Response format

application/json

Response

Returns the updated Model.

Errors

Status Code Message
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Model (:model) not found

Create model

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data "{ \"name\": \"ARCH\" } \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0"
{
    "id": "67024671cbd642a9b7c84808b4d509f5",
    "name": "ARCH"
}

Description

Create a new model.

Method

POST

URL

https://api.bimsync.com/v2/projects/:project/models

Request format

application/json

Request parameters

Name Type Description
name String Name of the model. Limited to 512 characters.

Response format

application/json

Response

Returns the created Model.

Errors

Status Code Message
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Project (:project) not found

Delete model

Example

curl -X DELETE \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/models/67024671cbd642a9b7c84808b4d509f5"
Status: 204 No Content

Description

Delete a model. The current user must be an adminstrator of the project.

Method

DELETE

URL

https://api.bimsync.com/v2/projects/:project/models/:model

Response

No content

Errors

Status Code Message
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Model (:model) not found

List revisions

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/revisions"
[
    {
        "comment": "Initial revision",
        "createdAt": "2016-09-26T14:45:20Z",
        "id": "25fd3cebaf5d443991d3644cc4d8aa4f",
        "model": {
            "id": "67024671cbd642a9b7c84808b4d509f5",
            "name": "ARCH"
        },
        "user": {
            "createdAt": "2016-09-20T14:32:25Z",
            "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
            "name": "Kristine Knight",
            "username": "kristine.knight@example.com"
        },
        "version": 1
    },
    {
        "comment": "Initial revision",
        "createdAt": "2016-09-26T14:45:40Z",
        "id": "3dfce8f494ba45e685f3494e89365446",
        "model": {
            "id": "f9b1402d0f9f481484551e422138f8a2",
            "name": "STRUCT"
        },
        "user": {
            "createdAt": "2016-09-20T14:32:25Z",
            "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
            "name": "Kristine Knight",
            "username": "kristine.knight@example.com"
        },
        "version": 1
    }
]

Description

List all revisions in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/revisions

Query parameters

Name Type Description
model String Optional. Filter by model.
product Long Optional. Filter by the objectID of an IFC product.

Response format

application/json

Response

Returns an array of Revision.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Model (:model) not found
404 Not Found 20 NOT_FOUND Product (:product) not found

Get revision

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Accept: application/json" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/revisions/25fd3cebaf5d443991d3644cc4d8aa4f"
{
    "comment": "Initial revision",
    "createdAt": "2016-09-26T14:45:20Z",
    "id": "25fd3cebaf5d443991d3644cc4d8aa4f",
    "model": {
        "id": "67024671cbd642a9b7c84808b4d509f5",
        "name": "ARCH"
    },
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    "version": 1
}

Description

Get a revision.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/revisions/:revision

Response format

application/json

Response

Returns a Revision.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Download revision

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Accept: application/ifc" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/revisions/25fd3cebaf5d443991d3644cc4d8aa4f"
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]','Option [Filter: VisibleElements]'),'2;1');
FILE_NAME('C:\\example.ifc','2010-10-27T21:32:24',('Architect'),('Building Designer Office'),'PreProc - EDM 5.0','ArchiCAD 13.00 Release 1. Windows Build Number of the Ifc 2x3 interface: 64125 (21-07-2009)\X\0A','The authorising person');
FILE_SCHEMA(('IFC2X3'));
ENDSEC;

DATA;
#49650001= IFCORGANIZATION('GS','Graphisoft','Graphisoft',$,$);
#49650002= IFCAPPLICATION(#49650001,'13.0','ArchiCAD 13.0','ArchiCAD');
...

Description

Download a revision as IFC.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/revisions/:revision

Query parameters

Name Type Description
normalize Boolean Optional. If set to true the STEP instance names will start at #1, otherwise they will be equal to their Bimsync object ID.

Response format

application/ifc

Response

IFC

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Create revision

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/ifc" \
    --header "Bimsync-Params: { \"callbackUrl"\: \"https://example.com\", \
                                \"comment\": \"Add windows\", \
                                \"filename\": \"ARCH.ifc\", \
                                \"model\": \"67024671cbd642a9b7c84808b4d509f5\" } " \
    --data-binary ARCH.ifc \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/revisions"
{
    "callbackUri": "https://example.com",
    "filename": "ARK.ifc",
    "id": "acbb72736862483f89d77890d47ec119",
    "model": {
        "id": "67024671cbd642a9b7c84808b4d509f5",
        "name": "ARCH"
    },
    "processing": {
        "error": null,
        "progress": 0.0,
        "status": "waiting"
    },
    "revision": null,
    "size": 7483193,
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    }
}

Description

Create a new revision.

Method

POST

URL

https://api.bimsync.com/v2/projects/:project/revisions

Request format

application/ifc

Request body

Request body is the content of an IFC file.

Request parameters

Request parameters are passed as JSON in the HTTP header Bimsync-Params.

Name Type Description
callbackUri String Optional. Pass a URI to be notified when the revision is processed. Bimsync will issue an HTTP GET request with the query parameter token set to revision status ID and result set to either 'success' or 'error'.
comment String A short text describing the revision. Limited to 64K characters.
filename String The original name of the IFC file. The name is used in format detection and should have the extension .ifc, .ifcZIP or .ifcXML.
model String ID of the model the revision should be added to.

Response format

application/json

Response

Returns the initial RevisionStatus.

Errors

Status Code Message
400 Bad Request 23 EMPTY_FILE Empty file uploaded
403 Forbidden 100 INSUFFICENT_PRIVILEGE Insufficient privilege
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Model (:model) not found

Get revision status

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Accept: application/json" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/revision_status/a7615441a5964b01a6e22b4872c4e87a"
{
    "callbackUri": null,
    "filename": "RIB.ifc",
    "id": "a7615441a5964b01a6e22b4872c4e87a",
    "model": {
        "id": "f9b1402d0f9f481484551e422138f8a2",
        "name": "STRUCT"
    },
    "processing": {
        "error": null,
        "progress": 1.0,
        "status": "success"
    },
    "revision": {
        "comment": "Initial revision",
        "createdAt": "2016-09-26T14:45:40Z",
        "id": "3dfce8f494ba45e685f3494e89365446",
        "model": {
            "id": "f9b1402d0f9f481484551e422138f8a2",
            "name": "STRUCT"
        },
        "user": {
            "createdAt": "2016-09-20T14:32:25Z",
            "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
            "name": "Kristine Knight",
            "username": "kristine.knight@example.com"
        },
        "version": 1
    },
    "size": 458745,
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    }
}

Description

Get the status of a pending revision.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/revision_status/:revision_status

Response format

application/json

Response

Returns a RevisionStatus.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision status (:revision_status) not found

Libraries

Note: The Libraries section is currently being implemented. The resources and objects are incomplete.

List libraries

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/libraries"
[
    {
        "id": "e3007e60dc8211e5b26e22000ad1b98b",
        "name": "bSDD"
    },
    {
        "id": "e3052233dc8211e5b26e22000ad1b98b",
        "name": "Links"
    },
    {
        "id": "e321d95edc8211e5b26e22000ad1b98b",
        "name": "Documents"
    }
]

Description

List all libraries in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:id/libraries

Response format

application/json

Response

Returns an array of Library.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found

Get library

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/libraries/e321d95edc8211e5b26e22000ad1b98b"
{
    "id": "e321d95edc8211e5b26e22000ad1b98b",
    "name": "Documents"
}

Description

Get a library.

Method

GET

URL

https://api.bimsync.com/v2/projects/:id/libraries/:library

Response format

application/json

Response

Returns a Library.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Library (:library) not found

List library items

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/libraries/e321d95edc8211e5b26e22000ad1b98b/items"
[
    {
        "id": "22e20a0171d0483b94980799e8fdf9fd",
        "name": "example.txt"
    },
    {
        "id": "a002411fa6454b6facb70bd225dc03bf",
        "name": "example.pdf"
    },
    {
        "id": "5ecbae1cf0814f179473531da2cbe5b2",
        "name": "example.jpg"
    },
    {
        "id": "bb5ddc094a8448e2795f974e90455504",
        "name": "example.png"
    }
]

Description

List all items in a library.

Method

GET

URL

https://api.bimsync.com/v2/projects/:id/libraries/:library/items

Response format

application/json

Response

Returns an array of LibraryItem.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Library (:library) not found

Get library item

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/libraries/e321d95edc8211e5b26e22000ad1b98b/items/a002411fa6454b6facb70bd225dc03bf"
{
    "id": "a002411fa6454b6facb70bd225dc03bf",
    "name": "example.pdf"
}

Description

Get a library item.

Method

GET

URL

https://api.bimsync.com/v2/projects/:id/libraries/:library/items/:item

Response format

application/json

Response

Returns a LibraryItem.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Library (:library) not found
404 Not Found 20 NOT_FOUND Item (:item) not found

List library item associations

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/libraries/e321d95edc8211e5b26e22000ad1b98b/items/a002411fa6454b6facb70bd225dc03bf/associations"
[
  {
    "globalId": "3BY5alwwL00QXHtY2qmHYZ",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    "createdAt": "2018-10-04T12:58:33Z"
  },
  {
    "globalId": "2ygVRzJULAQAVpTWUXnVoQ",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    "createdAt": "2018-10-04T12:58:33Z"
  },
  {
    "globalId": "3RKRSpPLr5DvG28OTI92HY",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    "createdAt": "2018-10-04T12:58:33Z"
  }
]

Description

List associations between a library item and IFC products. IFC products are represented by their IfcGloballyUniqueId.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/libraries/:library/items/:item/associations

Response format

application/json

Response

Returns an array of LibraryItemAssociations

Add library item associations

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data \
      "[{
          \"globalId\": '3BY5alwwL00QXHtY2qmHYZ'
       },{
          \"objectId\": 32702302
       }, {
          \"objectId\": 32613479
       }]" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/libraries/e321d95edc8211e5b26e22000ad1b98b/items/a002411fa6454b6facb70bd225dc03bf/associations"
[
  {
    "globalId": "3BY5alwwL00QXHtY2qmHYZ",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    "createdAt": "2018-10-04T12:58:33Z"
  },
  {
    "globalId": "2ygVRzJULAQAVpTWUXnVoQ",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    "createdAt": "2018-10-04T12:58:33Z"
  },
  {
    "globalId": "3RKRSpPLr5DvG28OTI92HY",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    "createdAt": "2018-10-04T12:58:33Z"
  }
]

Description

Associate a library item to IFC products. IFC products are represented by their IfcGloballyUniqueId.

Method

POST

URL

https://api.bimsync.com/v2/projects/:project/libraries/:library/items/:item/associations

Request format

application/json

Request parameters

The resource accepts an array of objects containing one of the following fields:

Name Type Description
globalId String A 22 character IfcGloballyUniqueId
or
objectId Long The object ID of a product in the specified revisions.

Query parameters

Name Type Description
revision Comma separated list of String Optional. Specify which revisions are used to resolve global ID from objectId. If not present, the latest revisions in all models in the project are used.

Response format

application/json

Response

Returns an array containing the new LibraryItemAssociations

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Library (:library) not found
404 Not Found 20 NOT_FOUND Item (:item) not found
404 Not Found 20 NOT_FOUND No revisions found
400 Bad Request 24 BAD_REQUEST GlobalId format is invalid
400 Bad Request 24 BAD_REQUEST Can not find all specified objectIds in revisions

Remove library item associations

Example

curl -X DELETE \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data \
      "[{
          \"globalId\": '3BY5alwwL00QXHtY2qmHYZ'
       },{
          \"objectId\": 32702302
       }, {
          \"objectId\": 32613479
       }]" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/libraries/e321d95edc8211e5b26e22000ad1b98b/items/a002411fa6454b6facb70bd225dc03bf/associations"
[
  {
    "globalId": "3BY5alwwL00QXHtY2qmHYZ",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    "createdAt": "2018-10-04T12:58:33Z"
  },
  {
    "globalId": "2ygVRzJULAQAVpTWUXnVoQ",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    "createdAt": "2018-10-04T12:58:33Z"
  },
  {
    "globalId": "3RKRSpPLr5DvG28OTI92HY",
    "user": {
        "createdAt": "2016-09-20T14:32:25Z",
        "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
        "name": "Kristine Knight",
        "username": "kristine.knight@example.com"
    },
    "createdAt": "2018-10-04T12:58:33Z"
  }
]

Description

Remove associations between a library item and IFC products.

Method

DELETE

URL

https://api.bimsync.com/v2/projects/:project/libraries/:library/items/:item/associations

Request format

application/json

Request parameters

The resource accepts an array of objects containing one of the following fields:

Name Type Description
globalId String A 22 character IfcGloballyUniqueId
or
objectId Long The object ID of a product in the specified revisions.

Query parameters

Name Type Description
revision Comma separated list of String Optional. Specify which revisions are used to resolve global ID from objectId. If not present, the latest revisions in all models in the project are used.

Response format

application/json

Response

Returns an array containing the removed LibraryItemAssociations

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Library (:library) not found
404 Not Found 20 NOT_FOUND Item (:item) not found
404 Not Found 20 NOT_FOUND No revisions found
400 Bad Request 24 BAD_REQUEST GlobalId format is invalid
400 Bad Request 24 BAD_REQUEST Can not find all specified objectIds in revisions

Viewer

Create Viewer3D token

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json"
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/viewer3d/token"
{
    "revisions": [
        {
            "comment": "Initial revision",
            "createdAt": "2016-09-26T14:45:20Z",
            "id": "25fd3cebaf5d443991d3644cc4d8aa4f",
            "model": {
                "id": "67024671cbd642a9b7c84808b4d509f5",
                "name": "ARCH"
            },
            "user": {
                "createdAt": "2016-09-20T14:32:25Z",
                "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
                "name": "Kristine Knight",
                "username": "kristine.knight@example.com"
            },
            "version": 1
        },
        {
            "comment": "Initial revision",
            "createdAt": "2016-09-26T14:45:40Z",
            "id": "3dfce8f494ba45e685f3494e89365446",
            "model": {
                "id": "f9b1402d0f9f481484551e422138f8a2",
                "name": "STRUCT"
            },
            "user": {
                "createdAt": "2016-09-20T14:32:25Z",
                "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
                "name": "Kristine Knight",
                "username": "kristine.knight@example.com"
            },
            "version": 1
        }
    ],
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRJZCI6IkJnT1BJTVhDMFJEbTZqdyIsImV4cCI6MTQ3NDg5NzU2NiwidXNlcklkIjoiYjhkZDk2NmMtYjZkOC00NGQzLWJiYWEtMjcwNWQ5ZTdkOTgwIiwicmV2aXNpb25JZHMiOlsiMjVmZDNjZWItYWY1ZC00NDM5LTkxZDMtNjQ0Y2M0ZDhhYTRmIiwiM2RmY2U4ZjQtOTRiYS00NWU2LTg1ZjMtNDk0ZTg5MzY1NDQ2Il19.Z-kxNtLnIS0UWI3Y_ESxYVgAGQws1zhah_rSM2aa_Lk",
    "url": "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/viewer3d/data?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRJZCI6IkJnT1BJTVhDMFJEbTZqdyIsImV4cCI6MTQ3NDg5NzU2NiwidXNlcklkIjoiYjhkZDk2NmMtYjZkOC00NGQzLWJiYWEtMjcwNWQ5ZTdkOTgwIiwicmV2aXNpb25JZHMiOlsiMjVmZDNjZWItYWY1ZC00NDM5LTkxZDMtNjQ0Y2M0ZDhhYTRmIiwiM2RmY2U4ZjQtOTRiYS00NWU2LTg1ZjMtNDk0ZTg5MzY1NDQ2Il19.Z-kxNtLnIS0UWI3Y_ESxYVgAGQws1zhah_rSM2aa_Lk"
}

Description

Create a token to load models in Bimsync Viewer3D. By default, access will be granted for the latest revisions in all models.

The token is valid for one hour.

Method

POST

URL

https://api.bimsync.com/v2/projects/:project/viewer3d/token

Request format

application/json

Request parameters

Name Type Description
models Array of String Optional. Limit access to a set of models.
revisions Array of String Optional. Limit access to a set of revisions.

Response format

application/json

Response

Returns a ViewerToken.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found

Create Viewer2D token

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json"
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/viewer2d/token"
{
    "revisions": [
        {
            "comment": "Initial revision",
            "createdAt": "2016-09-26T14:45:20Z",
            "id": "25fd3cebaf5d443991d3644cc4d8aa4f",
            "model": {
                "id": "67024671cbd642a9b7c84808b4d509f5",
                "name": "ARCH"
            },
            "user": {
                "createdAt": "2016-09-20T14:32:25Z",
                "id": "b8dd966cb6d844d3bbaa2705d9e7d980",
                "name": "Kristine Knight",
                "username": "kristine.knight@example.com"
            },
            "version": 1
        }
    ],
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRJZCI6IkJnT1BJTVhDMFJEbTZqdyIsImV4cCI6MTQ3NDg5NzU2NiwidXNlcklkIjoiYjhkZDk2NmMtYjZkOC00NGQzLWJiYWEtMjcwNWQ5ZTdkOTgwIiwicmV2aXNpb25JZHMiOlsiMjVmZDNjZWItYWY1ZC00NDM5LTkxZDMtNjQ0Y2M0ZDhhYTRmIl19.5hvO-S_IOzrfU1bUupmKosych8Zmpl9ogwTDVOgNyp4",
    "url": "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/viewer2d/geometry?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGllbnRJZCI6IkJnT1BJTVhDMFJEbTZqdyIsImV4cCI6MTQ3NDg5NzU2NiwidXNlcklkIjoiYjhkZDk2NmMtYjZkOC00NGQzLWJiYWEtMjcwNWQ5ZTdkOTgwIiwicmV2aXNpb25JZHMiOlsiMjVmZDNjZWItYWY1ZC00NDM5LTkxZDMtNjQ0Y2M0ZDhhYTRmIl19.5hvO-S_IOzrfU1bUupmKosych8Zmpl9ogwTDVOgNyp4"
}

Description

Create a token to load a model in Bimsync Viewer2D. By default, access will be granted for the model containing the most doors, windows and walls.

The token is valid for one hour.

Method

POST

URL

https://api.bimsync.com/v2/projects/:project/viewer2d/token

Request format

application/json

Request parameters

Name Type Description
model String Optional.
revision String Optional.

Response format

application/json

Response

Returns a ViewerToken.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Default model not found
404 Not Found 20 NOT_FOUND Model (:model) not found
404 Not Found 20 NOT_FOUND Default model (:model) has no revision
404 Not Found 20 NOT_FOUND Model (:model) has no revision
404 Not Found 20 NOT_FOUND Revisions (:revision) not found

IFC Overview

Bimsync uses the IFC data model to store BIM data. The IFC data model is specified in the EXPRESS modeling language, and is exchanged using the STEP-File format. The STEP standards are mature mechanisms for data exchange, but can be hard to use directly for many developers. The specifications are not freely available, and some development platforms lack the tools and libraries needed to be able to use the IFC data natively.

Bimsync provides resources to make product data available in JSON format. All physical objects (e.g. wall, floor, window) and spatial objects (e.g. space, building, building storey) in a model are IfcProduct instances in IFC. IfcProduct is represented as Product in Bimsync. A Product contains most of the explicit attributes of IfcProduct and the most commonly used related entities; such as property sets, quantity sets and types. Other product relations (e.g. layers, structure) can be requested separately. Attributes for owner/history, product representation (e.g. 3D geometry) and product placement are ommitted from the Product JSON object.

The JSON format has been designed to be accessible for developers that are not experts in IFC or STEP. The format also exposes how the data is represented in IFC. Entity instances from the model are represented as Entity. Explicit attributes are available as Value. Implicit and derived attributes are not available. A Value is typed with both its IFC type and its JSON type. A Value that represents a physical measure will always contain its unit of measure.

Below is an example of how an IfcMateral instance is represented in JSON. The explicit attribute IfcMaterial.Name is available as the field attributes.Name. It is assigned a Value with IFC type IfcLabel and is represented in JSON as a string. The actual attribute value is available in the field attributes.Name.value.

{
    "attributes": {
        "Name": {
            "ifcType": "IfcLabel",
            "type": "string",
            "value": "Wood"
        }
    },
    "ifcType": "IfcMaterial",
    "objectId": 49740000
}

IFC Objects

Entity

Example

{
    "attributes": {
        "Name": {
            "ifcType": "IfcLabel",
            "type": "string",
            "value": "Wood"
        }
    },
    "ifcType": "IfcMaterial",
    "objectId": 12345678
}

Description

Represents any IFC entity instance.

Fields

Name Type Description
objectId Long The object ID of the entity.
ifcType String The entity name.
attributes Map from String to Value Set of named explicit attribute values. Unset attributes are omitted.

Value

Example

{
    "ifcType": "IfcLabel",
    "type": "string",
    "value": "Wood"
}
{
    "ifcType": "IfcSlabTypeEnum",
    "type": "enum",
    "value": "FLOOR"
}
{
    "ifcType": "IfcLengthMeasure",
    "type": "number",
    "value": "100.0",
    "unit": "m"
}

Description

Represents a typed value.

Fields

Name Type Description
ifcType String The IFC type of the value.
type String The data type of the value. Simple types are "boolean", "number", "integer", "string", "enum". Complex types are "object" or "array".
unit String Unit of the value.
value Object The value. For data types "boolean", "number", "integer" and "string" the value will be represented a simple JSON value. The data type "enum" is represented as a string. The data type "object" is represented as an Entity. The data type "array" is represented as an array of Value.

Property

Example

{
    "ifcType": "IfcPropertySingleValue",
    "nominalValue": {
        "type": "boolean",
        "ifcType": "IfcBoolean",
        "value": true
    }
}
{
    "ifcType": "IfcComplexProperty",
    "properties": {
        "Area": {
            "type": "number",
            "ifcType": "IfcAreaMeasure",
            "value": 5.5,
            "unit": "m²"
        },
        "Volume": {
            "type": "number",
            "ifcType": "IfcVolumeMeasure",
            "value": 0.03,
            "unit": "m³"
        }
}

Description

Represents any of the types of properties that can be associated with IFC objects using property sets.

Fields

Name Type Description
description String Value from IfcProperty.Description.
ifcType String The IFC type of the property.
nominalValue Value Set if ifcType is IfcPropertySingleValue.
enumerationValues List of Value Set if ifcType is IfcPropertyEnumeratedValue.
listValues List of Value Set if ifcType is IfcPropertyListValue.
lowerBoundValue Value Set if ifcType is IfcPropertyBoundedValue.
upperBoundValue Value Set if ifcType is IfcPropertyBoundedValue.
propertyReference Value Set if ifcType is IfcPropertyReferenceValue.
properties Map from String to Property Set if ifcType is IfcComplexProperty.

PropertySet

Example

{
    "revisionId": "305bbb20fae34e80984efa85aa2c0d50",
    "objectId": 12345678,
    "ifcType": "IfcPropertySet",
    "attributes": {
        "GlobalId": {
            "type": "string",
            "ifcType": "IfcGloballyUniqueId",
            "value": "2AAAJgvmbEC9V$1uI4oGt6"
        },
        "Name": {
            "type": "string",
            "ifcType": "IfcLabel",
            "value": "Pset_WindowCommon"
        }
    },
    "properties": {
        "IsExternal": {
            "ifcType": "IfcPropertySingleValue",
            "nominalValue": {
                "type": "boolean",
                "ifcType": "IfcBoolean",
                "value": false
            }
        }
    }
}

Description

Represents a property set (IfcPropertySet). A property set is an Entity containing a set of named properties. Property sets with names starting with "Pset_" are predefined in the Property Sets Definition.

Fields

Name Type Description
objectId Long The object ID of the property set.
ifcType String The IFC type of the property set.
attributes Map from String to Value Set of named explicit attribute values. Unset attributes are omitted.
revisionId String The Revision containing the property set.
properties Map from String to Property Set of named properties.

Quantity

Represents a physical quantity that can be associated with IFC objects using quantity sets.

Description

Fields

Name Type Description
description String Value from IfcPhysicalQuantity.Description.
ifcType String The IFC type of the quantity.
value Value The value of the quantity.

QuantitySet

Description

Represents a quantity set (IfcElementQuantity). A property set is an Entity containing a set of named quantities.

Fields

Name Type Description
objectId Long The object ID of the quantity set.
ifcType String The IFC type of the quantity set.
attributes Map from String to Value Set of named explicit attribute values. Unset attributes are omitted.
revisionId String The Revision containing the property set.
properties Map from String to Quantity Set of named quantities.

Type

Description

Represents common type information associated with a Product.

Fields

Name Type Description
objectId Long The object ID of the type.
ifcType String The IFC type of the type.
attributes Map from String to Value Set of named explicit attribute values. Unset attributes are omitted.
revisionId String The Revision containing the product.
propertySets Map from String to PropertySet Set of named property sets associated with the type.
quantitySets Map from String to QuantitySet Set of named quantity sets associated with the type.
materials List of Entity List of materials associated with the type.

Product

Description

Represents physical products or spatial items.

Fields

Name Type Description
objectId Long The object ID of the product.
ifcType String The IFC type of the product set.
attributes Map from String to Value Set of named explicit attribute values. Unset attributes are omitted.
revisionId String The Revision containing the product.
propertySets Map from String to PropertySet Set of named property sets associated with the product.
quantitySets Map from String to QuantitySet Set of named quantity sets associated with the product.
materials List of Entity List of materials associated with the product.
type Type The common type information associated with the product.

Query

Example

{
  "ifcType": { "$ifcType": "IfcWall" }
}

Introduction

Bimsync allows you to query IFC entities using a query language. Queries are represented as JSON. The language is similar to MongoDB query filter documents.

Operators

Name Description
$and Match entities where all expressions in an array of expressions return a match.
$eq Match entities that are equal to a value.
$ifcType Match entities that are equal to an IFC type or its subtypes.
$in Match entities that are equal to any value in an array.

$and

Description

$and operator performs a logical AND operation on two or more expressions. Only entities matching all expressions are selected.

Syntax

{ $and: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }

$eq

Description

$eq operator selects entities where the value of a field equals the specified value.

Syntax

{ <field>: { $eq: <value> } }

This is equivalent to { <field>: <value> }

$ifcType

Description

$ifcType operator selects entities where the value of a field equals the specified IFC type or its subtypes.

Syntax

{ <field>: { $ifcType: <string> } }

$in

Description

$in operator selects entities where the value of a field equals any value in the specified array.

Syntax

{ <field>: { $in: [ <value1>, <value2>, ... <valueN> ] } }

IFC Resources

Get product

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json"
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/ifc/products/49739989"
  {
      "attributes": {
          "GlobalId": {
              "ifcType": "IfcGloballyUniqueId",
              "type": "string",
              "value": "1AAAJgvmbEC9V$1uI4oGt6"
          },
          "Name": {
              "ifcType": "IfcLabel",
              "type": "string",
              "value": "S\u00f8yle-01"
          },
          "ObjectType": {
              "ifcType": "IfcLabel",
              "type": "string",
              "value": null
          },
          "Tag": {
              "ifcType": "IfcIdentifier",
              "type": "string",
              "value": "4A28A4EA-E709-4E30-97-FF-078484C90DC6"
          }
      },
      "ifcType": "IfcColumn",
      "materials": [
          {
              "attributes": {
                  "Name": {
                      "ifcType": "IfcLabel",
                      "type": "string",
                      "value": "Limtre"
                  }
              },
              "ifcType": "IfcMaterial",
              "objectId": 49740000
          }
      ],
      "objectId": 49739989,
      "propertySets": [],
      "quantitySets": [],
      "type": null
  }

Description

Get a product.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/products/:product

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Returns a Product.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found
404 Not Found 20 NOT_FOUND Product (:product) not found

List products

Example

curl -X GET \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json"
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/ifc/products"
[
    {
        "attributes": {
            "GlobalId": {
                "ifcType": "IfcGloballyUniqueId",
                "type": "string",
                "value": "1AAAJgvmbEC9V$1uI4oGt6"
            },
            "Name": {
                "ifcType": "IfcLabel",
                "type": "string",
                "value": "S\u00f8yle-01"
            },
            "ObjectType": {
                "ifcType": "IfcLabel",
                "type": "string",
                "value": null
            },
            "Tag": {
                "ifcType": "IfcIdentifier",
                "type": "string",
                "value": "4A28A4EA-E709-4E30-97-FF-078484C90DC6"
            }
        },
        "ifcType": "IfcColumn",
        "materials": [
            {
                "attributes": {
                    "Name": {
                        "ifcType": "IfcLabel",
                        "type": "string",
                        "value": "Limtre"
                    }
                },
                "ifcType": "IfcMaterial",
                "objectId": 49740000
            }
        ],
        "objectId": 49739989,
        "propertySets": [],
        "quantitySets": [],
        "type": null
    }
]

Description

List all products in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/products

Query parameters

Name Type Description
ifcType String Optional. Filter by IFC type.
revision String Optional. Filter by revision.

Response format

application/json

Response

Returns an array of Product.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Query products

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data \
        "{ \"query\": {
               \"ifcType\": {
                 \"$ifcType\": \"IfcWall"\
               }
           },
           \"fields\": {
               \"attributes.Name\": 1,
               \"attributes.GlobalId\": 1
           }
        }" \
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/ifc/products"
[
    {
        "attributes": {
            "GlobalId": {
                "ifcType": "IfcGloballyUniqueId",
                "type": "string",
                "value": "0EKxnFdcP6l9dG0OxZbFYB"
            },
            "Name": {
                "ifcType": "IfcLabel",
                "type": "string",
                "value": "01"
            }
        },
        "ifcType": "IfcWallStandardCase",
        "materials": [],
        "objectId": 49650074,
        "propertySets": [],
        "quantitySets": [],
        "type": null
    }
]

Description

Query all products in a project.

Method

POST

URL

https://api.bimsync.com/v2/projects/:project/ifc/products

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Request format

application/json

Request parameters

Name Type Description
fields Object Optional The fields to return. All fields are returned by default. Setting <field> to 1 includes the field. Setting <field> to 0 excludes the field.
query Query The query object.

Response format

application/json

Response

Returns an array of Product.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Get products type summary

Description

Get the number of instances per IFC type for products.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/products/ifctypes

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Map from String to Integer. Represents the number of instances per IFC type name.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Get product relations

Description

Get the relations for a product.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/products/:product/relations

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

ProductRelations

List product relations

Description

List the relations for all the products in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/products/relations

Query parameters

Name Type Description
revision String Optional. Filter by revision.
pageSize Integer Optional. Default 100, max 1000.

Response format

application/json

Response

Array of ProductRelations

Get type

Description

Get a type.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/types/:type

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Type

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found
404 Not Found 20 NOT_FOUND Type (:type) not found

List types

Example

curl -X POST \
    --header "Authorization: Bearer $ACCESS_TOKEN" \
    --header "Content-Type: application/json"
    "https://api.bimsync.com/v2/projects/af2d8af0fa54465b89bf26dd3d92cfd0/ifc/types"
[
    {
        "attributes": {
            "GlobalId": {
                "ifcType": "IfcGloballyUniqueId",
                "type": "string",
                "value": "1AAAJgvmbEC9V$1uI4oGt6"
            },
            "Name": {
                "ifcType": "IfcLabel",
                "type": "string",
                "value": "S\u00f8yle-01"
            },
            "ObjectType": {
                "ifcType": "IfcLabel",
                "type": "string",
                "value": null
            },
            "Tag": {
                "ifcType": "IfcIdentifier",
                "type": "string",
                "value": "4A28A4EA-E709-4E30-97-FF-078484C90DC6"
            }
        },
        "ifcType": "IfcColumn",
        "materials": [
            {
                "attributes": {
                    "Name": {
                        "ifcType": "IfcLabel",
                        "type": "string",
                        "value": "Limtre"
                    }
                },
                "ifcType": "IfcMaterial",
                "objectId": 49740000
            }
        ],
        "objectId": 49739989,
        "propertySets": [],
        "quantitySets": [],
        "type": null
    }
]

Description

List all types in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/types

Query parameters

Name Type Description
ifcType String Optional. Filter by IFC type.
revision String Optional. Filter by revision.

Response format

application/json

Response

Array of Type

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Query types

Description

Query all types in a project.

Method

POST

URL

https://api.bimsync.com/v2/projects/:project/ifc/types

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Request format

application/json

Request parameters

Name Type Description
fields Fields
query Query

Response format

application/json

Response

Array of Type

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Get types type summary

Description

Get the number of instances per IFC type for types.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/types/ifctypes

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Map from String to Integer. Represents the number of instances per IFC type name.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Get type relations

Description

Get the relations for a type.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/types/:type/relations

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

TypeRelations

List type relations

Description

List the relations for all the types in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/types/relations

Query parameters

Name Type Description
pageSize Integer Optional. Default 100, max 1000.

Response format

application/json

Response

Array of TypeRelations

Get group

Description

Get a group.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/groups/:group

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Group

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found
404 Not Found 20 NOT_FOUND Group (:group) not found

List groups

Description

List all groups in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/groups

Query parameters

Name Type Description
ifcType String Optional. Filter by IFC type.
revision String Optional. Filter by revision.

Response format

application/json

Response

Array of Group

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Query groups

Description

Query all groups in a project.

Method

POST

URL

https://api.bimsync.com/v2/projects/:project/ifc/groups

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Request format

application/json

Request parameters

Name Type Description
fields Fields
query Query

Response format

application/json

Response

Array of Group

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Get groups type summary

Description

Get the number of instances per IFC type for groups.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/groups/ifctypes

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Map from String to Integer. Represents the number of instances per IFC type name.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Get group relations

Description

Get the relations for a group.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/groups/:group/relations

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

GroupRelations

List group relations

Description

List the relations for all the group in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/groups/relations

Query parameters

Name Type Description
revision String Optional. Filter by revision.
pageSize Integer Optional. Default 100, max 1000.

Response format

application/json

Response

Array of GroupRelations

Get layer

Description

Get a layer.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/layers/:layer

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Layer

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found
404 Not Found 20 NOT_FOUND Layer (:layer) not found

List layers

Description

List all layers in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/layers

Query parameters

Name Type Description
ifcType String Optional. Filter by IFC type.
revision String Optional. Filter by revision.

Response format

application/json

Response

Array of Layer

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Query layers

Description

Query all layers in a project.

Method

POST

URL

https://api.bimsync.com/v2/projects/:project/ifc/layers

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Request format

application/json

Request parameters

Name Type Description
fields Fields
query Query

Response format

application/json

Response

Array of Layer

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Get layers type summary

Description

Get the number of instances per IFC type for layers.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/layers/ifctypes

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Map from String to Integer. Represents the number of instances per IFC type name.

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Get layer relations

Description

Get the relations for a layer.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/layers/:layer/relations

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

LayerRelations

List layer relations

Description

List the relations for all the layers in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/layers/relations

Query parameters

Name Type Description
revision String Optional. Filter by revision.
pageSize Integer Optional. Default 100, max 1000.

Response format

application/json

Response

Array of LayerRelations

Get owner/history

Description

Get an owner/history entity.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/ownerhistory/:ownerhistory

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Entity

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found
404 Not Found 20 NOT_FOUND Owner/history (:ownerhistory) not found

List owner/history

Description

List all owner/history entities in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/ownerhistory

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Array of Entity

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Get classification

Description

Get a classification entity.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/classifications/:classification

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Entity

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found
404 Not Found 20 NOT_FOUND Classification (:classification) not found

List classifications

Description

List all classification entities in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/classifications

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Array of Entity

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Get classification relations

Description

Get the relations for a classification.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/classifications/:classification/relations

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

ClassificationRelations

Get classification reference

Description

Get a classification reference entity.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/classification_references/:reference

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Entity

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found
404 Not Found 20 NOT_FOUND Classification reference (:reference) not found

List classification references

Description

List all classification reference entities in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/classification_references

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

Array of Entity

Errors

Status Code Message
404 Not Found 20 NOT_FOUND Project (:project) not found
404 Not Found 20 NOT_FOUND Revision (:revision) not found

Get classification reference relations

Description

Get the relations for a classification reference.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/classification_references/:reference/relations

Query parameters

Name Type Description
revision String Optional. Filter by revision.

Response format

application/json

Response

ClassificationReferenceRelations

List classification reference relations

Description

List the relations for all the classification references in a project.

Method

GET

URL

https://api.bimsync.com/v2/projects/:project/ifc/classification_references/relations

Query parameters

Name Type Description
revision String Optional. Filter by revision.
pageSize Integer Optional. Default 100, max 1000.

Response format

application/json

Response

Array of ClassificationReferenceRelations