Skip to content

Document the tenant file store endpoints - #160

Merged
beckyconning merged 5 commits into
masterfrom
files-endpoints
Aug 28, 2026
Merged

Document the tenant file store endpoints#160
beckyconning merged 5 commits into
masterfrom
files-endpoints

Conversation

@beckyconning

@beckyconning beckyconning commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

OpenAPI documentation for the tenant-scoped file store shipping in precog/services#3616 (chart wiring: precog/devops#1637).

Adds to reference/public-http-api.yaml:

  • POST /files — multipart upload (part named file; filename and MIME from the part)
  • POST /files?postUploadPipeline=<id> — optional upload param that starts a load of the named pipeline (same machinery as POST /pipelines/{pipeline-id}/loads) once the upload is stored; unknown pipeline is a 404 before anything is stored
  • GET /files — listing with updatedSince (exclusive epoch-ms watermark), mimeType, includeDeleted, offset/limit; the description carries the full delta-loading recipe including tombstone propagation
  • GET /files/{fileId} — metadata (outlives content access for tombstoned files)
  • DELETE /files/{fileId} — tombstone semantics: bumps updatedAt so deletes ride the delta stream; idempotent
  • GET /files/{fileId}/content — bytes with stored Content-Type; 410 Gone when tombstoned
  • Schemas file-record (reusing the existing epoch-millis) and file-list-page

The read-only /internal/files/{tenantId} mirror is deliberately not documented here — it is cluster-internal with static-token auth, not part of the public surface.

npm run lint:openapi passes. Endpoint behavior matches what is deployed and E2E-verified on staging (service-facade:193.4.0-snapshot-8d178a4).

🤖 Generated with Claude Code

beckyconning and others added 5 commits August 27, 2026 12:19
/files upload/list, /files/{id} metadata/tombstone-delete, and
/files/{id}/content, with the file-record and file-list-page schemas.
The list documentation carries the delta-loading recipe (exclusive
updatedSince watermark + includeDeleted tombstone propagation) that the
Precog Files connector follows. Ships in precog/services#3616.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Optional query param on POST /files that starts a load of the named
pipeline (same machinery as POST /pipelines/{pipeline-id}/loads) once the
upload is durably stored; unknown pipeline is a 404 before anything is
stored.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The boundary record re-lists and consumers dedupe by id, closing the
same-millisecond page-boundary loss the strict bound allowed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s) on POST /files

Both are implemented responses: PRECOG_FILES_MAX_UPLOAD_BYTES ends an
oversized upload with 413, and returnRows against a pipeline whose
destination cannot serve deterministic rows answers 422. Nothing is
stored in either case.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@beckyconning
beckyconning merged commit 26defd8 into master Aug 28, 2026
2 checks passed
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.

1 participant