> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fluz.app/llms.txt
> Use this file to discover all available pages before exploring further.

# 上傳 RFI 文件

> 為資訊請求問題上傳檔案，並取得要隨 submitRfi 一併提交的 fileId。

## 概觀

類型為 `MULTI_UPLOAD`、`BANK_LINK_OR_STATEMENT` 和 `ADDRESS_VERIFICATION_OR_DOCUMENT` 的問題需以檔案作答。請先針對所回答的問題，將每個檔案上傳至此端點，再將回傳的 `fileId` 值傳入 [submitRfi](https://docs.fluz.app/submit-rfi)。

僅上傳檔案並不會回答該問題。在您呼叫 `submitRfi` 之前，RFI 上不會儲存任何內容。

## 所需範圍

| 屬性 | 值 |
| - | - |
| 端點 | REST — `POST /api/v1/file-upload/rfi-document` |
| 驗證 | OAuth Bearer Token。不接受 Basic 驗證 |
| Content-Type | `multipart/form-data` |
| 所需範圍 | `MANAGE_RFI` |

此權杖必須與您用來讀取該 RFI 的是同一位客戶的權杖。請參閱[誰可以回答 RFI](https://docs.fluz.app/rfi-overview#who-can-answer-an-rfi)。

| 環境 | URL |
| - | - |
| 測試環境 | `POST https://transactional-graph.staging.fluzapp.com/api/v1/file-upload/rfi-document` |
| 正式環境 | `POST https://transactional-graph.fluzapp.com/api/v1/file-upload/rfi-document` |

## 參數

以 `multipart/form-data` 欄位傳送：

| 欄位 | 類型 | 必填 | 說明 |
| - | - | - | - |
| `file` | `File` | 是 | 單一檔案。大小上限為 5 MB。請參閱[可接受的檔案類型](#accepted-file-types) |
| `rfiId` | `UUID` | 是 | 檔案所屬的 RFI |
| `questionId` | `String` | 是 | 檔案所回答的問題，來自 `RfiQuestion.questionId` |

每次呼叫僅上傳一個檔案。若某個問題需要多個檔案，請對每個檔案各呼叫一次端點，並保留每一個 `fileId`。

### 可接受的檔案類型

檔案類型是依據檔案內容偵測，而非依據檔名或您傳送的 `Content-Type`。

| 問題類型 | 可接受格式 |
| - | - |
| `MULTI_UPLOAD` | PDF、PNG、JPEG、GIF、WebP、CSV、TXT、DOC、DOCX、XLS、XLSX |
| `BANK_LINK_OR_STATEMENT` | PDF、PNG、JPEG、GIF、WebP |
| `ADDRESS_VERIFICATION_OR_DOCUMENT` | PDF、PNG、JPEG、GIF、WebP |

## cURL 範例

```bash theme={null}
curl -X POST https://transactional-graph.staging.fluzapp.com/api/v1/file-upload/rfi-document \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -F "file=@/path/to/articles-of-organization.pdf" \
  -F "rfiId=7c1e2a90-4b3d-4f6e-9a18-3d5b2c7e8f01" \
  -F "questionId=q_formation"
```

## 回應詳情

### 成功 — `200 OK`

| 欄位 | 類型 | 說明 |
| - | - | - |
| `fileId` | `UUID` | 在該問題的答案中將此值傳給 `submitRfi` |
| `fileName` | `String` | 所上傳檔案的原始名稱 |

```json theme={null}
{
  "fileId": "b52f0e4a-1c7d-4a9b-8e36-0f2d9c4a7b15",
  "fileName": "articles-of-organization.pdf"
}
```

接著以檔案 ID 回答該問題：

```json theme={null}
{
  "questionId": "q_formation",
  "value": [
    { "fileId": "b52f0e4a-1c7d-4a9b-8e36-0f2d9c4a7b15" }
  ]
}
```

每個 `fileId` 只能用於其上傳時對應的問題，且只能使用一次。

## 錯誤碼

| HTTP | 代碼 | 說明 | 解決方式 |
| - | - | - | - |
| `401` | `AUTH-0008` | 沒有 Bearer 使用者權杖，或使用了 Basic 驗證 | 使用客戶的 Bearer 權杖呼叫 |
| `403` | `AUTH-0031` | 權杖缺少 `MANAGE_RFI` | 加入該範圍並重新產生權杖 |
| `400` | `ARG-0002` | 未包含 `file` | 以名為 `file` 的 `multipart/form-data` 欄位傳送檔案 |
| `400` | `ARG-0001` | `rfiId` 不是 UUID、`questionId` 缺漏或過長，或此問題不接受該檔案類型 | 檢查各欄位及[可接受的檔案類型](#accepted-file-types) |
| `403` | `G-0003` | 該 RFI 不存在，或並非發送給此權杖的使用者與帳戶 | 使用您讀取該 RFI 時所用的權杖 |
| `400` | `UNKNOWN_QUESTION` | 該 RFI 中沒有具此 `questionId` 且可作答的問題 | 使用該 RFI 目前問題中的 `questionId` |
| `400` | `NOT_A_FILE_QUESTION` | 該問題不是以檔案作答 | 在 `submitRfi` 中以其類型所需的值作答 |
| `400` | `ALREADY_SUBMITTED` | 該問題已有儲存的答案 — 包括以 `completeRfiPlaidLink` 儲存的銀行連結 | 無需上傳。已儲存的答案無法變更 |
| `409` | `RFI_NOT_OPEN` | 該 RFI 目前並未等待作答 | 讀取該 RFI 以查看其狀態 |
| `409` | `RFI_EXPIRED` | 該 RFI 已過期 | 引導客戶聯絡支援團隊 |

超過 5 MB 的檔案會在處理前即被拒絕。請在上傳前於您的 UI 中檢查檔案大小。

## 注意事項

* 請在提交前才上傳，使檔案與答案屬於同一個工作階段。
* 檔案一經上傳即會儲存於該 RFI，但在 `submitRfi` 包含其 `fileId` 之前，它們不屬於客戶的答案。
* 請為檔案取清楚的名稱（例如 `operating-agreement.pdf`）。這並非必要，但可加快審核速度。

## 相關頁面

> [card] [提交 RFI](https://docs.fluz.app/submit-rfi)
>
> 提交回傳的 `fileId` 值之處。

> [card] [以銀行連結作答](https://docs.fluz.app/complete-rfi-plaid-link)
>
> 適用於銀行對帳單與地址證明問題，無需檔案。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.