Skip to content

Add mapbox feedback list/get - #49

Open
mattpodwysocki wants to merge 1 commit into
mainfrom
feat/feedback-api
Open

mattpodwysocki wants to merge 1 commit into
mainfrom
feat/feedback-api

Conversation

@mattpodwysocki

@mattpodwysocki mattpodwysocki commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

What

mapbox feedback list/get: the feedback end users submit from apps built with Mapbox, filterable by id, status, category, a free-text search phrase, trace id, or a time window; sortable; paginated. Hand-authored into custom-openapi/, like search, since openapi-specs has no spec for this API.

feedback create is declared in the spec but never reaches the command surface. Confirmed directly against production: a POST /oauth/register requesting user-feedback:write silently drops it from the granted scope, the same unregistrable shape UNSUPPORTED_OPERATIONS already documents for accounts create-token/update-token/delete-token. No mapbox auth login token can ever carry it.

Based directly on main; it no longer depends on #43/#44/#45/#48.

Worth a reviewer's eye

Naming the disabled operation. It's createFeedbackItem rather than create: the withheld-operation guard in generate_skills.rs checks the bare command word against every generated file's text, and a bare create collides with the unrelated styles create. Caught by that guard failing, not by inspection.

Each filter takes one value for now. The API takes several values only as a repeated parameter (status=a&status=b); the command builder can't repeat a query parameter yet, so multi-value filters are left for a separate PR.

Verification

Smoke-tested against production: list with single-value --status/--category filters, --order and the pagination cursor, and get by id, both return the documented shape. create is absent from --help and errors as an unrecognized subcommand rather than reaching the API.

693 tests, cargo fmt and cargo clippy --all-targets -- -D warnings clean.

🤖 Generated with Claude Code

@mattpodwysocki

Copy link
Copy Markdown
Contributor Author

On creating feedback: this hit the same registration wall other disabled operations here already document (tokens:write, fonts:metadata) and that's been raised with the owning team before. A POST /oauth/register for user-feedback:write silently drops it the same way, so no mapbox auth login token can ever carry it, confirmed directly against production. The actual next step for create isn't a CLI design question, it's asking identity-and-auth whether that scope can be added to the registration allowlist. Once (if) that happens, enabling the command here is small: drop the UNSUPPORTED_OPERATIONS row and it reaches the command surface the same way list/get already do.

@zmofei
zmofei force-pushed the feat/feedback-api branch from dd59c43 to 6290389 Compare October 2, 2026 11:20
@zmofei
zmofei changed the base branch from feat/matrix-api to main October 2, 2026 11:20
@zmofei
zmofei force-pushed the feat/feedback-api branch 2 times, most recently from 46f5033 to 6290389 Compare October 2, 2026 11:27
@zmofei

zmofei commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

@mattpodwysocki Heads-up: I retargeted this PR to main and rebased it down to just the feedback commit, so it no longer depends on #43/#44/#45/#48. I need to build other stacked PRs on top of it.

I also reviewed it against the Feedback API docs and the live API, and pushed fixes (still one commit, f5863c9):

  • Multi-value filters didn't work. The API only takes several values as a repeated parameter (status=a&status=b). A comma-separated value got a 400 for --status received,reviewed, and silently returned 0 items for --feedback-id and --category. The flags can't be repeated either, since the command builder has no repeatable query parameter. Each filter now documents a single value; proper multi-value support should be its own PR, since it touches the shared builder.
  • Default order. order defaults to asc, so the default is oldest received first, not newest.
  • Wording. Aligned the service description and --created-* with the docs (end-user feedback from the Feedback Agent).

693 tests, fmt and clippy clean; single-value filters, --order and get re-checked against production.

I've approved, but since I also committed to this PR, it may need an approval from another owner too — could you find one?

Reads the feedback end users submit from apps built with Mapbox:
filterable, sortable, paginated. Hand-authored into custom-openapi/, like search,
since openapi-specs has no spec for this API.

feedback create, the write side, is declared in the spec but never reaches
the command surface: confirmed directly against production that a
POST /oauth/register requesting user-feedback:write silently drops it from
the granted scope, the same unregistrable shape UNSUPPORTED_OPERATIONS
already documents for accounts create-token/update-token/delete-token.

Named the disabled operation createFeedbackItem rather than the shorter
create: the withheld-operation guard in generate_skills.rs checks the bare
command word against every generated file's text, and a bare "create"
collides with the exposed, unrelated `styles create`. Since the operation
is never reachable either way, the internal name doesn't affect anything
user-facing.

Puts the "ISO 8601" format note at the end of each *_before/*_after
description, so --help doesn't truncate them to that leading sentence.

Each filter takes one value for now. The API takes several values only
as a repeated parameter (status=a&status=b); a comma-separated value
gets a 400 from status and silently matches nothing for feedback_id and
category, verified against production. The command builder can't
repeat a query parameter yet; that belongs in its own PR.

docs/commands.md's counts go from 33 operations across 10 groups to 35
across 11.

Smoke-tested against production: list with single-value --status/
--category filters, --order, the pagination cursor, and get by id, all
return the documented shape. Confirmed create is absent from --help and
errors as an unrecognized subcommand rather than reaching the API.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@zmofei
zmofei force-pushed the feat/feedback-api branch from 6290389 to f5863c9 Compare October 2, 2026 11:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants