Public API v1: GET /issues/?labels=<uuid> ignores the filter and returns all issues

Summary

The list-issues endpoint in the public API v1 accepts a labels query parameter but silently ignores it. Passing ?labels=<label-uuid> returns every issue in the project instead of only issues carrying that label. No error is raised, so there’s no way to tell the filter was dropped.

Environment

  • Plane: Cloud (api.plane.so)
  • API: public REST v1
  • Endpoint: GET /api/v1/workspaces/{workspace}/projects/{project}/issues/

Steps to reproduce

  1. Create a project with (say) 388 issues, where only 2 carry a given label.
  2. Call:
    curl -H “X-API-Key: $TOKEN”
    https://api.plane.so/api/v1/workspaces/{workspace}/projects/{project}/issues/?labels=&per_page=100
  3. Inspect total_count / results in the response.

Expected

total_count == 2; results contains only the two issues that have the label.

Actual

total_count == 388; results contains the entire project. The labels filter has no effect. (Same behavior whether the value is a single UUID or a comma-separated list.)

Notes

  • Each issue in the list response does include a labels array of UUIDs, so client-side filtering is -side param appearsdocumented/accepted and s- Please confirm the corr for filtering issues bylabel in the public API vls__in`, repeated params,or unsupported?). If unsut unknown filter params
    rather than silently ignofailure mode.

The ?labels=<label-uuid> query parameter on the list issues endpoint is currently not supported yet. As a workaround, you can use the filters query parameter instead, which also supports multiple filters at once:

GET /api/v1/workspaces/{workspace}/projects/{project}/issues/?filters={"and": [{"label_id": "<label-uuid>"}, {"state_id": "<state-uuid>"}]}

This will give you only the issues matching the filters you need. Let us know if it works.