Skip to content

serve: missing mirrors — describe-batch (inline payload), unload-table; job run lacks idempotency_key #657

Description

@padak

Three MEDIUM gaps from the 0.89.0 serve audit:

  1. storage describe-batch (fix(storage): reject malformed describe-batch --from-file shapes with a structured error (#640) #645) has no REST route. The whole bulk-documentation path is CLI-only. The validation core is already factored out (services/_describe_batch_input.py:parse_describe_batch_file), so an inline-payload route (POST /storage/describe-batch/{project} with the sections in the body instead of a file path) is cheap and matches how agents would want to call it over serve.

  2. storage unload-table has no REST mirror despite unload_table_to_file existing (services/storage_service.py:2228). The async-unload + presigned-file pattern would fit serve well (the sync data preview covers small reads; unload covers the big ones).

  3. POST /jobs/{p}/run drops client-side idempotency. JobRun (server/routers/jobs.py:26-32) has no idempotency_key / force_rerun even though JobService.run_job takes both (feat(sdk): idempotency keys for run_job (and push) — safe replay after interruption #427 built the store precisely for retried POSTs — and retrying a POST over HTTP is the canonical case).

Bonus LOW: a read-only GET /permissions/show would let serve clients discover the active policy (full enforcement gap tracked separately in #655).

Activity

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions