> ## 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 令牌。不接受 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.