ドキュメント

LLM コーディングエージェントの広告主向け公開 API 移行リファレンス

LLM コーディング エージェントが、クライアントのインテグレーションをユーザー獲得管理 API (legacy)から Ads 統合プラットフォームのパブリック API に移行するためのリファレンス。
読み終わるまでの所要時間 68 分最終更新 1ヶ月前

オーディエンス:このファイルは、LLM コーディングエージェント (クロードコードまたは Unityの古い機能である「Advertise API」からクライアントのインテグレーションを移行するタスク (
/advertise/v1/...
、
mz-advertiser-public-api
サービス) を新しい Unity Ads に送信 Advertiser Public API (
/ads/advertiser/public/v1/...
)。自己完結型に分割されます。 エンティティブロック。各ブロックには_、変更内容_と_具体的な対応_が示されます。を読む まず、概念モデル変更とグローバル変更のセクションがあります。これらはすべてのブロックに適用されます。

このファイルの使用方法(エージェントの手順)

  1. この散文ではなく、2 つの契約を真実のソースとして扱います。古い機能 =
    mz-advertiser-public-api/openapi/specs/advertise-v1.yml
    .新規 =
    ads-unified-platform/openapi/advertiser/platform-public-v1-routes.yaml
    .このガイドでは、 古い機能 v1 のみ。クライアントが
    /advertise/v2alpha1/...
    を呼び出す場合は、そのスペシフィケーションの差分 (
    advertise-v2-alpha.yml
    ) を別に作成し、v2 のみの使用をユーザーに提示します。
  2. 指定した順序でエンティティブロックを1つずつ移行します(「Apps(アプリケーション)」、「Attribution(アトリビューション)」、「Creatives(クリエイティブ)」、「 クリエイティブパック → キャンペーン管理 → キャンペーン → 入札 → バジェット → ターゲティング → 割り当て)。実行 依存するブロックがコンパイル/パスされるまでブロックを開始しない。アプリケーションファースト: すべてが 新しい
    applicationId
    。アトリビューションは即座に続き(アプリケーションレベル)、キャンペーンは 管理検索(
    sdk-event-names
    /
    eligibility
    )はキャンペーンの前に来ます。なぜなら、キャンペーンがフィードされるためです。 キャンペーン設定。
  3. レガシー機能が 🚫 No equivalent (同等の機能 なし) の下にリストされている場合、 エンドポイント。停止し、オープンな質問としてユーザーに提示します。最も重要な例は以下のとおりです。
    DELETE app
    (アプリケーション ライフサイクルは現在 USF が所有しています)と非推奨のリテンション product area (リテンション入札/適格性) — ブロックを参照してください。
  4. 各ブロックの後に、フィールドテーブルごとにフィールド名を再マップする。フィールドは持ち越されないと仮定する テーブルに "unchanged" と表示されていない限り変更されません。
  5. 両替単位 (ドル → マイクロドル) とアプリケーション ID の変更の種類 (24 文字の hex → UUID)。この 2 つの Transform はほとんどすべてのブロックに触れます。最初に正しく

概念モデルの変更 (最初にお読みください)

APIは統合プラットフォームに再ホストされ、「キャンペーン セット」(アプリケーション)が中心になりました。 プラットフォーム
Application
(UUID) に対する 24 文字の Mongo ID として
、サブリソース読み取りは キャンペーン オブジェクトと 5 つの別々の入札エンドポイントが 1 つに折りたたまれます。

古い機能モデル

組織└── アプリケーション (campaignSetId、24 文字の 16 進数) ← パス内の "apps" ├──クリエイティブ ├── クリエイティブパック └── Campaign (goal: installs|retention|roas|creativeTesting|eventOptimization) ├── cpi-bids | source-bids | roas-bids | retention-bids | event-optimization-bids │ (5 つの異なるサブリソース、各 GET/PUT/パッチ、ドル文字列) ├── ターゲット設定 (GET + パッチ) ├── バジェット (GET + パッチ、ドル、日または日ごとの国別マップ) └─── 割り当て済みクリエイティブパック (POST/DELETE を 1 つずつ)

新しいモデル

組織└── アプリケーション (applicationId、UUID) ← パス内の "applications" ├── クリエイティブ (パッチ + 削除も可) ├── クリエイティブパック ├── アトリビューション(GET + パッチ、アプリケーションレベル) ← アトリビューションの新しい配置 └── キャンペーン(optimizationType:cpi|legacyRetention|roas|appEventConversion、isCreativeTesting) ├── 入札(1パッチ.../入札、roas|manual|manualSource|appEvent) ├── ターゲット設定 (パッチのみ) ├── バジェットキャップ(パッチのみ、マイクロドル、countryGroupDailyLimits) ├── assign-creative-pack / unassign-creative-pack (リストベースのパッチ/削除) └── (入札/バジェット/ターゲティング/パックの読み取りは GET キャンペーン?includeFields=… から取得)組織└─── キャンペーン(新しい組織全体のリスト、appIds によるフィルター)
以下のすべてのトランスフォーメーションを推進するシフト:

#

Shift

移行の結果

1
apps
→
applications
リソース パス セグメントの名前が変更されました。ID は
campaignSetId
(16 進数で 24 文字)から
applicationId
(UUID)に変わります。
legacy campaignSetId → new applicationId
ルックアップをビルドします。
2マネー → マイクロドルすべての入札/予算はドル文字列(
"0.201"
、
"2500.20"
)でした。新しい API は整数 マイクロドル (1 USD = 1_000_000) です。1e6 で乗算します。
3入札エンドポイント×5 → 1
cpi/source/roas/retention/event-optimization-bids
は、型付きのボディを持つ 1 つの
PATCH …/bids
に折り畳まれます。No GET bids —
GET campaign?includeFields=bids
で読み取ります。
4折り畳まれたサブリソース読み取り古い機能
GET …/budget
、
GET …/targeting
、
GET …/*-bids
、
GET …/assigned-creative-packs
は失われています。
GET campaign?includeFields=bids,budget,creativePacks
から読み取ります。
5
goal
→
optimizationType
キャンペーンタイプ enum が変更および分割されました (
creativeTesting
は
isCreativeTesting
ブーリアンになり、
eventOptimization
は
appEventConversion
+
appEventType
になりました)。
6Attribution movedキャンペーン作成ボディとアプリケーションの古い機能セットのトラッキングURL。新しいAPI:キャンペーン更新には
attributionLinks
がかかりますが、アプリケーションレベルの専用
GET/PATCH …/attribution
が用意されています。キャンペーンの create ではアトリビューション URL は受け付けられなくなりました。
7割り当てはリストベース古い機能の割り当て/割り当て解除はリクエストごとに1パック。新しい API は、1 回の呼び出しで
creativePackIds
の 配列 と置き換え/削除します。

グローバル変更(すべてのエンドポイントに適用)

アスペクト

古い機能

新規

Host
https://services.api.unity.com
https://services.api.unity.com/ads/advertiser
(本番) ·
https://staging.services.api.unity.com/ads/advertiser
(ステージング)
パスプレフィックス
/advertise/v1
/public/v1
アプリケーションパスセグメント
…/organizations/{orgId}/apps/{campaignSetId}
…/organizations/{organizationId}/applications/{applicationId}
完全な例
…/advertise/v1/organizations/{orgId}/apps/{campaignSetId}/campaigns
…/ads/advertiser/public/v1/organizations/{orgId}/applications/{applicationId}/campaigns
AuthHTTP Basic(サービスアカウントキー)HTTP Basic は引き続き機能します。Bearer JWT (
unity
/
ads
発行者) も使用可能です。認証情報は変更されませんが、必要なロール/権限が異なります — 後述の「承認」を参照してください。
Org idパス内の
organizationId
(int64)
パス内の
organizationId
(Genesis ID、数値): 変更なし
App ID (タイプ変更)
campaignSetId
:24 文字の 16 進数(
^[0-9a-fA-F]{24}$
)
applicationId
— UUID
お金ドル 10 進数文字列(
"2500.20"
、入札
"0.201"
)
microdollars as integer strings/numbers (
"2500200000"
); 1 USD = 1_000_000
キャンペーン/クリエイティブ/パック ID24 文字の hex — 変更なし (
^[a-f0-9]{24}$
)
24 文字の hex — 変更なし
リストエンベロープ
{ total, offset, limit, results[] }
everywhere
⚠️ 一貫性がない: キャンペーンとクリエイティブで
{ items[], meta:{ total, limit, offset } }
を使用。クリエイティブパックで
{ total, offset, limit, results[] }
を使用。アプリケーションがベア JSON 配列を返す (エンベロープなし、ページ分割なし)。エンドポイントごとの解析。
ページ分割パラメーター
offset
(0)、
limit
(最大1000、デフォルト1000):すべてのリスト
offset
(0)、
limit
(デフォルト 100)は、ページ処理されたリスト(キャンペーン、クリエイティブ、クリエイティブパック)のみ。
GET …/applications
takes neither
:そこにパラメーターをドロップ(ブロック A)

承認 (ロール/権限) — 403 がバグであると仮定する前にお読みください。

Authentication は変更されません(同じ Basic クレデンシャル)。ただし、承認は変更されません。新しい エンドポイントは、ゲートウェイでチェックされた権限文字列によってゲートされます(新しい spec under
x-unity-gateway.authorization.rules
)。広告主ルートには
advertise.*
が必要です permissions (
advertise.campaigns.*
、
advertise.creatives.*
、
advertise.creative_packs.*
、
advertise.bids.update
、
advertise.targeting.update
、
advertise.apps.*
、…)、 Unity Cloudダッシュボードでの組織スコープ サービス アカウント ロール(例:「API アプリの宣伝」 Editor" は
advertise.apps.get/list/create/update/delete
を付与します)。共有
…/applications
エンドポイントは、
advertise.apps.*
またはパブリッシャー側の
monetize.projects.*
のいずれかを受け入れます。
エージェント指示:
  1. 移行前に、クライアントのサービス アカウントに必要な情報が保持されているかどうかをユーザーに確認してもらう 新しい API の広告主の役割:古い機能 API の付与は引き継がれないでください。
  2. 古い API で動作したリクエストが新しい API で 403 を返し、 認証情報がある場合は、リクエストのバグではなく、ロールの付与が欠落しているものとして扱います。停止および表面化; リクエストを「修正」しようとして変更しないでください。

レート制限(クライアント側バックオフの更新)

操作クラス

古い機能

新規

読み取り (
GET
)
429 defined; per-resourceリソース リミッタあたり20/秒 + 8000/時
作成 (
POST
)
(batched)1/秒 + 60/時間 (
advertiseCreate
)
アップデート (
PATCH
/
DELETE
)
(バッチ処理)1/s + 200/hour (
advertiseModify
)
入札の更新(バッチ アレイ)20/秒 + 12000/時 (
advertiseBids
) + 階層の変更
キャンペーン管理読み取り—6/s + 8000/hour (
advertiseCampaignManagement
)

マスター エンドポイント マップ

古い機能操作

古い機能ルート

新しい operationId

新規ルート

ブロック

advertise-listApps
GET …/apps
publicOrganizationApplications
GET …/applications
A
advertise-createApp
POST …/apps
publicCreateApplication
POST …/applications
A
advertise-getApp
GET …/apps/{campaignSetId}
publicGetApplicationById
GET …/applications/{applicationId}
A
advertise-updateApp
PATCH …/apps/{campaignSetId}
publicUpdateApplication
PATCH …/applications/{applicationId}
A
advertise-deleteApp
DELETE …/apps/{campaignSetId}
—🚫 アプリケーション削除エンドポイントなしA
advertise-listCreatives
GET …/apps/{id}/creatives
publicGetCreatives
GET …/applications/{id}/creatives
B
advertise-createCreative
POST …/apps/{id}/creatives
(マルチパート)
publicCreateCreative
POST …/applications/{id}/creatives
(マルチパート)
B
advertise-getCreative
GET …/creatives/{creativeId}
publicGetCreativeById
GET …/applications/{id}/creatives/{creativeId}
B
——
publicUpdateCreativeById
PATCH …/creatives/{creativeId}
(NEW: 名前の変更)
B
——
publicDeleteCreativeById
DELETE …/creatives/{creativeId}
(NEW)
B
advertise-listCreativePacks
GET …/creative-packs
publicGetCreativePacks
GET …/applications/{id}/creative-packs
C
advertise-createCreativePack
POST …/creative-packs
publicCreateCreativePack
POST …/applications/{id}/creative-packs
C
advertise-getCreativePack
GET …/creative-packs/{packId}
publicGetCreativePackById
GET …/applications/{id}/creative-packs/{creativePackId}
C
advertise-updateCreativePack
PATCH …/creative-packs/{packId}
publicUpdateCreativePack
PATCH …/creative-packs/{creativePackId}
C
advertise-deleteCreativePack
DELETE …/creative-packs/{packId}
publicDeleteCreativePack
DELETE …/creative-packs/{creativePackId}
C
advertise-listCampaigns
(アプリごと)
GET …/apps/{id}/campaigns
publicGetCampaigns
(組織全体)
GET …/organizations/{orgId}/campaigns?appIds={applicationId}
D
advertise-createCampaign
POST …/apps/{id}/campaigns
publicCreateCampaign
POST …/applications/{id}/campaigns
D
advertise-getCampaign
GET …/campaigns/{campaignId}
publicGetCampaignById
GET …/applications/{id}/campaigns/{campaignId}?includeFields=…
D
advertise-updateCampaign
PATCH …/campaigns/{campaignId}
publicUpdateCampaign
PATCH …/applications/{id}/campaigns/{campaignId}
D
advertise-deleteCampaign
DELETE …/campaigns/{campaignId}
publicDeleteCampaignById
DELETE …/applications/{id}/campaigns/{campaignId}
D
advertise-list/replace/patchCpiBids
GET/PUT/PATCH …/campaigns/{id}/cpi-bids
publicUpdateBids
(
manualBids
)
PATCH …/campaigns/{campaignId}/bids
E
…SourceBids
…/source-bids
publicUpdateBids
(
manualSourceBids
)
PATCH …/campaigns/{campaignId}/bids
E
…RoasBids
…/roas-bids
publicUpdateBids
(
roasBids
)
PATCH …/campaigns/{campaignId}/bids
E
…EventOptimizationBids
…/event-optimization-bids
publicUpdateBids
(
appEventBids
)
PATCH …/campaigns/{campaignId}/bids
E
…RetentionBids
…/retention-bids
—🚫リテンション入札は非推奨 — サポート終了E
advertise-getBudget
GET …/campaigns/{id}/budget
— (キャンペーンで読む)
GET campaign?includeFields=budget
F
advertise-updateBudget
PATCH …/campaigns/{id}/budget
publicPatchCampaignBudgetCap
PATCH …/campaigns/{campaignId}/budget-cap
F
advertise-getTargeting
GET …/campaigns/{id}/targeting
— (キャンペーンで読む)
GET campaign
(レスポンスのターゲティングフィールド)
G
advertise-updateTargeting
PATCH …/campaigns/{id}/targeting
publicPatchCampaignTargeting
PATCH …/campaigns/{campaignId}/targeting
G
advertise-listAssignedCreativePacks
GET …/campaigns/{id}/assigned-creative-packs
— (キャンペーンで読む)
GET campaign?includeFields=creativePacks
H
advertise-assignCreativePack
(one)
POST …/assigned-creative-packs
publicAssignCreativePacks
(list)
PATCH …/campaigns/{campaignId}/assign-creative-pack
H
advertise-unassignCreativePack
(one)
DELETE …/assigned-creative-packs/{id}
publicUnassignCreativePacks
(list)
DELETE …/campaigns/{campaignId}/unassign-creative-pack
H
advertise-listSdkEventNames
GET …/audience-pinpointer/sdk-event-names
publicGetSdkEventNames
GET …/applications/{id}/sdk-event-names
I
advertise-listEventOptInfo
GET …/audience-pinpointer/event-optimization-info
publicGetCampaignManagementEligibility
GET …/applications/{id}/eligibility
I
advertise-listRoasInfo
/
…RetentionInfo
GET …/audience-pinpointer/roas-info
/
…/retention-info
—🚫 ROAS に適格性は必要なくなりました。リテンションは非推奨ですI
— (アトリビューションはキャンペーン/アプリでした)(
attributionClickUrl
/
attributionStartUrl
)
publicGetApplicationAttribution
/
publicUpdateApplicationAttribution
GET/PATCH …/applications/{id}/attribution
J

ブロック A — アプリ → アプリケーション

変更内容

  • パス セグメント
    apps
    →
    applications
    ; ID
    campaignSetId
    (16 進数で 24 文字) →
    applicationId
    (UUID)。これは最もリスクの高い再マップします。キャンペーン/クリエイティブ/パック呼び出しはすべてネストされます。 その下に移行中に
    legacy campaignSetId → new applicationId
    マップをビルドおよび維持します。
  • platform
    は、作成時に必須の明示的なフィールドになりました (
    store
    によって暗示されました)。
  • アプリケーションレベルのトラッキング URL (
    appAttributionClickUrl
    /
    appAttributionStartUrl
    ) は 専用アトリビューションエンドポイント — ブロック J を参照してください。
  • DELETE app
    に同等
    の機能はありません (意図的なものと確認済み)。アプリケーションライフサイクルの移行 Unity Services Foundation (USF) に対する広告主の範囲であり、アプリケーション削除は現在 プラットフォーム全体で無効。新しいアプリケーションリソースはリスト/作成/取得/更新のみを公開します。もし クライアントは API を介してアプリケーションを削除し、停止して表示します。
  • リストの形状が変更され、ページ処理/フィルタが失われました。古い機能
    GET …/apps
    が返されました
    offset
    /
    limit
    と
    filter[store]
    /
    filter[storeId]
    の
    { total, offset, limit, results[] }
    クエリ params。New
    GET …/applications
    は、すべての組織の
    ベア JSON 配列
    を返します。 アプリケーション — エンベロープ、ページ処理、フィルタなし。params とフィルター/ページ処理のドロップ client-side.

フィールドマッピング — 作成 (advertise-createApp → CreateApplicationPublicDto)

古い機能フィールド

新しいフィールド

ノート

name
(必須)
name
(必須)
unchanged
store
(
apple
/
google
/
standalone_android
)
store
+
platform
enum を再マップする →
AppleAppStore
/
GooglePlay
/… ** と**
platform
を設定 (
iOS
/
Android
/…)。
storeId
(必須)
storeId
(任意)
unchanged value
—
platform
(必須、enum)
新規、必須。古い機能
store
を継承します。
adomain
—🚫 アプリケーション反応のフィールドがありません。クライアントが依存している場合に表面化します。
gameId
(整数)
gameId
(integer、nullable)
反応に存在します。作成入力ではなく、サーバー側で設定します。
appAttributionClickUrl
→ 帰属
clickUrl
移動。 作成後に
PATCH …/attribution
で設定します (ブロック J)。
appAttributionStartUrl
→ 帰属
startUrl
移動
PATCH …/attribution
(ブロック J) で設定します。
—
privacy.coppa
,
privacy.mixedAudience
new 任意 privacy オブジェクト
—
projectId
/
projectName
新しい任意グループ化(パブリッシャー/広告主共有アプリケーションモデル)
New
store
enum:
GooglePlay
、
AppleAppStore
、
SamsungGalaxy
、
AmazonAppStore
、
MacAppStore
、
UDP
,
MicrosoftStore
,
HuaweiAppGallery
,
APK
.New
platform
enum:
Android
、
iOS
、
OSX
、
Windows
,
Linux
,
WebGL
,
Windows_Store
,
PS4
,
PS5
,
XboxOne
,
tvOS
,
Switch
,
VisionOS
.
古い機能
store
→ 新しい
{store, platform}
(確認済み):
apple
→
{AppleAppStore, iOS}
、
google
→
{GooglePlay, Android}
;
standalone_android
→ 実際のストアによる — Samsung →
{SamsungGalaxy, Android}
、Huawei →
{HuaweiAppGallery, Android}
。ストアが特定できない場合 プラットフォームはそれを
{APK, Android}
にマップします。

フィールドマッピング — 反応 (app → ApplicationPublicResponseDto)

古い機能フィールド

新しいフィールド

ノート

id
(24 文字の 16 進数、
campaignSetId
)
id
(UUID)
型の変更。 マッピングを維持します。
name
name
unchanged
store
/
storeId
store
/
storeId
enum 再マップする (前述)
gameId
gameId
unchanged (integer、nullable)
appAttributionClickUrl
/
StartUrl
:(
…/attribution
を参照)
Attribution リソースに移動しました
adomain
—🚫 行ってしまった
createdAt
/
updatedAt
:(DTO にない)アプリケーション反応で公開されない
—
platform
,
iconUrl
,
projectId
,
testMode
,
kidsSettings
,
coppa
,
mixedAudience
新規
⚠️ **IDを再マップすることは最もリスクの高いステップです。**Persist
legacy campaignSetId → new {applicationId}
campaignSetId
を使用したすべてのダウンストリーム パスを書き換えます。

ブロック B — クリエイティブ

変更内容

  • apps/{campaignSetId}
    の代わりに
    applications/{applicationId}
    の下にネストされています。
  • それでも
    multipart/form-data
    、最初に JSON を
    creativeInfo
    してからバイナリファイルフィールド。
  • 新しい操作:
    PATCH …/creatives/{creativeId}
    (名前の変更) と
    DELETE …/creatives/{creativeId}
    。
  • type
    enum 値
    が変更されました(snake_case)。再マップ。
  • 画像アップロード制限が 20 MB (5 MB) に増加。プレイアブルは 10 MB。
  • ビデオアップロード (
    videoFile
    ) は古い
    機能 (API 所有者の確認が必要) とまったく同じように機能します。OpenAPI 2026 年 7 月下旬に上陸した動画作成バリアントを文書化したスキーマ。 spec にはビデオ
    oneOf
    バリアントがありません。ビデオがサポートされていないと仮定するのではなく、spec を更新してください。

type enum 再マップする

古い機能
type

新しい
type

squareEndCard
end_card_square
endCardPair
end_card_pair
portraitVideo
video_portrait
landscapeVideo
video_landscape
responsivePlayable
playable_responsive
portraitPlayable
playable_portrait
landscapePlayable
playable_landscape
squareVideo
🚫 サポートされていません — 縦向き/横向きのビデオのみが存在します。表面。
—
banner
(新規)

status enum

変更されていないセット:
uploaded
、
processing
、
processingFailed
、
pendingModeration
、
approved
、
rejected
.

multipart フィールド名

creativeInfo
(JSON、first) + 次のいずれか 1 つ:
squareEndCardFile
、
portraitEndCardFile
+
landscapeEndCardFile
、つまり
playableFile
。
creativeInfo
サブオブジェクトは、
fileName
。Playable は
orientation
も持ちます (
landscape
/
portrait
/
both
)。反応は
CreativePublicResponseDto
(
id
,
name
,
language
,
type
,
status
,
files[]{name,url}
,
createdAt
,
updatedAt
).

Block C — クリエイティブパック

変更内容

  • applications/{applicationId}
    の下にネストされています。CRUD 動詞は同じです(GET/POST/GET/パッチ/削除)。
  • type
    は
    banner
    値
    video
    、
    playable
    、
    video+playable
    、
    banner
    を取得します。
  • リストエンベロープは古い機能
    { total, offset, limit, results[] }
    です (キャンペーンやクリエイティブとは異なります)。
  • 反応はより豊富です。
    applicationId
    、
    moderationStatus
    (
    pending
    /
    approved
    /
    rejected
    、 nullable)、
    ageRating
    (nullable)、
    assignedCampaignIds[]
    、
    createdAt
    /
    updatedAt
    。

フィールドマッピング — 作成 (createCreativePack → CreateCreativePackPublicDto)

古い機能フィールド

新しいフィールド

ノート

name
(必須)
name
(必須)
unchanged
creativeIds[]
(1–3)
creativeIds[]
変更なし (24 文字の hex クリエイティブ ID)
type
type
同じ値 + 新しい
banner
androidStoreListing
androidStoreListing
unchanged (nullable)
appleProductPageId
appleProductPageId
unchanged (UUID、nullable)

フィールドマッピング — 反応

古い機能フィールド

新しいフィールド

ノート

id
id
24 文字の hex:変更なし
name
,
type
,
creativeIds
sameunchanged
campaignIds
assignedCampaignIds
renamed
—
applicationId
,
moderationStatus
,
ageRating
,
createdAt
,
updatedAt
new

ブロック D — キャンペーン

変更内容

  • applications/{applicationId}
    の下にネストされています。取得/更新/削除はアプリケーションごと。リスト表示はアプリケーションごとになりました。 組織全体(
    GET …/organizations/{orgId}/campaigns
    、フィルター
    appIds
    ):アプリケーションごとのリストはありません。
  • goal
    →
    optimizationType
    (+
    isCreativeTesting
    ブーリアン +
    appEventType
    )。
  • **アトリビューション URL はキャンペーン作成の一部ではなくなりました。**キャンペーンでの作成後に設定
    PATCH
    (
    attributionLinks
    )またはアプリケーションアトリビューションエンドポイント(ブロック J)。
  • scheduleEnd
    は作成フィールド
    ではありません。作成は
    start
    のみで、
    PATCH
    で
    end
    を設定します。
  • GET campaign
    は
    includeFields
    (
    bids
    、
    budget
    、
    creativePacks
    、
    application
    )をサポートします。 入札/バジェット/割り当て済みパックの読み取り方法です。
  • postInstallWindow
    値は、
    D0
    、
    D1
    、、
    D3
    、、、
    D7
    、
    D14
    、
    D28
    の大文字と展開です。

goal → 再マップするoptimizationType

古い機能
goal

新規

installs
optimizationType: cpi
retention
optimizationType: legacyRetention
: ⚠️ リテンションは非推奨:入札/適格性はサポートされません。新しいリテンションキャンペーンを作成しない。アクティブなキャンペーンを表示する。
roas
optimizationType: roas
(+
roasType
)
eventOptimization
optimizationType: appEventConversion
(+
appEventType
)
creativeTesting
isCreativeTesting: true
+ 基本の手動最適化(APIオーナーごとに、現在サポートされている基本のみ、つまり手動CPI:
optimizationType: cpi
、
cpiType: manual
)

フィールドマッピング — 作成 (createCampaign → CreateCampaignDto)

古い機能
goal

新規

installs
optimizationType: cpi
retention
optimizationType: legacyRetention
: ⚠️ リテンションは非推奨:入札/適格性はサポートされません。新しいリテンションキャンペーンを作成しない。アクティブなキャンペーンを表示する。
roas
optimizationType: roas
(+
roasType
)
eventOptimization
optimizationType: appEventConversion
(+
appEventType
)
creativeTesting
isCreativeTesting: true
+ 基本の手動最適化(APIオーナーごとに、現在サポートされている基本のみ、つまり手動CPI:
optimizationType: cpi
、
cpiType: manual
)

フィールドマッピング — 更新 (updateCampaign → UpdateCampaignPublicDto)

古い機能フィールド

新しいフィールド

ノート

name
name
unchanged
scheduleStart
/
scheduleEnd
start
/
end
date → datetime; null 可能な
end
enabled
(ブーリアン)
paused
(ブーリアン)
反転感覚 —
enabled:true
≈
paused:false
autoStart
autoStart
(
ENABLED
/
DISABLED
)
uppercased
attributionClickUrl
/
StartUrl
attributionLinks.{clickUrl,startUrl,viewUrl}
ネストされたオブジェクトになりました;
viewUrl
は新規
⚠️ 更新レスポンスがよりスリムなオブジェクト (
CampaignPublicDetailsResponseDto
:
id
,
name
、
start
end
、
autoStart
、
paused
、
attributionLinks
)。キャンペーン全体ではありませ ん 。 クライアントがパッチ反応から他のキャンペーンフィールドを読み取る場合は、
GET campaign
経由で再フェッチします。

フィールドマッピング — 反応 (古い機能campaign → CampaignPublicResponseDto)

古い機能フィールド

新しいフィールド

ノート

id
id
24 文字の hex:変更なし
name
,
billingType
name
,
billingType
unchanged
goal
optimizationType
(+
isCreativeTesting
,
appEventType
,
roasType
)
上のテーブルを再マップする(逆向き)
enabled
(ブーリアン)
paused
(ブーリアン)
⚠️ 読み取り時の反転センス —
enabled:true
≈
paused:false
status
(
live
/
learning
/
paused
、ROAS)
—🚫 新しい反応についてではありません。クライアントがその上で分岐する場合の表面。
scheduleStart
/
scheduleEnd
start
/
end
date → datetime; null 可能な
end
biddingStrategy
(
manual
/
automated
)
bidConfigurationMethod
(
manual
/
auto
)
名前の変更 + 値の変更 (
automated
→
auto
)
cpiBids[]
/
sourceBids[]
/
roasBids[]
/
eventOptimizationBids[]
manualBids[]
/
manualSourceBids[]
/
roasBids[]
/
appEventBids[]
名前が変更されました。
includeFields=bids
でのみ表示されます
。値はマイクロドルです。
retentionBids[]
—🚫 リテンション入札 非推奨 — 書き込みサポートなし。読み取り値はレガシーのみとして扱う
budget
budget
includeFields=budget
のみ。マイクロドル +
campaignLimitType
/
dailyLimitType
eventOptimizationType
/
sdkEventName
appEventType
/
sdkEventNames[]
enum rename; single → array
autoStart
(
enabled
/
disabled
/
canceled
)
autoStart
(
ENABLED
/
DISABLED
/
CANCELED_REJECTED
/
CANCELED_LESS_THAN_TWO_PACK
)
大文字;
canceled
2 つの理由に分ける
createdAt
/
updatedAt
createdAt
/
updatedAt
unchanged
—
applicationId
,
attribution
,
deviceTargeting
,
budgetPacingType
,
forcePausedEnabled
,
isAutoEligible
, …
new — 新しい仕様を参照

includeFields による読み取り

キャンペーンの入札/バジェット/割り当て済みパックの古い機能読み取りでは、個別のGETが使用されていました。更新後:
GET …/campaigns/{campaignId}?includeFields=bids,budget,creativePacks,application
.Bid 配列、
budget
、
creativePackIds[]
、フル
application
がキャンペーン オブジェクトに返されます。

ブロック E — 入札(5 つのエンドポイント → 1 つ)

変更内容

5 つの古い機能のサブリソース (
cpi-bids
、
source-bids
、
roas-bids
、
retention-bids
、
event-optimization-bids
)。それぞれにドル文字列 (
GET
/
PUT
/
PATCH
) が含まれている場合は、 マイクロドルで型指定されたボディ上の 1 つの**
PATCH …/campaigns/{campaignId}/bids
**。ある no GET —
GET campaign?includeFields=bids
経由で現在の入札を読み取ります。

エンドポイント + ボディ再マップする

古い機能サブリソース

UpdateCampaignPublicBidDto
の新しいボディフィールド

エントリーごとの形状(新規)

cpi-bids
manualBids[]
{ country, bid }
(マイクロ単位の
bid
)
source-bids
manualSourceBids[]
{ country, sourceAppId, bid }
(micros)
roas-bids
roasBids[]
{ country, target, maxBid? }
(
maxBid
マイクロ)
event-optimization-bids
appEventBids[]
{ country, bid }
(マイクロ)
retention-bids
🚫 非推奨 — サポートなし古い機能
{country, baseBid, maxBid}
には後継がありません(確認済み)。移行しません。クライアントリテンション入札の使用状況を人間に提示します。

Transform(重要)

古い機能ドル文字列 → 新しいマイクロドル: 1_000_000 を乗算します。
"0.201"
→
201000
ROAS
goal
/
target
(確認済み): 古い機能 ROAS
goal
はパーセンテージ文字列 (
"12.34"
= 12.34%)。 新しい
target
は、100 で割る小数割合です (
"12.34"
→
0.1234
、 10% →
0.10
)。 セマンティクス (API 所有者による確認):

古い機能PUT/パッチモデル

新しいモデル

PUT
はセット全体を置き換えます。
PATCH
はマージします。
単一
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)

古い機能フィールド

新しいフィールド

ノート

total
(ドル文字列)
total
(micros 文字列)
×1e6。キャップ表現セマンティクスは古い機能(APIオーナーごと)から引き継がれます。
"0"
は、依然として「キャップなし」を意味します。
daily
(ドル文字列)
daily
(micros 文字列)
×1e6
dailyPerCountry
(map)
countryGroupDailyLimits[]
Restructure: 各
{country: amount}
はグループ
{ name, countries:[country], limit: amount×1e6 }
になります。クライアントが希望するグループ。
name
が必要です。
dailySpent
/
spent
(読み取り専用)
— (キャンペーン バジェットで読み取り)パッチ反応ではなく、キャンペーンバジェット読み取り時に提示されます。

ブロック G — ターゲティング

変更内容

  • GET …/targeting
    がなくなりました →
    GET campaign
    オフターゲティングフィールドを読みます。
  • PATCH …/targeting
    は残りますが、ボディは再構成され、ほとんどの古い機能デバイス フィールドは ドロップされます (古い機能仕様ではすでに
    deprecated
    されています)。

フィールドマッピング (targetingOptions → UpdateCampaignPublicTargetingDto)

古い機能フィールド

新しいフィールド

ノート

appTargeting.allowList
/
blockList
allowlistSources[]
/
blocklistSources[]
renamed (ソースアプリケーション ID)
categoryTargeting.allowList
/
blockList
apptopiaSourceCategoriesAllowlist/Blocklist[]
(+
sensorTower…
)
プロバイダー固有のカテゴリ リスト
deviceTargeting
iOS
blockedDevices
/
osMin
appleDevice.deviceBlocklist[]
/
appleDevice.osMinVersion
restructured
deviceTargeting
Android
osMin
+ メーカー/モデル
androidDevice.{manufacturerAllowlist,manufacturerBlocklist,modelBlocklist,osMinVersion}
restructured
regionalTargeting
allowlistCountrySubdivisions[] {country, subdivisions[]}
subdivision-id based
limitedAdTracking
,
connectionType
,
screenSize
,
screenDensity
,
allowedDevices
,
osMax
—🚫 removed (確認済み — ユニファイド では設定できません)。それらを設定するクライアントコードを削除し、人間にドロップすることを伝えます。

ブロック H — 割り当てられたクリエイティブパック (現在はリスト)

変更内容

  • 古い機能割り当て済み/未割り当てのリクエストあたり1パック(
    POST
    /
    DELETE …/assigned-creative-packs
    )。
  • 新しい API はリストに対して動作します。
    • PATCH …/campaigns/{campaignId}/assign-creative-pack
      with
      { creativePackIds: [...] }
      — 指定された ID で割り当てられた集合を置き換えます。
    • DELETE …/campaigns/{campaignId}/unassign-creative-pack
      with
      { creativePackIds: [...] }
      — リストされた ID を削除します。
  • 現在割り当てられているパックのリスト:
    GET campaign?includeFields=creativePacks
    (
    creativePackIds[]
    )。

移行アプローチ

クライアントがキャンペーンに割り当てられたすべてのパックを収集し、1 つの
PATCH assign-creative-pack
を作成する (N
POST
の代わりに) 完全な配列を使用します 。セマンティクス確認: エンドポイントによって置き換えられる 指定した
creativePackIds
で割り当て
を完了 — 常に目的のフル セットを送信するか、 配列から除外されたパックは割り当て解除されます。

ブロック I — オーディエンス Pinpointer → Campaign Management (キャンペーン管理)

変更内容

古い機能

新規

GET …/audience-pinpointer/sdk-event-names
GET …/applications/{id}/sdk-event-names
GET …/audience-pinpointer/event-optimization-info
GET …/applications/{id}/eligibility
GET …/audience-pinpointer/roas-info
🚫削除 — ROAS キャンペーンは 適格性が不要 になりました。ゲームロジックはすべて削除します。
GET …/audience-pinpointer/retention-info
🚫削除 — リテンションは完全に非推奨。サーフェスのアクティブ リテンション使用
sdk-event-names
反応:
{ total, results[]{ eventOptimizationType, sdkEventNames[] } }
。
eligibility
反応:
{ total, results[]{ eventOptimizationType, countries[] } }
。

ブロック J — アトリビューション(再配置)

変更内容

アトリビューション URL が以前にアプリケーションに設定され (
appAttributionClickUrl
/
StartUrl
)、 into campaign create。新しいAPIには、アプリケーション レベル専用アトリビューション リソースに加えて、 キャンペーン更新のキャンペーンごとの
attributionLinks
。
  • GET …/applications/{applicationId}/attribution
    →
    { id, startUrl, clickUrl, viewUrl?, partner, type?, createdAt, updatedAt }
    .
  • { startUrl?, clickUrl?, viewUrl? }
    との
    PATCH …/applications/{applicationId}/attribution
    。
partner
enum:
other
、
adjust
、
airbridge
、
appsflyer
、
branch
、
bytebrew
、
kochava
、
mailru
、
singular
、
tenjin
、
yandex
。
type
enum:
userLevel
、
nonUserLevel
、
mixed
。

移行アプローチ

  1. アプリケーションレベルの移動
    appAttributionClickUrl
    /
    appAttributionStartUrl
    →
    PATCH …/attribution
    (
    clickUrl
    /
    startUrl
    ).
  2. campaign-create
    attributionClickUrl
    /
    attributionStartUrl
    → キャンペーンの
    PATCH
    の移動 (
    attributionLinks.{clickUrl,startUrl,viewUrl}
    )。キャンペーンの作成後に実行されます。
  3. viewUrl
    は新規 (任意)。
    {ifa}
    およびその他の URL マクロ: 検証規則は、共有の 古い機能と新しい API の両方で使用されるトラッキング検証ライブラリ(確認済み)。そのため、マクロ 動作は変更されません。古い機能 URL をそのまま使用します。

推奨される移行アルゴリズム (エージェントの決定的な順序)

  1. 構成: ホストを
    …/ads/advertiser
    にスワップ、パスプレフィックス
    /advertise/v1
    →
    /public/v1
    、
    apps
    セグメント →
    applications
    。Basic 認証を維持します。
  2. アプリケーション(ブロックA):古い機能アプリケーションごとに、
    POST …/applications
    します(
    store
    を再マップする →
    {store, platform}
    )。持続
    legacy campaignSetId → new applicationId
    。トラッキングを送信
    しない
    ここに URL
  3. アトリビューション(ブロック J): 古いアプリケーションレベルの URL で
    PATCH …/applications/{id}/attribution
    します。
  4. クリエイティブ (Block B): 再アップロード/再マップ、
    type
    enum の変換。持続 ID が再度生成されるかどうかを
    legacy creativeId → new creativeId
    します (ID が保持されているかどうかを確認します)。
  5. **クリエイティブパック (**Block C): 新しいクリエイティブ ID を参照するパックを作成します。
  6. **キャンペーン管理(**ブロックI):オーディエンス ピンポイント検索の再設定 —
    …/audience-pinpointer/sdk-event-names
    →
    …/applications/{id}/sdk-event-names
    、および
    …/audience-pinpointer/event-optimization-info
    →
    …/applications/{id}/eligibility
    .読み取り専用; 結果を使用して、キャンペーン
    appEventType
    /
    sdkEventNames
    および対象国に通知します。 ROAS 情報ゲームロジックは単純に削除できます (資格は不要)。リテンション情報は 非推奨のリテンション製品と一緒に使用されました(ステップ13を参照)。
  7. キャンペーン (ブロック D):
    optimizationType
    で作成 (+
    isCreativeTesting
    /
    appEventType
    /
    roasType
    )。
    start``PATCH
    して、
    end
    、
    attributionLinks
    、
    autoStart
    、
    paused
    を設定します。
  8. 入札(ブロックE): ドル→マイクロドルに変換します(ROAS目標: パーセント→小数割合、 ÷100)。入札タイプごとに完全な希望セットを含む
    PATCH …/bids
    を1つ送信します(パッチ Replaces、Never Merge、
    []
    Clears)。リテンション入札は非推奨です。移行しないでください。 どのような使用法でも表面化します。
  9. **バジェット(**ブロックF):マイクロドルで
    PATCH …/budget-cap
    。
    dailyPerCountry
    マップの変換 →
    countryGroupDailyLimits[]
    .
  10. ターゲティング(ブロックG):
    appleDevice
    /
    androidDevice
    /ソース+カテゴリリストに再構築 削除されたデバイス フィールドをドロップします(表面化)。
  11. 割り当て(ブロックH):キャンペーンごとに1つのリストベースの
    PATCH assign-creative-pack
    。
  12. 読み取り: すべての
    GET …/{bids,budget,targeting,assigned-creative-packs}
    を
    GET campaign?includeFields=…
    .
  13. **削除済み機能 (**表面からユーザー):
    DELETE app
    (USF 所有のアプリケーションライフサイクル、削除) 現在無効)、非推奨のリテンション製品(入札 + 適格性)、ROAS適格性 ゲート(不要:削除)、古い機能 ターゲティングフィールド、
    adomain
    、および
    squareVideo
    クリエイティブ。

検証チェックリスト (移行後に実行)

  • リクエスト パスに
    /advertise/v1
    、
    /apps/
    、
    /cpi-bids
    、
    /source-bids
    、
    /roas-bids
    ,
    /retention-bids
    ,
    /event-optimization-bids
    ,
    /audience-pinpointer
    ,
    /assigned-creative-packs
    、または
    …/budget
    (現在は
    budget-cap
    )。
  • すべてのアプリケーション パスで、24 文字の 16 進数
    campaignSetId
    ではなく、新しい UUID
    applicationId
    が使用されます。
  • すべての貨幣値はマイクロドル (整数) であり、
    "2500.20"
    のような小数ではありません。
  • 入札は単一の
    PATCH …/bids
    に送信され、読み取りは
    GET campaign?includeFields=bids
    を使用します。
  • すべての入札
    PATCH
    は、その入札タイプの完全なセットを送信します(置換セマンティクス — 部分的 送信では省略された入札がドロップされます)。古い機能マージ形式の更新は読み取り/変更/書き込みに変換されました。
  • ROAS 目標はパーセント文字列から小数比率に変換されました (
    "12.34"
    →
    0.1234
    )。
  • バジェットは
    budget-cap
    +
    countryGroupDailyLimits[]
    を使用します(
    dailyPerCountry
    マップなし)。
  • キャンペーン
    goal
    が
    optimizationType
    (+
    isCreativeTesting
    )に再マッピングされ、アトリビューションが URLはキャンペーン作成ではなく、
    attributionLinks
    /
    …/attribution
    で設定します。
  • Creative
    type
    では、新しい snake_case 値 (
    end_card_square
    、
    video_portrait
    、…) が使用されます。
  • 古い機能
    enabled
    の読み取りはすべて、センス反転を使用して
    paused
    に再マッピングされました。 (
    enabled:true
    ⇒
    paused:false
    ):レスポンスのリスト、取得、更新。
  • キャンペーン
    PATCH
    反応をオフにする完全なキャンペーン フィールドを解析するものはありません( details オブジェクト)。完全な状態は
    GET campaign?includeFields=…
    経由で再フェッチされます。
  • アプリケーション リスト解析でベア配列(
    {total, results}
    エンベロープなし)が予期され、
    offset
    /
    limit
    /
    filter[store]
    /
    filter[storeId]
    を送信します。
  • 割り当てでは、N 回の割り当てではなく、キャンペーンごとに 1 つのリストの呼び出しを使用します。
  • DELETE app
    、非推奨のリテンション使用(入札/適格性)、
    squareVideo
    クリエイティブ、 削除されたターゲティングフィールドは、(クライアントがそれらを使用した場合) ギャップとしてユーザーに提示されます。ROAS 適格性審査が削除されました。

クイック リファレンス:🚫削除済み/同等の機能なし(移行または製造しない。すべてAPI所有者によって確認済み)

  • DELETE app
    :削除アプリケーション エンドポイントなし。アプリケーション ライフサイクルはUSFが所有し、削除は 現在プラットフォーム全体で無効になっています。
  • ROAS-info:削除。ROAS キャンペーンに適格性は必要なくなりました。ゲーティングロジックを削除します。
  • リテンション(全製品領域):非推奨:
    retention-info
    とリテンションの入札には successor。アクティブなリテンションキャンペーン/入札を表示します。
  • GET bids / バジェット / targeting / assigned-packs —
    GET campaign?includeFields=…
    に置き換えられました。
  • 古い機能ターゲティングフィールド(
    limitedAdTracking
    、
    connectionType
    、
    screenSize
    、
    screenDensity
    、
    allowedDevices
    、
    osMax
    )およびアプリケーション
    adomain
    : では設定できません。 統一。クライアントコードを削除します。
  • squareVideo
    クリエイティブ タイプ
    — サポートされていません。
    video_portrait
    /
    video_landscape
    のみです。