# 이름 변경

`POST` `https://api.pushwoosh.com/messaging/v2/rename`

`message_code`로 식별되는, 이전에 생성된 메시지의 **캠페인 이름**을 설정하거나 지웁니다. 메시지의 다른 부분은 변경되지 않습니다. 내용, 대상, 일정은 정확히 이전과 동일하게 유지됩니다.

이름 변경은 메시지가 아직 **보류 중(pending)** 상태일 때만 가능합니다 — 생성되었지만 아직 전송을 위해 선택되지 않은 상태입니다. `waiting`, `processing` 또는 그 이후 상태로 넘어간 메시지는 더 이상 이름을 변경할 수 없습니다. Control Panel에서는 이 상태가 상태 열에 문자 그대로 "Pending"이 아니라 **예약됨**으로 표시됩니다. [메시지 상태](/ko/product/statistics-and-analytics/message-history/#message-statuses)를 참조하세요.

<Aside type="caution" title="중요">

- 이름은 앞뒤 공백이 제거되고 255자로 잘립니다. 빈 이름(또는 공백만 있는 이름)은 캠페인 이름을 완전히 지우며, 메시지는 [Message History](/ko/product/statistics-and-analytics/message-history/)의 기본 제목으로 되돌아갑니다.

- 이 호출은 멱등적(idempotent)입니다. 동일한 이름을 다시 보내면 동일한 값이 다시 적용됩니다. 다만 이름이 실제로 변경되었는지 여부와 관계없이 호출할 때마다 메시지의 마지막 수정 시간이 갱신되므로, 반복 호출은 메시지를 Message History의 기본 정렬 기준인 **마지막 수정**의 맨 위로 이동시킬 수 있습니다.
</Aside>

메시지가 여전히 이름 변경 가능한 상태인지 확인하려면 [메시지 상태 확인](#checking-message-status)을 참조하세요.

## 요청

`Authorization: Token <API_TOKEN>` 헤더에 [서버 API 토큰](/ko/developer/api-reference/api-access-token/#server-api-token)으로 인증합니다.

| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| `message_code` | string | 예 | 이름을 변경할 메시지의 [메시지 코드](/ko/developer/api-reference/api-identifiers/#message-code). [`Notify`](/ko/developer/api-reference/messaging-api-v2/notify/)가 `result.message_code`에서 반환한 값입니다. |
| `campaign_name` | string | 예 | 새 캠페인 이름. 공백이 제거되고 255자로 잘립니다. 빈 문자열은 이름을 지웁니다. |

### 예시 요청

```bash
curl -X POST https://api.pushwoosh.com/messaging/v2/rename \
  -H "Authorization: Token YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "message_code": "XXXX-XXXXXXXX-XXXXXXXX",
    "campaign_name": "Flash_Sale_Push"
  }'
```

## 응답

성공 시, 빈 JSON 본문과 함께 HTTP 200을 반환합니다.

```json
{}
```

## 오류

오류는 표준 gRPC-Gateway 오류 봉투(envelope)를 사용합니다: `{ "code": ..., "message": ..., "details": [...] }`.

| HTTP 상태 | 조건 |
|---|---|
| `400` | `message_code`가 누락되었습니다. |
| `400` | 메시지가 이름 변경 가능한 상태가 아닙니다 (더 이상 `pending` 상태가 아님). |
| `403` | 메시지가 다른 계정에 속해 있습니다. |
| `404` | 주어진 `message_code`에 대한 메시지가 존재하지 않습니다. |
| `500` | 메시지를 로드하거나 새 이름을 적용하는 동안 내부 오류가 발생했습니다. 요청을 다시 시도하세요. |


**예시**

이미 전송이 시작된 메시지의 이름을 변경하면 HTTP `400`이 반환됩니다:

```json
{
  "code": 9,
  "message": "message status \"waiting\" is not renamable",
  "details": []
}
```

<span id="checking-message-status" />

## 메시지 상태 확인

이름을 변경하기 전에 메시지가 여전히 이름 변경 가능한 상태인지 확인할 수 있습니다. Control Panel의 메시지 테이블에서 **상태** 열을 읽는 것 외에도([**캠페인 → 일회성 메시지**](/ko/product/statistics-and-analytics/message-history/)), 여기서 이름 변경 가능한 메시지는 문자 그대로 "Pending"이 아니라 **예약됨**으로 표시됩니다. [`messages:list`](/ko/developer/api-reference/statistics-api/message-statistics-api/#messageslist)를 사용하여 프로그래밍 방식으로 상태를 쿼리할 수도 있습니다:

- `filters.messages_codes` 배열에 `message_code`를 전달합니다(필수인 `filters.application`과 함께).
- `items[]`에서 일치하는 항목의 `status` 필드를 읽습니다.

<Aside type="note">
`messages:list`는 Statistics API의 일부이며 이 엔드포인트와 다른 인증 헤더를 사용합니다: `Authorization: Api <Server Key>`.
</Aside>

## 관련 항목

<CardGrid>
  <LinkCard title="Notify" href="/developer/api-reference/messaging-api-v2/notify/" />
  <LinkCard title="Update" href="/developer/api-reference/messaging-api-v2/update/" />
  <LinkCard title="Cancel" href="/developer/api-reference/messaging-api-v2/cancel/" />
  <LinkCard title="메시지 통계" href="/developer/api-reference/statistics-api/message-statistics-api/#messageslist" />
  <LinkCard title="Messaging API v2 개요" href="/developer/api-reference/messaging-api-v2/" />
  <LinkCard title="v1에서 마이그레이션" href="/developer/api-reference/messaging-api-v2/migration-from-v1/" />
</CardGrid>