[Beta]{class="badge informative"}
Creare una connessione di origine streaming e un flusso di dati per i dati Shopify utilizzando l'API del servizio Flusso
Nell'esercitazione seguente vengono illustrati i passaggi per la creazione di una connessione di origine streaming e di un flusso di dati per lo streaming dei dati da Shopify a Adobe Experience Platform mediante Flow Service API.
Introduzione getting-started
Questa guida richiede una buona conoscenza dei seguenti componenti di Experience Platform:
- Origini: Experience Platform consente di acquisire dati da varie origini e allo stesso tempo di strutturare, etichettare e migliorare i dati in arrivo tramite i servizi Platform.
- Sandbox: Experience Platform fornisce sandbox virtuali che suddividono una singola istanza Platform in ambienti virtuali separati, utili per le attività di sviluppo e aggiornamento delle applicazioni di esperienza digitale.
Utilizzo delle API di Platform
Per informazioni su come effettuare correttamente chiamate alle API di Platform, consulta la guida in guida introduttiva alle API di Platform.
Trasmetti i dati Shopify a Platform utilizzando l'API del servizio Flusso
Di seguito vengono descritti i passaggi da eseguire per creare una connessione di origine e un flusso di dati per inviare i dati di Shopify a Platform.
Creare una connessione sorgente source-connection
Creare una connessione di origine effettuando una richiesta POST all'API Flow Service e fornendo l'ID della specifica di connessione dell'origine, dettagli quali nome e descrizione e il formato dei dati.
Formato API
POST /sourceConnections
Richiesta
La richiesta seguente crea una connessione di origine per YOURSOURCE:
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": "Shopify Streaming Source Connection",
"providerId": "521eee4d-8cbe-4906-bb48-fb6bd4450033",
"description": "Shopify Streaming Source Connection",
"connectionSpec": {
"id": "e77fd9d2-22a8-11ed-861d-0242ac120002",
"version": "1.0"
},
"data": {
"format": "json"
}
}'
name
description
connectionSpec.id
data.format
json
.Risposta
In caso di esito positivo, la risposta restituisce l'identificatore univoco (id
) della connessione di origine appena creata. Questo ID è necessario in un passaggio successivo per creare un flusso di dati.
{
"id": "246d052c-da4a-494a-937f-a0d17b1c6cf5",
"etag": "\"712a8c08-fda7-41c2-984b-187f823293d8\""
}
Creare uno schema XDM di destinazione target-schema
Per utilizzare i dati sorgente in Platform, è necessario creare uno schema di destinazione che strutturi i dati sorgente in base alle tue esigenze. Lo schema di destinazione viene quindi utilizzato per creare un set di dati di Platform in cui sono contenuti i dati di origine.
È possibile creare uno schema XDM di destinazione eseguendo una richiesta POST all'API Schema Registry.
Per i passaggi dettagliati su come creare uno schema XDM di destinazione, consulta l'esercitazione su creazione di uno schema utilizzando l'API.
Creare un set di dati di destinazione target-dataset
È possibile creare un set di dati di destinazione eseguendo una richiesta POST all'API Catalog Service, fornendo l'ID dello schema di destinazione all'interno del payload.
Per i passaggi dettagliati su come creare un set di dati di destinazione, consulta l'esercitazione su creazione di un set di dati utilizzando l'API.
Creare una connessione di destinazione target-connection
Una connessione di destinazione rappresenta la connessione alla destinazione in cui devono essere memorizzati i dati acquisiti. Per creare una connessione di destinazione, devi fornire l’ID di specifica della connessione fissa che corrisponde al data lake. ID: c604ff05-7f1a-43c0-8e18-33bf874cb11c
.
Ora disponi degli identificatori univoci, di uno schema di destinazione, di un set di dati di destinazione e dell’ID della specifica di connessione al data lake. Utilizzando questi identificatori, è possibile creare una connessione di destinazione utilizzando l'API Flow Service per specificare il set di dati che conterrà i dati di origine in entrata.
Formato API
POST /targetConnections
Richiesta
La richiesta seguente crea una connessione di destinazione per Shopify:
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": "Shopify Streaming Target Connection",
"description": "Shopify Streaming Target Connection",
"connectionSpec": {
"id": "c604ff05-7f1a-43c0-8e18-33bf874cb11c",
"version": "1.0"
},
"data": {
"format": "json",
"schema": {
"id": "{TARGET_XDM_SCHEMA}",
"version": "application/vnd.adobe.xed-full+json;version=1"
}
},
"params": {
"dataSetId": "{TARGET_DATASET}"
}
}'
name
description
connectionSpec.id
c604ff05-7f1a-43c0-8e18-33bf874cb11c
.data.format
params.dataSetId
Risposta
Una risposta corretta restituisce l'identificatore univoco della nuova connessione di destinazione (id
). Questo ID è richiesto nei passaggi successivi.
{
"id": "7c96c827-3ffd-460c-a573-e9558f72f263",
"etag": "\"a196f685-f5e8-4c4c-bfbd-136141bb0c6d\""
}
Creare una mappatura mapping
Per poter acquisire i dati di origine in un set di dati di destinazione, è necessario prima mapparli sullo schema di destinazione a cui il set di dati di destinazione aderisce. Ciò si ottiene eseguendo una richiesta POST all'API Data Prep API con mappature dati definite nel payload della richiesta.
Formato API
POST /conversion/mappingSets
Richiesta
curl -X POST \
'https://platform.adobe.io/data/foundation/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 '{
"version": 0,
"xdmSchema": "{TARGET_XDM_SCHEMA}",
"xdmVersion": "1.0",
"mappings": [
{
"destinationXdmPath": "person.name.firstName",
"sourceAttribute": "firstName",
"identity": false,
"version": 0
},
{
"destinationXdmPath": "person.name.lastName",
"sourceAttribute": "lastName",
"identity": false,
"version": 0
}
]
}'
xdmSchema
mappings.destinationXdmPath
mappings.sourceAttribute
mappings.identity
Risposta
In caso di esito positivo, la risposta restituisce i dettagli della mappatura appena creata, incluso il relativo identificatore univoco (id
). Questo valore è necessario in un passaggio successivo per creare un flusso di dati.
{
"id": "bf5286a9c1ad4266baca76ba3adc9366",
"version": 0,
"createdDate": 1597784069368,
"modifiedDate": 1597784069368,
"createdBy": "{CREATED_BY}",
"modifiedBy": "{MODIFIED_BY}"
}
Creare un flusso flow
L'ultimo passaggio per portare i dati da Shopify a Platform consiste nel creare un flusso di dati. A questo punto sono stati preparati i seguenti valori obbligatori:
Un flusso di dati è responsabile della pianificazione e della raccolta di dati da un’origine. Puoi creare un flusso di dati eseguendo una richiesta POST e fornendo i valori precedentemente menzionati all’interno del payload.
Formato API
POST /flows
Richiesta
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": "Shopify Streaming Dataflow",
"description": "Shopify Streaming Dataflow",
"flowSpec": {
"id": "e77fde5a-22a8-11ed-861d-0242ac120002",
"version": "1.0"
},
"sourceConnectionIds": [
"246d052c-da4a-494a-937f-a0d17b1c6cf5"
],
"targetConnectionIds": [
"7c96c827-3ffd-460c-a573-e9558f72f263"
],
"transformations": [
{
"name": "Mapping",
"params": {
"mappingId": "bf5286a9c1ad4266baca76ba3adc9366",
"mappingVersion": 0
}
}
]
}'
name
description
flowSpec.id
e77fde5a-22a8-11ed-861d-0242ac120002
.flowSpec.version
1.0
.sourceConnectionIds
targetConnectionIds
transformations
transformations.name
transformations.params.mappingId
transformations.params.mappingVersion
0
.Risposta
In caso di esito positivo, la risposta restituisce l'ID (id
) del flusso di dati appena creato. Puoi usare questo ID per monitorare, aggiornare o eliminare il flusso di dati.
{
"id": "993f908f-3342-4d9c-9f3c-5aa9a189ca1a",
"etag": "\"510bb1d4-8453-4034-b991-ab942e11dd8a\""
}
Ottieni l’URL dell’endpoint di streaming
Una volta creato il flusso di dati, ora puoi recuperare l’URL dell’endpoint di streaming. Utilizzerai questo URL endpoint per sottoscrivere l’origine a un webhook, consentendo alla tua origine di comunicare con Experience Platform.
Per recuperare l'URL dell'endpoint di streaming, effettua una richiesta GET all'endpoint /flows
e fornisci l'ID del flusso di dati.
Formato API
GET /flows/{FLOW_ID}
Richiesta
curl -X GET \
'https://platform.adobe.io/data/foundation/flowservice/flows/993f908f-3342-4d9c-9f3c-5aa9a189ca1a' \
-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}'
Risposta
In caso di esito positivo, la risposta restituisce informazioni sul flusso di dati, incluso l'URL dell'endpoint, contrassegnato come inletUrl
.
{
"header":{
"xactionId":"1658464615769:0062:161",
"source":{
"name":"shopify"
},
"sandboxId":"d537df80-c5d7-11e9-aafb-87c71c35cac8",
"sandboxName":"prod",
"originalTimestamp":1658464615770,
"msgId":"1658464615769:0062:161",
"msgVersion":"1.0",
"traceContext":{
"traceId":"ff3e7544618471eee6b934a4c5929d4e",
"spanId":"74a759c5cc5f5a06",
"isSampled":1.0
},
"_dcsMeta":{
"inletId":"9d411a24aa3c0a3eded92bac6c64d0da986ee7a8212f87168c5fb42d9ddc3227",
"authenticatedRequest":false,
"debug":true
}
},
"body":{
"id":4135234371722,
"admin_graphql_api_id":"gid://shopify/Order/4135234371722",
"app_id":1354745,
"browser_ip":null,
"buyer_accepts_marketing":false,
"cancel_reason":null,
"cancelled_at":null,
"cart_token":null,
"checkout_id":21706716217482,
"checkout_token":"b143503216124d50141fe0832fa3f4b0",
"client_details":{
"accept_language":null,
"browser_height":null,
"browser_ip":null,
"browser_width":null,
"session_hash":null,
"user_agent":null
},
"closed_at":null,
"confirmed":true,
"contact_email":null,
"created_at":"2022-07-22T00:36:48-04:00",
"currency":"INR",
"current_subtotal_price":"40000.00",
"current_subtotal_price_set":{
"shop_money":{
"amount":"40000.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"40000.00",
"currency_code":"INR"
}
},
"current_total_discounts":"0.00",
"current_total_discounts_set":{
"shop_money":{
"amount":"0.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"0.00",
"currency_code":"INR"
}
},
"current_total_duties_set":null,
"current_total_price":"47200.00",
"current_total_price_set":{
"shop_money":{
"amount":"47200.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"47200.00",
"currency_code":"INR"
}
},
"current_total_tax":"7200.00",
"current_total_tax_set":{
"shop_money":{
"amount":"7200.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"7200.00",
"currency_code":"INR"
}
},
"customer_locale":null,
"device_id":null,
"discount_codes":[
],
"email":"",
"estimated_taxes":false,
"financial_status":"paid",
"fulfillment_status":null,
"gateway":"manual",
"landing_site":null,
"landing_site_ref":null,
"location_id":39129743498,
"name":"#1005",
"note":null,
"note_attributes":[
],
"number":5,
"order_number":1005,
"order_status_url":"https://connnectors-test.myshopify.com/31913214090/orders/ffd48198c78ef460177e44e22b19e6ab/authenticate?key=79a40d7da4b23d6a0beb2ba774f6ac83",
"original_total_duties_set":null,
"payment_gateway_names":[
"manual"
],
"phone":null,
"presentment_currency":"INR",
"processed_at":"2022-07-22T00:36:48-04:00",
"processing_method":"manual",
"reference":null,
"referring_site":null,
"source_identifier":null,
"source_name":"shopify_draft_order",
"source_url":null,
"subtotal_price":"40000.00",
"subtotal_price_set":{
"shop_money":{
"amount":"40000.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"40000.00",
"currency_code":"INR"
}
},
"tags":"",
"tax_lines":[
{
"price":"7200.00",
"rate":0.18,
"title":"IGST",
"price_set":{
"shop_money":{
"amount":"7200.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"7200.00",
"currency_code":"INR"
}
},
"channel_liable":false
}
],
"taxes_included":false,
"test":false,
"token":"ffd48198c78ef460177e44e22b19e6ab",
"total_discounts":"0.00",
"total_discounts_set":{
"shop_money":{
"amount":"0.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"0.00",
"currency_code":"INR"
}
},
"total_line_items_price":"40000.00",
"total_line_items_price_set":{
"shop_money":{
"amount":"40000.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"40000.00",
"currency_code":"INR"
}
},
"total_outstanding":"0.00",
"total_price":"47200.00",
"total_price_set":{
"shop_money":{
"amount":"47200.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"47200.00",
"currency_code":"INR"
}
},
"total_price_usd":"589.95",
"total_shipping_price_set":{
"shop_money":{
"amount":"0.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"0.00",
"currency_code":"INR"
}
},
"total_tax":"7200.00",
"total_tax_set":{
"shop_money":{
"amount":"7200.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"7200.00",
"currency_code":"INR"
}
},
"total_tip_received":"0.00",
"total_weight":800,
"updated_at":"2022-07-22T00:36:49-04:00",
"user_id":44968935562,
"discount_applications":[
],
"fulfillments":[
],
"line_items":[
{
"id":10630730743946,
"admin_graphql_api_id":"gid://shopify/LineItem/10630730743946",
"fulfillable_quantity":1,
"fulfillment_service":"manual",
"fulfillment_status":null,
"gift_card":false,
"grams":800,
"name":"Mobile Phones",
"origin_location":{
"id":3141069111434,
"country_code":"IN",
"province_code":"UP",
"name":"Noida",
"address1":"Noida",
"address2":"",
"city":"Noida",
"zip":"201301"
},
"price":"40000.00",
"price_set":{
"shop_money":{
"amount":"40000.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"40000.00",
"currency_code":"INR"
}
},
"product_exists":true,
"product_id":4525859963018,
"properties":[
],
"quantity":1,
"requires_shipping":true,
"sku":"",
"taxable":true,
"title":"Mobile Phones",
"total_discount":"0.00",
"total_discount_set":{
"shop_money":{
"amount":"0.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"0.00",
"currency_code":"INR"
}
},
"variant_id":32045196640394,
"variant_inventory_management":"shopify",
"variant_title":"",
"vendor":"Connnectors Test",
"tax_lines":[
{
"channel_liable":false,
"price":"7200.00",
"price_set":{
"shop_money":{
"amount":"7200.00",
"currency_code":"INR"
},
"presentment_money":{
"amount":"7200.00",
"currency_code":"INR"
}
},
"rate":0.18,
"title":"IGST"
}
],
"duties":[
],
"discount_allocations":[
]
}
],
"payment_terms":null,
"refunds":[
],
"shipping_lines":[
]
}
}
Appendice
La sezione seguente fornisce informazioni sui passaggi da eseguire per monitorare, aggiornare ed eliminare il flusso di dati.
Monitorare il flusso di dati
Una volta creato il flusso di dati, puoi monitorare i dati che vengono acquisiti tramite di esso per visualizzare informazioni sulle esecuzioni del flusso, sullo stato di completamento e sugli errori. Per esempi API completi, consulta la guida su monitoraggio dei flussi di dati di origine tramite API.
Aggiornare il flusso di dati
Aggiorna i dettagli del flusso di dati, ad esempio il nome e la descrizione, nonché la pianificazione dell'esecuzione e i set di mappatura associati, effettuando una richiesta PATCH all'endpoint /flows
dell'API Flow Service e fornendo al contempo l'ID del flusso di dati. Quando si effettua una richiesta PATCH, è necessario fornire etag
univoco del flusso di dati nell'intestazione If-Match
. Per esempi API completi, leggere la guida sull'aggiornamento dei flussi di dati di origine tramite API
Aggiornare l’account
Aggiornare il nome, la descrizione e le credenziali dell'account di origine eseguendo una richiesta PATCH all'API Flow Service e fornendo l'ID connessione di base come parametro di query. Quando si effettua una richiesta PATCH, è necessario fornire etag
univoco dell'account di origine nell'intestazione If-Match
. Per esempi API completi, consulta la guida in aggiornamento dell'account di origine tramite l'API.
Eliminare il flusso di dati
Elimina il flusso di dati eseguendo una richiesta DELETE all'API Flow Service e fornendo l'ID del flusso di dati che desideri eliminare come parte del parametro di query. Per esempi API completi, consulta la guida su eliminazione dei flussi di dati tramite l'API.
Elimina l’account
Eliminare l'account eseguendo una richiesta DELETE all'API Flow Service e fornendo l'ID connessione di base dell'account che si desidera eliminare. Per esempi API completi, leggere la guida in eliminazione dell'account di origine tramite l'API.