get_file_download_urls
Generate time-limited download URLs for files from Japan's MLIT Data Platform, either by specifying file IDs directly or by providing dataset and data IDs for bulk URL creation.
Instructions
ファイルのダウンロード用URLを取得する。取得したURLがhttps://www.mlit-data.jp/download/で始まる場合、URLの有効期限は60秒。
使い方:
- 事前に search / data API で対象データの `files`(id, original_path)を取得してから、本APIでダウンロードURLを生成します。
- 本ツールは2通りに対応:
(A) `files=[{id, original_path}, ...]` を直接渡す
(B) `dataset_id` と `data_id` を渡す(ツール側で対象データの `files` を読み取り、一括でURL化)
例:
- 単一ファイルのURLを取得(直接指定):
files=[{ id:"<filesのid>", original_path:"INDEX_C.XML" }]
- データIDから付属ファイルのURL一覧を取得(簡易):
dataset_id="cals_construction", data_id="<searchで取得したid>"
注意:
- `id` と `original_path` は、まず search / data のレスポンスに含まれる `DataClass.files` から取得してください。
- 取得したURLが `https://www.mlit-data.jp/download/` で始まる場合、**60秒以内にダウンロード開始**が必要です(期限切れに注意)。
- 連携元サイトで直接ダウンロードできる場合は、メタデータ `DPF:downloadURLs` / `DPF:dataURLs` も併用してください。
- `original_path` を省略すると、付属ファイルの元ファイル名・パスが用いられます(files.original_pathを参照)。Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | ダウンロードするファイルの配列。dataset_id+data_idを指定する場合は省略可能 | |
| dataset_id | No | データセットID。filesを省略する場合は必須 | |
| data_id | No | データID。filesを省略する場合は必須 |
Implementation Reference
- src/server.py:1443-1451 (handler)Tool handler logic in server.py calling client.file_download_urls or client.file_download_urls_from_data.
elif name == "get_file_download_urls": p = FileDownloadURLsInput.model_validate(arguments) if p.files: files = [FileRef(id=f.id, original_path=f.original_path) for f in p.files] data = await client.file_download_urls(files=files) else: data = await client.file_download_urls_from_data( dataset_id=str(p.dataset_id), data_id=str(p.data_id) # type: ignore ) - src/client.py:1076-1086 (handler)High-level client methods to retrieve file download URLs, including fetching files from data ID.
async def file_download_urls(self, *, files: List[FileRef]) -> Dict[str, Any]: if not files: return {"fileDownloadURLs": []} q = self.build_file_download_urls(files=files) return await self.post_query(q) async def file_download_urls_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 {"fileDownloadURLs": []} return await self.file_download_urls(files=files) - src/client.py:502-516 (helper)Helper method to build the GraphQL query for file download URLs.
# ----- FILE DOWNLOAD URLs ----- def build_file_download_urls(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 {{ fileDownloadURLs(files: [{items}]) {{ ID URL }} }} """.strip()