IDLink APIの概要
概要
IDLinkに存在するリソースは以下のものがあります。
スキーマ
:複数のノードが所属する区画です。ノード
:特定のユーザーが持つ複数種類のIDタイプ+IDの集合体です。一つのスキーマに所属します。IDタイプ
:IDの種類を表します。キー
:ノードの識別に使われるIDタイプ+IDの組みです。キーとなるIDタイプはスキーマに設定されているIDタイプのものになります。リンク
:あるノードと他のノードを紐付けた情報になります。紐付けることによって特定のノードに存在するあるIDから、同じユーザの別のIDを引くことができます。
その内APIで操作を行えるリソースは以下です。
- ノード
- リンク
スキーマとIDタイプの設定に関して
スキーマとIDタイプは事前にご登録していただく必要があります。
お手続きに関しましては、ご契約時に営業担当もしくはサポートからご案内いたします。
スキーマとノード
スキーマはあるノードが所属する区画になっており、多くの場合はアプリや会員システムなどお客様が持つシステムごとに作られます。スキーマは名前の他にIDタイプを持っています。
ノードを構成しているのは「IDタイプ+ID」の組み合わせです。ノード自身は名前や特定するための情報を持ちません。代わりにノードが持つIDの中にある、スキーマで指定されているIDタイプと同じIDタイプ+IDがノードの識別子として機能します。このノードの識別に使われるIDタイプ+IDの組みをキー
と呼びます。
ノードの最小構成は「スキーマで指定されているIDタイプ+ID」の一つの組み合わせです。このノードに同じユーザーが持つ他のIDの情報を追加することによって、あるIDから同じユーザーの別のIDを参照することができます。
リンク
あるノードと別のノードを紐づけることで、IDの参照範囲を広げられます。ノードは1つのノードに対して複数紐づけることができます。
以下の例ではノードAとノードBを紐づけています。これによりノードAのIDを元にノードBで管理しているIDを取得することが可能になります。
IDの検索
特定のノードとそのノードに紐づく複数のノードに対して、IDの検索を行うことができます。
例えば以下の図ようなノードがあります。
パラメータを指定して、次のような絞り込みを行えます。
- ノードAを指定し、ノードAのみを検索対象とする(
step: "ONE"
) - ノードAを指定し、ノードAと紐づく全てのノードを検索対象とする(
step: "ALL"
) - ノードAを指定し、ノードAに紐づく全てのノードを検索対象とする。ただしノードA自身は対象から除外する(
exclude: true
)
ユースケース
複数チャネルのIDを統合管理する
IDLink APIを使って、別々のシステムで管理している同一ユーザーのIDを紐付けて管理する仕組みを作成できます。
例として、アプリを識別するためのID(popinfo_idを使っているものとします)と、顧客管理システムのCustomerIDがあり、それらを紐付けて管理するとします。
新規ユーザーがアプリをインストールし、アカウント作成とログイン処理を完了させたタイミングで、二つのIDが紐付けられる仕組みを作ります。
順番 | ユーザーの行動 | システムの処理 |
---|---|---|
1 | 初回アプリ起動 | appliスキーマに新しいノードを作成 |
2 | アカウント作成(webに遷移) | crmスキーマに新しいノードを作成 |
3 | アプリでログインする | 上記で作成した二つのノードを紐付ける |
以下のようなリクエストボディを作成し、初回アプリを起動したタイミングでappliスキーマ内にノードを作成します。アプリ側では広告ID(ad_id)も管理するため、ノードに追加する作業も合わせて行います。
{
"schema": "appli",
"key": {
"type": "popinfo_id",
"id": "00000000-0000-0000-0000-000000000000"
},
"ids": [
{"type": "ad_id", "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"}
]
}
同様に、アカウント作成が行われたタイミングでcrmスキーマ内にノードを作成します。
{
"schema": "crm",
"key": {
"type": "customer_id",
"id": "customer_001"
}
}
この時点で、スキーマ内には以下のようにノードが作成された状態になります。
アプリでログインが完了したタイミングで、作成した二つのノードを紐付けします。
{
"from": {
"schema": "appli",
"key": {
"type": "popinfo_id",
"id": "00000000-0000-0000-0000-000000000000"
},
},
"to": {
"schema": "crm",
"key": {
"type": "customer_id",
"id": "customer_001"
},
}
}
あるIDから別のIDを引く
紐付けが行われていれば、あるIDに紐づけられた別のノードのIDを引いてくることができます。
例として、店舗の会員システムで管理している特定の顧客(member_id: member_001)に対し、広告を配信するとします。広告を配信するには対象ユーザーのad_idが必要になります。ad_idはappliスキーマで管理されています。
店舗の会員システムは本部が所有しているCRMを介して、図のようにノードの紐付けが行われているとします。
以下のようなリクエストボディを作成しID検索を行います。
{
"match": {
"from": {
"schema": "shop",
"key": {
"type": "member_id",
"id": "member_001"
}
},
"step": "ALL",
"having": {
"type": "ad_id"
}
}
}
member_id: member_001ユーザーのad_idを取得できます。
またもし、keyではなくad_idからmember_idを取得する場合、以下のような検索も可能です。
{
"match": {
"from": {
"where": {
"type": "ad_id",
"id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
}
},
"step": "ALL",
"having": {
"type": "member_id"
}
}
}