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).

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