36 lines
1.8 KiB
Markdown
36 lines
1.8 KiB
Markdown
# API Roadmap
|
|
|
|
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/`.
|
|
|
|
## Implemented HTTP Upload Behavior
|
|
|
|
The pipeline-scoped HTTP upload API is implemented. The current contract is:
|
|
|
|
- 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.
|
|
|
|
The unscoped upload route no longer accepts uploads. Pipeline query parameters are rejected.
|
|
|
|
## Deferred API Work
|
|
|
|
The following topics remain separate roadmap items:
|
|
|
|
- durable upload status storage;
|
|
- durable idempotency records across server restarts;
|
|
- in-app public exposure policy;
|
|
- built-in TLS termination;
|
|
- built-in upload rate limiting.
|
|
|
|
## Boundaries
|
|
|
|
- Do not add destination selection to producer manifests.
|
|
- 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.
|