Expose the per-file Downloads API (/v1/downloads) in the SDK
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 70/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- node.js, openapi, python
调研方向
首先定位 OpenAPI 规范和生成的 API 文档,包括 SDK 中的 api.md。添加已文档化的三个 /v1/downloads 操作并更新会话下载描述,然后验证生成结果会为 Python 和 Node SDK 生成 downloads.list、downloads.retrieve 和 downloads.delete。
由索引模型根据 Issue 内容生成。
描述
What exists today
The only way to retrieve downloaded files through the SDK is client.sessions.downloads.list(id). It calls GET /v1/sessions/{id}/downloads with Accept: application/zip and hands back the raw response (BinaryAPIResponse in Python, Response in Node): a zip archive containing every file the session downloaded. Nothing in the method's description says so. The generated docstring is just "Session Downloads", so the first hint that you are holding a zip is the response body.
What's missing
Browserbase documents a per-file Downloads API that is not in the SDK at all. Neither SDK has a downloads resource, and api.md in each lists only the zip endpoint and sessions.recording.downloads. The documented endpoints:
GET /v1/downloads?sessionId=<id>lists individual downloads withid,sessionId,filename,mimeType,size,checksum(SHA-256, hex) andcreatedAt, plustotal/limit/offsetfor pagination. Optional filters:filename,mimeType,minSize,maxSize,createdAfter,createdBefore,limit(default 20, max 100),offset.
https://docs.browserbase.com/reference/api/list-downloadsGET /v1/downloads/{downloadId}returns the metadata above withAccept: application/json, or the file bytes withAccept: application/octet-stream.
https://docs.browserbase.com/reference/api/get-downloadDELETE /v1/downloads/{downloadId}deletes one download and returns 204.
https://docs.browserbase.com/reference/api/delete-download
Feature overview: https://docs.browserbase.com/features/downloads
Why it matters
- Per-file access with
mimeTypeand size filters and pagination, instead of one opaque archive per session. - No zip round-trip when you want a single file: fetch it by id and you are done.
- A caller can gate on one body's magic bytes, or compare
size/checksumfrom the listing, before doing anything with the file.
Our integration ended up dropping the SDK for these calls and using raw httpx against /v1/downloads for exactly these reasons. The client's get() plus make_request_options() covers the gap in the meantime, but it means hand-writing the types the generator would otherwise produce.
Ask
- Add the three
/v1/downloadsendpoints to the OpenAPI spec so they generate into both the Python and Node SDKs as adownloadsresource (list,retrieve,delete). - While there, give
GET /v1/sessions/{id}/downloadsa description that says it returns a zip archive of all files downloaded during the session, sosessions.downloads.list()documents its return type.
- 主要语言
- Python
- 星标
- 93
- 派生
- 16
- 平均合并
- 11 分钟
- 30 天内合并 PR
- 3
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
browserbase/sdk-python 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 82/100
browserbase/sdk-python#182 ·
-
难度 2/5 1-3 小时 新手友好度 84/100
browserbase/sdk-python#180 ·
-
难度 2/5 1-3 小时 新手友好度 82/100
browserbase/sdk-python#179 ·
-
难度 2/5 1-3 小时 新手友好度 78/100
browserbase/sdk-python#178 ·
-
难度 2/5 1-3 小时 新手友好度 82/100
browserbase/sdk-python#176 ·
查看 browserbase/sdk-python 的全部 Issue
相似的 Issue
-
bug confirmed issue
难度 2/5 1-3 小时 新手友好度 75/100
open-webui/open-webui#30750 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
-
enhancement
难度 2/5 1-3 小时 新手友好度 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 70/100
-
good first issue
难度 1/5 1 小时以内 新手友好度 90/100