Skip to content

docs(api): openapi gaps for RI exchange execute/quote and group system_managed #1521

Closed

Description

@cristim

Non-blocking findings from the cold reviews of #1511 and #1513 (both merged). In each case internal/api/openapi.yaml doesn't match what the handlers accept or return.

RI exchange (from #1511):

  • Execute still marks targets required, but the handler also accepts the legacy single-target form, target_offering_id plus target_count. Those fields are undocumented, and targets items are a bare object with no schema.
  • The quote request body is a bare object, so its optional region is undocumented.
  • Execute region and quote Region have no minLength: 1, so the spec accepts the empty string the handler rejects with a 400. The handler also doesn't trim spaces from the region; AWS rejects a whitespace-only value, so this causes no wrong-region spend.
  • ExchangeResult.quote in frontend/src/types.ts (~925-927) is typed with a required Region, but the execute response's quote has no Region (handler_ri_exchange.go ~2191-2194). Nothing reads it today.

Groups (from #1513):

  • system_managed on the Group schema isn't marked readOnly. Clients can't set it (no request type has the field), so this affects the docs only.
  • The UpdateGroupAPI system-managed guard is now redundant with the service-level guard. Removing it passes every test, so the order of the 403 and the permission-ceiling error isn't pinned by a test.

Acceptance: the spec documents each accepted request shape and marks server-set fields readOnly. The frontend type matches the execute response. A test pins the group 403 ordering, or the redundant guard is removed.

🤖 Generated with Claude Code

Activity

  1. cristim commented on Oct 27, 2026

    @cristim
    MemberAuthor

    Claiming: working on this (claude-cc-platform). The PR will document the quote and execute request shapes, including the legacy target_offering_id/target_count form and an ExchangeTarget schema. It also adds minLength on region/Region, marks system_managed readOnly, makes ExchangeResult.quote.Region optional, and adds a test pinning the group 403 ordering.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions