SugarCRM Events ソースはベータ版です。詳しくは、 ソースの概要 ベータラベル付きのソースの使用に関する詳細
次のチュートリアルでは、 SugarCRM Events ソース接続と、 SugarCRM イベントデータをAdobe Experience Platformに送信するには、 Flow Service API.
このガイドは、Adobe Experience Platform の次のコンポーネントを実際に利用および理解しているユーザーを対象としています。
次の節では、に正常に接続するために知っておく必要がある追加情報を示します。 SugarCRM の使用 Flow Service API.
SugarCRM Events を Platform に接続するには、次の接続プロパティの値を指定する必要があります。
資格情報 | 説明 | 例 |
---|---|---|
host |
ソースが接続する SugarCRM API エンドポイント。 | developer.salesfusion.com |
username |
SugarCRM 開発者アカウントのユーザー名。 | abc.def@example.com@sugarmarketdemo000.com |
password |
SugarCRM 開発者アカウントのパスワード。 | 123456789 |
次に、の認証に必要な手順を示します SugarCRM ソース、ソース接続を作成し、イベントデータをExperience Platformに取り込むためのデータフローを作成します。
ベース接続は、ソースと Platform 間の情報(ソースの認証資格情報、現在の接続状態、固有のベース接続 ID など)を保持します。ベース接続 ID により、ソース内からファイルを参照および移動し、データタイプやフォーマットに関する情報を含む、取り込みたい特定の項目を識別することができます。
ベース接続 ID を作成するには、 /connections
エンドポイントを SugarCRM Events 認証資格情報をリクエスト本文の一部として使用します。
API 形式
POST /connections
リクエスト
次のリクエストは、SugarCRM Events のベース接続を作成します。
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/connections' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-H 'Content-Type: application/json' \
-d '{
"name": "SugarCRM Events base connection",
"description": "Create a live inbound connection to your SugarCRM Events instance, to ingest both historic and scheduled data into Experience Platform",
"connectionSpec": {
"id": "59a4b493-a615-40f9-bd38-f823d0909a2b",
"version": "1.0"
},
"auth": {
"specName": "OAuth2 Refresh Code",
"params": {
"host": "developer.salesfusion.com",
"username": "{SUGARCRM_DEVELOPER_ACCOUNT_USERNAME}",
"password": "{SUGARCRM_DEVELOPER_ACCOUNT_PASSWORD}"
}
}
}'
プロパティ | 説明 |
---|---|
name |
ベース接続の名前。ベース接続の情報を検索する際に使用できるので、ベース接続の名前はわかりやすいものにしてください。 |
description |
ベース接続に関する詳細情報を提供するために含めることができるオプションの値です。 |
connectionSpec.id |
ソースの接続仕様 ID。この ID は、ソースが登録および承認された後に、Flow Service API から取得することができます。 |
auth.specName |
Platform へのソースの認証に使用する認証タイプ。 |
auth.params.host |
SugarCRM API ホスト: developer.salesfusion.com |
auth.params.username |
SugarCRM 開発者アカウントのユーザー名。 |
auth.params.password |
SugarCRM 開発者アカウントのパスワード。 |
応答
リクエストが成功した場合は、一意の接続識別子(id
)を含む、新しく作成されたベース接続が返されます。この ID は、次の手順でソースのファイル構造と内容を調べるために必要です。
{
"id": "f5421911-6f6c-41c7-aafa-5d9d2ce51535",
"etag": "\"4d08164f-0000-0200-0000-6368b7bf0000\""
}
前の手順で生成したベース接続 ID を使用することで、GET リクエストを実行してファイルとディレクトリを調べることができます。次の呼び出しを使用して、に取り込むファイルのパスを見つけます。 Platform:
API 形式
GET /connections/{BASE_CONNECTION_ID}/explore?objectType=rest&object={OBJECT}&fileType={FILE_TYPE}&preview={PREVIEW}&sourceParams={SOURCE_PARAMS}
ソースのファイル構造とコンテンツを調べるために GET リクエストを実行する場合、次の表に示すクエリのパラメーターを含める必要があります。
パラメーター | 説明 |
---|---|
{BASE_CONNECTION_ID} |
前の手順で生成したベース接続 ID。 |
objectType=rest |
参照するオブジェクトのタイプ。 現在、この値は常にに設定されています。 rest . |
{OBJECT} |
このパラメーターは、特定のディレクトリを表示する場合にのみ必要です。 値は、参照するディレクトリのパスを表します。このソースの場合、値は次のようになります。 json . |
fileType=json |
Platform に取り込むファイルのファイルタイプ。 現在、 json は、サポートされている唯一のファイルタイプです。 |
{PREVIEW} |
接続のコンテンツがプレビューをサポートするかどうかを定義するブール値です。 |
{SOURCE_PARAMS} |
Platform に取り込むソースファイルのパラメーターを定義します。 の受け入れ可能な format-type を取得するには {SOURCE_PARAMS} の場合は、base64 で文字列全体をエンコードする必要があります。 SugarCRM Events はペイロードを必要としません。 の値 {SOURCE_PARAMS} が {} の場合は、base64 でエンコードされ、はと等しくなります。 e30= 以下に示すように。 |
リクエスト
curl -X GET \
'https://platform.adobe.io/data/foundation/flowservice/connections/f5421911-6f6c-41c7-aafa-5d9d2ce51535/explore?objectType=rest&object=json&fileType=json&preview=true&sourceParams=e30=' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
応答
応答が成功すると、クエリされたファイルの構造を返します。一部のレコードが削除され、プレゼンテーションの質が向上しました。
{
"format": "hierarchical",
"schema": {
"type": "object",
"properties": {
"next": {
"type": "string"
},
"page_number": {
"type": "integer",
"minimum": -9007199254740992,
"maximum": 9007199254740991
},
"previous": {},
"total_count": {
"type": "integer",
"minimum": -9007199254740992,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740992,
"maximum": 9007199254740991
},
"results": {
"type": "object",
"properties": {
"sessions": {
"type": "string"
},
"description": {
"type": "string"
},
"created_by": {
"type": "string"
},
"event_id": {
"type": "integer",
"minimum": -9007199254740992,
"maximum": 9007199254740991
},
"name": {
"type": "string"
},
"updated_by": {
"type": "string"
},
"updated_by_id": {
"type": "integer",
"minimum": -9007199254740992,
"maximum": 9007199254740991
},
"updated_date": {
"type": "string"
},
"created_date": {
"type": "string"
},
"created_by_id": {
"type": "integer",
"minimum": -9007199254740992,
"maximum": 9007199254740991
},
"event": {
"type": "string"
},
"folder_id": {
"type": "integer",
"minimum": -9007199254740992,
"maximum": 9007199254740991
},
"status": {
"type": "string"
}
}
},
"page_size": {
"type": "integer",
"minimum": -9007199254740992,
"maximum": 9007199254740991
}
}
},
"data": [
{
"next": "https://developer.salesfusion.com/api/2.0/events/?date_field=updated_date&page=2",
"page_number": 1,
"total_count": 532,
"count": 532,
"results": {
"event_id": 1,
"event": "https://developer.salesfusion.com/api/2.0/events/1/",
"sessions": "https://developer.salesfusion.com/api/2.0/events/1/sessions/",
"name": "Test",
"updated_date": "2022-08-30T11:20:11.813Z",
"updated_by_id": 59,
"updated_by": "https://developer.salesfusion.com/api/2.0/users/59/",
"created_date": "2022-08-28T23:40:11Z",
"created_by_id": 59,
"created_by": "https://developer.salesfusion.com/api/2.0/users/59/",
"status": "Draft",
"folder_id": 2
},
"page_size": 100
},
{
"next": "https://developer.salesfusion.com/api/2.0/events/?date_field=updated_date&page=2",
"page_number": 1,
"total_count": 532,
"count": 532,
"results": {
"event_id": 2,
"event": "https://developer.salesfusion.com/api/2.0/events/2/",
"sessions": "https://developer.salesfusion.com/api/2.0/events/2/sessions/",
"name": "Infy Event",
"description": "Test Event",
"updated_date": "2022-09-15T16:26:43.697Z",
"updated_by_id": 59,
"updated_by": "https://developer.salesfusion.com/api/2.0/users/59/",
"created_date": "2022-09-27T23:40:11Z",
"created_by_id": 59,
"created_by": "https://developer.salesfusion.com/api/2.0/users/59/",
"status": "Active",
"folder_id": 2
},
"page_size": 100
},
{
"next": "https://developer.salesfusion.com/api/2.0/events/?date_field=updated_date&page=2",
"page_number": 1,
"total_count": 532,
"count": 532,
"results": {
"event_id": 3,
"event": "https://developer.salesfusion.com/api/2.0/events/3/",
"sessions": "https://developer.salesfusion.com/api/2.0/events/3/sessions/",
"name": "Infy Workshop 1",
"updated_date": "2022-10-11T18:12:28.767Z",
"updated_by_id": 59,
"updated_by": "https://developer.salesfusion.com/api/2.0/users/59/",
"created_date": "2022-09-14T23:40:11Z",
"created_by_id": 59,
"created_by": "https://developer.salesfusion.com/api/2.0/users/59/",
"status": "Active",
"folder_id": 2
},
"page_size": 100
}
]
}
Flow Service API に対して POST リクエストを実行することで、ソース接続を作成することができます。ソース接続は、接続 ID、ソースデータファイルへのパス、接続仕様 ID から構成されます。
API 形式
POST /sourceConnections
リクエスト
次のリクエストは、SugarCRM Events のソース接続を作成します。
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/sourceConnections' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-H 'Content-Type: application/json' \
-d '{
"name": "SugarCRM Source Connection",
"description": "SugarCRM Source Connection",
"baseConnectionId": "f5421911-6f6c-41c7-aafa-5d9d2ce51535",
"connectionSpec": {
"id": "63d2b27b-69a5-45c9-a7fe-78148a25de3c",
"version": "1.0"
},
"data": {
"format": "json"
},
"params": {
}
}'
プロパティ | 説明 |
---|---|
name |
ソース接続の名前。 ソース接続の情報を検索する際に使用できるので、ソース接続の名前はわかりやすいものにしてください。 |
description |
含めることでソース接続に関する詳細情報を提供できるオプションの値です。 |
baseConnectionId |
SugarCRM Events のベース接続 ID。この ID は、前の手順で生成されました。 |
connectionSpec.id |
ソースに対応する接続仕様の ID。 |
data.format |
取り込む SugarCRM Events データの形式。現在、サポートされているデータ形式は json のみです。 |
応答
リクエストが成功した場合は、新たに作成されたソース接続の一意の ID(id
)が返されます。この ID は、後の手順でデータフローを作成する際に必要になります。
{
"id": "ffac1ae1-c137-4133-9f8d-0279468c11c9",
"etag": "\"ed05abc3-0000-0200-0000-6368b3280000\""
}
ソースデータを Platform で使用するには、必要に応じてターゲットスキーマを作成してソースデータを構造化する必要があります。 次に、ターゲットスキーマを使用して、ソースデータが含まれる Platform データセットを作成します。
Schema Registry API に POST リクエストを実行することで、ターゲット XDM スキーマを作成できます。
ターゲット XDM スキーマの作成手順について詳しくは、 API を使用したスキーマの作成に関するチュートリアルを参照してください。
Catalog Service API に POST リクエストを実行し、その際にペイロード内でターゲットスキーマの ID を指定することで、ターゲットデータセットを作成できます。
ターゲットデータセットの作成手順について詳しくは、 API を使用したデータセットの作成に関するチュートリアルを参照してください。
ターゲット接続は、取り込んだデータの保存先への接続を表します。 ターゲット接続を作成するには、データレイクに対応する固定接続仕様 ID を指定する必要があります。 この ID は c604ff05-7f1a-43c0-8e18-33bf874cb11c
です。
これで、ターゲットスキーマとターゲットデータセット、およびデータレイクへの接続仕様 ID の一意の識別子が得られました。 これらの識別子を使用すると、受信ソースデータを格納するデータセットを指定する Flow Service API を使用して、ターゲット接続を作成することができます。
API 形式
POST /targetConnections
リクエスト
次のリクエストは、SugarCRM Events のターゲット接続を作成します。
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-H 'Content-Type: application/json' \
-d '{
"name": "SugarCRM Target Connection Generic Rest",
"description": "SugarCRM Target Connection Generic Rest",
"connectionSpec": {
"id": "63d2b27b-69a5-45c9-a7fe-78148a25de3c",
"version": "1.0"
},
"data": {
"format": "parquet_xdm",
"schema": {
"id": "https://ns.adobe.com/{TENANT_ID}/schemas/b156e6f818f923e048199173c45e55e20fd2487f5eb03d22",
"version": "1.22"
}
},
"params": {
"dataSetId": "6365389d1d37d01c077a81da"
}
}'
プロパティ | 説明 |
---|---|
name |
ターゲット接続の名前。ターゲット接続の情報を検索に使用できるように、ターゲット接続はわかりやすい名前にしてください。 |
description |
ターゲット接続に関する詳細を提供するために含めることができるオプションの値です。 |
connectionSpec.id |
データレイクに対応する接続仕様 ID。 この修正済み ID は 6b137bf6-d2a0-48c8-914b-d50f4942eb85 です。 |
data.format |
取り込む SugarCRM Events データの形式。 |
params.dataSetId |
前の手順で取得したターゲットデータセット ID。 |
応答
リクエストが成功した場合は、新しいターゲット接続の一意の ID(id
)が返されます。この ID は、後の手順で必要になります。
{
"id": "dfe9113e-be98-4d63-80a9-f41761721049",
"etag": "\"84050267-0000-0200-0000-6368b3640000\""
}
ソースデータをターゲットデータセットに取り込むには、まず、ターゲットデータセットが準拠するターゲットスキーマにマッピングする必要があります。これは、次に対してPOSTリクエストを実行する Data Prep API リクエストペイロード内で定義されたデータマッピングを使用して、
API 形式
POST /conversion/mappingSets
リクエスト
curl -X POST \
'https://platform.adobe.io/data/foundation/conversion/mappingSets' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-H 'Content-Type: application/json' \
-d '{
"outputSchema": {
"schemaRef": {
"id": "https://ns.adobe.com/{TENANT_ID}/schemas/b156e6f818f923e048199173c45e55e20fd2487f5eb03d22",
"contentType": "application/vnd.adobe.xed-full+json;version=1"
}
},
"mappings": [
{
"sourceType": "ATTRIBUTE",
"source": "results.created_by",
"destination": "_extconndev.created_by"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.created_by_id",
"destination": "_extconndev.created_by_id"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.created_date",
"destination": "_extconndev.created_date"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.name",
"destination": "_extconndev.name_event"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.event_id",
"destination": "_extconndev.id_event"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.event_id",
"destination": "_id"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.sessions",
"destination": "_extconndev.sessions"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.updated_by",
"destination": "_extconndev.updated_by"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.updated_by_id",
"destination": "_extconndev.updated_by_id"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.updated_date",
"destination": "_extconndev.updated_date"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.updated_date",
"destination": "timestamp"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.event",
"destination": "_extconndev.event"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.description",
"destination": "_extconndev.description"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.folder_id",
"destination": "_extconndev.folder_id"
},
{
"sourceType": "ATTRIBUTE",
"source": "results.status",
"destination": "_extconndev.status"
}
]
}'
プロパティ | 説明 |
---|---|
outputSchema.schemaRef.id |
以前の手順で生成されたターゲット XDM スキーマの ID。 |
mappings.sourceType |
マッピングするソース属性タイプ。 |
mappings.source |
宛先 XDM パスにマッピングする必要があるソース属性。 |
mappings.destination |
ソース属性がマッピングされている宛先 XDM パス。 |
応答
リクエストが成功した場合は、一意の ID(id
)を含む、新しく作成されたマッピングの詳細が返されます。この値は、後の手順でデータフローを作成する際に必要になります。
{
"id": "d3845beaceeb49669228973f5f937f89",
"version": 0,
"createdDate": 1597784069368,
"modifiedDate": 1597784069368,
"createdBy": "{CREATED_BY}",
"modifiedBy": "{MODIFIED_BY}"
}
からデータを取り込むための最後の手順 SugarCRM Events を Platform に送信する場合、データフローを作成します。 現時点で、次の必要な値の準備ができています。
データフローは、ソースからデータをスケジュールおよび収集する役割を果たします。ペイロードに前述の値を提供しながら POST リクエストを実行することで、データフローを作成することができます。
取り込みをスケジュールするには、まず開始時刻の値をエポック時間(秒)に設定する必要があります。次に、頻度の値を次のいずれかに設定する必要があります。 hour
または day
. 間隔の値は、2 つの連続した取り込みの間隔を指定します。 間隔の値は次のように設定する必要があります 1
または 24
次に応じて: scheduleParams.frequency
いずれかの選択 hour
または day
.
API 形式
POST /flows
リクエスト
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/flows' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-H 'Content-Type: application/json' \
-d '{
"name": "SugarCRM Connector Description Flow Generic Rest",
"description": "SugarCRM Connector Description Flow Generic Rest",
"flowSpec": {
"id": "6499120c-0b15-42dc-936e-847ea3c24d72",
"version": "1.0"
},
"sourceConnectionIds": [
"8f1fc72a-f562-4a1d-8597-85b5ca1b1cd3"
],
"targetConnectionIds": [
"6b137bf6-d2a0-48c8-914b-d50f4942eb85"
],
"transformations": [
{
"name": "Mapping",
"params": {
"mappingId": "d3845beaceeb49669228973f5f937f89",
"mappingVersion": "0"
}
}
],
"scheduleParams": {
"startTime": "1625040887",
"frequency": "hour",
"interval": 1
}
}'
プロパティ | 説明 |
---|---|
name |
データフローの名前。データフローの情報を検索する際に使用できるので、データフローはわかりやすい名前にしてください。 |
description |
データフローの詳細を指定するために含めることができるオプションの値です。 |
flowSpec.id |
データフローの作成に必要なフロー仕様 ID。この修正済み ID は 6499120c-0b15-42dc-936e-847ea3c24d72 です。 |
flowSpec.version |
フロー仕様 ID の対応するバージョン。この値のデフォルトは 1.0 です。 |
sourceConnectionIds |
以前の手順で生成されたソース接続 ID。 |
targetConnectionIds |
以前の手順で生成されたターゲット接続 ID。 |
transformations |
このプロパティには、データに適用する必要がある様々な変換が含まれています。このプロパティは、XDM に準拠していないデータを Platform に取り込む場合に必要です。 |
transformations.name |
変換に割り当てられた名前。 |
transformations.params.mappingId |
以前の手順で生成されたマッピング ID。 |
transformations.params.mappingVersion |
マッピング ID の対応するバージョン。この値のデフォルトは 0 です。 |
scheduleParams.startTime |
このプロパティには、データフローの取り込みスケジュールに関する情報が含まれています。 |
scheduleParams.frequency |
データフローがデータを収集する頻度。指定できる値は次のとおりです。 hour または day . |
scheduleParams.interval |
インターバルは 2 つの連続したフロー実行の間隔を指定します。インターバルの値はゼロ以外の整数にしてください。間隔の値は次のように設定する必要があります 1 または 24 次に応じて: scheduleParams.frequency いずれかの選択 hour または day . |
応答
正常な応答は、新しく作成したデータフローの ID(id
)を返します。この ID を使用して、データフローを監視、更新または削除できます。
{
"id": "fcd16140-81b4-422a-8f9a-eaa92796c4f4",
"etag": "\"9200a171-0000-0200-0000-6368c1da0000\""
}
次の節では、データフローを監視、更新、削除する手順について説明します。
データフローが作成されると、それを通して取り込まれるデータを監視し、フローの実行状況、完了状況、エラーなどの情報を確認することができます。API の完全な例については、 API を使用したソースデータフローの監視.
に対するPATCHリクエストを実行して、データフローの名前や説明、実行スケジュールおよび関連するマッピングセットなどの詳細を更新します。 /flows
の終点 Flow Service API を使用してデータフローの ID を指定します。 PATCHリクエストをおこなう場合、データフローの一意の etag
(内) If-Match
ヘッダー。 API の完全な例については、 API を使用したソースデータフローの更新
に対してPATCHリクエストを実行して、ソースアカウントの名前、説明および資格情報を更新します。 Flow Service ベース接続 ID をクエリパラメーターとして指定する際の API。 PATCHリクエストをおこなう場合、ソースアカウントの一意の etag
(内) If-Match
ヘッダー。 API の完全な例については、 API を使用したソースアカウントの更新.
に対してDELETEリクエストを実行して、データフローを削除する Flow Service クエリパラメーターの一部として削除するデータフローの ID を指定する際の API。 API の完全な例については、 API を使用したデータフローの削除.
アカウントを削除するには、 Flow Service 削除するアカウントのベース接続 ID を指定する際の API。 API の完全な例については、 API を使用したソースアカウントの削除.