2026-06-07 23:19:26 -05:00
# API Roadmap
2026-06-08 04:46:22 +00:00
This document records API work that is not part of the current implementation. Current HTTP upload behavior is documented in `docs/integrations/http-upload.md` , current configuration behavior is documented in `docs/config.md` , and current producer package usage is documented under `docs/consumers/` .
2026-06-07 23:19:26 -05:00
2026-06-08 04:46:22 +00:00
## Implemented HTTP Upload Behavior
2026-06-07 23:19:26 -05:00
2026-06-08 04:46:22 +00:00
The pipeline-scoped HTTP upload API is implemented. The current contract is:
2026-06-07 23:19:26 -05:00
2026-06-08 04:46:22 +00:00
- upload authentication is configured with top-level `upload_tokens` ;
- token values resolve through the process environment or `secrets.directory` , never YAML literals;
- bearer tokens authenticate producers and authorize configured upload pipelines through `allow_pipelines` ;
- upload requests use `POST /v1/pipelines/{pipeline_id}/upload` ;
- missing, malformed, or unknown bearer tokens return `401 Unauthorized` ;
- valid tokens that are not allowed for the requested pipeline return `403 Forbidden` ;
- `pkg/upload` upload options require `PipelineID` ;
- idempotency records are scoped by token id, pipeline id, and idempotency key;
- source manifests remain free of routing, destination, transform, and credential data.
2026-06-07 23:19:26 -05:00
2026-06-08 04:46:22 +00:00
The unscoped upload route no longer accepts uploads. Pipeline query parameters are rejected.
2026-06-07 23:19:26 -05:00
2026-06-08 04:46:22 +00:00
## Deferred API Work
2026-06-07 23:19:26 -05:00
2026-06-08 04:46:22 +00:00
The following topics remain separate roadmap items:
2026-06-07 23:19:26 -05:00
2026-06-08 04:46:22 +00:00
- durable upload status storage;
- durable idempotency records across server restarts;
- in-app public exposure policy;
- built-in TLS termination;
- built-in upload rate limiting.
2026-06-07 23:19:26 -05:00
## Boundaries
- Do not add destination selection to producer manifests.
2026-06-08 04:46:22 +00:00
- Do not let producers specify destination ids, transforms, links, publish policy, or transfer policy through the upload API.
- Keep `http_upload` source-only. A selected pipeline owns destination configuration, transforms, links, transfer policy, and publication behavior.