プログラムメンバー

プログラムメンバーエンドポイントリファレンス

Marketoには、プログラムメンバーレコードの読み取り、作成、更新、削除用のAPIが用意されています。 「リード ID」フィールドは、プログラムメンバーのレコードとリードレコードを関連付けます。

各レコードには標準フィールドが含まれ、最大20個のカスタムフィールドを含めることができます。 これらのフィールドには、フォーム、フィルター、トリガー、フローアクションで使用するためのプログラム固有のメンバーデータが保存されます。 このデータは、Marketo Engage UIのプログラムの​ メンバー タブで確認できます。

説明

​ プログラム メンバーの説明 エンドポイントは、リード データベース オブジェクトの標準パターンに従います。

  • searchableFields配列は、クエリに有効なフィールドを識別します。
  • fields配列には、REST API名、表示名、フィールドが更新可能かどうかなどのメタデータが含まれています。
GET /rest/v1/programs/members/describe.json
{
    "requestId": "f813#1791563c7cc",
    "result": [
        {
            "name": "API Program Membership",
            "description": "Map for API program membership fields",
            "createdAt": "2021-03-20T01:30:05Z",
            "updatedAt": "2021-03-20T01:30:05Z",
            "dedupeFields": [
                "leadId",
                "programId"
            ],
            "searchableFields": [
                [
                    "leadId"
                ],
                [
                    "myCustomField"
                ],
                [
                    "reachedSuccess"
                ],
                [
                    "statusName"
                ]
            ],
            "fields": [
                {
                    "name": "acquiredBy",
                    "displayName": "acquiredBy",
                    "dataType": "boolean",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "attendanceLikelihood",
                    "displayName": "attendanceLikelihood",
                    "dataType": "integer",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "createdAt",
                    "displayName": "createdAt",
                    "dataType": "datetime",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "isExhausted",
                    "displayName": "isExhausted",
                    "dataType": "boolean",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "leadId",
                    "displayName": "leadId",
                    "dataType": "integer",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "membershipDate",
                    "displayName": "membershipDate",
                    "dataType": "datetime",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "nurtureCadence",
                    "displayName": "nurtureCadence",
                    "dataType": "string",
                    "length": 4,
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "program",
                    "displayName": "program",
                    "dataType": "string",
                    "length": 255,
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "programId",
                    "displayName": "programId",
                    "dataType": "integer",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "reachedSuccess",
                    "displayName": "reachedSuccess",
                    "dataType": "boolean",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "reachedSuccessDate",
                    "displayName": "reachedSuccessDate",
                    "dataType": "datetime",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "registrationLikelihood",
                    "displayName": "registrationLikelihood",
                    "dataType": "integer",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "statusName",
                    "displayName": "statusName",
                    "dataType": "string",
                    "length": 255,
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "statusReason",
                    "displayName": "statusReason",
                    "dataType": "string",
                    "length": 255,
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "trackName",
                    "displayName": "trackName",
                    "dataType": "string",
                    "length": 255,
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "updatedAt",
                    "displayName": "updatedAt",
                    "dataType": "datetime",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "waitlistPriority",
                    "displayName": "waitlistPriority",
                    "dataType": "integer",
                    "updateable": false,
                    "crmManaged": false
                },
                {
                    "name": "myCustomField",
                    "displayName": "myCustomField",
                    "dataType": "string",
                    "length": 255,
                    "updateable": true,
                    "crmManaged": false
                },
                {
                    "name": "registrationCode",
                    "displayName": "registrationCode",
                    "dataType": "string",
                    "length": 100,
                    "updateable": true,
                    "crmManaged": false
                },
                {
                    "name": "webinarUrl",
                    "displayName": "webinarUrl",
                    "dataType": "string",
                    "length": 2000,
                    "updateable": true,
                    "crmManaged": false
                }
            ]
        }
    ],
    "success": true
}

クエリ

プログラムのメンバーを取得するには、​ プログラムメンバーを取得 エンドポイントを使用します。 リクエストには、programId パスパラメーターとfilterTypeおよびfilterValues クエリパラメーターが必要です。

programIdは、検索するプログラムを指定します。

filterTypeは、検索フィルターとして使用するフィールドを指定します。 プログラムメンバーを説明エンドポイントから返される “searchableFields” リスト内の任意のフィールドを受け取ります。 カスタムフィールドの場合、dataTypeは「文字列」または「整数」である必要があります。

filterTypeが「leadId」でない場合、リクエストは最大100,000件のプログラムメンバーレコードを処理できます。 Marketo インスタンス設定に応じて、次のいずれかのエラーが発生します。

  • プログラムメンバーの合計数が 100,000 を超えると、「1003、合計メンバーシップサイズ:100,001 は、フィルターで許可されている制限の 100,000 を超えています」というエラーが返されます。
  • フィルターに一致する​プログラムメンバーの合計数が 100,000 を超えると、「1003、一致するメンバーシップサイズ:100,001 は、この API で許可されている制限(100,000)を超えています」というエラーが返されます。

メンバーシップ数が制限を超えているプログラムをクエリするには、代わりにBulk Program Member Extract APIを使用します。

filterValuesは、検索する値を指定し、最大300個のコンマ区切りの値を受け入れます。 呼び出しは、プログラムメンバーフィールドが含まれているfilterValueのいずれかに一致するレコードを検索します。

または、updatedAtをfilterTypeとして指定し、startAtとendAtの日時パラメーターを指定して、日付範囲でフィルタリングします。 範囲は 7日以内にする必要があります。 日時の値にミリ秒以外のISO-8601形式を使用します。

オプションのfields クエリパラメーターは、​ プログラムメンバー エンドポイントによって返されるフィールド API名のコンマ区切りリストを受け入れます。 含まれている場合、各応答レコードには指定されたフィールドが含まれます。 省略すると、デフォルトでacquiredBy、leadId、membershipDate、programIdおよびreachedSuccessが返されます。

デフォルトでは、エンドポイントは最大300件のレコードを返します。 この数を減らすには、batchSize クエリパラメーターを使用します。

moreResult​属性がtrueの場合、より多くの結果を使用できます。 返されたnextPageTokenでエンドポイントの呼び出しを続行し、moreResultがfalseになるまで呼び出します。

GET リクエストの合計長が8 KBを超えた場合、エンドポイントはHTTP エラー「414、URIが長すぎます」を返します。 この制限を回避するには、リクエストをGETからPOSTに変更し、_method=GET パラメーターを追加して、クエリ文字列をリクエスト本文に配置します。

GET /rest/v1/programs/{programId}/members.json?filterType=statusName&filterValues=Influenced
{
    "requestId": "109da#17915eec072",
    "result": [
        {
            "seq": 0,
            "leadId": 1789,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        },
        {
            "seq": 1,
            "leadId": 1790,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        },
        {
            "seq": 2,
            "leadId": 1791,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        },
        {
            "seq": 3,
            "leadId": 1792,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        },
        {
            "seq": 4,
            "leadId": 1793,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        },
        {
            "seq": 5,
            "leadId": 1794,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        },
        {
            "seq": 6,
            "leadId": 1795,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        },
        {
            "seq": 7,
            "leadId": 1796,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        },
        {
            "seq": 8,
            "leadId": 1797,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        },
        {
            "seq": 9,
            "leadId": 1798,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        },
        {
            "seq": 10,
            "leadId": 1799,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        },
        {
            "seq": 11,
            "leadId": 1800,
            "reachedSuccess": true,
            "programId": 1044,
            "acquiredBy": true,
            "membershipDate": "2020-01-08T18:10:26Z"
        }
    ],
    "success": true,
    "moreResult": false
}

作成と更新

プログラムメンバーに対する作成と更新の操作をサポートする2つのエンドポイント:

  • 1つのエンドポイントは、プログラムメンバーのステータスのみを更新します。
  • 1つのエンドポイントは、「更新可能」としてマークされたプログラムメンバーフィールドを更新します。

各エンドポイントは、1回の呼び出しごとに最大300件のプログラムメンバーレコードを変更できます。

プログラムメンバーステータス

​ プログラムメンバーステータスの同期 エンドポイントを使用して、1人以上のメンバーのプログラムステータスを作成または更新します。

必要なパラメーターは次のとおりです。

  • programId:作成または更新するメンバーを含むプログラムを指定するパスパラメーター。
  • statusName: リードのリストに適用するプログラムのステータスを指定します。 statusName は、プログラムのチャネルで使用可能なステータスと一致する必要があります。 ​ チャネルを取得 エンドポイントを使用して有効なステータスを取得します。 リードのステータスが、指定されたstatusNameよりも大きいステップ値を持つ場合、リクエストはそのリードをスキップします。
  • input: プログラムメンバーに対応するleadId値の配列。 呼び出しごとに、最大 300 個のリード ID を送信できます。

エンドポイントは、各レコードに対してアップサートを実行します。 leadIdがプログラムメンバーに関連付けられている場合、エンドポイントはそのメンバーシップステータスを更新します。 そうでない場合は、プログラムメンバーレコードを作成し、レコードをleadIdに関連付け、メンバーシップステータスを割り当てます。

応答には、「更新済み」、「作成済み」、または「スキップ済み」のstatusが含まれます。 スキップされた結果には、reasons配列も含まれます。 seq フィールドは、送信された各レコードと応答順序を関連付けるインデックスです。

呼び出しが成功すると、「プログラムステータスを変更」アクティビティがリードのアクティビティログに書き込まれます。

POST /rest/v1/programs/{programId}/members/status.json
Content-Type: application/json
{
    "statusName":"Influenced",
    "input":[
        {
            "leadId": 1800
        },
        {
            "leadId": 1801
        },
        {
            "leadId": 1235
        }
    ]
}
{
    "requestId": "14b2d#17916378ec5",
    "result": [
        {
            "seq": 0,
            "status": "skipped",
            "reasons": [
                {
                    "code": "1037",
                    "message": "Lead skipped because it is already in or past this status"
                }
            ]
        },
        {
            "seq": 1,
            "status": "updated",
            "leadId": 1801
        },
        {
            "seq": 2,
            "status": "created",
            "leadId": 1235
        }
    ],
    "success": true
}

プログラムメンバーデータ

​ プログラムメンバーデータの同期 エンドポイントを使用して、1人以上のメンバーのプログラムメンバーフィールドデータを更新します。 ​ プログラム メンバーの説明 エンドポイントによって「更新可能」とマークされた任意のカスタム フィールドまたは任意の標準フィールドを変更できます。

必要なパラメーターは次のとおりです。

  • programId:更新するメンバーを含むプログラムを指定するパスパラメーター。
  • input: API名で更新するleadIdと1つ以上のフィールドを要素に含む配列。 呼び出しごとに、最大 300 個のリード ID を送信できます。

エンドポイントは、各レコードを更新します。 leadIdはプログラムメンバーに関連付ける必要があり、各フィールドは更新可能である必要があります。

応答には、「更新」または「スキップ」のstatusが含まれます。 スキップされた結果には、reasons配列も含まれます。 seq フィールドは、送信された各レコードと応答順序を関連付けるインデックスです。

呼び出しが成功すると、「プログラムメンバーデータを変更」アクティビティがリードのアクティビティログに書き込まれます。

POST /rest/v1/programs/{programId}/members.json
Content-Type: application/json
{
    "input":[
        {
            "leadId": 1789,
            "registrationCode": "dcff5f12-a7c7-11eb-bcbc-0242ac130002"
        },
        {
            "leadId": 1790,
            "registrationCode": "c0404b78-d3fd-47bf-82c4-d16f3852ab3a"
        },
        {
            "leadId": 1003,
            "registrationCode": "aa880c57-75b8-426b-a33a-fbf6302d7cb4"
        }
    ]
}
{
    "requestId": "edc3#1791659b8d2",
    "result": [
        {
            "seq": 0,
            "status": "updated",
            "leadId": 1789
        },
        {
            "seq": 1,
            "status": "updated",
            "leadId": 1790
        },
        {
            "seq": 2,
            "status": "skipped",
            "reasons": [
                {
                    "code": "1013",
                    "message": "Membership not found"
                }
            ]
        }
    ],
    "success": true
}

フィールド

プログラムメンバーオブジェクトには、標準フィールドとオプションのカスタムフィールドが含まれます。 標準フィールドはMarketo Engageのサブスクリプションごとに用意されていますが、カスタムフィールドは必要に応じて作成できます。

各フィールドは、表示名、API名、dataTypeなどの属性で定義されます。 これらの属性をメタデータと呼びます。

次のエンドポイントは、プログラムメンバーオブジェクトのフィールドのクエリ、作成、更新を行います。 API ユーザーには、読み取り/書き込みスキーマ標準フィールド​権限、読み取り/書き込みスキーマカスタムフィールド​権限、またはその両方を持つ役割が必要です。

クエリフィールド

API名で1つのプログラムメンバーフィールドをクエリするか、すべてのプログラムメンバーフィールドを取得します。 役割の権限は、応答に標準フィールド、カスタムフィールド、またはその両方を含めることができるかどうかを決定します。 応答には非表示のフィールドも含まれます。

名前別

名前でプログラムメンバーフィールドを取得 エンドポイントは、プログラムメンバーオブジェクトの1つのフィールドのメタデータを取得します。 必須のfieldApiName パスパラメーターは、フィールドのAPI名を指定します。

応答はプログラムメンバーの説明の応答に似ていますが、追加のメタデータが含まれています。 例えば、isCustom属性は、フィールドがカスタムかどうかを示します。

GET /rest/v1/programs/members/schema/fields/{fieldApiName}.json
{
    "requestId": "15416#17e955554de",
    "result": [
        {
            "displayName": "Status",
            "name": "statusName",
            "description": null,
            "dataType": "string",
            "length": 255,
            "isHidden": false,
            "isHtmlEncodingInEmail": true,
            "isSensitive": false,
            "isCustom": false,
            "isApiCreated": false
        }
    ],
    "success": true
}

参照

プログラムメンバーフィールドを取得エンドポイントは、プログラムメンバーオブジェクトのすべてのフィールドのメタデータを取得します。 デフォルトでは、最大300件のレコードが返されます。 この数を減らすには、batchSize クエリパラメーターを使用します。

moreResult 属性が true の場合、さらに多くの結果が使用可能です。 返されたnextPageTokenでエンドポイントの呼び出しを続行し、moreResultがfalseになるまで呼び出します。

GET /rest/v1/programs/members/schema/fields.json?batchSize=5
{
    "requestId": "102f6#17e9557f123",
    "result": [
        {
            "displayName": "Acquired By",
            "name": "acquiredBy",
            "description": null,
            "dataType": "boolean",
            "isHidden": false,
            "isHtmlEncodingInEmail": false,
            "isSensitive": false,
            "isCustom": false,
            "isApiCreated": false
        },
        {
            "displayName": "Nurture Cadence",
            "name": "nurtureCadence",
            "description": null,
            "dataType": "string",
            "length": 4,
            "isHidden": false,
            "isHtmlEncodingInEmail": true,
            "isSensitive": false,
            "isCustom": false,
            "isApiCreated": false
        },
        {
            "displayName": "Nurture Exhausted",
            "name": "isExhausted",
            "description": null,
            "dataType": "boolean",
            "isHidden": false,
            "isHtmlEncodingInEmail": false,
            "isSensitive": false,
            "isCustom": false,
            "isApiCreated": false
        },
        {
            "displayName": "Member Date",
            "name": "membershipDate",
            "description": null,
            "dataType": "datetime",
            "isHidden": false,
            "isHtmlEncodingInEmail": false,
            "isSensitive": false,
            "isCustom": false,
            "isApiCreated": false
        },
        {
            "displayName": "Program",
            "name": "program",
            "description": null,
            "dataType": "string",
            "length": 255,
            "isHidden": false,
            "isHtmlEncodingInEmail": true,
            "isSensitive": false,
            "isCustom": false,
            "isApiCreated": false
        }
    ],
    "success": true,
    "nextPageToken": "BC7J6EPVLT6T4B5FKUU3APCYN4======",
    "moreResult": true
}

フィールドの作成

​ プログラムメンバーフィールドの作成 エンドポイントは、プログラムメンバーオブジェクトにカスタムフィールドを作成します。 Marketo Engage UIと同等の機能を提供します。 このエンドポイントを使用して、最大20個のカスタムフィールドを作成できます。

実稼動Marketo Engage インスタンスで作成する前に、各フィールドを慎重に検討します。 フィールドを作成した後は、削除できません。非表示にできるのはのみです。 未使用のフィールドは、インスタンスを混乱させます。

必須の input パラメーターは、プログラムメンバーフィールドオブジェクトの配列です。 各オブジェクトには、1 つ以上の属性が含まれます。

  • 必要な属性はdisplayName、name、dataTypeです。 UIの表示名、API名、フィールドタイプにそれぞれ対応します。
  • オプションの属性はdescription、isHidden、isHtmlEncodingInEmail、およびisSensitiveです。

nameおよびdisplayName属性には、次の命名ルールがあります。

  • name属性は一意で、文字で始まり、文字、数字、アンダースコアのみを含める必要があります。
  • *isplayNameは一意である必要があり、特殊文字を含めることはできません。

一般的な規則は、​ キャメルケース ​をdisplayNameに適用してnameを生成することです。 例えば、「My Custom Field」のdisplayNameは、「myCustomField」のnameを生成します。

POST /rest/v1/programs/members/schema/fields.json
{
  "input": [
    {
        "displayName": "PMCF Custom Field 03",
        "name": "pMCFCustomField03",
        "description": "My third custom field",
        "dataType": "string"
    }
  ]
}
{
    "requestId": "13a7#17e955fcb44",
    "result": [
        {
            "name": "pMCFCustomField03",
            "status": "created"
        }
    ],
    "success": true
}

フィールドの更新

​ プログラムメンバーフィールドの更新 エンドポイントは、プログラムメンバーオブジェクトの1つのカスタムフィールドを更新します。 Marketo Engage UIで利用できるフィールドの更新のほとんどは、APIからも利用できます。 次の表に、その違いをまとめました。

属性
API で更新可能?
UI で更新可能?
API で更新可能?
UI で更新可能?
dataType
いいえ
いいえ
いいえ
はい
description
はい
はい
はい
はい
displayName
いいえ
いいえ
はい
はい
isCustom
いいえ
いいえ
いいえ
いいえ
isHidden
いいえ
はい
はい(API で作成されている場合)
はい
isHtmlEncodingInEmail
はい
はい
はい
はい
isSensitive
はい
はい
はい
はい
length
いいえ
いいえ
いいえ
いいえ
name
いいえ
いいえ
いいえ
いいえ

リクエストには次のパラメーターが必要です。

  • fieldApiName:更新するフィールドのAPI名を指定するパスパラメーター。
  • input: 1つ以上の属性を持つ1つのリードフィールドオブジェクトを含む配列。
POST /rest/v1/programs/members/schema/fields/pMCFCustomField03.json
{
  "input": [
      {
        "displayName": "Lunch Preference",
        "description": "Attendee food preference",
        "isHtmlEncodingInEmail": true
      }
  ]
}
{
    "requestId": "215f#17e95663955",
    "result": [
        {
            "name": "pMCFCustomField03",
            "status": "updated"
        }
    ],
    "success": true
}

削除

プログラムメンバーレコードを削除するには、​ プログラムメンバーの削除 エンドポイントを使用します。 必須のprogramId パス パラメーターは、削除するメンバーを含むプログラムを指定します。

リクエスト本文には、リード IDのinput配列が含まれています。 各呼び出しでは、最大300個のリード IDを使用できます。

応答には、「削除済み」または「スキップ済み」のstatusが含まれています。 スキップされた結果には、reasons配列も含まれます。 seq フィールドは、送信された各レコードと応答順序を関連付けるインデックスです。

POST /rest/v1/programs/{programId}/members/delete.json
Content-Type: application/json
{
    "input":[
        {
            "leadId": 1235
        },
        {
            "leadId": 77
        }
    ]
}
{
    "requestId": "302a#17916619417",
    "result": [
        {
            "seq": 0,
            "status": "deleted",
            "leadId": 1235
        },
        {
            "seq": 1,
            "status": "skipped",
            "reasons": [
                {
                    "code": "1037",
                    "message": "Lead not in program"
                }
            ]
        }
    ],
    "success": true
}
recommendation-more-help
marketo-developer-help