get_zipfile_download_url
Compress multiple files into a ZIP archive and generate a temporary download URL valid for 60 seconds, enabling bulk file retrieval from the MLIT Data Platform.
Instructions
複数の付属ファイルをZIP形式で圧縮し、圧縮ファイルのダウンロードURLを取得する。URLの有効期限は60秒。
使い方:
- まとめて取得したい複数ファイルの `id` と、ZIP内に格納する `original_path`(パス)を指定します。
- search / data で取得した `files` から必要な id / original_path を選択して投入してください。
- 本ツールは2通りに対応:
(A) `files=[{id, original_path}, ...]` を直接渡す
(B) `dataset_id` と `data_id` を渡す(ツール側で `files` を参照しZIP作成)
例:
- IFCを3本まとめてZIPで取得:
files=[
{ id:"<id1>", original_path:"ICON/.../モデルA.ifc" },
{ id:"<id2>", original_path:"ICON/.../モデルB.ifc" },
{ id:"<id3>", original_path:"ICON/.../モデルC.ifc" },
]
- データIDから付属ファイルをZIP化(簡易):
dataset_id="cals_construction", data_id="<searchで取得したid>"
注意:
- ZIPのダウンロードURLは **60秒間のみ有効** です。取得後すぐにダウンロード処理を開始してください。
- GraphQLは `zipfileDownloadURL(files:[FileInputClass]): String`。`files` の `id` / `original_path` は `DataClass.files` を用います。
- 大容量ZIPはクライアント側のタイムアウト設定にも注意してください。Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | ZIP化するファイルの配列 | |
| dataset_id | No | データセットID | |
| data_id | No | データID |
Implementation Reference
- src/server.py:1453-1461 (handler)Handler in src/server.py for get_zipfile_download_url tool.
elif name == "get_zipfile_download_url": p = ZipfileDownloadURLInput.model_validate(arguments) if p.files: files = [FileRef(id=f.id, original_path=f.original_path) for f in p.files] data = await client.zipfile_download_url(files=files) else: data = await client.zipfile_download_url_from_data( dataset_id=str(p.dataset_id), data_id=str(p.data_id) # type: ignore ) - src/client.py:1088-1098 (handler)Implementation of zipfile_download_url in src/client.py using GraphQL builder.
async def zipfile_download_url(self, *, files: List[FileRef]) -> Dict[str, Any]: if not files: return {"zipfileDownloadURL": None} q = self.build_zipfile_download_url(files=files) return await self.post_query(q) async def zipfile_download_url_from_data(self, *, dataset_id: str, data_id: str) -> Dict[str, Any]: files = await self.get_data_files(dataset_id=dataset_id, data_id=data_id) if not files: return {"zipfileDownloadURL": None} return await self.zipfile_download_url(files=files) - src/client.py:518-529 (helper)GraphQL query builder for zipfileDownloadURL.
# ----- ZIPFILE DOWNLOAD URL ----- def build_zipfile_download_url(self, *, files: List[FileRef]) -> str: def q(s: str) -> str: return '"' + s.replace('"', '\\"') + '"' items = ", ".join( "{ id: " + q(f.id) + ", original_path: " + q(f.original_path) + " }" for f in files ) return f""" query {{ zipfileDownloadURL(files: [{items}]) }} """.strip()