Retrieve calendar / Gantt feed data (CALENDAR, STORE_PROJECTS, STORE_WALK_CAL)
GET /task/v1/calendar
Operation id: getCalendarData
Description
Retrieves calendar or Gantt feed data for the authenticated user. Corresponds to legacy: POST /service/rtm/getCalendarData.
Source Types
source_id | RAR? | Response Shape | Sorting | Notes |
|---|---|---|---|---|
CALENDAR | No | feed_details[] (40+ fields) | Yes | Standard feed data |
STORE_PROJECTS | Yes | project_data[] | Yes | Requires active_projects, local_projects |
STORE_SUGGESTED_DATE_PROJECTS | Yes | project_data[] | Yes | local_projects defaults "N" |
STORE_WALK_CAL | No | project_data[] (6 fields) | No | Store walk data; simpler items |
Session-Derived Parameters (Always Injected — Not Overridable)
| paramMap Key | Source | Description |
|---|---|---|
domainId | session.getDomainId() | Tenant domain — always overwritten |
authToken | Request header | Auth token — always overwritten |
loginAuthToken | Request header | Same as authToken — always overwritten |
userId | session.getUserId() | User identifier — always overwritten |
profileId | session.getProfileId() | Profile — always overwritten |
deptId | session.getDeptId() | Department — always overwritten |
storeId | session.getUnitId() | Unit ID (mapped as storeId) — always overwritten |
timeZoneLong | session.getTimeZoneLong() | Timezone — always overwritten |
Session-Defaulted Parameters (Client Can Override)
| paramMap Key | Query Param | Default | Notes |
|---|---|---|---|
homeDeptId | home_dept_id | session.getHomeDeptId() | Affects confidential project filtering |
viewType | view_type | session.getCurrentView() | SV triggers store-scoped feed query |
cutOffTime | cut_off_time | "0" | |
returnType | return_type | "CAL" | |
calLayout | cal_layout | "M" | Overridden by system filter if filter_id used |
selected_datesis not a request parameter — it is derived server-side by iterating all dates betweenfrom_dateandto_dateinyyyyMMddformat.
p_ Prefix Parameters
The p_ prefixed params use a non-standard mixed-case mapping (p_sort_column_1 → p_SortColumn1) used in the downstream template substitution. They cannot be produced by standard camelCase conversion and are mapped explicitly.
| Query Param | Internal Key | Description |
|---|---|---|
p_requestor_level | p_RequestorLevel | Requestor org level |
p_sort_column_1 | p_SortColumn1 | Primary sort column name |
p_sort_column_order_1 | p_SortColumnOrder1 | 1=asc, -1=desc |
p_sort_column_2 | p_SortColumn2 | Secondary sort column |
p_sort_column_order_2 | p_SortColumnOrder2 | Sort direction |
p_sort_column_3 | p_SortColumn3 | Tertiary sort column |
p_sort_column_order_3 | p_SortColumnOrder3 | Sort direction |
System Filter / RAR Handling
When filter_id is present and parseable, FilterService.getSystemFilter() loads MwFilterConfig. Three paths follow:
- RAR source + filter →
setRARParameters()injects filter params,calLayoutoverridden from filter. - Non-RAR filter with router →
ServiceRouterUtil.authenticateAndExecute()routes externally. - No filter →
RTMUpdateService.getCalendarData()called directly with template substitution.
Error Scenarios
| Scenario | HTTP | Error Code | Message |
|---|---|---|---|
Missing / invalid X-reflexis-csrf-token-X | 401 | E202 | User session is invalid |
Missing source_id | 400 | E140 | source_id is mandatory |
Missing from_date | 400 | E142 | from_date is mandatory |
Missing to_date | 400 | E143 | to_date is mandatory |
from_date is after to_date | 400 | E147 | from_date must not be after to_date |
| No data found | 200 | E404 | No data found |
| Unexpected server-side error | 500 | E302 | Internal server error |
Error Codes Reference
| Code | Description |
|---|---|
E140 | source_id is mandatory |
E142 | from_date is mandatory |
E143 | to_date is mandatory |
E147 | from_date must not be after to_date |
E202 | User session is invalid |
E302 | Internal server error |
E404 | No data found |
Tags: MyWorkCalendar
Parameters
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
active_projects | string | No | Active projects flag. Applies to STORE_PROJECTS only. Y=active only, N=all/inactive. |
cal_filter_exc_level | string | No | Executor org level filter for calendar data. |
cal_filter_org_level | string | No | Org level filter for calendar data. |
cal_filter_unit | string | No | Unit filter for calendar data. |
cal_layout | string | No | Default: M. Calendar layout: - M = Month view - W = Week view - D = Day view - P = Pinboard view May be overridden by MwFilterConfig when filter_id is used. |
cut_off_time | string | No | Default: '0'. Cut-off time value forwarded to the service. |
favorite | string | No | Favorite filter flag. Send "1" to show only favorited feeds. Internally maps to p_Favourite="A" when value is "1". |
feed_title | string | No | Feed title search string. The service further URL-encodes it internally via URLEncoder.encode(title, "UTF-8"). Send the title as-is. |
feed_type_id | string | No | Feed type identifier filter. |
filter_id | string | No | System filter ID. When present and parseable, loads MwFilterConfig and triggers either RAR parameter injection or ServiceRouterUtil external routing. After output is produced, adds layout, calendarType, and selectedDates (computed via FeedProcessService.getDateRange()) to the response. |
from_date | string | Yes | Required. Range start date in yyyyMMdd format (e.g. 20260315). Must not be after to_date (lexicographic comparison) → E147 if violated. |
home_dept_id | string | No | Default: session homeDeptId. Comma-separated home department IDs. Affects confidential project visibility — service computes the intersection of deptId and homeDeptId to determine visible confidential projects. Client can override by providing this parameter. |
local_projects | string | No | Local projects flag. Applies to STORE_PROJECTS only. Y=local only, N=non-local only, A=all. Defaults to "N" internally for RAR sources if absent. |
message_type | string | No | Message type filter (e.g. PROJECTEXTRACT). Forwarded to downstream service. |
p_requestor_level | string | No | Requestor org level for template substitution. Mapped to p_RequestorLevel (non-standard casing — cannot be produced by generic camelCase conversion). Set to "null" if not applicable. |
p_sort_column_1 | string | No | Primary sort column name for template substitution (maps to p_SortColumn1). E.g. profileId. |
p_sort_column_2 | string | No | Secondary sort column name (maps to p_SortColumn2). E.g. endDateTime. |
p_sort_column_3 | string | No | Tertiary sort column name (maps to p_SortColumn3). E.g. priority. |
p_sort_column_order_1 | string | No | Sort order for column 1 (maps to p_SortColumnOrder1). 1=ascending, -1=descending. |
p_sort_column_order_2 | string | No | Sort order for column 2 (maps to p_SortColumnOrder2). 1=ascending, -1=descending. |
p_sort_column_order_3 | string | No | Sort order for column 3 (maps to p_SortColumnOrder3). 1=ascending, -1=descending. |
priority | string | No | Comma-separated priority number filter (e.g. 1,3,9). |
return_type | string | No | Default: CAL. Return type forwarded to the downstream service. |
sort_by | string | No | Comma-separated sort column names for CALENDAR and STORE_PROJECTS sources. Example: profileId,endDateTime,priority,startDateTime,feedTitle,feedTypeId. Not applicable to STORE_WALK_CAL (no sorting supported for walk data). |
sort_order | string | No | Comma-separated sort directions matching sort_by columns. Values: A (ascending), D (descending). Example: D,D,A,A,D,D. |
source_id | string | Yes | Required. Calendar data source type. Determines the response data shape: - CALENDAR → feed_details[] with 40+ fields per feed - STORE_PROJECTS → project_data[] with project-level items - STORE_SUGGESTED_DATE_PROJECTS → project_data[] (suggested-date projects) - STORE_WALK_CAL → project_data[] with simpler 6-field items |
status | string | No | Feed status filter. Comma-separated status codes. Example: N,R,P,O,C,F,E. Values: N=New, R=Reviewed, P=In Progress, O=Overdue, C=Completed, F=Force-closed, E=Expired. |
tags | string | No | Tags filter forwarded to the downstream service. |
to_date | string | Yes | Required. Range end date in yyyyMMdd format (e.g. 20260317). Server generates selectedDates from all dates between from_date and to_date. |
view_type | string | No | Default: session currentView. View type forwarded to the service. SV (Store View) triggers a store-scoped feed query path. The legacy frontend always sends this; if the headless client omits it, the session value is used. |
week_dates | string | No | Comma-separated current-week date strings in yyyyMMdd format. Example: 20260315,20260316,20260317. |
Security
- ApiKeyHeader (apiKey)
- APIGEE API key header validated by VerifyAPIKey policy.
- AuthTokenHeader (apiKey)
- Session authentication token validated server-side against the user session store.
Responses
200 — Success — {status: OK, calendar_data: {...}}.
Response shape depends on source_id:
CALENDAR→calendar_data.feed_details[](full feed records, 40+ fields) +last_fetch_timeSTORE_PROJECTS/STORE_SUGGESTED_DATE_PROJECTS→calendar_data.project_data[]Each item:project_id,project_title,project_type,project_type_desc,icon,start_date,end_date,priority,is_overdue,is_completed,is_confidential,is_edited,has_survey,has_attachment,assigned_roleSTORE_WALK_CAL→calendar_data.project_data[]Each item:project_id,project_title,project_type,assigned_to,start_date,end_date- No data →
{status: ER, error_code: E404, response: "No data found"}
Content type: application/json
400 — E140 — source_id is mandatory.
E142 — from_date is mandatory. E143 — to_date is mandatory. E147 — from_date must not be after to_date.
Content type: application/json
401 — Missing or invalid X-reflexis-csrf-token-X session token
Content type: application/json
500 — Unexpected server-side error
Content type: application/json
Response models
200 — Success — {status: OK, calendar_data: {...}}.
Response shape depends on source_id:
CALENDAR→calendar_data.feed_details[](full feed records, 40+ fields) +last_fetch_timeSTORE_PROJECTS/STORE_SUGGESTED_DATE_PROJECTS→calendar_data.project_data[]Each item:project_id,project_title,project_type,project_type_desc,icon,start_date,end_date,priority,is_overdue,is_completed,is_confidential,is_edited,has_survey,has_attachment,assigned_roleSTORE_WALK_CAL→calendar_data.project_data[]Each item:project_id,project_title,project_type,assigned_to,start_date,end_date- No data →
{status: ER, error_code: E404, response: "No data found"}
Content type: application/json
Schema
JSON object (structure varies by endpoint).
{
"type": "object",
"description": "JSON object (structure varies by endpoint)."
}
Example:
{
"status": "OK",
"calendar_data": {
"feed_details": [
{
"feed_key": 45810367,
"feed_title": "HO%20Violation%20Project",
"feed_type": "T",
"feed_type_id": "V12",
"status": "O",
"priority": 1,
"start_date_time": "2026-03-31 00:00:00",
"end_date_time": "2026-03-31 23:59:59",
"cluster_id": "4293672"
}
],
"last_fetch_time": 1775827383742
}
}
400 — E140 — source_id is mandatory.
E142 — from_date is mandatory. E143 — to_date is mandatory. E147 — from_date must not be after to_date.
Content type: application/json
Schema
| Property | Type | Required | Description |
|---|---|---|---|
status | string | Yes | Always "ER" for error responses |
errorCode | string | Yes | Application-level error code (e.g. E202, E105, E404) |
response | string | Yes | Human-readable error message |
{
"type": "object",
"example": {
"status": "ER",
"errorCode": "E202",
"response": "User session is invalid"
},
"required": [
"status",
"errorCode",
"response"
],
"properties": {
"status": {
"type": "string",
"description": "Always \"ER\" for error responses",
"enum": [
"ER"
]
},
"errorCode": {
"type": "string",
"description": "Application-level error code (e.g. E202, E105, E404)"
},
"response": {
"type": "string",
"description": "Human-readable error message"
}
}
}
401 — Missing or invalid X-reflexis-csrf-token-X session token
Content type: application/json
Schema
| Property | Type | Required | Description |
|---|---|---|---|
status | string | Yes | Always "ER" for error responses |
errorCode | string | Yes | Application-level error code (e.g. E202, E105, E404) |
response | string | Yes | Human-readable error message |
{
"type": "object",
"example": {
"status": "ER",
"errorCode": "E202",
"response": "User session is invalid"
},
"required": [
"status",
"errorCode",
"response"
],
"properties": {
"status": {
"type": "string",
"description": "Always \"ER\" for error responses",
"enum": [
"ER"
]
},
"errorCode": {
"type": "string",
"description": "Application-level error code (e.g. E202, E105, E404)"
},
"response": {
"type": "string",
"description": "Human-readable error message"
}
}
}
Example:
{
"status": "ER",
"errorCode": "E202",
"response": "User session is invalid"
}
500 — Unexpected server-side error
Content type: application/json
Schema
| Property | Type | Required | Description |
|---|---|---|---|
status | string | Yes | Always "ER" for error responses |
errorCode | string | Yes | Application-level error code (e.g. E202, E105, E404) |
response | string | Yes | Human-readable error message |
{
"type": "object",
"example": {
"status": "ER",
"errorCode": "E202",
"response": "User session is invalid"
},
"required": [
"status",
"errorCode",
"response"
],
"properties": {
"status": {
"type": "string",
"description": "Always \"ER\" for error responses",
"enum": [
"ER"
]
},
"errorCode": {
"type": "string",
"description": "Application-level error code (e.g. E202, E105, E404)"
},
"response": {
"type": "string",
"description": "Human-readable error message"
}
}
}
Example:
{
"status": "ER",
"errorCode": "E302",
"response": "Internal server error"
}