Skip to main content

Base URL

OData endpoints are accessed through the RISKSHEET data service:
{baseUrl}/risksheet/data/odata/
Where {baseUrl} is the RISKSHEET application server URL (e.g., https://polarion.example.com:8080/polarion).

Authentication

All OData requests require valid Polarion user authentication. Include credentials using HTTP Basic Authentication or session cookies from an authenticated Polarion session.

Collections

Grid Items Collection

Retrieves work items displayed in a RISKSHEET grid for a specific document.
GET {baseUrl}/risksheet/data/odata/GridItems
PropertyTypeDefaultDescription
projectIdquery stringRequiredPolarion project identifier
documentIdquery stringRequiredSource document identifier
revisionquery stringemptySpecific revision or baseline ID; empty string queries current revision
$filterquery stringNoneOData filter expression using substringof() method
$topquery stringNoneMaximum number of items to return
$skipquery string0Number of items to skip (for paging)
$orderbyquery stringNoneColumn to sort by (e.g., systemItemId asc)
Example Request:
GET /risksheet/data/odata/GridItems?projectId=PROJ&documentId=DOC-123&$filter=substringof('risk',systemItemId)&$top=50
Example Response:
{
  "value": [
    {
      "systemItemId": "RISK-001",
      "systemItemTitle": "Safety system failure",
      "severity": "High",
      "occurrence": "Medium",
      "detection": "Low"
    }
  ]
}
Retrieves linked work items for multi-select link columns with search filtering.
GET {baseUrl}/risksheet/data/odata/Links
PropertyTypeDefaultDescription
projectIdquery stringRequiredPolarion project identifier
$filterquery stringRequiredFilter expression combining substringof() and type equality
customQueryquery stringNoneAdditional OData filter to refine results
$topquery string100Maximum number of linked items to return
Filter Syntax: Link queries combine item ID search with type filtering:
$filter=substringof('search_term',systemItemId) and type eq 'workItemType'
Example Request:
GET /risksheet/data/odata/Links?projectId=PROJ&$filter=substringof('REQ',systemItemId) and type eq 'Requirement'&$top=20
Example Response:
{
  "value": [
    {
      "systemItemId": "REQ-042",
      "systemItemTitle": "System shall support offline mode",
      "type": "Requirement"
    }
  ]
}

Filter Operations

Substring Matching

Search for items containing specific text in the ID or title:
substringof('search_text', fieldName)
The search_text parameter is case-insensitive. Example:
substringof('safety', systemItemId)  // Matches 'SAFETY-001', 'safety_item', etc.

Type Filtering

Filter by work item type:
type eq 'WorkItemType'
Example:
type eq 'Requirement'  // Only Requirement work items

Combining Filters

Use and to combine multiple filter conditions:
substringof('REQ', systemItemId) and type eq 'Requirement'

Response Format

All OData responses follow the OData JSON format:
PropertyTypeDescription
valuearrayArray of work item records
@odata.countnumberTotal count of matching items (when $count=true)
errorobjectError information if request fails

Error Responses

Failed requests return error objects:
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "Project not found: PROJ999"
  }
}

Column Type Mapping

OData exposes RISKSHEET columns as EDM (Entity Data Model) primitive types:
RISKSHEET TypeOData TypeExample
textString"Sample text"
intInt6442
floatDouble3.14159
booleanBooleantrue
dateDate"2025-02-12"
datetimeDateTimeOffset"2025-02-12T14:30:00Z"
currencyDecimal"1250.50"
enumString"High"
multiEnumString"High:Critical" (colon-separated)

Search and Autocomplete Flow

User types in link column
        |
        v
  (minimum 3 characters required)
        |
        v
GET /risksheet/data/odata/Links
  ?$filter=substringof('text',systemItemId) and type eq 'Type'
        |
        v
Filter by customQuery if configured
        |
        v
Display suggestions with:
  - Item ID
  - Item Title
  - Work Item Type
        |
        v
User selects item (or creates new)

Autocomplete Integration

The Links collection powers autocomplete in link columns. When users type in an item link or multi-item link column:
  1. Text input is captured (minimum 3 characters)
  2. OData request is sent to the Links collection
  3. Results are filtered by configured work item type
  4. Optional custom query filters are applied
  5. Results displayed in dropdown
  6. User selects item to establish link
The $top parameter limits result set size. For large projects, use narrower search terms or apply custom query filters to reduce response size and improve autocomplete responsiveness.

Paging Results

For large result sets, use $skip and $top for paging:
GET /risksheet/data/odata/GridItems?projectId=PROJ&documentId=DOC&$skip=0&$top=50
GET /risksheet/data/odata/GridItems?projectId=PROJ&documentId=DOC&$skip=50&$top=50

Revision and Baseline Queries

Query historical data from specific revisions or baselines:
// Current revision (default)
GET /risksheet/data/odata/GridItems?projectId=PROJ&documentId=DOC&revision=

// Specific revision
GET /risksheet/data/odata/GridItems?projectId=PROJ&documentId=DOC&revision=r42

// Baseline
GET /risksheet/data/odata/GridItems?projectId=PROJ&documentId=DOC&revision=baseline_v1

Request/Response Headers

HeaderValueRequired
Acceptapplication/jsonRecommended
Content-Typeapplication/jsonFor POST requests
AuthorizationHTTP Basic Auth or Polarion sessionYes

Rate Limiting

The OData endpoint respects Polarion rate limiting policies. Applications should implement exponential backoff for 429 (Too Many Requests) responses.
Link searches require a minimum of 3 characters to prevent excessive result sets. Searches with fewer characters are rejected with an error response.
Source Code
  • RisksheetDataStorage.java
  • MultiItemLinkEditor.ts
  • ColumnTypeManager.java
  • TextEditor.ts
  • AppConfig.ts