About IAB Tech Lab(IAB Tech Lab について)
IAB Technology Laboratory は、グローバルな業界技術標準とソリューションを作成し、企業の導入を支援する非営利の研究開発コンソーシアムです。Tech Lab の目標は、デジタル広告およびマーケティングのサプライチェーンに関連する摩擦を減らしながら、業界の安全な成長に貢献することです。 IAB Tech Lab は、技術標準の開発を主導し、IAB 標準の迅速かつ費用対効果の高い実装を支援するコードライブラリを作成・維持し、企業が自社の技術ソリューションと IAB 標準との互換性を評価するためのテストプラットフォームを確立しています。IAB 標準は 18 年間にわたり、デジタル広告サプライチェーンにおける相互運用性と収益性の高い成長の基盤となってきました。IAB Technology Lab の詳細については、https://iabtechlab.com をご覧ください。License
Buyers.json by the IAB Tech Lab’s Programmatic Standards Working Group is licensed under a Creative Commons Attribution 3.0 License. To view a copy of this license, visit creativecommons.org/licenses/by/3.0/ or write to Creative Commons, 171 Second Street, Suite 300, San Francisco, CA 94105, USA.
Disclaimer
THE STANDARDS, THE SPECIFICATIONS, THE MEASUREMENT GUIDELINES, AND ANY OTHER MATERIALS OR SERVICES PROVIDED TO OR USED BY YOU HEREUNDER (THE “PRODUCTS AND SERVICES”) ARE PROVIDED “AS IS” AND “AS AVAILABLE,” AND IAB TECHNOLOGY LABORATORY, INC. (“TECH LAB”) MAKES NO WARRANTY WITH RESPECT TO THE SAME AND HEREBY DISCLAIMS ANY AND ALL EXPRESS, IMPLIED, OR STATUTORY WARRANTIES, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AVAILABILITY, ERROR-FREE OR UNINTERRUPTED OPERATION, AND ANY WARRANTIES ARISING FROM A COURSE OF DEALING, COURSE OF PERFORMANCE, OR USAGE OF TRADE. TO THE EXTENT THAT TECH LAB MAY NOT AS A MATTER OF APPLICABLE LAW DISCLAIM ANY IMPLIED WARRANTY, THE SCOPE AND DURATION OF SUCH WARRANTY WILL BE THE MINIMUM PERMITTED UNDER SUCH LAW. THE PRODUCTS AND SERVICES DO NOT CONSTITUTE BUSINESS OR LEGAL ADVICE. TECH LAB DOES NOT WARRANT THAT THE PRODUCTS AND SERVICES PROVIDED TO OR USED BY YOU HEREUNDER SHALL CAUSE YOU AND/OR YOUR PRODUCTS OR SERVICES TO BE IN COMPLIANCE WITH ANY APPLICABLE LAWS, REGULATIONS, OR SELF-REGULATORY FRAMEWORKS, AND YOU ARE SOLELY RESPONSIBLE FOR COMPLIANCE WITH THE SAME, INCLUDING, BUT NOT LIMITED TO, DATA PROTECTION LAWS, SUCH AS THE PERSONAL INFORMATION PROTECTION AND ELECTRONIC DOCUMENTS ACT (CANADA), THE DATA PROTECTION DIRECTIVE (EU), THE E-PRIVACY DIRECTIVE (EU), THE GENERAL DATA PROTECTION REGULATION (EU), AND THE E-PRIVACY REGULATION (EU) AS AND WHEN THEY BECOME EFFECTIVE. Special thanks to John Clyman, VP Engineering, Magnite for his leadershipOther Significant Contributors Include:
Paul Bannister, Chief Strategy Officer, Cafe Media; Per Bjorke, Sr. Product manager, Ad Traffic Quality, Google; Eric Bozinny, Sr. Director, Marketplace Quality, Pubmatic; Julien Delhommeau, Sr. Solutions Consultant, Xandr; Emma Fenlon, Sr. Manager, Exchange Quality, Verizon Media; Rahul Gupta, VP Client Solutions, Pulsepoint; Aaron Herman, Product Manager, Ads Integrity, Google; Curtis Light, Staff Software Engineer, Google; John Murphy, Chief Strategy Officer, Confiant; Alexandre Nderagakura, Product Specialist - Programmatic, Smart ad server; Angie Pennington, Sales & Operations Strategy Lead, Verizon Media; Amit Shetty, VP Programmatic & Partnerships, IAB Tech Lab, Lindsay Superczynski-Matthies, Sr P&E Optimization Specialist, Exchange Quality, Verizon Media; Maddy Want, Director of Product, Index Exchange.IAB Tech Lab Lead:
Amit Shetty, VP Programmatic & Partnerships, IAB Tech Lab1 Abstract(概要)
アドテクにおける透明性を促進し、特にパブリッシャーとエンドユーザーをマルバタイジングやその他の好ましくない広告から保護するための包括的な取り組みの一環として、DemandChain オブジェクトは、特定のビッドレスポンスに埋め込まれたクリエイティブの購入に関与するすべての当事者をセラーが確認できるようにします。この拡張オブジェクトは、OpenRTB 2.x または OpenRTB 3.0 で使用できます。 DemandChain は、buyers.json と連携して、セルサイドの透明性を高める SupplyChain および Sellers.json の仕様を補完するバイサイドの機能を提供します。2 Introduction(はじめに)
ads.txt、そしてその後の SupplyChain と Sellers.json は、DSP やその他のバイヤーが、ビッドリクエストで提供されるインベントリを供給しているエンティティの完全なチェーンを特定できるようにする上で非常に成功しています。同様の透明性は、セルサイドがバイヤーを可視化するためにも不可欠です。これにより、悪意のあるアクターを特定してブロックし、クリエイティブの出所について情報に基づいた判断を下し、再販や同様の行為に対する制限を強制することができます。この実装は、セラーだけでなく、アンチマルウェアスキャンプロバイダーなどの信頼できるサードパーティに対しても、可能な限り透明であるべきです。これにより、それらの当事者(技術的な知識がそれほど高くない担当者を含む)が、自社のインベントリで配信されるあらゆるクリエイティブの配信に誰が関与しているかを簡単に理解できるようになるべきです。 エージェンシーの身元のなりすましを防ぐための追加の透明性の取り組みを検討することや、信頼できない仲介者によるデマンドの操作を防ぐための暗号技術を探求することには利点がありますが、これらはいずれもこの初期の取り組みの範囲外です。3 Implementation(実装)
DemandChain(または dchain)オブジェクトは、主に一連のノードで構成され、各ノードはインプレッションの購入に参加する特定のエンティティを表します。最初から最後までのノードのチェーン全体は、インプレッションとその中で実行されるクリエイティブの支払いの直接的な流れに関与するすべてのエンティティを表します。仕様の将来のバージョンには、トランザクションには関与しているが支払いには関与していないエンティティも含まれる可能性があります。 具体的には、完全な dchain は、最終的な支払い者(通常はブランドまたはセルフサービス広告主)と、インプレッションが配信される最終的なパブリッシャーの間のすべての仲介者を指定します。このチェーンのすべての参加者がプログラマティックに統合されているわけではない可能性があり、この点については以下のノード定義で詳しく説明します。4 Node Definition(ノード定義)
ノードには、2 つの推奨プロパティ、広告システム識別子(asi)とバイヤーシート ID(bsid)が含まれています。これらのプロパティは、プログラマティックな広告システムでは存在しなければなりません(MUST)。ただし、asi と bsid は「推奨(recommended)」としてマークされています。これは、支払いチェーン内の非プログラマティックな参加者を表す場合に、そしてその場合にのみ、省略される可能性があるためです。
asi は広告システムのドメイン名です。bsid は、インベントリのバイヤー、つまり広告システムにこのクリエイティブの配信料金を支払っているのが誰かを識別するために使用されます。asi で識別されるドメイン名は、buyers.json ファイルをホストするドメインと一致するべきであり、bsid はそのファイル内で buyer_id として表示される値であるべきです。
bsid は、複数のエンティティが広告システムに支払いを行っている場合でも、複数のエンティティを表すことはできません。すべての bsid は、そのインプレッションの支払いを行うビジネスとして表される単一のエンティティにのみマップされなければなりません。この bsid は、すべてのインベントリトランザクションで使用されなければなりません。ただし、購入エンティティは、広告システム内に複数のバイヤーシート ID を持つ場合があります。
5 OpenRTB Object: DemandChain(OpenRTB オブジェクト: DemandChain)
このオブジェクトは、デマンドチェーン内のリンクと、デマンドチェーンが完全であるかどうかを示すインジケーターの両方を表します。 DemandChain オブジェクトは、OpenRTB 2.5 以降ではBidResponse.seatbid.bid.ext.dchain 属性に含めるべきです(SHOULD)。OpenRTB 2.4 以前では、BidResponse.ext.dchain 属性を使用するべきです。
DemandChain オブジェクトには、次の属性が含まれます。
| Attribute | Type | Description |
|---|---|---|
| complete | integer; required | チェーンに、クリエイティブの創始者および最終的な支払い元に遡るトランザクションに関与するすべてのノードが含まれているかどうかを示すフラグ。0 = いいえ、1 = はい。 |
| nodes | object array; required | チェーンの順序における DemandChainNode オブジェクトの配列。完全なデマンドチェーンでは、最初のノードはトランザクションに関与する最初の広告システムとバイヤー ID、つまりクリエイティブの創始者および最終的な支払い元を表します。不完全なデマンドチェーンでは、最初の既知のノードを表します。最後のノードは、このビッドレスポンスを送信しているエンティティを表します。 |
| ver | string; required | 使用中の DemandChain 仕様のバージョン。「メジャー.マイナー」の形式。たとえば、仕様のバージョン 1.0 の場合は、文字列 “1.0” を使用します(数値は無効)。 |
| ext | object; optional | このオブジェクトへの広告システム固有の拡張のためのプレースホルダー。 |
6 OpenRTB Object: DemandChainNode(OpenRTB オブジェクト: DemandChainNode)
このオブジェクトは、ノードの配列として DemandChain オブジェクトに関連付けられます。これらのノードは、ビッドリクエストのサプライチェーンに参加しているエンティティの身元を定義します。DemandChainNode オブジェクトには、次の属性が含まれます。| Attribute | Type | Description |
|---|---|---|
| asi | string; recommended | ビッドレスポンスを生成している DSP またはその他のバイヤーシステムの正規ドメイン名。これは、buyers.json ファイルをホストしているのと同じ場所であるべきです。このフィールドは、プログラマティックデマンドチェーンに関与するすべての ASI にとって必須ですが、最初の DSP に到達する前の支払いフローに関与するバイサイドエンティティについては省略される場合があります。存在する場合は、完全な URL ではなく、ホスト名またはドメインでなければなりません。正: domain.com。誤: https://domain.com. |
| bsid | string; recommended | 広告システム内のバイヤーシートに関連付けられた識別子。これには、トランザクションで使用される値(つまり、OpenRTB ビッドレスポンスの BidResponse.SeatBid.Seat)と同じ値が含まれていなければならず(MUST)、buyers.json ファイルに buyer_id として表示される値でなければなりません。長さは 64 文字以内に制限されるべきです。このフィールドは、プログラマティックデマンドチェーンに関与するすべての ASI にとって必須ですが、asi 自体が省略されている場合、つまり最初の DSP に到達する前の支払いフローに関与するバイサイドエンティティについては省略される場合があります。 |
| rid | string; optional | このセラーによって発行されたリクエストの OpenRTB ビッドリクエストまたはオークション ID(つまり、BidRequest.id)。 |
| name | string; recommended | 指定された bsid に基づいて支払っている会社(法的エンティティ)の名前。この値は推奨されますが、広告システムの buyers.json ファイルに存在する場合は(そしてそこで機密とマークされていない場合は)、含めるべきではありません(SHOULD NOT)。asi が不在または null の場合は、含めなければなりません(MUST)。 |
| domain | string; recommended | このノードによって表されるエンティティのビジネスドメイン名。この値は推奨されますが、広告システムの buyers.json ファイルに存在する場合は(そしてそこで機密とマークされていない場合は)、含めるべきではありません(SHOULD NOT)。バイヤーが文字通り Web プレゼンスを持っていない場合を除き、asi が不在または null の場合は、含めなければなりません(MUST)。 |
| ext | object; optional | このオブジェクトへの広告システム固有の拡張のためのプレースホルダー。 |
asi, bsid) フィールドと (name, domain) フィールドの間には包含的な OR 関係が暗示されています。デマンドチェーンのプログラマティックな参加者は、"asi" および "bsid" 値を含めなければなりません(MUST)。非プログラマティックな参加者(したがって "asi" 値を含めることができない参加者)は、バイヤーが文字通り Web プレゼンスを持っていない場合を除き、"domain" 値と同様に "name" 値によって表されなければなりません。
この仕様は、非プログラマティックな参加者の "name" および "domain" 値を buyers.json ファイルに関連付けることができず、異なる dchain 開始者によって常に一貫して表現されない可能性があることを認識しています。それにもかかわらず、不完全に正規化された情報であっても、深刻な広告品質違反を特定するのに役立つという点で、依然として方向性としては価値があります。
一部の当事者が、buyers.json に機密エントリを記載している場合、dchain ノードの "name" および "domain" フィールドを使用して、個々のビッドレスポンスのレベルでこれらのエンティティに関する情報を個人的に共有することもできる点に注意してください。
7 Implementation Details(実装詳細)
広告システムがこのインベントリのビッドリクエストを発信している場合、システム上のバイヤーの身元を示すノードを持つ DemandChain オブジェクトを作成するべきです。このバイヤーが最終的な支払い者である場合、DemandChain オブジェクトには 1 の"complete" 属性を含めるべきであり、これが "nodes" 配列内の唯一のノードであるべきです。
そのバイヤーが最終的な支払い者ではなく、広告システムがチェーン内の追加の支払い者を認識している場合、可能な限り多くの中間支払い者を含めるべきです。リストが完全であることがわかっている場合、DemandChain オブジェクトには 1 の "complete" 属性を含めるべきです。それ以外の場合、DemandChain オブジェクトに示されている支払い者以外にも支払い者がいることがわかっている場合は、"complete" 属性を 0 に設定しなければなりません。
リセラーが前のセラーからの DemandChain オブジェクトを、チェーンに自分のノードを挿入せずにそのインベントリのリクエストにコピーすることは無効です。リセラーが自分自身をチェーンに挿入しない場合、そのビッドリクエストには、受け取った変更されていない DemandChain オブジェクトを含めてはなりません(MUST NOT)。
広告システムが、以前に DemandChain オブジェクトを含んでいなかったビッドレスポンスを渡している場合、DemandChain オブジェクト自体を作成し、"complete" 属性を 0 の値でマークし、そのノードを "nodes" 配列に挿入するべきです。
広告システムが、DemandChain オブジェクトを持つビッドレスポンスを渡している場合、広告システムは既存のオブジェクトをコピーし、"complete" フラグの元の値を保持し、そのノードを "nodes" 配列の末尾に追加するべきです。
8 Validation & Enforcement Guidance(検証および強制のガイダンス)
集団的な参加に基づくソリューションとして、buyers.json と DemandChain には、各当事者がエントリを検証し、仕様への準拠を強制する方法についての共通の理解が必要です。 DemandChain オブジェクトにノードを追加する広告システムは、前のノードの構文形式をリアルタイムで検証するべきです。- 前のノードが構文検証に合格した場合、広告システムは新しいノードを追加して続行できます。
- 前のノードが構文検証に失敗した場合、広告システムは独自のポリシーと好みに基づいて、それをどのように処理するかを選択できます。
9 Serializing and Exposing Creative Source Data(クリエイティブソースデータのシリアル化と公開)
クライアントに配信されるアドマークアップ内で、広告クリエイティブに関する限られたデータを公開すると便利です。これにより、パブリッシャーの広告運用担当者やサードパーティのアンチマルウェアベンダーなど、ビッドストリームデータにアクセスできない参加者が、問題のある広告を容易に特定できるようになります。 これは、OpenRTB 2.5 以降のBidResponse.seatbid.bid.ext.dchain 属性で dchain オブジェクトを渡す代わりではなく、追加として役立ちます。
したがって、DSP、または OpenRTB または同様のプログラマティックビッドレスポンスに表示されるアドマークアップを最初に生成するその他の当事者は、次のクリエイティブソースデータを予測可能な方法でアドマークアップにシリアル化することが推奨されます。
- DSP ドメイン
- バイヤーシート ID
- クリエイティブ ID
verは、この DemandChain 仕様に準拠してシリアル化されたクリエイティブソースデータの場合、常に1.0であるべきです。dsp_domainは、DSP の buyers.json ファイルが見つかるドメインであるべきです。buyer_seat_idは、DSP のプラットフォーム上のバイヤーシート ID であるべきです。通常、これはビッドレスポンスのBidResponse.SeatBid.Bid.seatフィールドで使用される値であり、DSP の buyers.json ファイルに存在するbsid値でもあります。creative_idは、DSP がクリエイティブを識別するために使用する一意の識別子であり、通常はビッドレスポンスのBidResponse.SeatBid.Bid.crid値です。extは、プラットフォーム固有の拡張を可能にするためのプレースホルダーです。存在する場合、このデータの形式は実装定義です。
Embedding of Serialized Data in Ad Markup(アドマークアップへのシリアル化データの埋め込み)
クリエイティブソースデータの観察者による識別と解析を簡素化するために、シリアル化されたクリエイティブソースデータを、次のような標準化された識別子の一部としてアドマークアップで公開することが推奨されます。serialized_data は、二重引用符、バックスラッシュなどの特殊文字が含まれている場合に属性値に安全に埋め込むことができるように、HTML エスケープされるべきです。
最も外側の HTML タグは実装固有の詳細ですが、次のようになる場合があります。
data-ad-creative-source 属性を含む AdCreativeSource タグを作成することです。serialized_data は、二重引用符、バックスラッシュなどの特殊文字が含まれている場合に属性値に安全に埋め込むことができるように、XML エスケープ(事実上 HTML エスケープと同じ)されるべきです。この埋め込みは、クリエイティブソースデータを埋め込む標準的かつ構造化された方法を提供すると同時に、使い慣れた方法で文字列一致を実行する機能を維持するという二重の目的を果たします。
たとえば、VAST の場合:
10 Examples(例)
完全な DemandChain には、最終的な支払い者(通常はブランドまたはセルフサービス広告主)と最終的なパブリッシャーの間のすべての仲介者が含まれます。比較的単純なケースでは、これは次のように表される場合があります。ssp1.example となっている。ガイドラインは「原文の要件・定義・実装上の注意点を正確に伝え」るのが目的なので、明らかな誤植は修正して注記するか、そのまま訳して注記するか。ガイドには指示がないが、通常は誤植と思われる場合は訳注を入れるのが親切。しかし、URL/ドメインなどの technical details なので原文通りにしておくのが無難。)にある SSP1 の buyers.json ファイルを参照して、bsid 202049 が実際にエンティティ PopularDSP(populardsp.example)にマップされていることを確認できます。(SSP1 は SSP ですが、ビッドレスポンスが最終的なパブリッシャーに到達する前にそれに触れる最後の SSP であるとは限りません。)
セルフサービス指向の DSP を介したセルフサービス広告主の場合: