Open source BIM server API - How to use it?

Bim server is an open source BIM server to store BIM Models in your own server or in the cloud.
It is the more important part of Open BIM open source software.

The main repository for BIM server is available in github :

The documentation is available in the github project wiki :

A demo projet is available here :

How to start using it

BIM server have a JSON / SOAP API that you can use to build your application
You can test the see all API actions at this url
But the best is that you install it locally, so you can test with real data.

Let’s explore the API with a common workflow.

  • Create a project addProject : add a new project
    You need to choose either v2x3 or v4 version of the project. Projects can have sub-projects
    It has a list of authorized user, an author…
    It has a revision system.
    It could have modelCheckers attached.

    “__type”: “SProject”,
    “checkouts”: [],
    “concreteRevisions”: [],
    “createdById”: 131074,
    “createdDate”: 1481536818632,
    “description”: “”,
    “exportLengthMeasurePrefix”: “meter”,
    “extendedData”: [],
    “geoTagId”: 131077,
    “hasAuthorizedUsers”: [
    “id”: 3,
    “lastConcreteRevisionId”: -1,
    “lastRevisionId”: -1,
    “logs”: [
    “modelCheckers”: [],
    “name”: “testifc2”,
    “newServices”: [],
    “oid”: 327681,
    “parentId”: -1,
    “revisions”: [],
    “rid”: 1,
    “schema”: “ifc2x3tc1”,
    “sendEmailOnNewRevision”: false,
    “services”: [],
    “state”: “ACTIVE”,
    “subProjects”: []

  • Add a user addUser : add a user to the server
    the username need to be a valid email. It will send an email to the created user email so that he set his password. You have the choice between different users type. The normal user type is “USER”. Other are “SYSTEM”, “READ_ONLY” and “ADMIN”
    Only administrator can create projects. Users can edit a project content, but not create project. Read_only can only view the project they are added to.

    “__type”: “SUser”,
    “createdById”: -1,
    “createdOn”: 1481539258207,
    “extendedData”: [],
    “hasRightsOn”: [],
    “lastSeen”: null,
    “logs”: [
    “name”: “slucas”,
    “oAuthAuthorizationCodes”: [],
    “oAuthIssuedAuthorizationCodes”: [],
    “oid”: 196610,
    “passwordHash”: “MUzDUvk6ZZDGRdy3OdUpk9kfWhcGz75yml”,
    “passwordSalt”: “iMNDa952mN4NZZgeMoMyTvavDSq6MJEHN1wxj3kBQwDdc=”,
    “revisions”: [],
    “rid”: 1,
    “schemas”: [],
    “services”: [],
    “state”: “ACTIVE”,
    “token”: “18517FE5E04407ZZEDF0296C4F35652A38”,
    “userSettingsId”: 196616,
    “userType”: “USER”,
    “username”: "",
    “validationToken”: “fW+tMQn8klBwr4PlAAO8UxdRThlt/omHP9Jpxvrslpeqc=”,
    “validationTokenCreated”: 14815392582107
    An other method addUserWithPassword allow to set the password directly without the mail sending.

  • List users getAllUsers : Get all existing users information
    With that method we can get the name of oid of the users for example to add them to a project.

  • List projects getAllProjects : Get all existing projects information
    With that method, we can get the informations and the poid (project id) of the projects.

  • Add user to a project addUserToProject : add an existing user to a project
    Once the user is created we need to affect him to a project so that he can do modifications.

  • Add an IFC file checkin : Add an IFC file to a project
    IFC file are the main assets of project. So it desserve special handling!
    IFC are serialized and deserialized when uploaded to BIM server so a deserializer is needed to process the data.
    There is also 2 options merge and sync.