새로 등록하지 않고 캠페인 수정하기
이 경로를 사용하여 기존 캠페인의 설명, 메시지 예시, 동의에 관한 설명 또는 지원되는 콘텐츠 특성을 수정합니다. 캠페인 ID와 현재 브랜드 및 사용 사례는 유지하세요. 기존 캠페인의 수정을 재시도하기 위해 새로 등록해서는 안 됩니다.
허용된 출발지 IP 주소에서 활성화된 API 계정을 사용하여 HTTPS로 인증하세요. 해당 계정에 속한 캠페인만 사용할 수 있습니다. 변경 사항을 준비하기 전에 현재 상태를 조회하세요. 만료된 캠페인은 이 절차로 업데이트할 수 없습니다.
curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"실제로 변경된 필드 선택하기
지원되는 변경 사항을 담은 campaign-update.json을 준비하세요. 현재 포털은 변경된 캠페인 필드만 전송하며 brandId, usecase, campaignId 또는 응답 전용 상태 정보는 전송하지 않습니다. API를 통한 직접 업데이트에서도 필드로 구성된 JSON 객체를 사용하며, 포털의 changes/version 래퍼는 사용하지 않습니다.
| 필드 | 입력할 내용 |
|---|---|
| description, messageFlow | 정확한 서비스 설명과 이용자가 동의하고 메시지를 수신하며 동의를 철회하는 방법을 입력합니다. 각 필드는 40–4096자까지 허용됩니다. |
| sample1–sample5 | 이 캠페인의 실제 내용에 맞는 샘플을 입력합니다. 비어 있지 않은 샘플은 각각 20–1024자로 작성하세요. 적격으로 판정된 사용 사례에서 요구하는 샘플 수를 유지하고, 관련 없는 메시지는 전송하지 마세요. |
| helpMessage, optinMessage, optoutMessage | 해당하는 수신자용 응답을 최대 1024자로 입력합니다. 필요한 경우 최소 20자 요건을 충족하고 실제 서비스를 설명하세요. 필드를 비우기 전에 현재 동의 요건을 확인하세요. |
| optinKeywords, optoutKeywords, helpKeywords | 공백 없이 쉼표로 구분한 키워드를 최대 255자로 입력합니다. 응답 내용과 실제 키워드 처리가 일치하도록 유지하세요. |
| privacyPolicyLink, termsAndConditionsLink | 이 서비스의 실제 운영 방식을 설명하는 관련 공개 URL을 최대 2048자로 입력합니다. |
| embeddedLinkSample | 메시지에 포함될 링크의 대표 예시를 최대 255자로 입력합니다. |
| numberPool, embeddedLink, embeddedPhone, ageGated, directLending | 캠페인의 실제 특성을 JSON 불리언 값으로 입력합니다. 비활성화할 때는 false를 사용하고, 문자열 "false"는 사용하지 마세요. |
| autoRenewal | 공개 API 스키마는 이 JSON 불리언 값을 지원하지만, 포털의 일반 캠페인 콘텐츠 편집기에서는 이 항목을 제공하지 않습니다. 갱신을 비활성화해도 기존의 최소 계약 의무가 취소되거나 이미 납부 의무가 발생한 요금이 없어지지는 않습니다. |
| resellerId | 스키마에서는 리셀러 연결도 지정할 수 있습니다. 이 항목은 포털의 일반 콘텐츠 수정 양식에 포함되지 않습니다. 이 필드를 사용하여 캠페인을 다른 고객에게 이전하지 마세요. 또한 API가 다른 리셀러를 위한 통신사 서비스를 설정해 줄 것이라고 가정하지 마세요. |
업데이트 스키마에서는 brandId, usecase, subscriberOptin, subscriberOptout, subscriberHelp를 변경 가능한 필드로 제공하지 않습니다. 캠페인 생성용 페이로드 전체를 업데이트 요청에 복사하지 마세요. 메시지 요건을 검토할 때는 현재 적격성 정보를 참고하세요.
필요한 수정 사항만 제출하기
이 예시는 예약 알림 서비스를 가정한 것입니다. 사용하기 전에 캠페인의 실제 서비스와 동의 절차에 맞게 조정하세요.
{
"description": "Appointment reminders requested by customers of the registered business.",
"sample1": "Example business: Your requested appointment reminder is ready. Reply STOP to opt out."
}curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
--request PUT \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data-binary @campaign-update.json \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"동일한 제출을 의도하는 경우 같은 키를 유지하고 메서드, 경로, 쿼리 및 본문의 바이트를 정확히 동일하게 유지하세요. 내용이 변경되면 별도로 검토한 요청이 필요합니다. 시간 초과 후 확인 없이 키를 바꾸지 마세요. 완료된 요청에서는 캐시된 오류가 다시 반환될 수 있으며, 처리 중인 요청과 중복되는 요청에는 409와 Retry-After가 반환될 수 있습니다.
캠페인 다시 조회하기
HTTP 200은 캠페인 JSON 객체를 직접 반환합니다. campaignId를 확인한 다음 같은 캠페인을 GET으로 조회하여 변경하려던 필드를 비교하세요. 저장에 성공하더라도 그 자체로 통신사 재심사를 요청하거나, 번호 할당을 변경하거나, 발송을 활성화하거나, 메시지를 전송하지는 않습니다.
포털은 저장하기 전에 양식 버전을 확인하고 저장 후 캠페인을 다시 조회합니다. 공개 PUT 엔드포인트는 해당 포털 버전에 따른 제어를 적용하지 않으므로 동시 편집 시 서로 조율하세요. 멱등성 키는 다른 편집자의 업데이트를 감지하지 못합니다.
포털에 아직 해결되지 않은 심사 거절이 표시되면 먼저 내용을 수정한 다음, 별도의 심사 요청 기능을 사용할 수 있을 때 해당 기능을 실행하세요. 이 기능은 현재 운영 환경의 캠페인과 공유 상태를 확인합니다. 내용 저장만으로는 이 기능이 실행되지 않으며, 캠페인 ID가 존재한다는 사실만으로 승인되었다고 볼 수 없습니다.
현재 서비스에서는 일반적인 캠페인 PUT 업데이트 시 별도의 캠페인 등록 요금 차감 처리를 실행하지 않습니다. 기존 월 요금, 최소 계약 의무, 번호 임대료 및 메시지 사용 요금은 계속 적용됩니다. 현재 설정된 캠페인 요율은 캠페인 요금을 참고하세요.
제한 사항과 불확실한 결과 처리하기
HTTP 400의 경우 필드별 오류를 읽고 길이, 동의 문구 및 캠페인 상태를 확인하세요. 401, 403 또는 404의 경우 API 인증 정보, 허용된 출발지 IP 및 소유권을 확인하세요. 429의 경우 Retry-After의 지시를 따르세요. 500, 502 또는 요청이 중단된 경우에는 캠페인 ID와 존재하는 모든 requestId를 보존한 다음, 다시 제출하기 전에 기존 레코드를 대조하여 상태를 확인하세요.
로컬 스냅샷은 반환된 본문에 따라 달라집니다. 비어 있지 않은 부분 응답에서는 갱신 메타데이터를 포함한 이전 필드가 누락될 수 있으며, 빈 응답에서는 오래된 값이 남을 수 있습니다. 성공했다는 사실만으로 모든 필드가 보존되었다고 판단하지 말고 전체 GET 결과를 확인하세요. 해결되지 않은 차이는 지원팀에 보고하세요. 이 경로는 통신사 할당을 원자적으로 업데이트하지 않으며, 통신사 활성화를 복구하는 범용 작업도 제공하지 않습니다.