Unified feed details — one call, multiple section projections
GET /task/v1/feeds/{feed_key}/details
Operation id: getFeedDetails
Description
Returns complete feed detail data for a single feed shaped by the projection query parameter. The client requests only the sections it needs, avoiding multiple round-trips. Each section is fetched independently — a failure in one section does not abort others. Unrecognised projection names are silently ignored. Omitting projection (or leaving it empty) returns only the basic section.
Response wrapper: All sections appear under feed_details. Feed not found → entire response returns NO_DATA_FOUND (not per-section).
Path Parameters
| Parameter | Type | Required | Constraints | Description |
|---|---|---|---|---|
feed_key | Integer | Yes | ≥ 1 | Unique feed identifier (→ E105 if ≤ 0 or missing) |
Projection → Response Key Mapping
projection value | Response key under feed_details | Type | Notes |
|---|---|---|---|
basic | feed_basic | Object | Core feed + cluster/CSS/completion data. Always fetched if feed not found → NO_DATA_FOUND |
contents | feed_contents | String (HTML) | FILE-type descriptions only; absent if no file-based content |
history | feed_history | Array | Audit trail, most recent first |
key_attributes | feed_key_attributes | Array | Two groups: {key_attr[]} and {extra_attr[]} |
notes | feed_notes | Array | Omitted entirely when no notes (not an empty array) |
actions | feed_actions | Array | Available action panels/buttons for current user |
survey | feed_survey | Array | Empty/omitted for COMPLEX and FORM survey types |
comments | feed_comments | Array | Only for feeds with a cluster_id (project feeds) |
Key presence rules:
| State | Key in response |
|---|---|
| Projection not requested | Key absent |
| Projection requested, no data | Key present with empty value ([] or "") |
| Projection requested, data found | Key present with populated value |
Exception: feed_notes is absent entirely (not []) when there are no notes.
feed_basic — Supplementary Fields
Standard feed record fields plus:
| Field | Type | Present when | Description |
|---|---|---|---|
last_fetch_time | Long | Feed exists | Epoch ms timestamp |
allow_completion | Object | Always | {complete: Boolean, message: String, panel?: ...} |
allow_completion_flag | Boolean | Always | true if current user can complete the feed |
feed_css | Object | Domain CSS configured | CSS tokens: BG_COLOR, FONT_COLOR |
task_image | String | Feed has a type image | Base64-encoded task icon |
store_status[] | Array | Feed belongs to a project | Per-store status; see sub-fields below |
cluster_count | Integer | Feed belongs to a project | Task count filtered by message_type/status params |
store_status[*] fields: cluster_id, cluster_child_id, message_type, stores[]
stores[*] fields: store_id, status, dept_id, profile_id, assign_user, last_update_time
feed_history — Field Reference
| Field | Type | Description |
|---|---|---|
feed_key | Integer | Feed identifier |
action_seq | String | Action label (e.g. "Event Viewed", "Reviewed") |
user_id | String | User who performed the action |
user_name | String | Display name |
user_level | Integer | Permission level at time of action |
creation_time | String | Formatted timestamp |
result | String | Action outcome description |
action_id | String | Action type code (e.g. VIEW_EVENT); may be absent |
comments | String | Comments attached; empty string if none |
attachments | String | Comma-separated attachment IDs; empty string if none |
comment_flag | String | "1" if comments attached, "0" otherwise |
form_flag | String | "1" if form data attached |
attach_flag | String | "1" if attachments present |
feed_actions — Field Reference
| Field | Type | Description |
|---|---|---|
panel_id | String | Panel identifier |
seq_no | Integer | Display order |
display_text | String | URL-encoded action label |
take_action | String | Y=triggers a status update, N=other type |
button_id | String | Button identifier |
panel_category | String | Category code |
service_data | String | JSON-encoded metadata (buttonName, buttonId pairs) |
default_flag | String | "1"=default action, "0" otherwise |
display_image | String | Relative path to action icon |
Error Scenarios
| Scenario | HTTP | Error Code | Message |
|---|---|---|---|
Missing / invalid X-reflexis-csrf-token-X | 401 | E202 | User session is invalid |
feed_key ≤ 0 or missing | 400 | E105 | Please provide valid feedKey. |
| All requested projections empty | 200 | E404 | No data found |
| Unknown projection name | 200 | — | Section silently omitted |
| Individual projection fetch fails | 200 | — | Section omitted; others continue |
| Unexpected server error | 500 | E302 | Internal server error |
Error Codes Reference
| Code | Description |
|---|---|
E105 | Invalid or missing feed_key |
E202 | User session is invalid |
E302 | Internal server error |
E404 | No data found |
Tags: MyWorkFeeds
Parameters
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
feed_key | integer | Yes | Unique numeric feed identifier |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
btn_status | string | No | Survey action type for survey projection: C=completion survey (default), F=force-complete survey |
message_type | string | No | Message type filter for cluster task count inside basic (no effect for standalone feeds) |
projection | string | No | Comma-separated sections to include. Valid: basic, contents, history, key_attributes, notes, actions, survey, comments. Omit or leave empty for basic only. |
status | string | No | Optional status filter for cluster task count inside basic |
view_type | string | No | View type affecting feed ownership/action eligibility in basic: MV=My View, TV=Task View |
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, feed_details: {feed_basic?, feed_contents?, feed_history?, ...}}
Content type: application/json
400 — E105 — invalid or missing feed_key
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, feed_details: {feed_basic?, feed_contents?, feed_history?, ...}}
Content type: application/json
Schema
JSON object (structure varies by endpoint).
{
"type": "object",
"description": "JSON object (structure varies by endpoint)."
}
Example:
{
"status": "OK",
"feed_details": {
"feed_basic": {
"feed_key": 45739193,
"feed_title": "Weekly Store Check",
"status": "O",
"priority": 1
}
}
}
400 — E105 — invalid or missing feed_key
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"
}