airbyte-source-shopify 2.4.14.dev202407181247__py3-none-any.whl → 3.1.0__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.
Files changed (29) hide show
  1. {airbyte_source_shopify-2.4.14.dev202407181247.dist-info → airbyte_source_shopify-3.1.0.dist-info}/METADATA +4 -4
  2. {airbyte_source_shopify-2.4.14.dev202407181247.dist-info → airbyte_source_shopify-3.1.0.dist-info}/RECORD +25 -27
  3. {airbyte_source_shopify-2.4.14.dev202407181247.dist-info → airbyte_source_shopify-3.1.0.dist-info}/WHEEL +1 -1
  4. source_shopify/auth.py +0 -1
  5. source_shopify/config_migrations.py +4 -1
  6. source_shopify/http_request.py +4 -2
  7. source_shopify/schemas/countries.json +7 -19
  8. source_shopify/schemas/customer_journey_summary.json +228 -148
  9. source_shopify/schemas/deleted_products.json +27 -0
  10. source_shopify/schemas/orders.json +38 -0
  11. source_shopify/schemas/product_variants.json +26 -8
  12. source_shopify/schemas/profile_location_groups.json +10 -0
  13. source_shopify/scopes.py +7 -6
  14. source_shopify/shopify_graphql/bulk/exceptions.py +6 -1
  15. source_shopify/shopify_graphql/bulk/job.py +173 -65
  16. source_shopify/shopify_graphql/bulk/query.py +440 -88
  17. source_shopify/shopify_graphql/bulk/record.py +260 -29
  18. source_shopify/shopify_graphql/bulk/retry.py +12 -12
  19. source_shopify/shopify_graphql/bulk/tools.py +17 -2
  20. source_shopify/source.py +6 -10
  21. source_shopify/spec.json +11 -5
  22. source_shopify/streams/base_streams.py +181 -54
  23. source_shopify/streams/streams.py +211 -58
  24. source_shopify/utils.py +47 -12
  25. source_shopify/schemas/customer_saved_search.json +0 -32
  26. source_shopify/schemas/products_graph_ql.json +0 -123
  27. source_shopify/shopify_graphql/graphql.py +0 -64
  28. source_shopify/shopify_graphql/schema.py +0 -29442
  29. {airbyte_source_shopify-2.4.14.dev202407181247.dist-info → airbyte_source_shopify-3.1.0.dist-info}/entry_points.txt +0 -0
@@ -1,19 +1,19 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-source-shopify
3
- Version: 2.4.14.dev202407181247
3
+ Version: 3.1.0
4
4
  Summary: Source CDK implementation for Shopify.
5
5
  Home-page: https://airbyte.com
6
6
  License: ELv2
7
7
  Author: Airbyte
8
8
  Author-email: contact@airbyte.io
9
- Requires-Python: >=3.9,<3.12
9
+ Requires-Python: >=3.10,<3.12
10
10
  Classifier: License :: Other/Proprietary License
11
11
  Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.9
13
12
  Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
- Requires-Dist: airbyte-cdk (>=3,<4)
14
+ Requires-Dist: airbyte-cdk (>=6,<7)
16
15
  Requires-Dist: graphql-query (>=1,<2)
16
+ Requires-Dist: pendulum (>=2.1.2,<3.0.0)
17
17
  Requires-Dist: sgqlc (==16.3)
18
18
  Project-URL: Documentation, https://docs.airbyte.com/integrations/sources/shopify
19
19
  Project-URL: Repository, https://github.com/airbytehq/airbyte
@@ -1,7 +1,7 @@
1
1
  source_shopify/__init__.py,sha256=5B0YAA_u4-fd9f_BIjHzGhaWKAnmW7VZz3rOWr13org,1136
2
- source_shopify/auth.py,sha256=PsijRnG9LFXeUk7sFRdo60seFeT1uhtxekvHsHC-I6Y,1538
3
- source_shopify/config_migrations.py,sha256=5adpmO35MWNZngqFYdSIojANEnp9Na2tagPY8JTyj_o,3797
4
- source_shopify/http_request.py,sha256=epwUrfOCYtGgkraOwwVlhh7RXxW5VpNo6uJdFQY5oWM,2293
2
+ source_shopify/auth.py,sha256=kGCDGkwrKCIpCv60j-1NbRIL9Pn4XmxUbKxP6RkMClQ,1537
3
+ source_shopify/config_migrations.py,sha256=7WS8kuLRYzxhA8ldmX9kEXlowYcnlOpi63DLg1LCExQ,3909
4
+ source_shopify/http_request.py,sha256=eMknu-NB3oAwcgm8oWyHS0Vbub9PlbwGzhhetenb5TM,2290
5
5
  source_shopify/run.py,sha256=K_HTghvJVfQaR3pMtCel5CdLROKKj-KbFSKVAdyquOk,398
6
6
  source_shopify/schemas/abandoned_checkouts.json,sha256=nlYpb8VOQCO8wuHWM8gWhlzzj97NWV9gL2vpUbUl-FU,28417
7
7
  source_shopify/schemas/articles.json,sha256=tGnbM4lI2jA8joevDsrd-mQJksO2lLG3dIJGpxeuoYs,2548
@@ -9,12 +9,12 @@ source_shopify/schemas/balance_transactions.json,sha256=RAU7duUHTWS7nI0pochhTZt5
9
9
  source_shopify/schemas/blogs.json,sha256=ciBS_3eCf4UJUaB0DPCVadeJR4W6ndq7N0JwykXp0RY,2151
10
10
  source_shopify/schemas/collections.json,sha256=2iJMCyAn_yeMKsQVt7jGR3_u3N3CA8QQ6179QvRuwqY,1889
11
11
  source_shopify/schemas/collects.json,sha256=dOX0_O7meWELWHYQG_MWqGkWLelAoiIlPtDXuxz9ig8,1173
12
- source_shopify/schemas/countries.json,sha256=HrDHbtuc1WHyAzKVMqllTzcYdDmPQ2kwnEwY3MjTgyg,2161
12
+ source_shopify/schemas/countries.json,sha256=fdJPrd8tQEzzonkunm0hvMbqZeXixPaphHd3PSt8g58,1783
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=HIWP_595af0KVXNxk9Ggc6xoPiLJ5aLk615saTRhneg,8611
16
- source_shopify/schemas/customer_saved_search.json,sha256=VKk7gFVdempXguprL3n5krTIpleMEPzarY7U7qfiGvw,986
15
+ source_shopify/schemas/customer_journey_summary.json,sha256=GlZmIqFeR1x84DwgwMo28HQ8QseImkhvYxLSNRkUmwg,12733
17
16
  source_shopify/schemas/customers.json,sha256=pywejBEtvMnRHvvnJQhfA8NlCBjELv7XuMlKdpS4cZI,10233
17
+ source_shopify/schemas/deleted_products.json,sha256=7TbqrABNDg9ZFAeLJCPe2Z5jtk9QGbJDuoSKofGd1lg,773
18
18
  source_shopify/schemas/discount_codes.json,sha256=YxGptdpjXwM46fmzs5zoi3m96xAWKXrfllC_oIZW0vo,3730
19
19
  source_shopify/schemas/disputes.json,sha256=Uvzy1Gi954cLxij6H0Vbz0OWS6GS10YaJI4DJfY2x8I,1775
20
20
  source_shopify/schemas/draft_orders.json,sha256=3NaZt9Qk4mY8VO9pB5UBzw3GZibL8MvI0z_tlnMsdBI,24211
@@ -39,35 +39,33 @@ source_shopify/schemas/metafield_smart_collections.json,sha256=uk25Bxu5tATE5Cweo
39
39
  source_shopify/schemas/order_agreements.json,sha256=LywW-Nyynoutitxtj4PukVNmaDknU0GAu4yxa0XQ56U,6821
40
40
  source_shopify/schemas/order_refunds.json,sha256=TRja1SGCFYyf--T_M3-JGG0EnwwH50hwzH-RzbQ4tjY,26296
41
41
  source_shopify/schemas/order_risks.json,sha256=6gK26TewYqT2KfF7rvMTEQODstom2SS0ViHNJESuB8k,10425
42
- source_shopify/schemas/orders.json,sha256=DbipJlJqW2lzuGF2ce4JLRa4H491kVVAWBsoh8YcV50,103922
42
+ source_shopify/schemas/orders.json,sha256=SxX6fDtMnEkvm-58uNgaoF47Ep8DIwLpXK09C2MSNA0,105169
43
43
  source_shopify/schemas/pages.json,sha256=J7jxtk2nE_q-0oHmGz8orFq3EfSjJqUvF6qPJtiZCrg,2093
44
44
  source_shopify/schemas/price_rules.json,sha256=aZ-Re9Oc9g0ci8SPn0_ufvKPsGDBcTaXHVsq_9-Ygq4,7004
45
45
  source_shopify/schemas/product_images.json,sha256=0l3ACfOfnXz8N8oMHwvvfZUFKeeuZ2DlRRu5-FxUhaI,1760
46
- source_shopify/schemas/product_variants.json,sha256=Gze63JAp1BYmIVcFawHAwhvmz0mjVHDFl8x_bJiiVvE,7305
46
+ source_shopify/schemas/product_variants.json,sha256=hBtmB-OyVlmkQacY0s7Mpe-bMdYjx8mpwMqcGwN05kA,8121
47
47
  source_shopify/schemas/products.json,sha256=n7m1ndEnAM7Pee5ca0JZWCl5Y0VffGmTZjqjHhiht1I,22609
48
- source_shopify/schemas/products_graph_ql.json,sha256=4zdUEMsaZsWDQDf2mDVEOe7LnHEyG0LhCtrEPDXUk1s,3598
48
+ source_shopify/schemas/profile_location_groups.json,sha256=2_QdfMeM_WNDT-06fQfFUHXjN9D6ndKIGcviJxEl8kM,189
49
49
  source_shopify/schemas/shop.json,sha256=vEGiTvEYX7qnMq06MRVBycqih49h49xjTNC6gJuxTWs,8137
50
50
  source_shopify/schemas/smart_collections.json,sha256=kv7dINsvgzJ0RyKfFNKjU0apdNDXwQaHfnNZfQsshcU,2009
51
51
  source_shopify/schemas/tender_transactions.json,sha256=U8fdT-eflycEPzYSpBDiB0lp9wxmJHgioHTrICflh78,2006
52
52
  source_shopify/schemas/transactions.json,sha256=vbwscH3UcAtbSsC70mBka4oNaFR4S3S6IFBmzR7t37U,10226
53
- source_shopify/scopes.py,sha256=bGv57fwujjpOf28p7CLfLM_j02jn_LIs_1mJKIjGZik,6516
53
+ source_shopify/scopes.py,sha256=78f9QL3PJZ9UDx1gIWzNwx5fYJE9OB3vPi9RahB_kFw,6533
54
54
  source_shopify/shopify_graphql/bulk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- source_shopify/shopify_graphql/bulk/exceptions.py,sha256=0edYWCtK1Ux09lkYRaBfShygbFOo1wyLzUiwcYB-rks,2298
56
- source_shopify/shopify_graphql/bulk/job.py,sha256=WVQMP8YOxyfK1XZQa-GkP8CxTiM-NaIrGwfvoW8IyWQ,23501
57
- source_shopify/shopify_graphql/bulk/query.py,sha256=LncYj1xY18FgpKnsXDBrXIjl0VvukQQMrNmbeHXWHpg,116749
58
- source_shopify/shopify_graphql/bulk/record.py,sha256=QbkYfqd8d8mLBtvUKe40cNhrxU-17nyoZ14Pt_BRsH4,6526
59
- source_shopify/shopify_graphql/bulk/retry.py,sha256=iWNRCEvYfZZXT3gyZ6bOlQom4SkAjCMJF5vntECsNWU,2694
55
+ source_shopify/shopify_graphql/bulk/exceptions.py,sha256=4dj7Za4xIfwL-zf8joT9svF_RSoGlE3GviMiIl1e1rs,2532
56
+ source_shopify/shopify_graphql/bulk/job.py,sha256=c3Cg70_Io9jTD-rU-5MvjHaPmJCtcpeqEYnRtFECGOo,28673
57
+ source_shopify/shopify_graphql/bulk/query.py,sha256=D8rnI1SDw50-Gt18lt7YwwNNdsbVMbBfxZa9xVJZbto,130981
58
+ source_shopify/shopify_graphql/bulk/record.py,sha256=X6VGngugv7a_S8UEeDo121BkdCVLj5nWlHK76A21kyo,16898
59
+ source_shopify/shopify_graphql/bulk/retry.py,sha256=R5rSJJE8D5zcj6mN-OmmNO2aFZEIdjAlWclDDVW5KPI,2626
60
60
  source_shopify/shopify_graphql/bulk/status.py,sha256=RmuQ2XsYL3iRCpVGxea9F1wXGmbwasDCSXjaTyL4LMA,328
61
- source_shopify/shopify_graphql/bulk/tools.py,sha256=upMoIanr9OAoKpH8FmOb9Lnn3LJLWOefSvEM79pORLo,3629
62
- source_shopify/shopify_graphql/graphql.py,sha256=wHzppRm2zbllOp1m4zCax6SY6xo3aYnwlwIScRVk10Q,1969
63
- source_shopify/shopify_graphql/schema.py,sha256=H3qj3AFjaKJ4Nsd2GlyNCQEOulDFrkQWvO00Ad3fqbY,1354903
64
- source_shopify/source.py,sha256=oc4XT6IrxIDOiNCWitj3-bI3-3t3_ODYphCwLIqrR_A,8661
65
- source_shopify/spec.json,sha256=cps6mKNvmjQUhW3uuqQIu_eCj1as1-Jc0F_wYrYiNss,5819
66
- source_shopify/streams/base_streams.py,sha256=RgiBNxzbE7eKtk3eT7036PybkzZMacioGDUZjAgYdjY,36536
67
- source_shopify/streams/streams.py,sha256=0v9MuH61VR8jiR9QaVzfj_WmwWEfThzxpnBtazStrsE,12015
61
+ source_shopify/shopify_graphql/bulk/tools.py,sha256=nUQ2ZmPTKJNJdfLToR6KJtLKcJFCChSifkAOvwg0Vss,4065
62
+ source_shopify/source.py,sha256=oikoM-VPNk62zlmeAQR59PMxfuXq2s42N7zaqLM6_lo,8575
63
+ source_shopify/spec.json,sha256=ITYWiQ-NrI5VISk5qmUQhp9ChUE2FV18d8xzVzPwvAg,6144
64
+ source_shopify/streams/base_streams.py,sha256=k_4uLaLADLRTUcSmP8uA_830uuzRvnqUaCVGcb0Zpd8,42625
65
+ source_shopify/streams/streams.py,sha256=96ZzuhlKny2scejzRNhL7IHQ2FJ6e7Z4Qfot6nccfQg,18899
68
66
  source_shopify/transform.py,sha256=mn0htL812_90zc_YszGQa0hHcIZQpYYdmk8IqpZm5TI,4685
69
- source_shopify/utils.py,sha256=cOdiD9aIKLFrHYDEq4YUWPBppuYWMVr7aEm5_ILkBPo,14440
70
- airbyte_source_shopify-2.4.14.dev202407181247.dist-info/METADATA,sha256=zmStc1oK6SeCycOk5S7JQLrVvdmbD8EauG98a7d6-fQ,5322
71
- airbyte_source_shopify-2.4.14.dev202407181247.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
72
- airbyte_source_shopify-2.4.14.dev202407181247.dist-info/entry_points.txt,sha256=SyTwKSsPk9MCdPf01saWpnp8hcmZOgBssVcSIvMbBeQ,57
73
- airbyte_source_shopify-2.4.14.dev202407181247.dist-info/RECORD,,
67
+ source_shopify/utils.py,sha256=DSqEchu-MQJ7zust7CNfqOkGIv9OSR-5UUsuD-bsDa8,16224
68
+ airbyte_source_shopify-3.1.0.dist-info/METADATA,sha256=zkgsUWjEe9nD_Mh6PfX0HgFTYBCShhc6I6oULF8ozrM,5297
69
+ airbyte_source_shopify-3.1.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
70
+ airbyte_source_shopify-3.1.0.dist-info/entry_points.txt,sha256=SyTwKSsPk9MCdPf01saWpnp8hcmZOgBssVcSIvMbBeQ,57
71
+ airbyte_source_shopify-3.1.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.0
2
+ Generator: poetry-core 1.9.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
source_shopify/auth.py CHANGED
@@ -25,7 +25,6 @@ class NotImplementedAuth(Exception):
25
25
 
26
26
 
27
27
  class ShopifyAuthenticator(TokenAuthenticator):
28
-
29
28
  """
30
29
  Making Authenticator to be able to accept Header-Based authentication.
31
30
  """
@@ -5,8 +5,11 @@
5
5
 
6
6
  from typing import Any, List, Mapping
7
7
 
8
+ from orjson import orjson
9
+
8
10
  from airbyte_cdk.config_observation import create_connector_config_control_message
9
11
  from airbyte_cdk.entrypoint import AirbyteEntrypoint
12
+ from airbyte_cdk.models import AirbyteMessageSerializer
10
13
  from airbyte_cdk.sources import Source
11
14
  from airbyte_cdk.sources.message import InMemoryMessageRepository, MessageRepository
12
15
 
@@ -72,7 +75,7 @@ class MigrateConfig:
72
75
  cls.message_repository.emit_message(create_connector_config_control_message(migrated_config))
73
76
  # emit the Airbyte Control Message from message queue to stdout
74
77
  for message in cls.message_repository._message_queue:
75
- print(message.json(exclude_unset=True))
78
+ print(orjson.dumps(AirbyteMessageSerializer.dump(message)).decode())
76
79
 
77
80
  @classmethod
78
81
  def migrate(cls, args: List[str], source: Source) -> None:
@@ -3,10 +3,12 @@
3
3
  from typing import Optional, Union
4
4
 
5
5
  import requests
6
- from airbyte_cdk.sources.streams.http.error_handlers import ErrorHandler, ErrorResolution, ResponseAction
7
- from airbyte_protocol.models import FailureType
8
6
  from requests import exceptions
9
7
 
8
+ from airbyte_cdk.models import FailureType
9
+ from airbyte_cdk.sources.streams.http.error_handlers import ErrorHandler, ErrorResolution, ResponseAction
10
+
11
+
10
12
  RESPONSE_CONSUMPTION_EXCEPTIONS = (
11
13
  exceptions.ChunkedEncodingError,
12
14
  exceptions.JSONDecodeError,
@@ -36,31 +36,19 @@
36
36
  "description": "Name of the province.",
37
37
  "type": ["null", "string"]
38
38
  },
39
- "tax": {
40
- "description": "Tax information for the province.",
41
- "type": ["null", "number"]
42
- },
43
- "tax_name": {
44
- "description": "Name of the tax applicable for the province.",
45
- "type": ["null", "string"]
46
- },
47
- "tax_type": {
48
- "description": "Type of tax (e.g., sales tax, VAT) applicable in the province.",
39
+ "translated_name": {
40
+ "description": "Translated name of the province.",
49
41
  "type": ["null", "string"]
50
- },
51
- "tax_percentage": {
52
- "description": "Percentage value of tax applicable in the province.",
53
- "type": ["null", "number"]
54
42
  }
55
43
  }
56
44
  }
57
45
  },
58
- "tax": {
59
- "description": "Overall tax information for the country.",
60
- "type": ["null", "number"]
46
+ "rest_of_world": {
47
+ "description": "Whether the country in a catch-all group of countries that are not individually listed or assigned to any specific zone or market.",
48
+ "type": ["null", "boolean"]
61
49
  },
62
- "tax_name": {
63
- "description": "Name of the tax applicable for the country.",
50
+ "translated_name": {
51
+ "description": "Translated name of the country",
64
52
  "type": ["null", "string"]
65
53
  },
66
54
  "shop_url": {
@@ -17,175 +17,255 @@
17
17
  "format": "date-time"
18
18
  },
19
19
  "customer_journey_summary": {
20
- "ready": {
21
- "description": "Whether the attributed sessions for the order have been created yet.",
22
- "type": ["null", "boolean"]
23
- },
24
- "moments_count": {
25
- "description": "The total number of customer moments associated with this order. Returns null if the order is still in the process of being attributed.",
26
- "type": ["null", "object"],
27
- "properties": {
28
- "count": {
29
- "description": "Count of elements.",
30
- "type": ["null", "integer"]
31
- },
32
- "precision": {
33
- "description": "Precision of count, how exact is the value.",
34
- "type": ["null", "string"]
20
+ "description": "Represents a customer's visiting activities on a shop's online store.",
21
+ "type": ["null", "object"],
22
+ "properties": {
23
+ "ready": {
24
+ "description": "Whether the attributed sessions for the order have been created yet.",
25
+ "type": ["null", "boolean"]
26
+ },
27
+ "moments_count": {
28
+ "description": "The total number of customer moments associated with this order. Returns null if the order is still in the process of being attributed.",
29
+ "type": ["null", "object"],
30
+ "properties": {
31
+ "count": {
32
+ "description": "Count of elements.",
33
+ "type": ["null", "integer"]
34
+ },
35
+ "precision": {
36
+ "description": "Precision of count, how exact is the value.",
37
+ "type": ["null", "string"]
38
+ }
35
39
  }
36
- }
37
- },
38
- "customer_order_index": {
39
- "description": "The position of the current order within the customer's order history. Test orders aren't included.",
40
- "type": ["null", "integer"]
41
- },
42
- "days_to_conversion": {
43
- "description": "The number of days between the first session and the order creation date. The first session represents the first session since the last order, or the first session within the 30 day attribution window, if more than 30 days have passed since the last order.",
44
- "type": ["null", "integer"]
45
- },
46
- "first_visit": {
47
- "description": "The customer's first session going into the shop.",
48
- "type": ["null", "object"],
49
- "properties": {
50
- "id": {
51
- "description": "A globally-unique ID.",
52
- "type": ["null", "integer"]
53
- },
54
- "landing_page": {
55
- "description": "URL of the first page the customer landed on for the session.",
56
- "type": ["null", "string"]
57
- },
58
- "landing_page_html": {
59
- "description": "Landing page information with URL linked in HTML. For example, the first page the customer visited was",
60
- "type": ["null", "string"]
61
- },
62
- "occurred_at": {
63
- "description": "The date and time when the customer's session occurred.",
64
- "type": ["null", "string"],
65
- "format": "date-time"
66
- },
67
- "referral_code": {
68
- "description": "Marketing referral code from the link that the customer clicked to visit the store.",
69
- "type": ["null", "string"]
70
- },
71
- "referrer_url": {
72
- "description": "Webpage where the customer clicked a link that sent them to the online store.",
73
- "type": ["null", "string"]
74
- },
75
- "source": {
76
- "description": "Source from which the customer visited the store, such as a platform (Facebook, Google), email, direct, a website domain, QR code, or unknown.",
77
- "type": ["null", "string"]
78
- },
79
- "source_type": {
80
- "description": "Type of marketing tactic.",
81
- "type": ["null", "string"]
82
- },
83
- "source_description": {
84
- "description": "Describes the source explicitly for first or last session.",
85
- "type": ["null", "string"]
86
- },
87
- "utm_parameters": {
88
- "description": "A set of UTM parameters gathered from the URL parameters of the referrer.",
40
+ },
41
+ "customer_order_index": {
42
+ "description": "The position of the current order within the customer's order history. Test orders aren't included.",
43
+ "type": ["null", "integer"]
44
+ },
45
+ "days_to_conversion": {
46
+ "description": "The number of days between the first session and the order creation date. The first session represents the first session since the last order, or the first session within the 30 day attribution window, if more than 30 days have passed since the last order.",
47
+ "type": ["null", "integer"]
48
+ },
49
+ "first_visit": {
50
+ "description": "The customer's first session going into the shop.",
51
+ "type": ["null", "object"],
52
+ "properties": {
53
+ "id": {
54
+ "description": "A globally-unique ID.",
55
+ "type": ["null", "integer"]
56
+ },
57
+ "landing_page": {
58
+ "description": "URL of the first page the customer landed on for the session.",
59
+ "type": ["null", "string"]
60
+ },
61
+ "landing_page_html": {
62
+ "description": "Landing page information with URL linked in HTML. For example, the first page the customer visited was",
63
+ "type": ["null", "string"]
64
+ },
65
+ "occurred_at": {
66
+ "description": "The date and time when the customer's session occurred.",
67
+ "type": ["null", "string"],
68
+ "format": "date-time"
69
+ },
70
+ "referral_code": {
71
+ "description": "Marketing referral code from the link that the customer clicked to visit the store.",
72
+ "type": ["null", "string"]
73
+ },
74
+ "referrer_url": {
75
+ "description": "Webpage where the customer clicked a link that sent them to the online store.",
76
+ "type": ["null", "string"]
77
+ },
78
+ "source": {
79
+ "description": "Source from which the customer visited the store, such as a platform (Facebook, Google), email, direct, a website domain, QR code, or unknown.",
80
+ "type": ["null", "string"]
81
+ },
82
+ "source_type": {
83
+ "description": "Type of marketing tactic.",
84
+ "type": ["null", "string"]
85
+ },
86
+ "source_description": {
87
+ "description": "Describes the source explicitly for first or last session.",
88
+ "type": ["null", "string"]
89
+ },
90
+ "utm_parameters": {
91
+ "description": "A set of UTM parameters gathered from the URL parameters of the referrer.",
92
+ "type": ["null", "object"],
93
+ "properties": {
94
+ "campaign": {
95
+ "description": "The name of a marketing campaign.",
96
+ "type": ["null", "string"]
97
+ },
98
+ "content": {
99
+ "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.",
100
+ "type": ["null", "string"]
101
+ },
102
+ "medium": {
103
+ "description": "The medium of a marketing campaign, such as a banner or email newsletter.",
104
+ "type": ["null", "string"]
105
+ },
106
+ "source": {
107
+ "description": "The source of traffic to the merchant's store, such as Google or an email newsletter.",
108
+ "type": ["null", "string"]
109
+ },
110
+ "term": {
111
+ "description": "Paid search terms used by a marketing campaign.",
112
+ "type": ["null", "string"]
113
+ }
114
+ }
115
+ },
116
+ "admin_graphql_api_id": {
117
+ "description": "Unique identifier for the customer in the Admin GraphQL API.",
118
+ "type": ["null", "string"]
119
+ }
120
+ }
121
+ },
122
+ "last_visit": {
123
+ "description": "The last session before an order is made.",
124
+ "type": ["null", "object"],
125
+ "properties": {
126
+ "id": {
127
+ "description": "A globally-unique ID.",
128
+ "type": ["null", "integer"]
129
+ },
130
+ "landing_page": {
131
+ "description": "URL of the first page the customer landed on for the session.",
132
+ "type": ["null", "string"]
133
+ },
134
+ "landing_page_html": {
135
+ "description": "Landing page information with URL linked in HTML. For example, the first page the customer visited was",
136
+ "type": ["null", "string"]
137
+ },
138
+ "occurred_at": {
139
+ "description": "The date and time when the customer's session occurred.",
140
+ "type": ["null", "string"],
141
+ "format": "date-time"
142
+ },
143
+ "referral_code": {
144
+ "description": "Marketing referral code from the link that the customer clicked to visit the store.",
145
+ "type": ["null", "string"]
146
+ },
147
+ "referrer_url": {
148
+ "description": "Webpage where the customer clicked a link that sent them to the online store.",
149
+ "type": ["null", "string"]
150
+ },
151
+ "source": {
152
+ "description": "Source from which the customer visited the store, such as a platform (Facebook, Google), email, direct, a website domain, QR code, or unknown.",
153
+ "type": ["null", "string"]
154
+ },
155
+ "source_type": {
156
+ "description": "Type of marketing tactic.",
157
+ "type": ["null", "string"]
158
+ },
159
+ "source_description": {
160
+ "description": "Describes the source explicitly for first or last session.",
161
+ "type": ["null", "string"]
162
+ },
163
+ "utm_parameters": {
164
+ "description": "A set of UTM parameters gathered from the URL parameters of the referrer.",
165
+ "type": ["null", "object"],
166
+ "properties": {
167
+ "campaign": {
168
+ "description": "The name of a marketing campaign.",
169
+ "type": ["null", "string"]
170
+ },
171
+ "content": {
172
+ "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.",
173
+ "type": ["null", "string"]
174
+ },
175
+ "medium": {
176
+ "description": "The medium of a marketing campaign, such as a banner or email newsletter.",
177
+ "type": ["null", "string"]
178
+ },
179
+ "source": {
180
+ "description": "The source of traffic to the merchant's store, such as Google or an email newsletter.",
181
+ "type": ["null", "string"]
182
+ },
183
+ "term": {
184
+ "description": "Paid search terms used by a marketing campaign.",
185
+ "type": ["null", "string"]
186
+ }
187
+ }
188
+ },
189
+ "admin_graphql_api_id": {
190
+ "description": "Unique identifier for the customer in the Admin GraphQL API.",
191
+ "type": ["null", "string"]
192
+ }
193
+ }
194
+ },
195
+ "moments": {
196
+ "description": "The events preceding a customer's order, such as shop sessions.",
197
+ "type": ["null", "array"],
198
+ "items": {
89
199
  "type": ["null", "object"],
90
200
  "properties": {
91
- "campaign": {
92
- "description": "The name of a marketing campaign.",
93
- "type": ["null", "string"]
201
+ "id": {
202
+ "description": "A globally-unique ID.",
203
+ "type": ["null", "integer"]
94
204
  },
95
- "content": {
96
- "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.",
205
+ "landing_page": {
206
+ "description": "URL of the first page the customer landed on for the session.",
97
207
  "type": ["null", "string"]
98
208
  },
99
- "medium": {
100
- "description": "The medium of a marketing campaign, such as a banner or email newsletter.",
209
+ "landing_page_html": {
210
+ "description": "Landing page information with URL linked in HTML. For example, the first page the customer visited was",
101
211
  "type": ["null", "string"]
102
212
  },
103
- "source": {
104
- "description": "The source of traffic to the merchant's store, such as Google or an email newsletter.",
105
- "type": ["null", "string"]
213
+ "occurred_at": {
214
+ "description": "The date and time when the customer's session occurred.",
215
+ "type": ["null", "string"],
216
+ "format": "date-time"
106
217
  },
107
- "term": {
108
- "description": "Paid search terms used by a marketing campaign.",
218
+ "referral_code": {
219
+ "description": "Marketing referral code from the link that the customer clicked to visit the store.",
109
220
  "type": ["null", "string"]
110
- }
111
- }
112
- },
113
- "admin_graphql_api_id": {
114
- "description": "Unique identifier for the customer in the Admin GraphQL API.",
115
- "type": ["null", "string"]
116
- }
117
- }
118
- },
119
- "last_visit": {
120
- "description": "The last session before an order is made.",
121
- "type": ["null", "object"],
122
- "properties": {
123
- "id": {
124
- "description": "A globally-unique ID.",
125
- "type": ["null", "integer"]
126
- },
127
- "landing_page": {
128
- "description": "URL of the first page the customer landed on for the session.",
129
- "type": ["null", "string"]
130
- },
131
- "landing_page_html": {
132
- "description": "Landing page information with URL linked in HTML. For example, the first page the customer visited was",
133
- "type": ["null", "string"]
134
- },
135
- "occurred_at": {
136
- "description": "The date and time when the customer's session occurred.",
137
- "type": ["null", "string"],
138
- "format": "date-time"
139
- },
140
- "referral_code": {
141
- "description": "Marketing referral code from the link that the customer clicked to visit the store.",
142
- "type": ["null", "string"]
143
- },
144
- "referrer_url": {
145
- "description": "Webpage where the customer clicked a link that sent them to the online store.",
146
- "type": ["null", "string"]
147
- },
148
- "source": {
149
- "description": "Source from which the customer visited the store, such as a platform (Facebook, Google), email, direct, a website domain, QR code, or unknown.",
150
- "type": ["null", "string"]
151
- },
152
- "source_type": {
153
- "description": "Type of marketing tactic.",
154
- "type": ["null", "string"]
155
- },
156
- "source_description": {
157
- "description": "Describes the source explicitly for first or last session.",
158
- "type": ["null", "string"]
159
- },
160
- "utm_parameters": {
161
- "description": "A set of UTM parameters gathered from the URL parameters of the referrer.",
162
- "type": ["null", "object"],
163
- "properties": {
164
- "campaign": {
165
- "description": "The name of a marketing campaign.",
221
+ },
222
+ "referrer_url": {
223
+ "description": "Webpage where the customer clicked a link that sent them to the online store.",
166
224
  "type": ["null", "string"]
167
225
  },
168
- "content": {
169
- "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.",
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.",
170
228
  "type": ["null", "string"]
171
229
  },
172
- "medium": {
173
- "description": "The medium of a marketing campaign, such as a banner or email newsletter.",
230
+ "source_type": {
231
+ "description": "Type of marketing tactic.",
174
232
  "type": ["null", "string"]
175
233
  },
176
- "source": {
177
- "description": "The source of traffic to the merchant's store, such as Google or an email newsletter.",
234
+ "source_description": {
235
+ "description": "Describes the source explicitly for first or last session.",
178
236
  "type": ["null", "string"]
179
237
  },
180
- "term": {
181
- "description": "Paid search terms used by a marketing campaign.",
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.",
182
266
  "type": ["null", "string"]
183
267
  }
184
268
  }
185
- },
186
- "admin_graphql_api_id": {
187
- "description": "Unique identifier for the customer in the Admin GraphQL API.",
188
- "type": ["null", "string"]
189
269
  }
190
270
  }
191
271
  }