LLM 코딩 에이전트용 공용 API 마이그레이션 레퍼런스
사용자 확보 관리 API (legacy)에서 Ads Unified Platform 공용 API로 클라이언트 통합을 마이그레이션하는 LLM 코딩 에이전트에 대한 레퍼런스입니다.
읽는 시간 37분최근 업데이트: 한 달 전
잠재 고객: 이 파일은 LLM 코딩 에이전트(Claude Code 또는 similar)는 레거시 Unity "Advertise API"에서 클라이언트 통합을 마이그레이션합니다. (,/advertise/v1/...서비스)에서 새로운 Unity Ads 광고주 공용 API(mz-advertiser-public-api). 독립형으로 분할됩니다. entity blocks. 각 차단은 무엇이 바뀌었는지 그리고 정확히 어떻게 해야 할지 상태를 명시합니다. 읽기 개념 모델 변경 및 전역 변경 섹션 먼저 - 모든 차단에 적용됩니다./ads/advertiser/public/v1/...
이 파일을 사용하는 방법(에이전트 지침)
- 이 프로시가 아니라 두 계약을 진실의 근원으로 취급하십시오. 레거시 =
. New =
mz-advertiser-public-api/openapi/specs/advertise-v1.yml. 이 가이드에서는 레거시 v1만 해당합니다. 클라이언트가ads-unified-platform/openapi/advertiser/platform-public-v1-routes.yaml를 호출하는 경우 (/advertise/v2alpha1/...) 별도로 및 표면 v2 전용 사용 인간.advertise-v2-alpha.yml - 지정된 순서로 한 번에 한 엔티티 차단을 마이그레이션합니다(앱 → Attribution → Creatives →
소재 팩 → 캠페인 관리 → 캠페인 → 입찰 → 메모리 할당량 → 타게팅 → 할당). 수행
의존하는 블록이 컴파일/패스할 때까지 차단 시작하지 않습니다. 앱 우선: 모든 것이 키에 의해
새로운 어트리뷰션은 즉시 이어집니다(앱 레벨). 관리 룩업(
applicationId/sdk-event-names)은 캠페인보다 먼저 제공되므로 캠페인 설정eligibility - 레거시 기능이 ± No equivalent 아래에 나열되면****
엔드포인트 중지하고 인간에게 열린 질문으로 표면. 가장 중요 예는
(애플리케이션 라이프사이클이 현재 USF에 소유됨) 및 사용 중단 예정 리텐션 제품 영역(리텐션 입찰/적격) — 블록을 참조하십시오.
DELETE app - 각 차단 후 필드 테이블별로 필드 이름을 다시 매핑합니다. 필드가 이동된 것으로 간주하지 마십시오. 표에 "unchanged"라고 표시되지 않는 한 변경되지 않습니다.
- 돈 변경 단위(달러 → 마이크로 달러) 및 앱 식별자 변경 형식 (24-ch hex → UUID)。 이 두 가지 트랜스폼은 거의 모든 차단 터치합니다. 먼저 바로 가져옵니다
개념 모델 변경(첫 번째 읽기)
API는 통합 플랫폼으로 다시 호스팅되었고 "캠페인 세트"(앱)에서 **중심이 변경되었습니다.
플랫폼 (UUID)**에 대한 24자리 Mongo ID로, 하위 리소스 읽기를
캠페인 오브젝트 5개의 개별 단가 엔드포인트가 하나로 축소되었습니다.
Application레거시 모델
조직└── 앱 (campaignSetId, 24자 16진수) ← 경로 "앱" ├── 소재 ├── 소재 팩 └── 캠페인(목적: 설치 |리텐션 |roas|creativeTesting|eventOptimization) ├── cpi-bids | source-bids | roas-bids | 리텐션-입찰 | 이벤트-최적화-입찰 │ (5개의 별도의 하위 리소스, 각각 GET/PUT/PATCH, 달러 문자열) ├── 타게팅(GET + PATCH) ├── 메모리 할당량(GET + PATCH, 달러, 일일 OR dailyPerCountry 맵) └── 소재(한 번에 하나씩 POST/DELETE)
새로운 모델
조직└── 애플리케이션applicationId, UUID) ← 경로 "applications" ├── Creatives(현재 패치 + 삭제) ├── 소재 팩 ├── 어트리뷰션(GET + PATCH, 앱 레벨) ← 새로운 어트리뷰션 배치 └── 캠페인(최적화 타입: cpi|legacyRetention|roas|appEventConversion; isCreativeTesting) ├── bids (ONE PATCH .../bids; roas|매뉴얼 |manualSource|appEvent) ├── 타게팅(패치 전용) ├── 메모리 할당량 한도(패치만, 마이크로 달러, countryGroupDailyLimits) ├── 소재 └── (입찰가 수, 메모리 할당량, 타게팅, 팩 수는 GET 캠페인에서 얻을 수 있습니까?includeFields=...)조직└── 캠페인(새로운 조직 전체 캠페인 목록, appIds 기준으로 필터링)
아래의 모든 변환, 변형을 구동하는 이동:
# | Shift | 마이그레이션의 결과 |
|---|---|---|
| 1 | | 리소스 경로 세그먼트 이름이 변경되었습니다. ID는 |
| 2 | 돈 → 마이크로 달러 | 모든 입찰/예산은 달러 문자열( |
| 3 | 5 단가 → 1 | |
| 4 | 하위 리소스 읽기 폴드인 | 레거시 |
| 5 | | 캠페인 유형 열거형이 변경되고 분할되었습니다( |
| 6 | 속성 재배치 | campaign 생성 바디와 app에서 어트리뷰션 URL을레거시 설정합니다. 새로운 API: 캠페인 업데이트에는 |
| 7 | 할당은 목록 기반입니다. | 요청당레거시 할당/할당 해제된 팩 1개 새 API는 한 호출에서 배열의 |
전역 변경 사항(모든 엔드포인트에 적용)
종횡비 | 레거시 | 신규 |
|---|---|---|
| 호스트 | | |
| 경로 접두어 | | |
| 앱 경로 세그먼트 | | |
| 전체 예제 | | |
| Auth | HTTP Basic(서비스 계정 키) | HTTP Basic은 여전히 작동하며 Bearer JWT( |
| ORG ID | 경로에 있는 | 경로에 있는 |
| 앱 ID(타입 변경) | | |
| Money | 달러 소수점 문자열( |
정수 문자열/숫자(마이크로 달러입니다. 1 USD = 1_000_000 |
| 캠페인 / 소재 / 팩 ID | 24자 육각형 — 변경되지 않은 (아직 | 24자 16진수 — 변경되지 않음 |
| 리스트 엔벨로프 | 모든 곳에서 | ⚡️ 비일관성: 캠페인 및 소재 사용 |
| 파이닝 파라미터 | |
페이지가 지정된 목록(캠페인, 크리에이티브, 소재 팩)의 경우에만 |
권한 부여, 인증역할/권한) — 403이 버그 가정하기 전에 읽어야 합니다.
Authentication은 변경되지 않았습니다(기본 자격 증명과 동일함), 하지만 권한 부여, 인증은 없습니다.
엔드포인트는 게이트웨이 체크 표시된 권한 문자열로 게이트됩니다(새로운
의 사양). 광고주 경로에 필요
사용 권한(, , ,
, , , ...),
Unity Cloud 대시보드의 org 범위 서비스 계정 역할(예: "광고 API 앱
에디터" grants ). 공유
엔드포인트는 또는 퍼블리셔 측의 를 허용합니다.
x-unity-gateway.authorization.rulesadvertise.*advertise.campaigns.*advertise.creatives.*advertise.creative_packs.*advertise.bids.updateadvertise.targeting.updateadvertise.apps.*advertise.apps.get/list/create/update/delete…/applicationsadvertise.apps.*monetize.projects.*에이전트 지침:
- 마이그레이션하기 전에 사용자에게 클라이언트 서비스 계정이 필요한 를 보유하고 있는지 확인하도록 요청합니다. 새로운 API에 대한 광고주 역할 — 레거시 API 자금이 전달되는 것으로 간주 하지 않음.
- 레거시 API에서 작동한 요청이 새 API에서 동일한 값으로 403을 반환하는 경우 자격 증명, 요청 버그가 아니라 누락된 역할 부여로 취급합니다. 중지하고 표면; "수정"을 시도하는 요청을 수정하지 않습니다.
속도 제한(클라이언트 측 백오프 업데이트)
운영 클래스 | 레거시 | 신규 |
|---|---|---|
읽기( | 429 정의됨, 자원당 | 20/s + 8000/hour per resource limiter |
생성( | (batched) | 1/s + 60/hour ( |
업데이트( | (batched) | 1/s + 200/hour ( |
| 입찰 업데이트 | (배칭 배열) | 20/s + 12000/hour( |
| 캠페인 관리 읽기 | — | 6/s + 8000/hour ( |
마스터 엔드포인트 맵
레거시 작업 | 레거시 경로 | New operationId | 새로운 경로 | 차단 |
|---|---|---|---|---|
| | | | A |
| | | | A |
| | | | A |
| | | | A |
| | — | 삭제 애플리케이션 엔드포인트가 보고되지 않은 | A |
| | | | B |
| | | | B |
| | | | B |
| — | — | | | B |
| — | — | | | B |
| | | | C |
| | | | C |
| | | | C |
| | | | C |
| | | | C |
| | | | D |
| | | | D |
| | | | D |
| | | | D |
| | | | D |
| | | | E |
| …SourceBids | | | | E |
| …RoasBids | | | | E |
| …EventOptimizationBids | | | | E |
| …RetentionBids | |
— | 사용 중단 예정인리텐션 입찰 - 더 이상 지원되지 않음 | E |
| | — (캠페인을 통해 읽음) | | F |
| | | | F |
| | — (캠페인을 통해 읽음) | | G |
| | | | G |
| | — (캠페인을 통해 읽음) | | H |
| | | | H |
| | | | H |
| | | | I |
| | | | I |
| | — | ROAS 지원이 더 이상 필요하지 않음, 리텐션 사용 중단 예정 | I |
| — (전화/앱에서 할당됨) | ( | | | J |
차단 A — 앱 → 응용 프로그램
변경한 사항
- 경로 세그먼트 →
apps; idapplications(24-char hex) →campaignSetId(UUID). 이는 모든 캠페인/머티리얼/팩 호출이 중첩된 위험이 가장 높은 리맵입니다. 밑 마이그레이션 중에applicationId맵을 빌드하고 유지합니다.legacy campaignSetId → new applicationId - 는 이제 Create에 대해 필수적이고 명시적 필드입니다(
platform에 의해 암시됨).store - 앱 레벨 어트리뷰션 URL(/
appAttributionClickUrl)이 전용 어트리뷰션 엔드포인트 — 차단 J 를 참조하십시오.appAttributionStartUrl - 는 동등하지 않음(의도적으로 확인됨) 애플리케이션 라이프사이클이 밖으로 이동 광고주가 Unity 서비스 재단(USF)에 대한 범위와 현재 애플리케이션 삭제가 비활성화된 플랫폼 전체. 새 애플리케이션 리소스는 리스트/생성/받기/업데이트만 노출합니다. 이 경우 클라이언트 API 통해 앱 삭제하고 중지하고 표면 표시합니다.
DELETE app - 리스트가 모양을 변경하고 페이지 지정 / 필터를 잃었습니다. 레거시 반환됨
GET …/appswith{ total, offset, limit, results[] }/offsetandlimit/filter[store]쿼리 파라미터. 새로운filter[storeId]는 모든 조직의 빈 JSON 배열을 반환합니다. 애플리케이션 — 엔벨로프, 페이지 지정, 필터 없음 파라미터를 놓고 필터링/페이지 지정 client-side.GET …/applications
필드 매핑 — create (advertise-createApp → CreateApplicationPublicDto)
레거시 필드 | 새 필드 | 참고 |
|---|---|---|
| | 변경되지 않음 |
| | Remap 열거형 → |
| | 변경되지 않은 값 |
| — | | 신규, 필수. 레거시 |
| — | 는 앱 응답에 필드가 없습니다. 표면(클라이언트가 의존한 경우)입니다. |
| | 리스폰스에 존재합니다. 생성 입력이 아니라 서버 측으로 설정합니다. |
| → 어트리뷰션 | 이동. 생성 후 |
| → 어트리뷰션 | 이동. |
| — | | 새로운 선택적 개인정보 보호 오브젝트 |
| — | | 새로운 선택적 그룹화(공유 퍼블리셔/광고주 앱 모델) |
새로운 열거형: , , , , ,
, , , . 새로운 열거형: , , ,
, , , , , , , , , .
storeGooglePlayAppleAppStoreSamsungGalaxyAmazonAppStoreMacAppStoreUDPMicrosoftStoreHuaweiAppGalleryAPKplatformAndroidiOSOSXWindowsLinuxWebGLWindows_StorePS4PS5XboxOnetvOSSwitchVisionOS레거시 → 새로운 (확인): → ; →
; → 실제 스토어에 따라 달라집니다 — Samsung →
, Huawei → ; 스토어를 식별할 수 없을 때
플랫폼은 그것을 에 매핑합니다.
store{store, platform}apple{AppleAppStore, iOS}google{GooglePlay, Android}standalone_android{SamsungGalaxy, Android}{HuaweiAppGallery, Android}{APK, Android}필드 매핑 — 응답(app → ApplicationPublicResponseDto)
레거시 필드 | 새 필드 | 참고 |
|---|---|---|
| | 타입 변경. 매핑을 유지합니다. |
| | 변경되지 않은 |
| | 열거형 리맵(위) |
| | 변경되지 않음(정수, nullable) |
|
— (참고 |
어트리뷰션 리소스로 이동됨 |
| — | almost gone |
|
— (DTO에서 제외) | 앱 응답에서노출되지 않음 |
| — | | new |
⚡️ ID 다시 매핑은 가장 높은 위험 단계입니다. 지속그리고legacy campaignSetId → new {applicationId}를 사용한 모든 다운스트림 경로를 다시 작성합니다.campaignSetId
차단 B — 소재
변경한 사항
- 대신
apps/{campaignSetId}아래에 중첩되었습니다.applications/{applicationId} - 여전히 ,
multipart/form-dataJSON 먼저 바이너리 파일 필드.creativeInfo - 새로운 운영: (이름 변경) 및
PATCH …/creatives/{creativeId}DELETE …/creatives/{creativeId} - 열거형 값의 이름이 변경되었습니다 (snake_case). 다시 맵.
type - 이미지 업로드 한도는 20MB(5MB)로, 플레이어블은 10MB로 증가했습니다.
- 비디오 업로드()는 레거시와 동일하게 작동합니다(API 소유자에 의해 확인). OpenAPI 2026년 7월 말에 출시된 비디오 제작 배리언트를 문서화하는 스키마입니다. 사양에 비디오
videoFile배리언트가 없습니다. 비디오가 지원되지 않는다고 가정하는 대신 사양을 새로 고칩니다.oneOf
type 열거형 리맵
레거시 | 새로운 |
|---|---|
| |
| |
| |
| |
| |
| |
| |
|
지원되지 않는 — 세로/랜드스케이프 비디오만 존재합니다. 표면. |
| — | |
열거형 status
변경되지 않은 세트: , , , , ,
.
uploadedprocessingprocessingFailedpendingModerationapprovedrejected다중 부분 필드 이름
creativeInfosquareEndCardFileportraitEndCardFilelandscapeEndCardFileplayableFilecreativeInfofileNameorientationlandscapeportraitbothCreativePublicResponseDtoidnamelanguagetypestatusfiles[]{name,url}createdAtupdatedAt차단 C — 소재 팩
변경한 사항
- 아래에 중첩되었습니다. CRUD 동사(GET/POST/GET/PATCH/DELETE)
applications/{applicationId} - 는
type,video,playable,video+playable의banner값을 얻습니다.banner - 리스트 엔벨로프는 레거시 스타일의 입니다(캠페인/크리에이티브와는 달리).
{ total, offset, limit, results[] } - 더 풍부한 응답: 추가 ,
applicationId(moderationStatus/pending/approved, nullable),rejected(nullable),ageRating,assignedCampaignIds[]/createdAtupdatedAt
필드 매핑 — create (createCreativePack → CreateCreativePackPublicDto)
레거시 필드 | 새 필드 | 참고 |
|---|---|---|
| | 변경되지 않음 |
| | 변경되지 않음 (24자리 육각형 소재 ID) |
| | 같은 값 + 새로운 |
| | 변경되지 않음(nullable) |
| | 변경되지 않음(UUID, nullable) |
필드 매핑 — 응답
레거시 필드 | 새 필드 | 참고 |
|---|---|---|
| | 24자 육각형 — 변경되지 않음 |
| same | 변경되지 않은 |
| | renamed |
| — | | new |
차단 D — 캠페인
변경한 사항
- 아래에 중첩되었습니다. Get/Update/Delete는 앱별이며, 리스트는 현재 org-wide (
applications/{applicationId}, 필터GET …/organizations/{orgId}/campaigns) — 앱별 목록이 없습니다.appIds - →
goal(+optimizationType부울 +isCreativeTesting).appEventType - 애트리뷰션 URL은 더 이상 캠페인 생성의 일부가 아닙니다. 캠페인을 통해 생성 후 설정
(
PATCH) 또는 앱 어트리뷰션 엔드포인트(차단 J).attributionLinks - 는 생성 필드가 아닙니다. 생성은
scheduleEnd만 사용합니다.start를 통해PATCH를 설정합니다.end - 는
GET campaign(includeFields,bids,budget,creativePacks)를 지원합니다. 는 현재 입찰/메모리 할당량/할당 팩을 읽는 방법입니다.application - 값은 대문자와 확장:
postInstallWindow,D0,D1,D3,D7``D14D28
goal → optimizationType remap
레거시 | 신규 |
|---|---|
| |
| |
| |
| |
| |
필드 매핑 — create (createCampaign → CreateCampaignDto)
레거시 | 신규 |
|---|---|
| |
| |
| |
| |
| |
필드 매핑 — 업데이트(updateCampaign → UpdateCampaignPublicDto)
레거시 필드 | 새 필드 | 참고 |
|---|---|---|
| | 변경되지 않음 |
| | 날짜 → 날짜 시간; |
| | 역감 — |
| | 위문자 |
| | 현재 중첩된 오브젝트입니다. |
⚡️ 업데이트 응답은 더 얇은 오브젝트입니다 (:CampaignPublicDetailsResponseDto,id,name,start,end,autoStart,paused), 전체 캠페인이 아닙니다. 클라이언트가 PATCH 응답에서 다른 캠페인 필드를 읽으면attributionLinks를 통해 다시 페치합니다.GET campaign
필드 매핑 — 응답(레거시 campaign → CampaignPublicResponseDto)
레거시 필드 | 새 필드 | 참고 |
|---|---|---|
| | 24자 육각형 — 변경되지 않음 |
| | 변경되지 않은 |
| | 위의 리맵 표(리버스 방향) |
| | ⚡️ reads too에 반전된 의미 — |
|
— | 새로운 응답에 대해가 보고하지 않았습니다. 표면에 클라이언트가 브랜치하는 경우. |
| | date → datetime; |
| | 이름 변경 + 값 변경( |
| | 이름 변경; |
|
— | 리텐션 입찰사용 중단 예정** — 쓰기 지원 없음, 읽기 값은 레거시 전용으로 취급 |
| | |
| | 열거형 이름 변경, 단일 → 배열 |
| | 상주; |
| | 변경되지 않은 |
| — | | 새로운 — 새로운 사양을 참조하십시오 |
includeFields를 통한 읽기
캠페인의 입찰/메모리 할당량/할당 팩에 대한 레거시 읽기에는 별도의 GET이 사용되었습니다. 지금:
. 단가 배열,
캠페인 오브젝트에 , 및 전체 가 반환됩니다.
GET …/campaigns/{campaignId}?includeFields=bids,budget,creativePacks,applicationbudgetcreativePackIds[]application차단 E — 입찰(단계점 5개 → 1개)
변경한 사항
레거시 하위 리소스 5개(, , , ,
), 각각 // over dollar strings, collapse into a
표준 바디 위의 단일 (마이크로 달러) 이건
no GET — 를 통해 현재 입찰을 확인하십시오.
cpi-bidssource-bidsroas-bidsretention-bidsevent-optimization-bidsGETPUTPATCHPATCH …/campaigns/{campaignId}/bidsGET campaign?includeFields=bids엔드포인트 + 바디 리맵
레거시 하위 리소스 |
| 엔트리당 모양(신규) |
|---|---|---|
| | |
| | |
| | |
| | |
| 지원 중단 예정 — 지원 안 함 | 레거시 |
재화 변환하다(동사), 트랜스폼(명사)중요)
레거시 달러 문자열 → 새로운 마이크로 달러: 1_000_000을 곱합니다. → . ROAS
/ (확인): 레거시 ROAS 는 백분율 문자열( = 12.34%)입니다.
새로운 는 100으로 나누는 소수점 비율입니다( → ; 10% → ).
시맨틱(API 소유자 확인):
"0.201"201000goaltargetgoal"12.34"target"12.34"0.12340.10레거시 PUT/PATCH 모델 | 새로운 모델 |
|---|---|
| 단일 |
지급 단가(확인): 의 해당 단가 유형에 대한 빈 배열 를 전송합니다.
레거시 효과
PATCH[]PUT []⚡️ 새로운가 병합이 아니라 교체하기 때문에 레거시PATCH의 순진한 포팅 (병합) 콜은 요청에 포함되지 않은 모든 단가를 침묵적으로 내립니다. 전환 레거시 병합 스타일 전체 쓰기 업데이트:PATCH를 통해 현재 단가를 읽고, 델타로 로컬에서전체 배열 전송합니다GET campaign?includeFields=bids
차단 F — 메모리 할당량 → 메모리 할당량 한도
변경한 사항
- 가 사라졌습니다 →
GET …/budget를 통해 읽습니다.GET campaign?includeFields=budget - →
PATCH …/budget.PATCH …/campaigns/{campaignId}/budget-cap - 달러 → 마이크로 달러 (문자열).
- 국가별 맵()은 명명된 국가 그룹(
dailyPerCountry: { "US": "123.45", … }).countryGroupDailyLimits: [{ name, countries[], limit }] - 응답에 대한 새로운 명시적 유형의 차별 요소: (
campaignLimitType/unlimited),total(dailyLimitType/daily/countryDaily).unlimited
필드 매핑(budget → PatchBudgetCapDto)
레거시 필드 | 새 필드 | 참고 |
|---|---|---|
| | ×1e6. 한도 표현 시맨틱은 레거시(API 소유자별): |
| | ×1e6 |
| | 재구성: 각 |
|
— (캠페인 메모리 할당량 참조) | 패치 리스폰스가 | 아닌 캠페인 예산 읽기에 표시됩니다.
차단 G — 타게팅
변경한 사항
- is gone →
GET …/targeting에서 타게팅 필드를 읽습니다.GET campaign - 가 남았지만 바디가 재구성되었습니다 대부분의 레거시 기기 필드는 내려갔습니다 (그들은 이미 레거시 사양의
PATCH …/targeting이었습니다).deprecated
필드 매핑(targetingOptions → UpdateCampaignPublicTargetingDto)
레거시 필드 | 새 필드 | 참고 |
|---|---|---|
| | 이름 변경(소스 앱 ID) |
| | 현재 공급자별 카테고리 목록 |
| | restructured |
| | restructured |
| | 현재 subdivision-id 기반 |
| — | 가 제거됨 보고됨(확인됨 - 통합에서 구성할 수 없음). 이를 설정하는 클라이언트 코드를 삭제하고 휴먼에게 해당 드롭을 언급합니다. |
차단 H — 할당된 소재 팩(현재 목록 기반)
변경한 사항
- 레거시 할당/할당되지 않은 요청당 한 팩(/
POST).DELETE …/assigned-creative-packs - 새 API는 다음과 같은 리스트에서 작동합니다.
- 가 있는
{ creativePackIds: [...] }— 는 할당된 세트를 제공된 ID로 대체합니다.PATCH …/campaigns/{campaignId}/assign-creative-pack - 가 있는
{ creativePackIds: [...] }— 는 나열된 ID를 제거합니다.DELETE …/campaigns/{campaignId}/unassign-creative-pack
- 현재 할당된 팩 목록: (
GET campaign?includeFields=creativePacks).creativePackIds[]
마이그레이션 방식
클라이언트가 캠페인에 할당한 모든 팩을 수집한 다음 한 개의 를 만듭니다.
전체 배열(N s 대신) 시맨틱이 확인됨: 엔드포인트가 **
제공된 로 할당** 완료 — 항상 원하는 전체 세트를 보내거나
배열 누락된 팩은 할당되지 않습니다.
PATCH assign-creative-packPOSTcreativePackIds차단 I — Audience Pinpointer → 캠페인 관리
변경한 사항
레거시 | 신규 |
|---|---|
| |
| |
|
제거된 — ROAS 캠페인 자격이 더 이상 필요하지 않음, 게이트 로직 삭제 |
|
제거된 — 리텐션 사용 중단 예정** 완료, 표면 액티브 리텐션 사용 |
sdk-event-names{ total, results[]{ eventOptimizationType, sdkEventNames[] } }eligibility{ total, results[]{ eventOptimizationType, countries[] } }차단 J — Attribution (relocated)
변경한 사항
어트리뷰션 URL이 이전에 앱(/)에서 설정되어 전달되었습니다.
into campaign create . 새로운 API에는 전용 앱 레벨 어트리뷰션 리소스와
캠페인 업데이트에 대한 캠페인별 .
appAttributionClickUrlStartUrlattributionLinks- →
GET …/applications/{applicationId}/attribution.{ id, startUrl, clickUrl, viewUrl?, partner, type?, createdAt, updatedAt } - with
PATCH …/applications/{applicationId}/attribution.{ startUrl?, clickUrl?, viewUrl? }
partnerotheradjustairbridgeappsflyerbranchbytebrewkochavamailrusingulartenjinyandextypeuserLevelnonUserLevelmixed마이그레이션 방식
- 앱 레벨 이동 /
appAttributionClickUrl→appAttributionStartUrl(PATCH …/attribution/clickUrl).startUrl - 캠페인 만들기 이동 /
attributionClickUrl→ 캠페인의attributionStartUrl(PATCH) 캠페인을 생성한 후.attributionLinks.{clickUrl,startUrl,viewUrl} - 는 새로운(선택 사항).
viewUrl및 기타 URL 매크로: 확인 규칙은 공유 레거시 API와 신규 API 모두에서 사용되는 어트리뷰션 검증 라이브러리(확인됨), 따라서 매크로 동작 변경되지 않으며 레거시 URL을 그대로 유지합니다.{ifa}
권장 마이그레이션 알고리즘(에이전트 결정적 순서)
- 설정: 호스트를 로 바꾸고 경로 접두사
…/ads/advertiser→/advertise/v1및/public/v1세그먼트 →apps. 기본 인증을 유지합니다.applications - 앱(차단 A): 각 레거시 앱에 대해 (리맵
POST …/applications→store).{store, platform}지속。 어트리뷰션 ** 보내지 않음** URL은 여기에 있습니다.legacy campaignSetId → new applicationId - 속성(차단 J): 예전 앱 레벨 URL을 합니다.
PATCH …/applications/{id}/attribution - 크리에이티브(차단 B): 다시 업로드/다시 매핑하여 열거형을 변환합니다. 지속 ID가 새로 고정되면
type(ID가 보존되는지 확인).legacy creativeId → new creativeId - 머티리얼 팩(차단 C): 새로운 소재 ID를 참조하는 팩을 생성합니다.
- 캠페인 관리(차단 I): 청중-피인포인터 룩업을 재지정 —
→
…/audience-pinpointer/sdk-event-names및…/applications/{id}/sdk-event-names→…/audience-pinpointer/event-optimization-info. 읽기 전용; 결과를 사용하여 캠페인…/applications/{id}/eligibility/appEventType및 자격이 있는 국가를 알립니다. ROAS-info 게이트 로직은 삭제할 수 있습니다(자격 요건이 더 이상 필요하지 않음). 리텐션 사용 중단 예정 리텐션 제품이 사용 중단 예정입니다(단계 13 참조).sdkEventNames - 캠페인(차단 D): 로 제작(+
optimizationType/isCreativeTesting/appEventType),roasType만 해당. 그런 다음start는PATCH,end,attributionLinks,autoStart를 설정합니다.paused - 입찰가(차단 E): 달러 → 마이크로 달러 전환(ROAS 목표: 백분율 → 소수점 비율,
÷100); 단가 유형별로 원하는 완전한 세트가 있는 하나를 보내야 합니다(패치 대체, 병합하지 않음,
PATCH …/bids제거). 리텐션 단가는 지원 사용 중단 예정 예정이며 마이그레이션하지 마십시오. 표면 사용.[] - 메모리 할당량 (차단 F): 마이크로 달러 단위의 ; 전환
PATCH …/budget-cap맵 →dailyPerCountry.countryGroupDailyLimits[] - 타게팅(차단 G): /
appleDevice/source+category 목록으로 재구성 분리된 기기 필드(표면).androidDevice - 할당(차단 H): 캠페인당 하나의 목록 기반 .
PATCH assign-creative-pack - 읽기: 모든 를
GET …/{bids,budget,targeting,assigned-creative-packs}.GET campaign?includeFields=… - 제거된 기능(표면에서 사람): (USF 소유의 앱 라이프사이클, 삭제 사용 중단 예정 리텐션 제품(입찰 + 자격), ROAS 자격 게이트(더 이상 필요하지 않음 — 삭제), 레거시 사용 중단 예정 타겟 필드,
DELETE app,adomain소재squareVideo
확인 체크리스트(마이그레이션 후 실행)
- 요청 경로에는 ,
/advertise/v1,/apps/,/cpi-bids,/source-bids,/roas-bids,/retention-bids,/event-optimization-bids,/audience-pinpointer또는/assigned-creative-packs(현재…/budget).budget-cap - 모든 앱 경로는 새로운 UUID 를 사용하고 24자리 16진수
applicationId는 사용하지 않습니다.campaignSetId - 모든 화폐 값은 마이크로 달러(정수)이며, 처럼 달러 소수점이 아닙니다.
"2500.20" - 입찰은 단일 로 이동하고 읽기에는
PATCH …/bids가 사용됩니다.GET campaign?includeFields=bids - 모든 단가 는 단가 유형에 대한 완전한 세트를 전송합니다(대체 시맨틱 - 부분 는 누락된 입찰을 내립니다.) 레거시 병합 스타일 업데이트는 읽기-수정-쓰기로 전환되었습니다.
PATCH - ROAS 타겟은 백분율 문자열에서 소수점 비율(→
"12.34")으로 전환되었습니다.0.1234 - 메모리 할당량은 +
budget-cap(countryGroupDailyLimits[]맵 없음)를 사용합니다.dailyPerCountry - 캠페인 가
goal(+optimizationType)로 다시 매핑되고 어트리뷰션 URL은 캠페인 생성이 아닌isCreativeTesting/attributionLinks를 통해 설정됩니다.…/attribution - 소재 는 새로운 snake_case 값(
type,end_card_square, ...)을 사용합니다.video_portrait - 레거시 의 모든 읽음은 반전된 의미로
enabled로 다시 매핑되었습니다 (paused⇒enabled:true) — 리스트, 수신 및 업데이트 응답 모두.paused:false - 아무것도 캠페인 응답에서 전체 캠페인 필드를 파싱하지 않습니다. details 오브젝트); 전체 상태는
PATCH를 통해 다시 페치됩니다.GET campaign?includeFields=… - 애플리케이션 리스트 파싱은 베어 배열(엔벨로프 없음)을 예상하고 더 이상 전송
{total, results}/offset/limit/filter[store].filter[storeId] - 할당 캠페인당 하나의 리스트 기반 호출 사용하며, N개의 단일 할당이 사용되지 않습니다.
- , 사용 중단 예정 리텐션 사용(입찰/적격),
DELETE app소재 및 제거된 타게팅 필드가 휴먼에게 공백으로 표시되었습니다(클라이언트 사용한 경우). ROAS 자격 게이트가 삭제되었습니다.squareVideo
빠른 레퍼런스: 제거됨 / 동등하지 않음(모두 마이그레이션하거나 생성하지 않음 - 모두 API 소유자에 의해 확인됨)
- — 삭제 애플리케이션 엔드포인트가 없습니다. 앱 라이프사이클은 USF가 소유하고 삭제는 현재 플랫폼 전체에서 비활성화되어 있습니다.
DELETE app - ROAS-info — 제거됨, ROAS 캠페인에는 더 이상 자격이 필요하지 않습니다. 게이트 로직을 삭제합니다.
- 리텐션(전체 제품 영역) — 사용 중단 예정: 및 리텐션 입찰 단가가 없음 successor。 표면 활성 리텐션 캠페인/입찰 단가
retention-info - GET 입찰 / 메모리 할당량 / 타게팅 / 할당된 팩 — 로 대체.
GET campaign?includeFields=… - 레거시 중단 예정 타게팅 필드(,
limitedAdTracking,connectionType,screenSize,screenDensity,allowedDevices) 및 앱osMax— 에서 구성할 수 없음 통합; 클라이언트 코드를 삭제합니다.adomain - 소재 유형 — 지원되지 않음,
squareVideo/video_portrait만 지원video_landscape