リードデータベース

Marketo Lead Database API は、Marketoが提供する最も頻繁に使用される API で、アクティビティ、オポチュニティ、会社など、Marketoからの人物および人物に関連するデータのデータをやり取りできます。

オブジェクト

リードデータベースオブジェクトには、以下が含まれます。

  • リード
  • 会社/アカウント
  • 重点顧客
  • 商談
  • オポチュニティの役割
  • 営業担当者
  • カスタムオブジェクト
  • アクティビティ
  • リストとプログラムメンバーシップ

これらのオブジェクトの多くには、少なくとも Create、Read、Update、および Delete メソッドが含まれています。 また、タイプごとに使用可能なフィールドのリストを提供する「説明」方法、重複排除(リード以外のオブジェクトの場合)に使用されるフィールドのリスト、およびレコードの取得に使用できるフィールドのリストも含まれます。 Marketo アプリケーション内で最も多様な機能を備えているため、最も豊富なセットがリードに提供されます。

API

パラメーターを含むリードデータベース API エンドポイントの完全なリストとモデリング情報については、 リードデータベース API エンドポイントのリファレンスを参照してください。

ネイティブ CRM 統合が有効なインスタンス(Microsoft Dynamics またはSalesforce.com)の場合、会社、商談、商談の役割、営業担当者の API は無効になります。 レコードは、有効な場合は CRM を通じて管理され、Marketoの API を使用してアクセスまたは更新することはできません。

  • 最大バッチサイズ (標準):300 レコード
  • 最大バッチサイズ (バルク):10 MB のファイル
  • デフォルトのバッチサイズ : 300 レコード
  • Content-type ヘッダー(標準):application/json
  • コンテンツタイプヘッダー(一括):multipart/form-data

説明

リード、会社、商談、役割、販売担当者、カスタムオブジェクトの場合は、説明 API が提供されます。 これを呼び出すと、オブジェクトのメタデータと、更新およびクエリに使用できるフィールドのリストが取得されます。 説明は、Marketoとの適切な統合を設計する上で重要な役割を果たします。 オブジェクトの操作の仕組みと禁止、オブジェクトの作成、更新、クエリの方法に関する豊富なメタデータを提供します。 リードの説明とは別に、これらはそれぞれ dedupeFields 応答パラメーターで deduplication 用できるキーのリストを返します。 フィールドのリストは、searchableFields 応答パラメーターでクエリするためのキーとして使用できます。

GET /rest/v1/opportunities/roles/describe.json
{
   "requestId":"185d6#14b51985ff0",
   "success":true,
   "result":[
      {
         "name":"opportunityRole",
         "displayName":"Opportunity Role",
         "createdAt":"2015-02-03T22:36:23Z",
         "updatedAt":"2015-02-03T22:36:24Z",
         "idField":"marketoGUID",
         "dedupeFields":[
            "externalOpportunityId",
            "leadId",
            "role"
         ],
         "searchableFields":[
            [
               "externalOpportunityId",
               "leadId",
               "role"
            ],
            [
               "marketoGUID"
            ],
            [
               "leadId"
            ],
            [
               "externalOpportunityId"
            ]
         ],
         "fields":[
            {
               "name":"marketoGUID",
               "displayName":"Marketo GUID",
               "dataType":"string",
               "length":36,
               "updateable":false
            },
            {
               "name":"externalOpportunityId",
               "displayName":"External Opportunity Id",
               "dataType":"string",
               "length":50,
               "updateable":false
            },
            {
               "name":"leadId",
               "displayName":"Lead Id",
               "dataType":"integer",
               "updateable":false
            },
            {
               "name":"role",
               "displayName":"Role",
               "dataType":"string",
               "length":50,
               "updateable":false
            },
            {
               "name":"isPrimary",
               "displayName":"Is Primary",
               "dataType":"boolean",
               "updateable":true
            },
            {
               "name":"externalCreatedDate",
               "displayName":"External Created Date",
               "dataType":"datetime",
               "updateable":true
            }
         ]
      }
   ]
}

この例では、dedupeFields は実際には複合キーです。 つまり、今後の更新および作成で、dedupeFields モードを使用する際は、各役割に対して externalOpportunityIdleadIdrole の 3 つすべてを含める必要があります。 searchableFields 配列には、役割レコードのクエリに使用できるフィールドのリストも含まれています。 これには、externalOpportunityIdleadIdrole の複合キーも含まれます。

また、フィールド応答パラメーターもあり、各フィールドの名前、Marketo UI に表示される displayName、フィールドのデータタイプ、作成後に更新できるかどうか、該当する場合はフィールドの長さを提供します。

クエリ

リードデータベースオブジェクトはすべて、1 つのフィールドのみが参照される単純なキーに対するクエリの基本的なパターンを共有します。

GET /rest/v1/{type}.json?filterType={field to query}&filterValues={comma-separated list of possible values}

リードを除くすべてのオブジェクトで、対応する describe 呼び出しの searchableFields から {field to query} を選択し、最大 300 個の値のコンマ区切りリストを作成できます。 次のオプションのクエリパラメーターもあります。

  • batchSize – 返される結果の数の整数値。 デフォルトおよび最大値は 300 です。
  • nextPageToken – 前回のページング呼び出しから返されたトークン。 詳しくは、 ページングトークンを参照してください。
  • fields – 各レコードに対して返すフィールド名のコンマ区切りリスト。 有効なフィールドのリストについては、対応する説明を参照してください。 特定のフィールドがリクエストされても、返されなかった場合、値は null であることが暗示されます。
  • _method - POST HTTP メソッドを使用してクエリを送信する場合に使用します。 使用方法については、以下の_method=GETの節を参照してください。

簡単な例として、商談のクエリを見てみましょう。

GET /rest/v1/opportunities.json?filterType=idField&filterValues=dff23271-f996-47d7-984f-f2676861b5fa&dff23271-f996-47d7-984f-f2676861b5fc,dff23271-f996-47d7-984f-f2676861b5fb
{
   "requestId":"e42b#14272d07d78",
   "success":true,
   "result":[
      {
         "seq":0,
         "marketoGUID":"dff23271-f996-47d7-984f-f2676861b5fa ",
         "externalOpportunityId":"19UYA31581L000000",
         "name":"Chairs",
         "description":"Chairs",
         "amount":"1604.47",
         "source":"Inbound Sales Call/Email"
      },
      {
         "seq":1,
         "marketoGUID":"dff23271-f996-47d7-984f-f2676861b5fc ",
         "externalOpportunityId":"29UYA31581L000000",
         "name":"Big Dog Day Care-Phase12",
         "description":"Big Dog Day Care-Phase12",
         "amount":"1604.47",
         "source":"Email"
      }
   ]
}

この呼び出しで指定される filterType は、「marketoGUID」ではなく「idField」です。 このフィールドと「dedupeFields」は、両方とも特殊なケースで、idField または dedupeFields に対応するフィールドに、この方法でエイリアスを設定できます。 「marketoGUID」は、引き続き呼び出しでの結果のルックアップフィールドですが、呼び出しで明示的に設定されているわけではありません。 オブジェクトの説明の idFielddedupeFields で示されるフィールドやフィールドセットは、常にクエリに filterTypes して有効です。 この呼び出しは、filterValues に含まれる GUID に一致するレコードを検索し、一致するレコードを返します。 このメソッドを使用してレコードが見つからない場合でも、応答は成功を示しますが、検索が正常に実行されたにもかかわらず、返されるレコードが存在しなかったため、結果の配列は空になります。

クエリ内のレコードのセットが 300 または指定された batchSize のいずれか小さい方を超える場合、応答には、値が true のメンバー moreResult と、セットをさらに取得するために続く呼び出しに含めることができる nextPageToken が含まれます。 詳しくは、 ページングトークンを参照してください。

長い URI

GUID によるクエリ時など、URI が長くなり、REST サービスで許可されている 8 KB を超える場合があります。 この場合、GETの代わりに HTTP POSTメソッドを使用し、クエリパラメーター _method=GET を追加する必要があります。 さらに、残りのクエリパラメーターは、「application/x-www-form-urlencoded」文字列としてPOSTー本文に渡し、関連する Content-type ヘッダーを渡す必要があります。

POST /rest/v1/opportunities.json?_method=GET
Content-Type: application/x-www-form-urlencoded
filterType=idField&filterValues=dff23271-f996-47d7-984f-f2676861b5fa&dff23271-f996-47d7-984f-f2676861b5fc,dff23271-f996-47d7-984f-f2676861b5fb,544fb7f5-2ddf-4fca-ae32-7e6ef1415e9f,f1ba41a2-69d1-4a35-9807-0e159d66f2c9,f7521272-3331-4a89-a768-222baff2f894

長い URI に加えて、複合キーをクエリする場合にも、このパラメーターが必要です。

複合キー

複合キーをクエリするパターンは、JSON 本文を持つPOSTを送信する必要があるので、単純なキーとは異なります。 これは、複数のフィールドを持つ dedupeFields オプションを filterType として使用する場合にのみ、すべての場合に必要ではありません。 現在、複合キーは、商談役割と一部のカスタムオブジェクトでのみ使用されています。 dedupeFields の複合キーを使用した商談の役割クエリの例を見てみましょう。

POST /rest/v1/opportunities/roles.json?_method=GET
{
   "filterType":"dedupeFields",
   "fields":[
      "marketoGuid",
      "externalOpportunityId",
      "leadId",
      "role"
   ],
   "input":[
      {
        "externalOpportunityId":"Opportunity1",
        "leadId": 1,
        "role": "Captain"
      },
      {
        "externalOpportunityId":"Opportunity2",
        "leadId": 1872,
        "role": "Commander"
      },
      {
        "externalOpportunityId":"Opportunity3",
        "leadId": 273891,
        "role": "Lieutenant Commander"
      }
   ]
}

JSON オブジェクトの構造はほとんどフラットで、単純なキーを持つクエリのクエリパラメーターはすべて、filterValues を除き、有効なメンバーです。 フィルター値の代わりに、JSON オブジェクトの「入力」配列があります。この配列には、複合キーの各フィールドのメンバーが必要です。この場合、externalOpportunityIdleadId および role です。 これにより、指定された入力に対して roles のクエリが実行され、一致する結果が返されます。 応答が moreResult=true を含むパラメーターと nextPageToken を返す場合、クエリを正しく実行するには、元の入力と nextPageToken をすべて含める必要があります。

作成と更新

リードデータベースレコードの作成と更新はすべて、JSON 本文を含む POST を通じて実行されます。 商談、役割、カスタムオブジェクト、会社、営業担当者のインターフェイスはそれぞれ同じです。 リードのインターフェイスは少し異なります。詳しくは、このページを参照してください。

必須パラメーターは input という配列のみで、最大 300 個のオブジェクトを含んでいます。各オブジェクトには、メンバーとして挿入または更新するフィールドが含まれています。 オプションで、createOnlyupdateOnlycreateOrUpdate のいずれかの action パラメーターを含めることもできます。 アクションを省略すると、モードのデフォルト値は createOrUpdate になります。 dedupeBy は、action が createOnly または createOrUpdate に設定されている場合に使用できるもう 1 つのオプションパラメーターです。  dedupeBy は、idField または dedupeFields のいずれかです。 idField を選択した場合、説明にリストされている idField が重複排除に使用され、各レコードに含まれる必要があります。 idField モードは createOnly モードと互換性がありません。 dedupeFields を選択した場合は、使用するオブジェクトの説明にリストされている dedupeFields を使用し、各レコードにそれぞれを含める必要があります。 dedupeBy パラメーターを省略すると、モードのデフォルト値は dedupeFields になります。

フィールド値のリストを渡す場合、null の値または空の文字列が null としてデータベースに書き込まれます。

POST /rest/v1/opportunities.json
{
   "action":"createOrUpdate",
   "dedupeBy":"dedupeFields",
   "input":[
      {
         "externalOpportunityId":"19UYA31581L000000",
         "name":"Chairs",
         "description":"Chairs",
         "amount":"1604.47",
         "source":"Inbound Sales Call/Email"
      },
      {
         "externalOpportunityId":"29UYA31581L000000",
         "name":"Big Dog Day Care-Phase12",
         "description":"Big Dog Day Care-Phase12",
         "amount":"1604.47",
         "source":"Email"
      }
   ]
}
{
   "requestId":"e42b#14272d07d78",
   "success":true,
   "result":[
      {
         "seq":0,
         "status":"updated",
         "marketoGUID":"dff23271-f996-47d7-984f-f2676861b5fb"
      },
      {
         "seq":1,
         "status":"created",
         "marketoGUID":"cff23271-f996-47d7-984f-f2676861b5fb"
      }
   ]
}

リード API 以外で、リードデータベースオブジェクトを作成または更新する呼び出しでは、result 配列の各オブジェクトの seq フィールドが返されます。 リストされる番号は、行われたリクエスト内の更新されたレコードの順序に対応します。 各項目は、オブジェクトタイプの idField の値と status を返します。 ステータスフィールドは、「作成済み」、「更新済み」、または「スキップ済み」のいずれかを示します。  ステータスがスキップされた場合は、コードとメッセージを含む 1 つ以上の理由オブジェクトを含む、対応する「理由」配列も存在し、レコードがスキップされた理由を示します。 詳しくは、 エラーコードを参照してください。

削除

削除用のインタフェースは、リード以外のリード・データベース・オブジェクトに対して標準で使用されます。 入力以外に、idField または dedupeFields の値を持つことができる必須パラメーター deleteBy, は 1 つだけです。 次に、いくつかのカスタムオブジェクトの削除を見てみましょう。

POST /rest/v1/customobjects/{name}/delete.json
{
   "deleteBy":"dedupeFields",
   "input":[
      {
         "vin":"19UYA31581L000000"
      },
      {
         "vin":"29UYA31581L000000"
      },
      {
         "vin":"39UYA31581L000000"
      }
   ]
}
{
   "requestId":"e42b#14272d07d78",
   "success":true,
   "result":[
      {
         "seq":0,
         "marketoGUID":"dff23271-f996-47d7-984f-f2676861b5fb",
         "status": "deleted"
      },
      {
         "seq":1,
         "marketoGUID":"da42707c-4dc4-4fc1-9fef-f30a3017240a",
         "status": "deleted"
      },
      {
         "seq":2,
         "status": "skipped"
         "reasons":[
            {
               "code":"1013",
               "message":"Object not found"
            }
         ]
      }
   ]
}

seqstatusmarketoGUIDreasons は、皆さんがもう慣れ親しんでいることでしょう。

個々のオブジェクトタイプでの CRUD 操作の操作について詳しくは、それぞれのページを参照してください。

recommendation-more-help
bb269a6d-047a-4bf7-9acd-23ad9a63dc59