Integrating DOORS Structure

HTTP Interface

Below is the description of the Structure HTTP interface for IBM Rational DOORS.

Method URL Description
GET /mdworkbench/structure Provides access to a structural view of a model

Request Query Parameters

  • metamodel: doors (fixed value)
  • parent (optional): id of the parent node for which children are requested (see Response Contents). The id can also be the qualified name of a DOORS module or folder. This enables for instance to request the attributes of a DOORS module just knowing its qualified name, without going through all parent folders.

Request Headers

  • Accept (optional): the media type which is acceptable for the response. Values can either be application/json (default) or application/xml.
  • includes (optional): comma separated list of element qualified names to include (e.g. /MyProject,/MySecondProject). All elements are included when omitted.
  • excludes (optional): comma separated list of element qualified names to exclude (e.g. /MyProject/SubFolder). No elements are excluded when omitted.
  • encryptionAlgorithm (optional): the encryption algorithm used to encrypt the password (e.g. AES/CBC/PKCS5Padding), if encryption is being used.
  • encryptionIV (optional): the encryption initialization vector used to encrypt the password, if any.
  • doors.portserver - the port and server name of the database to connect to (e.g. 36677@myServer)
  • doors.user - the name of the DOORS user to make the connection
  • doors.password - the password of the DOORS user to make the connection
  • doors.contentKind (optional) - type of content to include in the response: Folder (default) or FormalModule
  • doors.rootFolder (optional) - root folder to read (e.g. "/MyFolder"). If set, only this folder its descendants are read, all other folders are ignored.
  • doors.ignoreNonCurrentViewColumns (optional) - false to retrieve all views and their columns, true otherwise. Reading views and columns has an impact on performances and might be used only when appropriate.

Note on headers and query parameters
The following properties can be set either as query parameters or headers: metamodel, includes, excludes, encryptionIV, encryptionAlgorithm, doors.portserver, doors.user, doors.password, doors.contentKind, doors.rootFolder, doors.ignoreNonCurrentViewColumns

Response Status

  • 200: the response body contains structure information.
  • 503: the server is in maintenance and structure cannot be requested.

Response Header

  • Content-Type: the media type of the response content. Values can either be application/json (default) or application/xml.

Response Body

JSON or XML nodes.
Node Common Attributes:
  • id: id of the node. Id to use in the parent query, to get the children of a node.
  • type: type of the node (e.g. Folder).
  • title: display name of the node.
Node Attributes for specific types:
  • Folder and Project nodes:
    • doors.qualifiedName - DOORS qualified name of the corresponding Folder
    • doors.url - corresponding DOORS URL
  • FormalModule node:
    • doors.qualifiedName - DOORS qualified name of the corresponding Module
    • doors.url - corresponding DOORS URL
    • doors.currentView - name of the current view set in the module, or an empty String if this is the Standard View
  • Type node:
    • doors.baseType - Base type on which this type relies (e.g. String).
    • doors.minValue - Minimum value that can be assigned for an attribute of this type, if any.
    • doors.maxValue - Maximum value that can be assigned for an attribute of this type, if any.
    • doors.isSystem - true if this is a predefined DOORS type, false otherwise.
  • Attribute node:
    • doors.defaultValue - The attribute default value, if any.
    • doors.existsForModule - true if the attribute applies for its owning module, false otherwise.
    • doors.existsForObjects - true if the attribute applies for the module objects, false otherwise.
    • doors.isMultiValued - true if multiple values can be assigned, false otherwise.
    • doors.isSystem - true if this is a predefined DOORS attribute, false otherwise.
    • doors.type - DOORS type name (e.g. String).
  • EnumerationLiteral node:
    • No additional attribute
  • View node (see doors.ignoreNonCurrentViewColumns header):
    • No additional attribute
  • Column node (see doors.ignoreNonCurrentViewColumns header):
    • doors.attribute - Name of the corresponding attribute, or empty String if the column is computed with DXL code.

Using the HTTP Interface

Retrieving the DOORS Root Folder

The developer must send an HTTP GET request to the servlet URL without parent query parameter, to get the root node.

The developer must send a HTTP query parameter named metamodel with a value set to doors.

The developer must send the following HTTP headers to enable a connection on the desired DOORS database: doors.portserver, doors.user and doors.password.

The developer shall set the expected DOORS content to be retrieved using the doors.contentKind header:

Retrieving DOORS Child Items

The developer must call the Servlet URL with a parent query parameter set to the id of the parent node for child nodes must be discovered. The id of a node is obtained in the Servlet response.

The developer must send a HTTP query parameter named metamodel with a value set to doors.

The developer must send the following HTTP headers to enable a connection on the desired DOORS database: doors.portserver, doors.user and doors.password.

Retrieving Module Views and Columns

The developer must call the Servlet URL with a doors.ignoreNonCurrentViewColumns header set to false to activate the reading of module views and columns.

Filtering DOORS Items

The developer shall send HTTP headers to filter DOORS items directly on server side. The HTTP headers includes and excludes shall be used to either include only a specific set of DOORS items or to exclude a set of DOORS items. This can be useful to hide parts of the DOORS database to the end-user and to allow him to focus on what is relevant for him.

Related concepts
Structure