DOORS Bridge offers it's services via a REST API.
The URL of the REST API typically is: http://{hostname}:{port}/db
The default DOORS Bridge {port} is 9090, but that can be changed upon installation.
In the following sections, we will use the placeholder {DB} to refer to the URL of the DOORS Bridge REST API.
Requests to the REST API must use UTF-8 encoding for the request URL and any optional query parameters (GET only).
The following headers must be present in all requests to the REST API:
Header | Required | Value |
---|---|---|
Authorization | Yes | Basic authentication ![]() The specified user must have "Execute DXL" in batch mode permission. Basic authorization method should be UTF-8 encoded: https://tools.ietf.org/id/draft-reschke-basicauth-enc-00.html#examples ![]() |
Accept | Yes | Client must accept response with content type "application/json" |
Responses from the REST API will always have "Content-type: application/json; charset=utf-8".
Timestamps returned from and passed into DOORS, e.g. "Created On", are the number of seconds since 1 Jan 1970, 00:00:00 GMT.
GET {DB}/server
The response contains the version and build number of the DOORS Bridge instance at the specified URL and the current time(stamp) of the server, e.g.
{ "version" : "1.6", "build" : 52, "time" : 1552039737596 }
The server time is the number of milliseconds since 1 Jan 1970, 00:00:00 GMT.
GET {DB}/projects[?baselineSets=true]
The response contains an array of all DOORS projects ( {"type" : 2} ), visible to the user, e.g.
[ { "id" : "00000001", "type" : 2, "name" : "Klaus Test", "description" : "Testprojekt für Tests von Klaus", "path" : "/Klaus Test" }, { "id" : "00000004", "type" : 2, "name" : "Test Project", "path" : "/Test Project" }, { "id" : "00000005", "type" : 2, "name" : "ReqIF Test", "description" : "Project to test ReqIF import/export", "path" : "/ReqIF Test" }, { "id" : "0000008f", "type" : 2, "name" : "New Project", "path" : "/Intland Software/New Project" }, { "id" : "000000a1", "type" : 2, "name" : "Raw_Project_2", "description" : "Just technical testing (Resp. hebenth)", "path" : "/Mechatronics/Raw_Project_2" } ]
If the optional parameter baselineSets is true, then each project will also show the number of defined baseline sets.
GET {DB}/hierarchy[?options]
Option | Type | Required | Meaning |
---|---|---|---|
recursively | boolean | No | Show the complete project/folder hierarchy recursively (true) or only the top-level nodes (false). The default is false. |
baselineSets | boolean | No | Only return project and folder nodes and the number of baseline sets defined on each node (true), or return project, folder and (formal) modules nodes (false). Default is false |
The response contains an array of all top-level
that are visible to the user.
E.g.
GET {DB}/hierarchy?recursively=false
[ { "id" : "00000001", "type" : 2, "name" : "Klaus Test", "description" : "Testprojekt für Tests von Klaus" }, { "id" : "00000002", "type" : 1, "name" : "Intland Software", "description" : "Daten von Intland Software" }, { "id" : "00000003", "type" : 1, "name" : "Mechatronics", "description" : "Merit Automotive Electronics" }, { "id" : "00000004", "type" : 2, "name" : "Test Project" }, { "id" : "00000005", "type" : 2, "name" : "ReqIF Test", "description" : "Project to test ReqIF import/export" } ]
If the complete project/folder hierarchy should be returned recursively, then project and folder nodes will contain an array of their children recursively.
GET {DB}/node/{parent}/children[?options]
Option | Type | Required | Meaning |
---|---|---|---|
parent | string | Yes | The id of the project or folder, whose children or descendants to get. |
recursively | boolean | No | Show all descendants of the project/folder recursively (true) or only the direct children (false). The default is false. |
baselineSets | boolean | No | Only return children/descendants of type project and folder plus the number of baseline sets defined on each node (true), or return all children/descendants of type project, folder and (formal) module (false). Default is false |
The response contains an array of the
that are direct children of the specified project/folder and that are visible to the user.
E.g.
GET {DB}/node/00000001/children?recursively=true
[ { "id" : "00000020", "type" : 3, "name" : "Pflichtenheft", "description" : "Ein Test Pflichenheft" }, { "id" : "00000021", "type" : 1, "name" : "Testmanagement", "description" : "Daten für das Testmanagement", "children" : [ { "id" : "00000040", "type" : 1, "name" : "Spezifikationen", "description" : "Testfälle und Testspezifikationen", "children" : [ { "id" : "00000060", "type" : 3, "name" : "Testfälle", "description" : "Testfall Spezifiationen" } ] }, { "id" : "00000041", "type" : 1, "name" : "Testprotokolle", "description" : "Protokolle/Ergebnisse" } ] } ]
If all descendants of the specified project/folder should be returned recursively, then project and folder nodes will contain an array of their children recursively.
GET {DB}/node/{id}
E.g.
GET {DB}/node/00000060
{ "id" : "00000060", "type" : 3, "name" : "Testfälle", "description" : "Testfall Spezifiationen", "path" : "/Klaus Test/Testmanagement/Spezifikationen/Testfälle" }
GET {DB}/folder/{id}/baselineSets[?options]
Option | Type | Required | Meaning |
---|---|---|---|
id | string | Yes | The id of the project or folder, whose defined baseline sets to get. |
baselines | boolean | No | Also return the baseline/version ids of the modules included in each baseline set (true), or only return the baseline set definitions including modules and baseline sets (false). Default is false. |
The result is an array of all non-empty baseline set definitions in the specified project/folder.
Each baseline set definition contains an array of the modules included in that definition and the baselineSets created for this definition.
If the optional parameter baselines was true, each baseline set will also include the baseline/version ids of the modules included in it.
E.g.
GET {DB}/folder/000000a0/baselineSets?baselines=true
[ { "name" : "SA deliveries", "description" : "Baselines made after each SA docs delivery", "modules" : [ { "id" : "00000148", "name" : "ShRD_966487809E_10024803", "description" : "LIN 2.1 Physical layer and protocol layer", "path" : "/Mechatronics/10024803/01_Stakeholder_REQs/01_Customer/ShRD_966487809E_10024803" }, { "id" : "00000142", "name" : "ShRD_9664697099_10024803", "description" : "TS implementation of UDS", "path" : "/Mechatronics/10024803/01_Stakeholder_REQs/01_Customer/ShRD_9664697099_10024803" }, ... ], "baselineSets" : [ { "id" : "1.0.1.0", "description" : "SA B1 delivery", "Created On" : 1394625274, "Created By" : "krzysztof", "baselines" : { "00000142" : "3.0.1.0", "00000148" : "3.0.1.0", ... } }, { "id" : "2.0.B2", "description" : "Baseline before SA B2 delivery.", "Created On" : 1398861980, "Created By" : "krzysztof", "baselines" : { "00000142" : "4.0.B2", "00000148" : "4.0.B2", ... } }, ... } ] } ]
GET {DB}/folder/{id}/baselineSet/{name}[?options]
Option | Type | Required | Meaning |
---|---|---|---|
id | string | Yes | The id of the project or folder, where to look for a baseline set definition with the specified name |
name | string | Yes | The name of the baseline set definition to get. |
baselines | boolean | No | Also return the baseline/version ids of the modules included in each baseline set (true), or only return the baseline set definition including modules and baseline sets (false). Default is false. |
GET {DB}/folder/{folderId}/baselineSet/{name}/{id}[?options]
Option | Type | Required | Meaning |
---|---|---|---|
folderId | string | Yes | The id of the project or folder, where to look for a baseline set definition with the specified name |
name | string | Yes | The name of the baseline set definition to get. |
id | string | Yes | The id of the baseline set to get. |
baselines | boolean | No | Also return the baseline/version ids of the modules included in each baseline set (true), or only return the baseline set definition including modules and baseline sets (false). Default is false. |
GET {DB}/module/{id}/baselines[?options]
Option | Type | Required | Meaning |
---|---|---|---|
async | boolean | No | Only DOORS Bridge 1.8.84 and newer: Whether the request should be executed asynchronously (true) or synchronously (false default) |
callback | URL![]() |
No | Only DOORS Bridge 1.8.84 and newer and only in combination with async=true. The URL ![]() ![]() ![]() |
GET {DB}/module/00000020/baselines
{ "id" : "00000020", "name" : "Pflichtenheft", "description" : "Ein Test Pflichenheft", "path" : "/Klaus Test/Pflichtenheft", "Last Modified On" : 1516292954, "Last Modified By" : "Klaus", "lock" : true, "modify" : true, "baselines" : [ { "id" : "0.1", "description" : "Initialer Stand", "Created On" : 1489143451, "Created By" : "Klaus" }, { "id" : "0.2", "description" : "Zweiter Stand", "Created On" : 1491820020, "Created By" : "Klaus" } ] }
In DOORS Bridge 1.6 and newer, the response will also contain information, whether the module is actually locked or if the user has permission to lock and modify the module.
GET {DB}/module/{id}/attributes[?options]
Option | Type | Required | Meaning |
---|---|---|---|
id | string | Yes | The id of the formal module, whose attributes and link types to get |
baseline | string | No | The (version) id of a module baseline, to get the attributes and link types in that baseline. Default is null, which gets the attributes and link types for the current module revision. |
async | boolean | No | Only DOORS Bridge 1.8.84 and newer: Whether the request should be executed asynchronously (true) or synchronously (false default) |
callback | URL![]() |
No | Only DOORS Bridge 1.8.84 and newer and only in combination with async=true. The URL ![]() ![]() ![]() |
The result is the module with an array of the defined object attributes and an array of the defined linkTypes, including their link attributes.
In DOORS Bridge 1.6 and newer, the response will also contain information, whether the module is actually locked or if the user has permission to lock and modify the module.
Each attribute has a unique name, an optional description and a type:
Type | Meaning | Values |
---|---|---|
0 | string | JSON UTF-8 encoded (plain text) string |
1 | int | JSON int |
2 | decimal | JSON number, with '.' |
3 | timestamp | The number of seconds since 1 Jan 1970, 00:00:00 GMT, as a JSON int |
4 | boolean | true or false |
5 | username | The name of a DOORS user, as a string |
6 | enumeration | The name of the selected option, as as string, or, for multiple values: an array with the names of the selected options. |
10 | rich text | JSON UTF-8 encoded string, containing the DOORS rich text![]() |
Enumeration attributes also have an array of the defined options and can optionally allow multiple values (default false).
All attributes can also have an optional default value, numeric attributes (int, decimal) additionally an optional min and max value.
Attributes, that are not marked as editable, are read-only.
Caution: The values of attributes marked as dxl, are computed via DOORS Extension Language scripts. Retrieving the values of such DXL attributes can be very slow !
The following default/implicit DOORS object attributes are not listed under attributes:
Attribute | Type | Meaning |
---|---|---|
id | int | The DOORS object id |
pid | int | The id of the parent object |
type | int | The type of the DOORS object |
pos | int | The ordinal of the DOORS object within it's siblings (relative to parent) |
name | string | The (header) name of the object |
text | rich text | The object (rich) text |
deleted | boolean | Only present with value true, if the object is marked as deleted |
E.g.
GET {DB}/module/00000020/attributes
{ "id" : "00000020", "name" : "Pflichtenheft", "description" : "Ein Test Pflichenheft", "lock" : true, "modify" : true, "attributes" : [ { "name" : "Created By", "type" : 5 }, { "name" : "Created On", "type" : 3 }, { "name" : "Created Thru", "type" : 6, "options" : [ { "id" : 0, "name" : "Manual Input" }, { "id" : 1, "name" : "Extracting" }, { "id" : 2, "name" : "Copying" } ], "default" : "Manual Input" }, { "name" : "Last Modified By", "type" : 5 }, { "name" : "Last Modified On", "type" : 3 }, { "name" : "Priorität", "description" : "Die Priorität der Anforderung", "type" : 6, "options" : [ { "id" : 1, "name" : "Nice to have", "color" : 0 }, { "id" : 2, "name" : "Want to have", "color" : 33 }, { "id" : 3, "name" : "Must have", "color" : 29 } ], "editable" : true }, { "name" : "Speisefolge", "description" : "Umfang des gewünschten Menüs", "type" : 6, "options" : [ { "id" : 1, "name" : "Vorspeise" }, { "id" : 2, "name" : "Suppe" }, { "id" : 3, "name" : "Hauptgericht" }, { "id" : 4, "name" : "Dessert" } ], "multiple" : true, "editable" : true }, { "name" : "Status", "description" : "Der Status der Anforderung", "type" : 6, "options" : [ { "id" : 1, "name" : "Entwurf", "color" : 28 }, { "id" : 3, "name" : "Akzeptiert", "color" : 25 }, { "id" : 2, "name" : "Abgelehnt", "color" : 13 } ], "editable" : true } ], "linkTypes" : [ { "id" : "00000022", "name" : "DOORS Links", "description" : "Automatisch von DOORS erstelltes Linkmodul", "attributes" : [ { "name" : "Created By", "type" : 5 }, { "name" : "Created On", "type" : 3 }, { "name" : "Last Modified By", "type" : 5 }, { "name" : "Last Modified On", "type" : 3 } ] }, { "id" : "External", "name" : "External", "description" : "Links to external resources", "attributes" : [ { "name" : "Created By", "type" : 5 }, { "name" : "Created On", "type" : 3 }, { "name" : "Last Modified By", "type" : 5 }, { "name" : "Last Modified On", "type" : 3 } ] } ] }
GET {DB}/module/{id}/objects[?options] POST {DB}/module/{id}/objects
Option | Type | Required | Meaning | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | string | Yes | The id of the formal module, whose objects/content to get | ||||||||||||||||
baseline | string | No | The (version) id of a module baseline, to get the objects in that baseline. Default is null, which gets the objects for the current module revision. |
||||||||||||||||
attributes | string | No | The comma-separated list with the names of the object attributes to return. The default/implicit object attributes are always returned, but all other attributes must be requested explicitly here. There are also some special options, that must be specified as (pseudo) attributes:
|
||||||||||||||||
links | string | No | The semicolon-separated list of the object links to return: <link type>[:<attributes>][;...]
links=00000022:Created By,Created On,Last Modified By,Last Modified On;External:Created By,Created On,Last Modified By,Last Modified OnYou do not have to specify the attributes
?attributes=Created By,Created On,Last Modified By,Last Modified On &links=00000022;ExternalTo return object links of any type, with Created By, Created On, Last Modified By and Last Modified Onaccording to the objects, and with no link specific attributes, you can also simply say: links=* |
||||||||||||||||
limit | int | No | If specified, only return the first limit objects in the module. Deleted objects do not count and DOORS tables only count as 1 (table rows and cells do not count). limit is typically used in conjunction with preview, e.g. GET {DB}/module/00000020/objects?baseline=0.2&attributes=preview&limit=50 |
||||||||||||||||
modifiedAfter | string | No | A timestamp in the format yyyy-MM-dd HH:mm:ss. If specified, only objects created or modified after this point in time should be returned (see also outline above). | ||||||||||||||||
async | boolean | No | Only DOORS Bridge 1.8.84 and newer: Whether the request should be executed asynchronously (true) or synchronously (false default) |
||||||||||||||||
callback | URL![]() |
No | Only DOORS Bridge 1.8.84 and newer and only in combination with async=true. The URL ![]() ![]() ![]() |
For a GET request, the options must be passed as request parameters.
For a POST request, the options must be passed as a JSON object in the request body.
The response contains the module id, name, description, prefix and (DOORS Bridge 1.6 and newer) whether the module is actually locked, or if the user has permission to lock and modify the module, plus:
Information | Content | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
baseline | Information about the requested baseline (if any) | ||||||||||||
attributes | Information about the requested attributes and their type. Default/implicit attributes need not be requested and are also not listed here. | ||||||||||||
linkTypes | Information about the requested link types and their requested attributes (plus attribute type). | ||||||||||||
users | An array of all (distinct) users, that are referenced in the returned objects. Only present, if users were explicitly requested (see above). | ||||||||||||
objects | An array with all objects in the specified module and baseline (if any), in proper order. The type of an object is:
If modifiedAfter was specified, only objects created or modified after this point in time will be included, except outline or baseline was also specified: then all objects in the module are listed, but for objects, whose Last Modified On timestamp is before modifiedAfter, only the limited outline information will be present. |
E.g.
GET {DB}/module/00000020/objects?baseline=0.1&attributes=Created On,Created By,Last Modified On,Last Modified By,Status,users,attachments,discussions,history&links= 00000022;External
{ "id" : "00000020", "name" : "Pflichtenheft", "description" : "Ein Test Pflichenheft", "prefix" : "PFL-", "Created On" : 1487199600, "Created By" : "Klaus", "lock" : true, "modify" : true, "baseline" : { "id" : "0.1", "description" : "Initialer Stand", "Created On" : 1489143451, "Created By" : "Klaus" }, "attributes" : { "Created By" : 5, "Created On" : 3, "Last Modified By" : 5, "Last Modified On" : 3, "Status" : 6 }, "linkTypes" : { "00000022" : { "Created By" : 5, "Created On" : 3, "Last Modified By" : 5, "Last Modified On" : 3 }, "External" : { "Created By" : 5, "Created On" : 3, "Last Modified By" : 5, "Last Modified On" : 3 } }, "users" : [ { "id" : "0000000000000002", "name" : "Klaus", "fullName" : "Klaus Mehling", "email" : "klaus.mehling@intland.com" } ], "objects" : [ { ... }, { "id" : 16, "type" : 1, "pid" : 12, "text" : "Das ist ein __Beispiel__-Pflichtenheft zum Test des erweiterten Excel-Exports\\\\ \\\\ ", "Created By" : "Klaus", "Created On" : 1487199600, "Last Modified By" : "Klaus", "Last Modified On" : 1487331196, "discussions" : [ { "name" : "Improvements", "status" : "Open", "Created On" : 1488296724, "Created By" : "Klaus", "Last Modified On" : 1488297333, "Last Modified By" : "Klaus", "comments" : [ { "date" : 1488296724, "author" : "Klaus", "text" : "Yes, but via Wiki markup, not RTF !" }, { "date" : 1488297333, "author" : "Klaus", "text" : "Do we support Rich Text ?" } ] } ], "history" : [ { "date" : 1487244491, "author" : "Klaus", "action" : "createObject" }, { "date" : 1487331196, "author" : "Klaus", "action" : "modifyObject", "attribute" : "text", "old" : "Das ist ein __Beispiel__-Pflichtenheft ...\\\\ \\\\ ", "new" : "Das ist ein __Beispiel__-Pflichtenheft zum Test des erweiterten Excel-Exports\\\\ \\\\ " } ] }, { "id" : 18, "type" : 1, "pid" : 17, "text" : "[1-1.doc|!1-1.png!]\\\\ @Copyright __Intland Software Gmbh__ 2017, ''All rights reseved''\\\\ ", "Created By" : "Klaus", "Created On" : 1487199600, "Last Modified By" : "Klaus", "Last Modified On" : 1488899013, "history" : [ { "date" : 1487244775, "author" : "Klaus", "action" : "createObject" }, { "date" : 1488899013, "author" : "Klaus", "action" : "modifyObject", "attribute" : "text", "old" : "\\\\ \\\\ @Copyright __Intland Software Gmbh__ 2017, ''All rights reseved''\\\\ ", "new" : "\\\\ @Copyright __Intland Software Gmbh__ 2017, ''All rights reseved''\\\\ " } ], "attachments" : { "1-1.doc" : "DP7/O18-T1-1.doc", "1-1.png" : "DP7/O18-T1-1.png" } }, { ... } ] }
POST {DB}/module/{id}/lock
Option | Type | Required | Meaning |
---|---|---|---|
id | string | Yes | The id of the formal module, to lock |
The following parameters must be passed as a JSON object in the request body:
Option | Type | Required | Meaning |
---|---|---|---|
attributes | string | No | The comma-separated list with the names of the object attributes to return. The default/implicit object attributes are always returned, but all other attributes must be requested explicitly here. You can use the same special options as in Get the objects in a (formal) DOORS module above, except of preview. |
links | string | No | The semicolon-separated list of the object links to return: <link type>[:<attributes>][; ...] see Get the objects in a (formal) DOORS module above. |
modifiedAfter | string | No | A timestamp in the format yyyy-MM-dd HH:mm:ss. If specified, only objects created or modified after this point in time should be returned (see also outline above). |
linkUrl | string | No | Only required, if module objects should be linked to the migrated codeBeamer tracker items. This should be the base URL of the migrated codeBeamer tracker items without the actual item id, e.g. https://codebeamer.com/cb/issue/ |
itemIds | int[] | No | An array with the ids of migrated tracker items, that should be linked with the appropriate doors objects. The array index represents the DOORS object number within the module, e.g. the first item id (at index 0) belongs to DOORS object with #1. The array must contain zero (0) or null values for objects that should not be linked. |
async | boolean | No | Only DOORS Bridge 1.8.84 and newer: Whether the request should be executed asynchronously (true) or synchronously (false default) |
callback | URL![]() |
No | Only DOORS Bridge 1.8.84 and newer and only in combination with async=true. The URL ![]() ![]() ![]() |
This method is a variant of getting the objects of the current/head revision of a module, that can be used after all required baselines and the current/head revision of the module have been migrated to codeBeamer, to
Since there is always a time gap between the last import and locking the module, the request returns all modifications (if any) since the last import and before locking the module, similar to the get objects request above.
DELETE {DB}/module/{id}/lock
The module must have been locked via the lock call above.
GET {DB}/attachment/{URN}
Attachments are OLE objects and their preview images, that were extracted from the rich text attributes of objects returned from GET {DB}/module/{id}/objects[?options].
You can find the attachment URN in the attachments list of the returned objects.
The response is not JSON, but the requested attachment as a binary file.
Important: Attachments produced by a request, are only online for a limited period of time (5 min), after initial request completion or after downloading an attachment.
Doors Bridge 1.8.83 and older only supports synchronous requests:
This could caused problems,
Parameter | Type | Required | Meaning |
---|---|---|---|
async | boolean | No | To make an asychronous request, pass in async=true. |
callback | URL![]() |
No | Only in combination with async=true. The URL ![]() ![]() ![]() |
If you do not specify a Webhook callback URL
for your asynchronous request, you have to periodically
check/poll the request status:
GET {DB}/request/{id}/status
Parameter | Type | Required | Meaning |
---|---|---|---|
id | string | Yes | The id of the asynchronous request, as returned from the submit request. |
Attribute | Type | Required | Meaning |
---|---|---|---|
id | string | Yes | The id of the formal module, the request is about. |
baseline | string | No | The (version) id of the module baseline, the request is about. |
request | string | Yes | The request id |
status | string | Yes | The request status
|
duration | long | No | The duration in milliseconds of the request processing |
exception | string | No | Only if the request status is failed: The name of the failure/exception. |
message | string | No | Only if the request status is failed: The failure/exception message. |
If you specify a Webhook callback URL
for your asynchronous request, you don't need to check/poll the request status:
As soon as the background task is finished, the result of the request will be POSTed to the Webhook
callback URL