# Backlog API/ファイル関連
backlog APIは、pythonでラップされたモジュールを元にして、操作を行う。
## ファイルのアップロード
**対応している対象:Wikiのみ**
### ファイルアップロードのルート
backlog APIでは、ファイルを添付するために少し特殊なステップを踏む必要があるため、その手順を先に明示する。
- まず、ファイルをアップロードし、そのアップロードファイルのIDを取得(「添付ファイルの送信」API)
- そのIDを用いて、指定した課題orWiki等のIDのところに、ファイルを添付する(「対象へのファイル添付」API)
**※注意点**
- 一度、添付すると、ファイルのIDは消去される!(つまり、どこかにアップすれば二重でファイル情報が残ることはない)
- ファイル添付の過程では、Wiki, 課題, プルリクエストごとに違うAPIが用いられている。
- ファイルの操作には、
- すべてそのファイルが属しているもののID
- そのファイル自体のID
2種類が必要となる。
## 添付ファイルのアップロード
ファイルをbacklog上にアップロード
`api/v2/attachment`
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| files | 添付したいファイル | file | | |
### 出力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| id | 添付したファイルのid | int | | |
| name | ファイル名 | str | | |
| size | ファイルのサイズ | str | | |
## 対象へのファイル添付
アップロードしたファイルを、貼り付ける
`/api/v2/wikis/:wikiId/attachments`
#### Wiki
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| wikiId | Wikiファイルのid | int | | |
### 出力形式
添付したファイルの情報(jsonファイル)
## ファイルのダウンロード
**対応している対象:Wiki, 課題, プルリクエスト, 共有ファイル**
#### Wiki
`/api/v2/wikis/:wikiId/attachments/:attachmentId`
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| wikiId | Wikiファイルのid | int | | |
| attachmentId | 添付ファイルのid | int | | |
### 出力形式
なし
### 課題
`/api/v2/issues/:issueIdOrKey/attachments/:attachmentId `
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| issueIdOrKey | 課題のID または 課題キー | str | | |
| attachmentId | 添付ファイルのid | int | | |
### プルリクエスト
`/api/v2/projects/:projectIdOrKey/git/repositories/:repoIdOrName/pullRequests/:number/attachments/:attachmentId`
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| projectIdOrKey | プロジェクトのID または プロジェクトキー | str | | |
| repoIdOrName | リポジトリのID または リポジトリ名 | str | | |
| number | プルリクエストの番号 | int | | |
| attachmentId | 添付ファイルのid | int | | |
### 出力形式
なし
### 共有ファイル
`/api/v2/projects/:projectIdOrKey/files/:sharedFileId `
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| projectIdOrKey | プロジェクトのID または プロジェクトキー | str | | |
| id | 共有ファイルのID | int | | |
### 出力形式
なし
## ファイルの一覧取得
**対応している対象:Wiki, 課題, プルリクエスト, 共有ファイル**
#### Wiki
`/api/v2/wikis/:wikiId/attachments `
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| wikiId | Wikiファイルのid | int | | |
### 出力形式
ファイル情報(json形式)
### 課題
`/api/v2/issues/:issueIdOrKey/attachments`
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| issueIdOrKey | 課題のID または 課題キー | str | | |
### 出力形式
ファイル情報(json形式)
### プルリクエスト
`/api/v2/projects/:projectIdOrKey/git/repositories/:repoIdOrName/pullRequests/:number/attachments`
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| projectIdOrKey | プロジェクトのID または プロジェクトキー | str | | |
| repoIdOrName | リポジトリのID または リポジトリ名 | str | | |
| number | プルリクエストの番号 | int | | |
### 出力形式
ファイル情報(json形式)
### 共有ファイル
`/api/v2/projects/:projectIdOrKey/files/metadata/:path`
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| projectIdOrKey | プロジェクトのID または プロジェクトキー | str | | |
| path |ディレクトリのパス | str | | |
### 出力形式
ファイル情報(json形式)
## ファイルの削除
**対応している対象:Wiki, 課題, プルリクエスト, 共有ファイル**
### Wiki
`/api/v2/wikis/:wikiId/attachments/:attachmentId `
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| wikiId | Wikiファイルのid | int | | |
| attachmentId | 添付ファイルのID | int | | |
### 出力形式
削除したファイル情報(json形式)
### 課題
`/api/v2/issues/:issueIdOrKey/attachments/:attachmentId
`
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| issueIdOrKey | 課題のID または 課題キー | str | | |
| attachmentId | 添付ファイルのID | int | | |
### 出力形式
削除したファイル情報(json形式)
### プルリクエスト
`/api/v2/projects/:projectIdOrKey/git/repositories/:repoIdOrName/pullRequests/:number/attachments/:attachmentId`
### 入力形式
| 項目名 | 内容 | 型 | 具体例 | 備考 |
| --- | --- | --- | --- | --- |
| projectIdOrKey | プロジェクトのID または プロジェクトキー | str | | |
| repoIdOrName | リポジトリのID または リポジトリ名 | str | | |
| number | プルリクエストの番号 | int | | |
| attachmentId | 添付ファイルのID | int | | |
### 出力形式
削除したファイル情報(json形式)
-----
# 以下、下書き
## 共有ファイルのリンク
backlog上で共有フォルダーに入っているファイルを、
### Wiki
|基本情報||
|---|---|
|Method|WikiAttachment.remove_wiki_attachment
|
**Arguments**
|引数|内容|
|----|----|
|wiki_id|WikiページのID|
|attachment_id|削除対象のファイルのID|
|**返値**|内容|
|Responseオブジェクト||
----------
## 添付ファイルの送信(httpメソッド版)
|基本情報||
|---|---|
|Method URL|`https://<<space_key>>.com/api/v2/attachment`|
|HTTP method|`POST`|
**Arguments**
|引数|内容|
|----|----|
|**API key**|slackで発行したトークン.<br>e.g.) `xxxx-xxxxxxxxx-xxxx`|
|files|添付したいファイル
**Responce**
```
{
"id": 1,
"name": "test.txt",
"size": 8857
}
```
----
*まとめ方の一例
|| Wiki | 課題 | プルリクエスト |共有ファイル|
|--------| -------- | -------- | -------- |--------|
|Method| Text | Text | Text ||
|引数(内容)| Text | Text | Text ||
- データの型も記述するべき
-----
#### 添付ファイルの送信
|基本情報||
|---|---|
|Method|Attachment.post_attachment_file|
**Arguments**
|引数|内容|
|----|----|
|file_path|アップロードしたいファイルの、アップロード元でのパス|
|file_name|ファイル名
#### 対象へのファイル添付
##### Wiki
|基本情報||
|---|---|
|Method|WikiAttachment.attach_file_to_wiki|
**Arguments**
|引数|内容|
|----|----|
|file_path|アップロードしたいファイルの、アップロード元でのパス|
|file_name|ファイル名
|**返値**|内容|
|Responseオブジェクト||
## ファイルのダウンロード
**対応している対象:Wiki, 課題, プルリクエスト, 共有ファイル**
#### Wiki
|基本情報||
|---|---|
|Method|WikiAttachment.get_wiki_page_attachment|
**Arguments**
|引数|内容|
|----|----|
|wiki_id|WikiページのID|
|attachment_id|ダウンロード対象のファイルのID|
|**返値**|内容|
|Responseオブジェクト||
### 課題
|基本情報|Wiki|
|---|---|
|Method|IssueAttachment.get_issue_attachment|
**Arguments**
|引数|内容|
|----|----|
|issue_id_or_key|課題のID または 課題キー|
|attachment_id|ダウンロード対象のファイルのID|
|**返値**|内容|
|Responseオブジェクト||
### プルリクエスト
|基本情報||
|---|---|
|Method|PullRequestAttachment.download_pull_request_attachment|
**Arguments**
|引数|内容|
|----|----|
|project_id_or_key|プロジェクトのID または プロジェクトキー|
|repo_id_or_name|リポジトリのID または リポジトリ名|
|number|プルリクエストの番号|
|attachment_id|添付ファイルのID|
|**返値**|内容|
|Responseオブジェクト||
### 共有ファイル
|基本情報|Wiki|
|---|---|
|Method|SharedFile.get_file|
**Arguments**
|引数|内容|
|----|----|
|project_id_or_key|プロジェクトのID または プロジェクトキー|
|shared_file_id|ダウンロード対象のファイルのID|
|**返値**|内容|
|Responseオブジェクト||
## ファイルの一覧取得
**対応している対象:Wiki, 課題, プルリクエスト, 共有ファイル**
#### Wiki
|基本情報||
|---|---|
|Method|WikiAttachment.get_list_of_wiki_attachments|
**Arguments**
|引数|内容|
|----|----|
|wiki_id|WikiページのID|
|**返値**|内容|
|Responseオブジェクト||
### 課題
|基本情報||
|---|---|
|Method|IssueAttachment.get_list_of_issue_attachments|
**Arguments**
|引数|内容|
|----|----|
|issue_id_or_key|課題のID または 課題キー|
|**返値**|内容|
|Responseオブジェクト||
### プルリクエスト
|基本情報||
|---|---|
|Method|PullRequestAttachment.get_list_of_pull_request_attachment|
**Arguments**
|引数|内容|
|----|----|
|project_id_or_key|プロジェクトのID または プロジェクトキー|
|repo_id_or_name|リポジトリのID または リポジトリ名|
|number|プルリクエストの番号|
|**返値**|内容|
|Responseオブジェクト||
### 共有ファイル
|基本情報|Wiki|
|---|---|
|Method|SharedFile.get_list_of_shared_files|
**Arguments**
|引数|内容|
|----|----|
|project_id_or_key|プロジェクトのID または プロジェクトキー|
|shared_file_id|ダウンロード対象のファイルのID|
|file_path|ディレクトリのパス|
|order|“asc”または”desc” 指定が無い場合は”desc”|
|offset||
|count|取得上限(1-1000) 指定が無い場合は1000|
|**返値**|内容|
|Responseオブジェクト||
## ファイルの削除
**対応している対象:Wiki, 課題, プルリクエスト, 共有ファイル**
### Wiki
|基本情報||
|---|---|
|Method|WikiAttachment.remove_wiki_attachment
|
**Arguments**
|引数|内容|
|----|----|
|wiki_id|WikiページのID|
|attachment_id|削除対象のファイルのID|
|**返値**|内容|
|Responseオブジェクト||
### 課題
|基本情報||
|---|---|
|Method|IssueAttachment.delete_issue_attachment|
**Arguments**
|引数|内容|
|----|----|
|issue_id_or_key|課題のID または 課題キー|
|attachment_id|削除対象のファイルのID|
|**返値**|内容|
|Responseオブジェクト||
### プルリクエスト
|基本情報||
|---|---|
|Method|PullRequestAttachment.delete_pull_request_attachments|
**Arguments**
|引数|内容|
|----|----|
|project_id_or_key|プロジェクトのID または プロジェクトキー|
|repo_id_or_name|リポジトリのID または リポジトリ名|
|number|プルリクエストの番号|
|attachment_id|添付ファイルのID|
|**返値**|内容|
|Responseオブジェクト||