# Report fields

An employee's work report is the object returned by the methods of the Work reports section. This page lists its fields, types and allowed values.

In the response of [Read a work report](/docs/workday/work-reports/get), [Create a work report](/docs/workday/work-reports/create), [Update a work report](/docs/workday/work-reports/update), [Submit a work report](/docs/workday/work-reports/submit) and [Send a work report](/docs/workday/work-reports/send), the report arrives in the `data` field. In the response of [List work reports](/docs/workday/work-reports/list), the reports are the elements of the `data` array, and the `select` parameter keeps `id` and the listed fields in each report. In the response of [Subordinate work reports](/docs/workday/work-reports/subordinates), `data` is an array of employees, and each employee's reports are the elements of their `reports` array. Dates are ISO 8601 strings in UTC or `null`. Keys inside tasks and events arrive in upper case.

| Field | Type | Description |
|------|-----|----------|
| `id` | integer | Report ID. List: [`GET /v1/workday/work-reports`](/docs/workday/work-reports/list) |
| `userId` | integer | ID of the employee the report belongs to. List: [`GET /v1/users`](/docs/entities/users/list) |
| `active` | boolean \| null | Whether the report is submitted: `true` — submitted, `false` — not. A report is submitted by [Submit a work report](/docs/workday/work-reports/submit) and [Send a work report](/docs/workday/work-reports/send) |
| `reportType` | string \| null | Length of the report period: `day` — one day, `week` — two to seven days, `month` — more than seven days. `null` if the report has no period dates |
| `reportDate` | string \| null | When the report was created. Updating and submitting the report do not change it |
| `dateFrom` | string \| null | First day of the report period, returned as the start of that day converted to UTC: October 6 in UTC+3 arrives as `2026-10-05T21:00:00.000Z` |
| `dateTo` | string \| null | Last day of the report period, in the same form. For a one-day report it equals `dateFrom` |
| `report` | string \| null | Report text from the `reportText` request field, with BB code markup. An HTML tag `<i>` sent in the text comes back as `[i]` |
| `reportPlain` | string \| null | Report text without markup |
| `reportExtended` | string \| null | Additional report text. An empty string if there is none |
| `type` | string \| null | Report type: `REPORT`, `AI_REPORT`, `ROBOT_REPORT`, `AI_DAY_PLAN` or `ROBOT_DAY_PLAN` |
| `plans` | string \| null | Plans. An empty string if there are none |
| `tasks` | array \| null | Tasks in the report. `null` if no tasks were sent, `[]` if the list was cleared with an empty array |
| `tasks[].ID` | integer | Task ID. List: [`GET /v1/tasks`](/docs/entities/tasks/list) |
| `tasks[].TITLE` | string | Task title in the report. Present if it was sent |
| `tasks[].TIME` | integer | Time spent on the task, in seconds. Present if it was sent |
| `events` | array \| null | Calendar events in the report. `null` if no events were sent, `[]` if the list was cleared with an empty array |
| `events[].ID` | integer | Calendar event ID. List: [`GET /v1/calendar-events`](/docs/entities/calendar-events/list) |
| `events[].TITLE` | string | Event title in the report. Present if it was sent |
| `events[].OWNER_ID` | integer | ID of the event owner. Present if it was sent. List: [`GET /v1/users`](/docs/entities/users/list) |
| `files` | array \| null | Report files. The create and update methods do not accept files: a request with a `files` field in the body gets `400 INVALID_PARAMS` |
| `mark` | string \| null | Report mark: `G` — positive, `B` — negative, `N` — neutral or no mark yet, `X` — the report is not confirmed. Marks are set by [Approve a work report](/docs/workday/work-reports/approve), [Disapprove a work report](/docs/workday/work-reports/disapprove) and [Reject a work report](/docs/workday/work-reports/reject); these methods never set `X` |
| `approve` | string \| null | Report confirmation. `Y` — the report is confirmed: after a positive or negative mark, or, for an employee without managers, right when the report is submitted or sent. `N` — no confirmation: the report is not submitted, is waiting for a mark or got a neutral one |
| `fromUser` | object \| null | The employee the report belongs to |
| `fromUser.id` | integer | Employee ID, equal to `userId`. List: [`GET /v1/users`](/docs/entities/users/list) |
| `fromUser.name` | string | Employee's first and last name |
| `fromUser.photo` | string \| null | Profile photo URL |
| `toUsers` | array \| null | Report recipients: the employee's managers. For an employee without managers, the employee themselves |
| `toUsers[].id` | integer | Recipient ID. List: [`GET /v1/users`](/docs/entities/users/list) |
| `toUsers[].name` | string | Recipient's first and last name |
| `toUsers[].photo` | string \| null | Recipient's profile photo URL |
| `isReadyForSubmit` | boolean \| null | Whether the report is ready to be submitted. Always `null` in the verified responses |

## See also

- [Work reports](/docs/workday/work-reports)
- [List work reports](/docs/workday/work-reports/list)
- [Read a work report](/docs/workday/work-reports/get)
- [Daily reports](/docs/workday/daily-reports)
- [Workday](/docs/workday)
