You are not logged in. Click here to log in.

Codebeamer Application Lifecycle Management (ALM)

Search In Project

Search inClear

Tags:  not added yet

The DOORS Bridge REST API

DOORS Bridge offers it's services via a REST API.

  • Completely platform independent
  • Completely stateless. No need to worry about closing sessions or expiring session timeouts.
  • Based on open Web standards:
    • HTTP for the communication protocol.
    • JSON for the data interchange.
  • Clients do not need any special client libraries nor any specific 3rd party libraries.
    • In fact, you can use any web browser to execute/test queries (GET), by simply entering the URL of the query into the browser's address bar.

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 credentials of an active DOORS user for request authentication and authorization
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 Information about the DOORS Bridge Server

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 All DOORS Projects

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 the DOORS Project or Folder Hierarchy

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

  • folders ("type" : 1),
  • projects ("type" : 2) and
  • (formal) modules ("type" : 3) (only if baselineSets=false)

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 the Children of the Specified Project or Folder (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

  • folders ("type" : 1),
  • projects ("type" : 2) and
  • (formal) modules ("type" : 3) (only if baselineSets=false)

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 Information About a DOORS Project, Folder or Module ID

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 Information About the Baseline Sets Defined on a DOORS Project or Folder

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 a Baseline Set Definition by Folder and Name

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 a Baseline Set by Folder, Definition Name and Baseline Set ID

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 all Baselines of a (Formal) DOORS Module

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 of the Webhook, where the result of the asychronous request should be POSTed to.

E.g.
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 all Attributes and Link Types of a (Formal) DOORS Module (in a Specific Baseline)

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 of the Webhook, where the result of the asychronous request should be POSTed to.


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 converted into codeBeamer Wiki markup.

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 the Objects in a (Formal) DOORS Module (in a Specific Baseline)

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:

Option Meaning
users Whether additional information about all (distinct) users, that are referenced in the returned objects, should be returned, e.g.
"users" : [ {
    "id" : "0000000000000002",
    "name" : "Klaus",
    "fullName" : "Klaus Mehling",
    "email" : "klaus.mehling@intland.com"
  } ]
preview If present (and no attachmentsare requested), then OLE objects, embedded in DOORS rich text, will only be represented by a preview image link in the converted Wiki markup, e.g.
text" : "[{Image src='DP2/O18-T1-1.png' }]\\\\
Ambulanz\\\\
@Copyright __Intland Software Gmbh__ 2017, ''All rights reseved''\\\\
\\\\
"
The
[{Image src='..'}]
refers to the relative image URN.
To download the preview image via the REST-API, you have to expand this URN into the full REST-API attachment URL: {DB}/attachment/{URN} , e.g.
GET {DB}/attachment/DP2/O18-T1-1.png
attachments If present, then OLE objects, embedded in DOORS rich text, will be extracted and returned as separate object attachments, e.g.
"attachments" : {
      "1-1.doc" : "DP2/O18-T1-1.doc",
      "1-1.png" : "DP2/O18-T1-1.png"
}
For embedded OLE objects, that are not themselves images, e.g. 1-1.doc, also an extra preview image will be provided as an additional attachment, e.g. 1-1.png.
The attachment key is the attachment name, the attachment value is the attachment URN.
To download attachments, you have to expand the attachment URN into the full REST-API attachment URL: {DB}/attachment/{URN} , e.g.
GET {DB}/attachment/DP2/O18-T1-1.doc
In the Wiki markup, the location of the embedded OLE object, will be replaced with a link of the form [<attachment name>|!<preview image>!], where <attachment name> and <preview image> are the names of the appropriate object attachments, e.g.
"text" : "[1-1.doc|!1-1.png!]\\\\
Ambulanz\\\\
@Copyright __Intland Software Gmbh__ 2017, ''All rights reseved''\\\\
\\\\
"
discussions If present, then also the object discussions and comments will be returned, e.g.
    "discussions" : [ {
      "name" : "Improvements",
      "status" : "Open",
      "Created On" : 1488296724,
      "Created 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 If present, then also the history about changes of the implicit/default and the explicitly requested object attributes is returned, e.g.
    "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\\\\
\\\\
"
    } ]
outline If you specify a modifiedAfter timestamp (see below), then only objects created or modified after this point in time should be returned.
But DOORS does not change the Last Modified On timestamp, if you modify object links or move objects to other positions. Especially not for objects in between the old and the new position of the moved object.
By requesting an outline, DOORS Bridge will return all objects in the module in proper order, and with their proper parent and position.
But for objects, whose Last Modified On timestamp is before modifiedAfter, only the limited outline information will be returned, e.g.
{
    "id" : 17,
    "type" : 2,
    "pid" : 13,
    "pos" : 1,
    "outline" : true
},
baseline This works like outline above, but forces to return full information about all objects, even if their Last Modified On timestamp is before modifiedAfter.

Only use baseline instead of outline, if you do not trust the history of the DOORS module!
links string No The semicolon-separated list of the object links to return: <link type>[:<attributes>][;...]
  • <link type> is the id of the link type
  • <attributes> is the comma-separated list with the names of the link attributes to return
e.g.
  links=00000022:Created By,Created On,Last Modified By,Last Modified On;External:Created By,Created On,Last Modified By,Last Modified On
You do not have to specify the attributes
  • Created By
  • Created On
  • Last Modified By
  • Last Modified On
for the link types, if you have already specified them in the object attributes, e.g.
?attributes=Created By,Created On,Last Modified By,Last Modified On
&links=00000022;External
To 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 of the Webhook, where the result of the asychronous request should be POSTed to.

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:

Type Meaning
1 Requirement
2 Heading/Folder
3 DOORS Table
4 DOORS Table Row
5 DOORS Table Cell

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"
    }
  }, {
     ...
  } ]
}



Known Problems

  • Attribute names containing leading or trailing whitespace
    • In DOORS Bridge build 63 or newer
      • Attribute names containing leading or trailing whitespace are handled correctly, but when specifying attributes as comma-separated list, no extra whitespace must be added around commas
    • In DOORS Bridge build 62 or newer
      • Attributes, whose name contains leading or trailing whitespace will never be returned, because attribute names will get trimmed
      • In order to fix this, you must remove the leading and/or trailing whitespace in the DOORS attribute name

Lock a (Formal) DOORS Module (1.6 and Newer)

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 of the Webhook, where the result of the asychronous request should be POSTed to.


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

  • Lock the module as "migrated", in order to prevent further changes in DOORS, and optionally,
  • Link the objects in the module to the migrated codeBeamer tracker items.

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.



Unlock a (Formal) DOORS Module (1.6 and Newer)

DELETE {DB}/module/{id}/lock

The module must have been locked via the lock call above.


Download Object Attachments

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.


Asynchronous requests (1.8.84 and newer)

Doors Bridge 1.8.83 and older only supports synchronous requests:




This could caused problems,

  • if the HTTP request to DOORS Bridge is routed through a network component, e.g. Router, Proxy, Firewall, etc., that imposes a timeout on the HTTP Response,
  • and DOORS Bridge takes longer than this timeout to respond, e.g.
    • When loading large DOORS Modules with thousands of objects and embedded OLEs.

Doors Bridge 1.8.84 and newer, therefore also supports asynchronous requests via these additional parameters/options:

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 of the Webhook, where the result of the asychronous request should be POSTed to.


Please note:
  • The response of an asynchronous request (async=true) is not the request result !
  • Instead it is the Request Id in form of a JSON string !


Asynchronous request with result polling

If you do not specify a Webhook callback URL for your asynchronous request, you have to periodically check/poll the request status:



Get the status/result of an asynchronous request (1.8.84 and newer)
GET {DB}/request/{id}/status


Parameter Type Required Meaning
id string Yes The id of the asynchronous request, as returned from the submit request.


The returned request status is a JSON object with at least these attributes:

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
  • running
  • finished
  • failed
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 the request status is finished:

  • The response will also contain the request result information, as would be returned by the synchronous request.


Please be aware:
  • The status of an asynchronous request is not kept indefinetly !
  • After the request's background task has finished or failed, the status is only available for a time period configured via the BRIDGE.tempDirTimeout, e.g. 30 min .


Asynchronous request with Webhook callback

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

  • The callback must not require any HTTP authentication or special HTTP headers !
  • Ideally, the Webhook should also process the callback asynchronously, so the callback does not have to wait for the processing result.