Skip to content

Work Items API returns labels as UUIDs in list responses but as objects in single-item responses #9594

Description

@futzlarson

Fetching work items via the list endpoint returns labels as an array of bare UUID strings, while fetching a single work item returns labels as an array of full label objects. Same field, same project, different type — so a consumer that reads one endpoint's shape breaks on the other.

Expected

labels has one consistent shape across both endpoints, or the difference is documented.

Actual

GET /workspaces/{slug}/projects/{project_id}/issues/ — bare UUIDs:

{
  "id": "11111111-1111-1111-1111-111111111111",
  "labels": [
    "22222222-2222-2222-2222-222222222222",
    "33333333-3333-3333-3333-333333333333"
  ]
}

GET /workspaces/{slug}/projects/{project_id}/work-items/{id}/ — full objects:

{
  "id": "11111111-1111-1111-1111-111111111111",
  "labels": [
    {
      "id": "22222222-2222-2222-2222-222222222222",
      "name": "Bug",
      "color": "",
      "sort_order": 295535,
      "project": "44444444-4444-4444-4444-444444444444",
      "workspace": "55555555-5555-5555-5555-555555555555"
    }
  ]
}

Neither request passes expand.

This matters when merging labels rather than replacing them. PATCH expects an array of UUIDs, so code that reads the current labels off a work item to preserve them has to normalize both shapes first, or it silently sends objects back and drops every label on the item.

Details

  • Endpoints: GET .../issues/ and GET .../work-items/{id}/
  • API: REST API (api.plane.so, cloud)
  • Impact: consistent, not intermittent — the two endpoints always disagree.

Possibly related to #9534, which is the same class of problem on state (bare UUID returned despite ?expand=state).

Activity

  1. Iyamokuma commented on Aug 14, 2026

    @Iyamokuma

    Hi, can you assign this issue to me?

  2. iamsainty commented on Aug 16, 2026

    @iamsainty

    I’d like to work on this issue. I noticed there is already a request to be assigned, but I don’t see an assignment yet. Is this issue available for contribution?

  3. faizansaiyed123 commented on Oct 8, 2026

    @faizansaiyed123

    Update after deeper contributor-history review: I found that this issue already has multiple external contributors who have previously asked to take it, including an unresolved implementation PR.

    I’m not going to create competing work here. I’ll leave the issue available for the existing contributor/maintainer discussion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions