airbyte-source-shopify 2.5.15__py3-none-any.whl → 2.5.17__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {airbyte_source_shopify-2.5.15.dist-info → airbyte_source_shopify-2.5.17.dist-info}/METADATA +1 -1
- {airbyte_source_shopify-2.5.15.dist-info → airbyte_source_shopify-2.5.17.dist-info}/RECORD +6 -6
- source_shopify/schemas/customer_journey_summary.json +76 -0
- source_shopify/shopify_graphql/bulk/query.py +58 -4
- {airbyte_source_shopify-2.5.15.dist-info → airbyte_source_shopify-2.5.17.dist-info}/WHEEL +0 -0
- {airbyte_source_shopify-2.5.15.dist-info → airbyte_source_shopify-2.5.17.dist-info}/entry_points.txt +0 -0
|
@@ -12,7 +12,7 @@ source_shopify/schemas/collects.json,sha256=dOX0_O7meWELWHYQG_MWqGkWLelAoiIlPtDX
|
|
|
12
12
|
source_shopify/schemas/countries.json,sha256=HrDHbtuc1WHyAzKVMqllTzcYdDmPQ2kwnEwY3MjTgyg,2161
|
|
13
13
|
source_shopify/schemas/custom_collections.json,sha256=ElDY1y_G_VFPOGr9ipU022AZDWKB2LC8n8Cb6FGF8UM,3100
|
|
14
14
|
source_shopify/schemas/customer_address.json,sha256=kLKylul_xK7eO_aduvDddj078k8aQLM4JtUEpa5Tp_8,2628
|
|
15
|
-
source_shopify/schemas/customer_journey_summary.json,sha256=
|
|
15
|
+
source_shopify/schemas/customer_journey_summary.json,sha256=GlZmIqFeR1x84DwgwMo28HQ8QseImkhvYxLSNRkUmwg,12733
|
|
16
16
|
source_shopify/schemas/customer_saved_search.json,sha256=VKk7gFVdempXguprL3n5krTIpleMEPzarY7U7qfiGvw,986
|
|
17
17
|
source_shopify/schemas/customers.json,sha256=pywejBEtvMnRHvvnJQhfA8NlCBjELv7XuMlKdpS4cZI,10233
|
|
18
18
|
source_shopify/schemas/discount_codes.json,sha256=YxGptdpjXwM46fmzs5zoi3m96xAWKXrfllC_oIZW0vo,3730
|
|
@@ -54,7 +54,7 @@ source_shopify/scopes.py,sha256=PfqovbAvu_HZPim2kWQQUe-2rZ80Aq5yHPfNbHP87gA,6534
|
|
|
54
54
|
source_shopify/shopify_graphql/bulk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
55
|
source_shopify/shopify_graphql/bulk/exceptions.py,sha256=4dj7Za4xIfwL-zf8joT9svF_RSoGlE3GviMiIl1e1rs,2532
|
|
56
56
|
source_shopify/shopify_graphql/bulk/job.py,sha256=_GL2WXK23yJjYcnOzuiBgpBxvng3RF_ezPhl265puz4,27635
|
|
57
|
-
source_shopify/shopify_graphql/bulk/query.py,sha256=
|
|
57
|
+
source_shopify/shopify_graphql/bulk/query.py,sha256=jWALChkDaQ1upglE-qwv-gBCGXKjWK8vWup-o61DlB4,123798
|
|
58
58
|
source_shopify/shopify_graphql/bulk/record.py,sha256=X6VGngugv7a_S8UEeDo121BkdCVLj5nWlHK76A21kyo,16898
|
|
59
59
|
source_shopify/shopify_graphql/bulk/retry.py,sha256=R5rSJJE8D5zcj6mN-OmmNO2aFZEIdjAlWclDDVW5KPI,2626
|
|
60
60
|
source_shopify/shopify_graphql/bulk/status.py,sha256=RmuQ2XsYL3iRCpVGxea9F1wXGmbwasDCSXjaTyL4LMA,328
|
|
@@ -67,7 +67,7 @@ source_shopify/streams/base_streams.py,sha256=-Yww6tSot5xG4MSwSK2JWHjR3DDFYM9q5L
|
|
|
67
67
|
source_shopify/streams/streams.py,sha256=AhB73104HJNLWDTSgLdCJWcEoqsO3KxnBccOzeGNUmI,12056
|
|
68
68
|
source_shopify/transform.py,sha256=mn0htL812_90zc_YszGQa0hHcIZQpYYdmk8IqpZm5TI,4685
|
|
69
69
|
source_shopify/utils.py,sha256=GOIIL_UVHfgkrfI5CbDkSQi92qdgcbcGEFyZQ_A78KE,14463
|
|
70
|
-
airbyte_source_shopify-2.5.
|
|
71
|
-
airbyte_source_shopify-2.5.
|
|
72
|
-
airbyte_source_shopify-2.5.
|
|
73
|
-
airbyte_source_shopify-2.5.
|
|
70
|
+
airbyte_source_shopify-2.5.17.dist-info/METADATA,sha256=a9FmFKQqlPMaeAy2ZLfnhA5C9oh2fJP892RPGgOtr38,5257
|
|
71
|
+
airbyte_source_shopify-2.5.17.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
72
|
+
airbyte_source_shopify-2.5.17.dist-info/entry_points.txt,sha256=SyTwKSsPk9MCdPf01saWpnp8hcmZOgBssVcSIvMbBeQ,57
|
|
73
|
+
airbyte_source_shopify-2.5.17.dist-info/RECORD,,
|
|
@@ -191,6 +191,82 @@
|
|
|
191
191
|
"type": ["null", "string"]
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
|
+
},
|
|
195
|
+
"moments": {
|
|
196
|
+
"description": "The events preceding a customer's order, such as shop sessions.",
|
|
197
|
+
"type": ["null", "array"],
|
|
198
|
+
"items": {
|
|
199
|
+
"type": ["null", "object"],
|
|
200
|
+
"properties": {
|
|
201
|
+
"id": {
|
|
202
|
+
"description": "A globally-unique ID.",
|
|
203
|
+
"type": ["null", "integer"]
|
|
204
|
+
},
|
|
205
|
+
"landing_page": {
|
|
206
|
+
"description": "URL of the first page the customer landed on for the session.",
|
|
207
|
+
"type": ["null", "string"]
|
|
208
|
+
},
|
|
209
|
+
"landing_page_html": {
|
|
210
|
+
"description": "Landing page information with URL linked in HTML. For example, the first page the customer visited was",
|
|
211
|
+
"type": ["null", "string"]
|
|
212
|
+
},
|
|
213
|
+
"occurred_at": {
|
|
214
|
+
"description": "The date and time when the customer's session occurred.",
|
|
215
|
+
"type": ["null", "string"],
|
|
216
|
+
"format": "date-time"
|
|
217
|
+
},
|
|
218
|
+
"referral_code": {
|
|
219
|
+
"description": "Marketing referral code from the link that the customer clicked to visit the store.",
|
|
220
|
+
"type": ["null", "string"]
|
|
221
|
+
},
|
|
222
|
+
"referrer_url": {
|
|
223
|
+
"description": "Webpage where the customer clicked a link that sent them to the online store.",
|
|
224
|
+
"type": ["null", "string"]
|
|
225
|
+
},
|
|
226
|
+
"source": {
|
|
227
|
+
"description": "Source from which the customer visited the store, such as a platform (Facebook, Google), email, direct, a website domain, QR code, or unknown.",
|
|
228
|
+
"type": ["null", "string"]
|
|
229
|
+
},
|
|
230
|
+
"source_type": {
|
|
231
|
+
"description": "Type of marketing tactic.",
|
|
232
|
+
"type": ["null", "string"]
|
|
233
|
+
},
|
|
234
|
+
"source_description": {
|
|
235
|
+
"description": "Describes the source explicitly for first or last session.",
|
|
236
|
+
"type": ["null", "string"]
|
|
237
|
+
},
|
|
238
|
+
"utm_parameters": {
|
|
239
|
+
"description": "A set of UTM parameters gathered from the URL parameters of the referrer.",
|
|
240
|
+
"type": ["null", "object"],
|
|
241
|
+
"properties": {
|
|
242
|
+
"campaign": {
|
|
243
|
+
"description": "The name of a marketing campaign.",
|
|
244
|
+
"type": ["null", "string"]
|
|
245
|
+
},
|
|
246
|
+
"content": {
|
|
247
|
+
"description": "Identifies specific content in a marketing campaign. Used to differentiate between similar content or links in a marketing campaign to determine which is the most effective.",
|
|
248
|
+
"type": ["null", "string"]
|
|
249
|
+
},
|
|
250
|
+
"medium": {
|
|
251
|
+
"description": "The medium of a marketing campaign, such as a banner or email newsletter.",
|
|
252
|
+
"type": ["null", "string"]
|
|
253
|
+
},
|
|
254
|
+
"source": {
|
|
255
|
+
"description": "The source of traffic to the merchant's store, such as Google or an email newsletter.",
|
|
256
|
+
"type": ["null", "string"]
|
|
257
|
+
},
|
|
258
|
+
"term": {
|
|
259
|
+
"description": "Paid search terms used by a marketing campaign.",
|
|
260
|
+
"type": ["null", "string"]
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
"admin_graphql_api_id": {
|
|
265
|
+
"description": "Unique identifier for the customer in the Admin GraphQL API.",
|
|
266
|
+
"type": ["null", "string"]
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
194
270
|
}
|
|
195
271
|
}
|
|
196
272
|
},
|
|
@@ -1105,6 +1105,29 @@ class CustomerJourney(ShopifyBulkQuery):
|
|
|
1105
1105
|
term
|
|
1106
1106
|
}
|
|
1107
1107
|
}
|
|
1108
|
+
customerJourney {
|
|
1109
|
+
moments {
|
|
1110
|
+
... on CustomerVisit {
|
|
1111
|
+
id
|
|
1112
|
+
landingPage
|
|
1113
|
+
landingPageHtml
|
|
1114
|
+
occurredAt
|
|
1115
|
+
referralCode
|
|
1116
|
+
referralInfoHtml
|
|
1117
|
+
referrerUrl
|
|
1118
|
+
source
|
|
1119
|
+
sourceDescription
|
|
1120
|
+
sourceType
|
|
1121
|
+
utmParameters {
|
|
1122
|
+
campaign
|
|
1123
|
+
content
|
|
1124
|
+
medium
|
|
1125
|
+
source
|
|
1126
|
+
term
|
|
1127
|
+
}
|
|
1128
|
+
}
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1108
1131
|
}
|
|
1109
1132
|
}
|
|
1110
1133
|
}
|
|
@@ -1127,6 +1150,16 @@ class CustomerJourney(ShopifyBulkQuery):
|
|
|
1127
1150
|
"sourceDescription",
|
|
1128
1151
|
Field(name="utmParameters", fields=["campaign", "content", "medium", "source", "term"]),
|
|
1129
1152
|
]
|
|
1153
|
+
|
|
1154
|
+
customer_visit_fragment: List[InlineFragment] = [
|
|
1155
|
+
InlineFragment(type="CustomerVisit", fields=visit_fields),
|
|
1156
|
+
]
|
|
1157
|
+
|
|
1158
|
+
# # use this in the next version
|
|
1159
|
+
# moments_fields: List[Field] = [
|
|
1160
|
+
# Field(name="edges", fields=[Field(name="node", fields=customer_visit_fragment)]),
|
|
1161
|
+
# ]
|
|
1162
|
+
|
|
1130
1163
|
customer_journey_summary_fields: List[Field] = [
|
|
1131
1164
|
"ready",
|
|
1132
1165
|
Field(name="momentsCount", fields=["count", "precision"]),
|
|
@@ -1134,6 +1167,8 @@ class CustomerJourney(ShopifyBulkQuery):
|
|
|
1134
1167
|
"daysToConversion",
|
|
1135
1168
|
Field(name="firstVisit", fields=visit_fields),
|
|
1136
1169
|
Field(name="lastVisit", fields=visit_fields),
|
|
1170
|
+
# # use this in the next version
|
|
1171
|
+
# Field(name="moments", fields=moments_fields),
|
|
1137
1172
|
]
|
|
1138
1173
|
|
|
1139
1174
|
query_nodes: List[Field] = [
|
|
@@ -1142,6 +1177,12 @@ class CustomerJourney(ShopifyBulkQuery):
|
|
|
1142
1177
|
"createdAt",
|
|
1143
1178
|
"updatedAt",
|
|
1144
1179
|
Field(name="customerJourneySummary", fields=customer_journey_summary_fields),
|
|
1180
|
+
Field(
|
|
1181
|
+
name="customerJourney",
|
|
1182
|
+
fields=[
|
|
1183
|
+
Field(name="moments", fields=customer_visit_fragment),
|
|
1184
|
+
],
|
|
1185
|
+
),
|
|
1145
1186
|
]
|
|
1146
1187
|
|
|
1147
1188
|
record_composition = {
|
|
@@ -1152,6 +1193,9 @@ class CustomerJourney(ShopifyBulkQuery):
|
|
|
1152
1193
|
self,
|
|
1153
1194
|
visit_data: Mapping[str, Any],
|
|
1154
1195
|
) -> MutableMapping[str, Any]:
|
|
1196
|
+
if not visit_data:
|
|
1197
|
+
return {}
|
|
1198
|
+
|
|
1155
1199
|
# save the id before it's resolved
|
|
1156
1200
|
visit_data["admin_graphql_api_id"] = visit_data.get("id")
|
|
1157
1201
|
# resolve the order_id to str
|
|
@@ -1162,14 +1206,24 @@ class CustomerJourney(ShopifyBulkQuery):
|
|
|
1162
1206
|
visit_data = self.tools.fields_names_to_snake_case(visit_data)
|
|
1163
1207
|
return visit_data
|
|
1164
1208
|
|
|
1209
|
+
def process_moments(self, entity: List[Mapping[str, Any]]) -> List[MutableMapping[str, Any]]:
|
|
1210
|
+
moments = []
|
|
1211
|
+
for item in entity:
|
|
1212
|
+
moments.append(self.process_visit(item))
|
|
1213
|
+
return moments
|
|
1214
|
+
|
|
1165
1215
|
def process_customer_journey(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
|
|
1166
1216
|
customer_journey_summary = record.get("customerJourneySummary", {})
|
|
1167
1217
|
if customer_journey_summary:
|
|
1168
1218
|
# process first, last visit data
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1219
|
+
customer_journey_summary["firstVisit"] = self.process_visit(customer_journey_summary.get("firstVisit"))
|
|
1220
|
+
customer_journey_summary["lastVisit"] = self.process_visit(customer_journey_summary.get("lastVisit"))
|
|
1221
|
+
|
|
1222
|
+
# # this will be a part of summary in the next api version
|
|
1223
|
+
if customer_journey := record.get("customerJourney", {}):
|
|
1224
|
+
moments = customer_journey.get("moments", [])
|
|
1225
|
+
customer_journey_summary["moments"] = self.process_moments(moments)
|
|
1226
|
+
|
|
1173
1227
|
# cast field names to snake_case
|
|
1174
1228
|
customer_journey_summary = self.tools.fields_names_to_snake_case(customer_journey_summary)
|
|
1175
1229
|
return customer_journey_summary
|
|
File without changes
|
{airbyte_source_shopify-2.5.15.dist-info → airbyte_source_shopify-2.5.17.dist-info}/entry_points.txt
RENAMED
|
File without changes
|