[feature]: allow looking up a work item by its human-readable id (e.g. CM-1234) via the API
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 59.6k
- Forks
- 5.8k
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 49
Description
Is your feature request related to a problem? Please describe.
There's no way to fetch or filter a work item by its human-readable identifier ({project}-{sequence_id}, e.g. CM-1234) through the REST API. The only retrieve-by-id endpoint takes the internal UUID, which an external integration linking to a Plane ticket by its visible id (the thing a person actually pastes/types) doesn't have.
Filtering GET /api/v1/workspaces/{slug}/projects/{project_id}/work-items/ by sequence_id looks like it should do this, but it's silently a no-op: a sequence_id for a nonexistent (or out-of-range) sequence still returns the full, unfiltered project (paginated), not an empty result. Confirmed against the live API — sequence_id isn't listed as a supported filter in the docs either, so this is likely working as (undocumented) intended rather than a regression.
Describe the solution you'd like
A supported way to resolve {project}-{sequence_id} to a work item server-side, either:
- Honor
sequence_idas a real filter on the list endpoint, or - A dedicated lookup, e.g.
GET /api/v1/workspaces/{slug}/projects/{project_id}/work-items/by-sequence/{sequence_id}/
Describe alternatives you've considered
Client-side workaround: fetch fields=id,sequence_id,state&expand=state&order_by=-sequence_id and search the page results for a matching sequence_id. Works for anything reasonably recent, but is inherently a guess for an older ticket outside the first page, and still means pulling hundreds of items just to check one id.
Additional context
This came up building an integration that lets someone paste a Plane ticket's visible id to link it, which needs exactly this lookup.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating the REST work-items list endpoint described in the issue and its API documentation, then trace how sequence_id filters are handled. Compare the two proposed lookup approaches and verify the chosen behavior for an existing and nonexistent sequence. Done means an integration can resolve a human-readable project-sequence id without fetching unrelated pages.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- django, python, typescript
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100