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

# PUT/Image

> 이 API를 사용하여 이미 생성된 Submission에 대해 4종류의 이미지(신분증 앞면, 뒷면, 셀피 이미지, 주소지 이미지)를 새로 추가하거나 업데이트(덮어쓰기)할 수 있습니다.

<Warning>
  주의사항

  * 이미지 파일 형식: jpg, jpeg, png만 허용됩니다.
  * 모든 이미지는 Base64 인코딩된 문자열로 제출해야 합니다.
  * idImage 또는 idBackImage를 제출할 경우 반드시 idType 파라미터를 포함해야 합니다.
  * 최소 한 개 이상의 이미지를 제출해야 합니다.
</Warning>

## 1. 엔드포인트

```text PUT/Image theme={null}
PUT https://rest-api.argosidentity.com/v3/submission/image
```

## 2. 인증 및 헤더

이 API는 요청 본문을 `multipart/form-data` 형식으로 전송해야 합니다.

| 헤더             | 값                     | 필수 |
| -------------- | --------------------- | -- |
| `x-api-key`    | 발급받은 API 키            | 필수 |
| `Content-Type` | `multipart/form-data` | 필수 |

<Note>
  `curl`의 `--form` 옵션이나 Python `requests` 라이브러리의 `files` 파라미터를 사용하면 `Content-Type: multipart/form-data` 헤더와 boundary 값이 자동으로 설정됩니다. 직접 헤더를 지정하면 boundary 값이 누락될 수 있으므로 주의하세요.
</Note>

## 3. 요청 파라미터

모든 파라미터는 `multipart/form-data` 필드로 전송합니다.

<ParamField body="submissionId" type="string" required>
  제출 건의 고유 ID
</ParamField>

<ParamField body="admin" type="string" required>
  프로젝트 관리자의 계정 (대시보드에 등록되어 있어야 함)
</ParamField>

<ParamField body="idType" type="string">
  신분증 유형. `idImage` 또는 `idBackImage`를 제출할 경우 필수입니다.
</ParamField>

<ParamField body="idImage" type="string">
  신분증 앞면 이미지를 Base64로 인코딩한 문자열
</ParamField>

<ParamField body="idBackImage" type="string">
  신분증 뒷면 이미지를 Base64로 인코딩한 문자열
</ParamField>

<ParamField body="selfieImage" type="string">
  셀피 이미지를 Base64로 인코딩한 문자열
</ParamField>

## 4. 요청 예시

<CodeGroup>
  ```bash cURL theme={null}
  curl --location --request PUT 'https://rest-api.argosidentity.com/v3/submission/image' \
  --header 'x-api-key: {yourAPIKey}' \
  --form 'submissionId="sampleSubmissionId11"' \
  --form 'admin="sample@argosidentity.com"' \
  --form 'idType="drivers_license"' \
  --form 'idImage={base64String}' \
  --form 'idBackImage={base64String}' \
  --form 'selfieImage={base64String}'
  ```

  ```python Python theme={null}
  import base64
  import requests
  from pathlib import Path

  API_URL = "https://rest-api.argosidentity.com/v3/submission/image"
  API_KEY = "your-api-key"

  image_path = Path("drvlic.jpeg")
  id_image_b64 = base64.b64encode(image_path.read_bytes()).decode()

  resp = requests.put(
      API_URL,
      headers={"x-api-key": API_KEY},
      files={
          "submissionId": (None, "sampleSubmissionId11"),
          "admin": (None, "sample@argosidentity.com"),
          "idType": (None, "drivers_license"),
          "idImage": (None, id_image_b64),
      },
  )

  print(resp.status_code, resp.json())
  ```
</CodeGroup>

<Note>
  Python `requests` 라이브러리에서 `files` 파라미터를 사용할 때, 텍스트 필드는 `(None, "값")` 형태의 튜플로 전달합니다. 첫 번째 요소 `None`은 파일명이 없음을 의미하며, 이 방식으로 텍스트 데이터도 multipart/form-data 형식으로 올바르게 전송됩니다.
</Note>

## 5. 응답

### 5-1. 성공 응답

```json result.json theme={null}
{
   "message": "complete to update image."
}
```

### 5-2. 응답 데이터

| 필드명       | 설명     | 데이터 타입 |
| --------- | ------ | ------ |
| `message` | 성공 메시지 | String |

### 5-3. 오류 응답

```json result.json theme={null}
{
    "errorCode": "invalid_payload",
    "message": "Fail to parse the input data."
}
```

### 5.4 오류 코드

| 오류 코드                | 메시지                                                        | 설명                     |
| -------------------- | ---------------------------------------------------------- | ---------------------- |
| `invalid_payload`    | Fail to parse the input data.                              | 입력 데이터 형식이 올바르지 않음     |
| `missing_data`       | Required input data is missing.                            | 필수 데이터 누락              |
| `invalid_project`    | Cannot find project info.                                  | 프로젝트 ID가 존재하지 않음       |
| `invalid_project`    | Invalid project.                                           | 유효하지 않은 프로젝트 상태        |
| `invalid_admin`      | Invalid admin.                                             | 유효하지 않은 관리자            |
| `invalid_submission` | Invalid submission.                                        | 유효하지 않은 submission ID  |
| `invalid_data`       | At least one image parameter is required.                  | 이미지가 하나도 제출되지 않음       |
| `missing_data`       | The idType is required when submit idImage or idBackImage. | 신분증 이미지 제출 시 idType 누락 |
| `invalid_idType`     | Invalid IdType.                                            | 유효하지 않은 idType         |
| `processing_error`   | Failed to put image.                                       | 데이터 처리 중 알 수 없는 오류     |

이 API를 사용하여 기존 Submission에 새로운 이미지를 추가하거나 기존 이미지를 업데이트할 수 있습니다. 오류 발생 시 제공된 오류 코드를 참조하여 문제를 해결하세요.
