routers.product =============== .. py:module:: routers.product .. autoapi-nested-parse:: Product download route — streams files directly from STORM filesystem. Attributes ---------- .. autoapisummary:: routers.product.product_router Functions --------- .. autoapisummary:: routers.product.post_product Module Contents --------------- .. py:function:: post_product(request) :async: Accept data products to stream and return file bytes or a TAR archive. Supports two request formats selected by `Content-Type`: * **`application/json`** (default) — JSON array of `{"did": "...", "path": "..."}` objects, where `path` is the absolute STORM filesystem path. * **`application/xml` / `text/xml`** — Raw VOTable XML as returned by a DataLink `/v1/links` query. The product-streamer paths are derived internally; no client-side parsing is required. Streaming behaviour: * **Single product, file path** → streams raw bytes with HTTP Range request support. * **Single product, directory path** → streams an uncompressed TAR archive. * **Multiple products** → streams an uncompressed TAR archive containing all files. Returns an IVOA AuthVO 401 challenge when no Bearer token is provided. .. py:data:: product_router