Table of contents
iTwins
Download API definition:
POST https://api.bentley.com/itwins/

Create a new iTwin.

The user that creates the iTwin will automatically be given the iTwin owner role on the iTwin. This will give that user full access to the iTwin, including the ability to create new child iTwins under the iTwin they are creating. After the iTwin is created, the iTwin owner role can be removed from the user or granted to other users.

Authentication

Requires Authorization header with valid Bearer token for scope itwin-platform.

For more documentation on authorization and how to get access token visit OAUTH2 Authorization page.

Authorization

The user must have the itwins_create permission on the parent iTwin specified in the request. If there is no parent iTwin in the request then the user must have the itwins_create permission on the [Account iTwin] (https://developer.bentley.com/apis/iTwins/overview/#account).

An Organization Administrator can create iTwins for their Organization.

Organization Administrators are power users for all iTwins owned by their organization. They will be able to create, modify or delete any iTwin. Example: john.doe@example.com is an Organization Administrator that works for Example Industries. John will be able to create iTwins and those iTwins will belong to Example Industries. John and any other Organization Administrator for Example Industries will be able to update or delete the iTwin. Any user (an employee of Example Industries, or an external participant) can be [invited] (https://developer.bentley.com/apis/access-control-v2/operations/add-itwin-user-members/) to collaborate on the iTwin.

An Organization Administrator must have at least one of the following roles assigned in User Management: Account Administrator, Co-Administrator, or CONNECT Services Administrator. For more information about User Management please visit our Bentley Communities Licensing, Cloud, and Web Services wiki page.

Request headers

Name
Required?
Description
Authorization
Yes

OAuth access token with itwin-platform scope

Accept
Yes

Setting to application/vnd.bentley.itwin-platform.v1+json is recommended.

Request body

iTwin (create)

Name
Type
Required?
Description
class
Yes

The Class of your iTwin.

subClass
Yes

The subClass your iTwin.

type
String
No

An open ended property to better define your iTwin's Type.

displayName
String
Yes

A display name for the iTwin.

number
String
No

A unique number or code for the iTwin. This is the value that uniquely identifies the iTwin within your organization. If not specified, then it will default to the same value as the auto generated iTwin Id.

geographicLocation
String, null
No

An optional field specifying the location of the iTwin. This is typically an address or city.

latitude
Double, null
No

An optional field specifying the latitude of the iTwin.

longitude
Double, null
No

An optional field specifying the longitude of the iTwin.

ianaTimeZone
String, null
No

An optional field specifying the time zone of the iTwin. This must be a valid [IANA] (https://www.iana.org/time-zones) time zone id.

dataCenterLocation
String
No

The data center where the data for this iTwin will be persisted. Default is East US. Valid Values: East US, North Europe, West Europe, Southeast Asia, Australia East, UK South, Canada Central, Central India, Japan East.

status
No

Must be one of Active, Inactive or Trial. The default value is Active. By default, Inactive iTwins are not returned from the Get my iTwins API unless requested using the includeInactive parameter.

parentId
String
No

An optional field containing the Id of the parent of the new iTwin. For example, if you want to create a Project iTwin as a child of an Asset iTwin, then specify the Asset iTwin Id in this field. If not specified, then the parentId will default to the iTwin that represents the users Account.

Example

json
{
    "class": "Endeavor",
    "subClass": "Project",
    "type": "Construction Project",
    "number": "iTwin #",
    "displayName": "My iTwin",
    "geographicLocation": "Exton, PA",
    "latitude": 40.028,
    "longitude": -75.621,
    "ianaTimeZone": "America/New_York",
    "dataCenterLocation": "East US",
    "status": "Active"
}

Response 201 Created

iTwin successfully created.

json
{
    "iTwin": {
        "id": "dc914a84-e0c9-40e2-9d14-faf5ed84147f",
        "class": "Endeavor",
        "subClass": "Project",
        "type": "Construction Project",
        "number": "00001-ds-3902795",
        "displayName": "White River",
        "geographicLocation": "Exton, PA",
        "latitude": 40.028,
        "longitude": -75.621,
        "ianaTimeZone": "America/New_York",
        "dataCenterLocation": "East US",
        "status": "Active",
        "parentId": "8a04f48b-1b11-475f-9b61-3083bc69f28f",
        "iTwinAccountId": "76c1102e-4f33-4dfa-ad93-bcd9ab717977",
        "imageName": null,
        "image": null,
        "createdDateTime": "2016-01-18T21:03:00.3704659Z",
        "createdBy": "abcd0123-e24a-4b35-9faf-f4f5f6f7f8f9",
        "lastModifiedDateTime": "2018-11-08T20:11:00.3304633Z",
        "lastModifiedBy": "abcd0123-e24a-4b35-9faf-f4f5f6f7f8f9"
    }
}

Response 401 Unauthorized

This response indicates that request lacks valid authentication credentials. Access token might not been provided, issued by the wrong issuer, does not have required scopes or request headers were malformed.

json
{
    "error": {
        "code": "HeaderNotFound",
        "message": "Header Authorization was not found in the request. Access denied."
    }
}

Response 403 Forbidden

The user is not authorized to create an iTwin.

json
{
    "error": {
        "code": "InsufficientPermissions",
        "message": "The user has insufficient permissions for the requested operation."
    }
}

Response 409 Conflict

iTwin with the same name already exists.

json
{
    "error": {
        "code": "iTwinExists",
        "message": "An iTwin with the specified number or displayName already exists.",
        "details": [{
                "code": "InvalidValue",
                "target": "displayName",
                "message": "An iTwin with the specified displayName already exists."
            },
            {
                "code": "InvalidValue",
                "target": "number",
                "message": "An iTwin with the specified number already exists."
            }
        ]
    }
}

Response 422 Unprocessable Entity

Invalid request to create a iTwin. Review the 'Field Values' section near the top of this page.

json
{
    "error": {
        "code": "InvalidiTwinsRequest",
        "message": "Cannot create iTwin.",
        "details": [{
                "code": "MissingRequiredProperty",
                "message": "A required property is missing or empty.",
                "target": "displayName"
            },
            {
                "code": "MissingRequiredProperty",
                "message": "A required property is missing or empty.",
                "target": "class"
            },
            {
                "code": "InvalidValue",
                "message": "Status value is incorrect. Valid values are Active, Inactive and Trial.",
                "target": "status"
            },
            {
                "code": "InvalidValue",
                "message": "Class value is incorrect.",
                "target": "class"
            },
            {
                "code": "InvalidValue",
                "message": "GeographicLocation cannot be more than 255 characters.",
                "target": "geographicLocation"
            },
            {
                "code": "InvalidValue",
                "message": "IanaTimeZone value is incorrect.",
                "target": "ianaTimeZone"
            },
            {
                "code": "InvalidValue",
                "message": "DataCenterLocation value is incorrect.",
                "target": "dataCenterLocation"
            },
            {
                "code": "InvalidValue",
                "message": "SubClass value is incorrect.",
                "target": "subClass"
            },
            {
                "code": "InvalidValue",
                "message": "DisplayName cannot be more than 255 characters.",
                "target": "displayName"
            },
            {
                "code": "InvalidValue",
                "message": "Number cannot be more than 255 characters.",
                "target": "number"
            },
            {
                "code": "InvalidValue",
                "message": "Type cannot be more than 100 characters.",
                "target": "type"
            },
            {
                "code": "InvalidValue",
                "message": "Latitude cannot be less than -90.0 or greater than 90.0.",
                "target": "latitude"
            },
            {
                "code": "InvalidValue",
                "message": "Longitude cannot be less than -180.0 or greater than 180.0.",
                "target": "longitude"
            }
        ]
    }
}

Response 429 Too many requests

This response indicates that the user has sent too many requests in a given amount of time.

json
{
    "error": {
        "code": "TooManyRequests",
        "message": "More requests were received than the subscription rate-limit allows."
    }
}

Response headers

Name
Description
retry-after

The number of requests exceeds the rate-limit for the client subscription.

iTwin-response

Name
Type
Description
iTwin

iTwin

Full representation of a iTwin.

Name
Type
Description
id
String

The iTwin Id.

class

The Class of your iTwin.

subClass

The subClass your iTwin.

type
String, null

An open ended property to better define your iTwin's Type.

number
String

A unique number or code for the iTwin. This is the value that uniquely identifies the iTwin within your organization.

displayName
String

A display name for the iTwin.

geographicLocation
String, null

An optional field specifying the location of the iTwin. This is typically an address or city.

latitude
Double, null

An optional field specifying the latitude of the iTwin.

longitude
Double, null

An optional field specifying the longitude of the iTwin.

ianaTimeZone
String, null

An optional field specifying the time zone of the iTwin. This must be a valid [IANA] (https://www.iana.org/time-zones) time zone id.

dataCenterLocation
String

The data center where the data for this iTwin will be persisted. Default is East US. Valid Values: East US, North Europe, West Europe, Southeast Asia, Australia East, UK South, Canada Central, Central India, Japan East.

status

Must be one of Active, Inactive or Trial. The default value is Active. By default, Inactive iTwins are not returned from the Get my iTwins API unless requested using the includeInactive parameter.

parentId
String, null

The Id of the parent of this iTwin. For example, a Project iTwin could be a child of an Asset iTwin.

iTwinAccountId
String, null

The Id of the Account that owns this iTwin. The Account is also the root of any iTwin hierarchy.

imageName
String, null

The name of the image. The name is unique and will only change if the image changes.

image
String, null

The URL of the image. This is a small, thumbnail image that was created using the Upload iTwin Image API. The URL will be valid for a minimum of 1 hour.

createdDateTime
Date-time

The date that the iTwin was created.

createdBy
String, null

The Id of the user that created the iTwin.

lastModifiedDateTime
Date-time

The date that the iTwin was last updated.

lastModifiedBy
String, null

The Id of the user that last updated the iTwin.

iTwin Status

One of 'Active', 'Inactive', 'Trial'

Name
Type
Description
Active
String
Inactive
String
Trial
String

iTwin Class

The Class of your iTwin.

Name
Type
Description
Account
String
Thing
String
Endeavor
String

iTwin SubClass

The subClass your iTwin.

Name
Type
Description
Account
String
Portfolio
String
Asset
String
Program
String
Project
String
WorkPackage
String

iTwin (create)

Properties of the iTwin to be created.

Name
Type
Description
class

The Class of your iTwin.

subClass

The subClass your iTwin.

type
String

An open ended property to better define your iTwin's Type.

displayName
String

A display name for the iTwin.

number
String

A unique number or code for the iTwin. This is the value that uniquely identifies the iTwin within your organization. If not specified, then it will default to the same value as the auto generated iTwin Id.

geographicLocation
String, null

An optional field specifying the location of the iTwin. This is typically an address or city.

latitude
Double, null

An optional field specifying the latitude of the iTwin.

longitude
Double, null

An optional field specifying the longitude of the iTwin.

ianaTimeZone
String, null

An optional field specifying the time zone of the iTwin. This must be a valid [IANA] (https://www.iana.org/time-zones) time zone id.

dataCenterLocation
String

The data center where the data for this iTwin will be persisted. Default is East US. Valid Values: East US, North Europe, West Europe, Southeast Asia, Australia East, UK South, Canada Central, Central India, Japan East.

status

Must be one of Active, Inactive or Trial. The default value is Active. By default, Inactive iTwins are not returned from the Get my iTwins API unless requested using the includeInactive parameter.

parentId
String

An optional field containing the Id of the parent of the new iTwin. For example, if you want to create a Project iTwin as a child of an Asset iTwin, then specify the Asset iTwin Id in this field. If not specified, then the parentId will default to the iTwin that represents the users Account.

Error

Contains error information.

Name
Type
Description
code
String

One of a server-defined set of error codes.

message
String

A human-readable representation of the error.

target
String, null

The target of the error.

Error Response

Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.

Name
Type
Description
error

Error information.