Get work package detail
get_work_packageRead a work package's complete details by its ID, including description, dates, custom fields, parent, and progress.
Instructions
Read one work package in full: description, dates, custom fields, parent and progress.
This is the tool to call once a search or list has given you an id, and the only way to
read a work package's description text. The lock_version in the result is what
update_work_package needs for a safe concurrent edit.
Returns every core field, custom_fields in the canonical
[{key, name, type, value, value_ids}] shape (only fields that have a value), an
available map saying whether this work package exposes dev links, meetings or file
links, and any requested includes.
Pitfalls: includes are capped at 20 — a truncated children list means you should call
list_work_packages(parent_id=…) for the rest, which more_via spells out verbatim. A
sub-resource that 403s or 404s (module off, no permission) degrades into a notes entry
instead of failing the whole read.
For the comment thread use list_work_package_comments; for attachment bytes use
download_attachment; for linked PRs and commits use get_work_package_git_activity.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Work package id — the number shown as #1234 in OpenProject. Comes from search_work_packages or list_work_packages. Instances on 17.x with semantic identifiers enabled also accept the semantic form ('PROJ-42', the row's display_id). | |
| include | No | Extra sub-resources, fetched concurrently: 'relations', 'watchers', 'attachments', 'children', 'custom_actions'. Each is capped at 20 items and reports {truncated, total, more_via} when there are more. Ask only for what you need — every include is one more upstream request. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Work package id. | |
| date | No | Milestone date (ISO YYYY-MM-DD); null for non-milestones. | |
| type | No | Work package type. | |
| notes | No | Degradation notes for this result. | |
| author | No | Creating user. | |
| parent | No | Parent work package. | |
| status | No | Status. | |
| project | No | Owning project. | |
| subject | No | Subject line. | |
| version | No | Version / sprint. | |
| assignee | No | Assigned user or group. | |
| category | No | Category. | |
| children | No | Present only when 'children' was requested. | |
| due_date | No | ISO date (YYYY-MM-DD). | |
| priority | No | Priority. | |
| watchers | No | Present only when 'watchers' was requested. | |
| available | No | Feature availability for this WP: dev links, meetings, files. | |
| relations | No | Present only when 'relations' was requested. | |
| created_at | No | ISO 8601 UTC timestamp. | |
| display_id | No | Human-facing id as the instance renders it. Matches the numeric id unless the instance uses semantic identifiers (17.x, e.g. 'PROJ-42'); null when the instance predates it. | |
| start_date | No | ISO date (YYYY-MM-DD). | |
| updated_at | No | ISO 8601 UTC timestamp. | |
| attachments | No | Present only when 'attachments' was requested. | |
| description | No | Description as markdown (raw); html is dropped. | |
| responsible | No | Accountable user. | |
| spent_hours | No | Logged time in hours. | |
| lock_version | No | Optimistic-locking version; pass to update_work_package. | |
| custom_fields | No | Always a list; empty when none are set. | |
| project_phase | No | Project phase this work package sits in (16.1+, only when phases are active in the project and visible to this user); details via get_project_phase. | |
| custom_actions | No | Present only when 'custom_actions' was requested. | |
| estimated_hours | No | Estimate in hours. | |
| percentage_done | No | Progress, 0-100. |