diff --git a/airbyte-integrations/connectors/source-shopify/README.md b/airbyte-integrations/connectors/source-shopify/README.md
index 86eeb80672b5..2162414e3611 100644
--- a/airbyte-integrations/connectors/source-shopify/README.md
+++ b/airbyte-integrations/connectors/source-shopify/README.md
@@ -30,7 +30,7 @@ See `sample_files/sample_config.json` for a sample config file.
poetry run source-shopify spec
poetry run source-shopify check --config secrets/config.json
poetry run source-shopify discover --config secrets/config.json
-poetry run source-shopify read --config secrets/config.json --catalog sample_files/configured_catalog.json
+poetry run source-shopify read --config secrets/config.json --catalog integration_tests/configured_catalog.json
```
### Running unit tests
diff --git a/airbyte-integrations/connectors/source-shopify/acceptance-test-config.yml b/airbyte-integrations/connectors/source-shopify/acceptance-test-config.yml
index bb0b185cfeda..c38d1f41afaa 100644
--- a/airbyte-integrations/connectors/source-shopify/acceptance-test-config.yml
+++ b/airbyte-integrations/connectors/source-shopify/acceptance-test-config.yml
@@ -24,8 +24,47 @@ acceptance_tests:
discovery:
tests:
- config_path: "secrets/config.json"
+ backward_compatibility_tests_config:
+ # The cursor field for `fulfillments` stream has changed from `id` to `updated_at`
+ disable_for_version: "1.1.8"
basic_read:
tests:
+ - config_path: "secrets/config_transactions_with_user_id.json"
+ timeout_seconds: 4800
+ expect_records:
+ path: "integration_tests/expected_records_transactions_with_user_id.jsonl"
+ empty_streams:
+ - name: abandoned_checkouts
+ bypass_reason: The stream holds data up to 1 month then records are removed by Shopify.
+ - name: balance_transactions
+ bypass_reason: The stream requires real purchases to fill in the data.
+ - name: customer_saved_search
+ bypass_reason: The stream is not available for our sandbox.
+ - name: disputes
+ bypass_reason: The stream requires real purchases to fill in the data.
+ ignored_fields:
+ products:
+ - name: variants/*/updated_at
+ bypass_reason: Value can change as the account data is not frozen
+ - name: image/src
+ bypass_reason: May contain dynamically changed URL params
+ - name: image/updated_at
+ bypass_reason: Value can change as the account data is not frozen
+ - name: images/*/src
+ bypass_reason: May contain dynamically changed URL params
+ - name: images/*/updated_at
+ bypass_reason: Value can change as the account data is not frozen
+ products_graph_ql:
+ - name: onlineStorePreviewUrl
+ bypass_reason: Autogenerated floating URL values
+ product_variants:
+ - name: updated_at
+ bypass_reason: Value can change as the account data is not frozen
+ product_images:
+ - name: src
+ bypass_reason: May contain dynamically changed URL params
+ - name: updated_at
+ bypass_reason: Value can change as the account data is not frozen
- config_path: "secrets/config.json"
timeout_seconds: 4800
expect_records:
@@ -68,7 +107,7 @@ acceptance_tests:
configured_catalog_path: "integration_tests/configured_catalog.json"
future_state:
future_state_path: "integration_tests/abnormal_state.json"
- timeout_seconds: 14400
+ timeout_seconds: 7200
full_refresh:
tests:
- config_path: "secrets/config.json"
diff --git a/airbyte-integrations/connectors/source-shopify/integration_tests/abnormal_state.json b/airbyte-integrations/connectors/source-shopify/integration_tests/abnormal_state.json
index 29376d5432ca..00af9172d88d 100644
--- a/airbyte-integrations/connectors/source-shopify/integration_tests/abnormal_state.json
+++ b/airbyte-integrations/connectors/source-shopify/integration_tests/abnormal_state.json
@@ -158,6 +158,17 @@
}
}
},
+ {
+ "type": "STREAM",
+ "stream": {
+ "stream_state": {
+ "created_at": "2027-07-11T13:07:45-07:00"
+ },
+ "stream_descriptor": {
+ "name": "transactions_graphql"
+ }
+ }
+ },
{
"type": "STREAM",
"stream": {
@@ -253,7 +264,7 @@
"deleted_at": "2027-07-11T13:07:45-07:00"
}
},
- "id": 99999999999999
+ "updated_at": "2027-07-11T13:07:45-07:00"
},
"stream_descriptor": {
"name": "fulfillment_orders"
@@ -449,7 +460,8 @@
"deleted": {
"deleted_at": "2027-07-11T13:07:45-07:00"
}
- }
+ },
+ "updated_at": "2027-07-11T13:07:45-07:00"
},
"stream_descriptor": {
"name": "product_variants"
diff --git a/airbyte-integrations/connectors/source-shopify/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-shopify/integration_tests/expected_records.jsonl
index 22205205125d..d43ad7bf0369 100644
--- a/airbyte-integrations/connectors/source-shopify/integration_tests/expected_records.jsonl
+++ b/airbyte-integrations/connectors/source-shopify/integration_tests/expected_records.jsonl
@@ -1,80 +1,96 @@
-{"stream": "articles", "data": {"id": 558137508029, "title": "My new Article title", "created_at": "2022-10-07T16:09:02-07:00", "body_html": "
I like articles
\nYea, I like posting them through REST.
", "blog_id": 80417685693, "author": "John Smith", "user_id": null, "published_at": "2011-03-24T08:45:47-07:00", "updated_at": "2023-04-14T03:18:26-07:00", "summary_html": null, "template_suffix": null, "handle": "my-new-article-title", "tags": "Has Been Tagged, This Post", "admin_graphql_api_id": "gid://shopify/OnlineStoreArticle/558137508029", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194671409}
-{"stream": "articles", "data": {"id": 558627979453, "title": "Test Blog Post", "created_at": "2023-04-14T03:19:02-07:00", "body_html": "Test Blog Post 1", "blog_id": 80417685693, "author": "Airbyte Airbyte", "user_id": "74861019325", "published_at": null, "updated_at": "2023-04-14T03:19:18-07:00", "summary_html": "", "template_suffix": "", "handle": "test-blog-post", "tags": "Has Been Tagged", "admin_graphql_api_id": "gid://shopify/OnlineStoreArticle/558627979453", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194671410}
-{"stream": "articles", "data": {"id": 558999371965, "deleted_at": "2023-09-05T13:50:04-07:00", "updated_at": "2023-09-05T13:50:04-07:00", "deleted_message": "Online Store deleted an article: Test Article 1.", "deleted_description": "Online Store deleted an article: Test Article 1.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194671993}
-{"stream": "blogs", "data": {"id": 80417685693, "handle": "news", "title": "News", "updated_at": "2023-09-05T14:02:00-07:00", "commentable": "no", "feedburner": null, "feedburner_location": null, "created_at": "2021-06-22T18:00:25-07:00", "template_suffix": null, "tags": "Has Been Tagged, This Post", "admin_graphql_api_id": "gid://shopify/OnlineStoreBlog/80417685693", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194674015}
-{"stream": "blogs", "data": {"id": 85733114045, "deleted_at": "2023-09-06T03:30:22-07:00", "updated_at": "2023-09-06T03:30:22-07:00", "deleted_message": "Online Store deleted a blog: Test Blog 1.", "deleted_description": "Online Store deleted a blog: Test Blog 1.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194674556}
-{"stream": "collections", "data": {"id": 270889287869, "handle": "frontpage", "title": "Home page", "updated_at": "2023-09-05T07:06:59-07:00", "body_html": "updated_mon_24.04.2023", "published_at": "2021-06-22T18:00:25-07:00", "sort_order": "best-selling", "template_suffix": "", "products_count": 1, "collection_type": "custom", "published_scope": "web", "admin_graphql_api_id": "gid://shopify/Collection/270889287869", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194676559}
-{"stream": "collects", "data": {"id": 29427031703741, "collection_id": 270889287869, "product_id": 6796220989629, "created_at": "2021-07-19T07:01:36-07:00", "updated_at": "2022-03-06T14:12:21-08:00", "position": 2, "sort_value": "0000000002", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194677532}
-{"stream": "custom_collections", "data": {"id": 270889287869, "handle": "frontpage", "title": "Home page", "updated_at": "2023-09-05T07:06:59-07:00", "body_html": "updated_mon_24.04.2023", "published_at": "2021-06-22T18:00:25-07:00", "sort_order": "best-selling", "template_suffix": "", "published_scope": "web", "admin_graphql_api_id": "gid://shopify/Collection/270889287869", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194678538}
-{"stream": "custom_collections", "data": {"id": 294253822141, "deleted_at": "2023-09-06T03:34:39-07:00", "updated_at": "2023-09-06T03:34:39-07:00", "deleted_message": "Airbyte Airbyte deleted a collection.", "deleted_description": "Airbyte Airbyte deleted a collection.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194679372}
-{"stream": "customers", "data": {"id": 6569096478909, "email": "test@test.com", "accepts_marketing": true, "created_at": "2023-04-13T02:30:04-07:00", "updated_at": "2023-04-24T06:53:48-07:00", "first_name": "New Test", "last_name": "Customer", "orders_count": 0, "state": "disabled", "total_spent": 0.0, "last_order_id": null, "note": "updated_mon_24.04.2023", "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "tags": "", "last_order_name": null, "currency": "USD", "phone": "+380639379992", "addresses": [{"id": 8092523135165, "customer_id": 6569096478909, "first_name": "New Test", "last_name": "Customer", "company": "Test Company", "address1": "My Best Accent", "address2": "", "city": "Fair Lawn", "province": "New Jersey", "country": "United States", "zip": "07410", "phone": "", "name": "New Test Customer", "province_code": "NJ", "country_code": "US", "country_name": "United States", "default": true}], "accepts_marketing_updated_at": "2023-04-13T02:30:04-07:00", "marketing_opt_in_level": "single_opt_in", "tax_exemptions": "[]", "email_marketing_consent": {"state": "subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": "2023-04-13T02:30:04-07:00"}, "sms_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": null, "consent_collected_from": "SHOPIFY"}, "admin_graphql_api_id": "gid://shopify/Customer/6569096478909", "default_address": {"id": 8092523135165, "customer_id": 6569096478909, "first_name": "New Test", "last_name": "Customer", "company": "Test Company", "address1": "My Best Accent", "address2": "", "city": "Fair Lawn", "province": "New Jersey", "country": "United States", "zip": "07410", "phone": "", "name": "New Test Customer", "province_code": "NJ", "country_code": "US", "country_name": "United States", "default": true}, "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194680438}
-{"stream": "customers", "data": {"id": 6676027932861, "email": "marcos@airbyte.io", "accepts_marketing": false, "created_at": "2023-07-11T13:07:45-07:00", "updated_at": "2023-07-11T13:07:45-07:00", "first_name": "MArcos", "last_name": "Millnitz", "orders_count": 0, "state": "disabled", "total_spent": 0.0, "last_order_id": null, "note": null, "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "tags": "", "last_order_name": null, "currency": "USD", "phone": null, "addresses": [{"id": 8212915650749, "customer_id": 6676027932861, "first_name": "MArcos", "last_name": "Millnitz", "company": null, "address1": null, "address2": null, "city": null, "province": null, "country": null, "zip": null, "phone": null, "name": "MArcos Millnitz", "province_code": null, "country_code": null, "country_name": null, "default": true}], "accepts_marketing_updated_at": "2023-07-11T13:07:45-07:00", "marketing_opt_in_level": null, "tax_exemptions": "[]", "email_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": null}, "sms_marketing_consent": null, "admin_graphql_api_id": "gid://shopify/Customer/6676027932861", "default_address": {"id": 8212915650749, "customer_id": 6676027932861, "first_name": "MArcos", "last_name": "Millnitz", "company": null, "address1": null, "address2": null, "city": null, "province": null, "country": null, "zip": null, "phone": null, "name": "MArcos Millnitz", "province_code": null, "country_code": null, "country_name": null, "default": true}, "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194680439}
-{"stream": "discount_codes", "data": {"id": 11539415990461, "price_rule_id": 945000284349, "code": "updated_mon_24.04.2023", "usage_count": 0, "created_at": "2021-07-07T07:23:11-07:00", "updated_at": "2023-04-24T05:52:22-07:00", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194682519}
-{"stream": "draft_orders", "data": {"id": 929019691197, "note": "updated_mon_24.04.2023", "email": null, "taxes_included": true, "currency": "USD", "invoice_sent_at": null, "created_at": "2022-02-22T03:23:19-08:00", "updated_at": "2023-04-24T07:18:06-07:00", "tax_exempt": false, "completed_at": null, "name": "#D21", "status": "open", "line_items": [{"id": 58117295538365, "variant_id": 40090585923773, "product_id": 6796220989629, "title": "4 Ounce Soy Candle", "variant_title": "Metal", "sku": "", "vendor": "Hartmann Group", "quantity": 2, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 112, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 6.33}], "applied_discount": null, "name": "4 Ounce Soy Candle - Metal", "properties": [], "custom": false, "price": 19.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58117295538365"}, {"id": 58117295571133, "variant_id": null, "product_id": null, "title": "Test Item", "variant_title": null, "sku": null, "vendor": null, "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 1000, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 0.17}], "applied_discount": null, "name": "Test Item", "properties": [], "custom": true, "price": 1.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58117295571133"}], "shipping_address": null, "billing_address": null, "invoice_url": "https://airbyte-integration-test.myshopify.com/58033176765/invoices/12893992cc01fc67935ab014fcf9300f", "applied_discount": null, "order_id": null, "shipping_line": {"title": "Test Shipping Fee", "custom": true, "handle": null, "price": 3.0}, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 6.33}, {"rate": 0.2, "title": "PDV", "price": 0.17}], "tags": "", "note_attributes": [], "total_price": "42.00", "subtotal_price": "39.00", "total_tax": "6.50", "payment_terms": null, "admin_graphql_api_id": "gid://shopify/DraftOrder/929019691197", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194685211}
-{"stream": "draft_orders", "data": {"id": 988639920317, "note": null, "email": null, "taxes_included": true, "currency": "USD", "invoice_sent_at": null, "created_at": "2023-04-24T11:00:01-07:00", "updated_at": "2023-04-24T11:00:09-07:00", "tax_exempt": false, "completed_at": "2023-04-24T11:00:09-07:00", "name": "#D29", "status": "completed", "line_items": [{"id": 58121808019645, "variant_id": 41561961824445, "product_id": 6796220989629, "title": "4 Ounce Soy Candle", "variant_title": "Test Variant 2", "sku": "", "vendor": "Hartmann Group", "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 112, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.17}], "applied_discount": null, "name": "4 Ounce Soy Candle - Test Variant 2", "properties": [], "custom": false, "price": 19.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58121808019645"}], "shipping_address": null, "billing_address": null, "invoice_url": "https://airbyte-integration-test.myshopify.com/58033176765/invoices/95271a5eeb083c831f76a98fa3712f89", "applied_discount": null, "order_id": 5033391718589, "shipping_line": null, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.17}], "tags": "", "note_attributes": [], "total_price": "19.00", "subtotal_price": "19.00", "total_tax": "3.17", "payment_terms": null, "admin_graphql_api_id": "gid://shopify/DraftOrder/988639920317", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194685213}
-{"stream": "draft_orders", "data": {"id": 997801689277, "note": null, "email": null, "taxes_included": true, "currency": "USD", "invoice_sent_at": null, "created_at": "2023-07-11T12:57:53-07:00", "updated_at": "2023-07-11T12:57:55-07:00", "tax_exempt": false, "completed_at": null, "name": "#D30", "status": "open", "line_items": [{"id": 58159126905021, "variant_id": 40090585923773, "product_id": 6796220989629, "title": "4 Ounce Soy Candle", "variant_title": "Metal", "sku": "", "vendor": "Hartmann Group", "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 112, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.17}], "applied_discount": null, "name": "4 Ounce Soy Candle - Metal", "properties": [], "custom": false, "price": 19.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58159126905021"}], "shipping_address": null, "billing_address": null, "invoice_url": "https://airbyte-integration-test.myshopify.com/58033176765/invoices/a98bc7e113733d6faa36c198cf6c7c1a", "applied_discount": null, "order_id": null, "shipping_line": null, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.17}], "tags": "", "note_attributes": [], "total_price": "19.00", "subtotal_price": "19.00", "total_tax": "3.17", "payment_terms": null, "admin_graphql_api_id": "gid://shopify/DraftOrder/997801689277", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194685214}
-{"stream": "fulfillment_orders", "data": {"id": 5558588309693, "shop_id": 58033176765, "order_id": 4554821468349, "assigned_location_id": 63590301885, "request_status": "unsubmitted", "status": "closed", "supported_actions": [], "destination": null, "line_items": [{"id": 11564232016061, "shop_id": 58033176765, "fulfillment_order_id": 5558588309693, "quantity": 1, "line_item_id": 11406125564093, "inventory_item_id": 42185212592317, "fulfillable_quantity": 0, "variant_id": 40090597884093}], "fulfill_at": "2022-06-15T05:00:00-07:00", "fulfill_by": null, "international_duties": null, "fulfillment_holds": [], "created_at": "2022-06-15T05:16:54-07:00", "updated_at": "2022-06-15T05:16:55-07:00", "delivery_method": {"id": 119732437181, "method_type": "none", "min_delivery_date_time": null, "max_delivery_date_time": null}, "assigned_location": {"address1": "Heroiv UPA 72", "address2": null, "city": "Lviv", "country_code": "UA", "location_id": 63590301885, "name": "Heroiv UPA 72", "phone": "", "province": null, "zip": "30100"}, "merchant_requests": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194687309}
-{"stream": "fulfillment_orders", "data": {"id": 5138290671805, "shop_id": 58033176765, "order_id": 4147980107965, "assigned_location_id": 63590301885, "request_status": "unsubmitted", "status": "closed", "supported_actions": [], "destination": {"id": 5183946588349, "address1": "San Francisco", "address2": "10", "city": "San Francisco", "company": "Umbrella LLC", "country": "United States", "email": "airbyte@airbyte.com", "first_name": "John", "last_name": "Doe", "phone": "", "province": "California", "zip": "91326"}, "line_items": [{"id": 10713758531773, "shop_id": 58033176765, "fulfillment_order_id": 5138290671805, "quantity": 1, "line_item_id": 10576771317949, "inventory_item_id": 42185195290813, "fulfillable_quantity": 0, "variant_id": 40090580615357}], "fulfill_at": null, "fulfill_by": null, "international_duties": null, "fulfillment_holds": [], "created_at": "2021-09-19T09:08:23-07:00", "updated_at": "2021-09-19T09:08:23-07:00", "delivery_method": null, "assigned_location": {"address1": "Heroiv UPA 72", "address2": null, "city": "Lviv", "country_code": "UA", "location_id": 63590301885, "name": "Heroiv UPA 72", "phone": "", "province": null, "zip": "30100"}, "merchant_requests": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194687822}
-{"stream": "fulfillment_orders", "data": {"id": 4919375659197, "shop_id": 58033176765, "order_id": 3935377129661, "assigned_location_id": 63590301885, "request_status": "unsubmitted", "status": "closed", "supported_actions": [], "destination": null, "line_items": [{"id": 10251692081341, "shop_id": 58033176765, "fulfillment_order_id": 4919375659197, "quantity": 1, "line_item_id": 10130216452285, "inventory_item_id": 42185218719933, "fulfillable_quantity": 1, "variant_id": 40090604011709}], "fulfill_at": null, "fulfill_by": null, "international_duties": null, "fulfillment_holds": [], "created_at": "2021-07-02T00:51:51-07:00", "updated_at": "2021-09-21T05:31:59-07:00", "delivery_method": null, "assigned_location": {"address1": "Heroiv UPA 72", "address2": null, "city": "Lviv", "country_code": "UA", "location_id": 63590301885, "name": "Heroiv UPA 72", "phone": "", "province": null, "zip": "30100"}, "merchant_requests": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194688332}
-{"stream": "fulfillments", "data": {"id": 4075788501181, "order_id": 4554821468349, "status": "success", "created_at": "2022-06-15T05:16:55-07:00", "service": "manual", "updated_at": "2022-06-15T05:16:55-07:00", "tracking_company": null, "shipment_status": null, "location_id": 63590301885, "origin_address": null, "line_items": [{"id": 11406125564093, "variant_id": 40090597884093, "title": "All Black Sneaker Right Foot", "quantity": 1, "sku": "", "variant_title": "ivory", "vendor": "Becker - Moore", "fulfillment_service": "manual", "product_id": 6796226560189, "requires_shipping": false, "taxable": true, "gift_card": false, "name": "All Black Sneaker Right Foot - ivory", "variant_inventory_management": "shopify", "properties": [], "product_exists": true, "fulfillable_quantity": 0, "grams": 0, "price": "59.00", "total_discount": "0.00", "fulfillment_status": "fulfilled", "price_set": {"shop_money": {"amount": "59.00", "currency_code": "USD"}, "presentment_money": {"amount": "59.00", "currency_code": "USD"}}, "total_discount_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "discount_allocations": [{"amount": "1.77", "discount_application_index": 0, "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}}], "origin_location": {"id": 3007664259261, "country_code": "UA", "province_code": "", "name": "airbyte integration test", "address1": "Heroiv UPA 72", "address2": "", "city": "Lviv", "zip": "30100"}, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "duties": [], "tax_lines": [], "fulfillment_line_item_id": 9633709097149}], "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "receipt": {}, "name": "#1136.1", "admin_graphql_api_id": "gid://shopify/Fulfillment/4075788501181", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194691604}
-{"stream": "fulfillments", "data": {"id": 3693416710333, "order_id": 4147980107965, "status": "success", "created_at": "2021-09-19T09:08:23-07:00", "service": "manual", "updated_at": "2022-02-22T00:35:47-08:00", "tracking_company": "Amazon Logistics US", "shipment_status": null, "location_id": 63590301885, "origin_address": null, "line_items": [{"id": 10576771317949, "variant_id": 40090580615357, "title": "Red & Silver Fishing Lure", "quantity": 1, "sku": "", "variant_title": "Plastic", "vendor": "Harris - Hamill", "fulfillment_service": "manual", "product_id": 6796218302653, "requires_shipping": true, "taxable": true, "gift_card": false, "name": "Red & Silver Fishing Lure - Plastic", "variant_inventory_management": "shopify", "properties": [], "product_exists": true, "fulfillable_quantity": 0, "grams": 285, "price": "27.00", "total_discount": "0.00", "fulfillment_status": "fulfilled", "price_set": {"shop_money": {"amount": "27.00", "currency_code": "USD"}, "presentment_money": {"amount": "27.00", "currency_code": "USD"}}, "total_discount_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "discount_allocations": [], "admin_graphql_api_id": "gid://shopify/LineItem/10576771317949", "duties": [], "tax_lines": [], "fulfillment_line_item_id": 8852381401277}], "tracking_number": "123456", "tracking_numbers": ["123456"], "tracking_url": "https://track.amazon.com/tracking/123456", "tracking_urls": ["https://track.amazon.com/tracking/123456"], "receipt": {}, "name": "#1121.1", "admin_graphql_api_id": "gid://shopify/Fulfillment/3693416710333", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194692148}
-{"stream": "fulfillments", "data": {"id": 4465911431357, "order_id": 5033391718589, "status": "success", "created_at": "2023-04-24T11:00:09-07:00", "service": "manual", "updated_at": "2023-04-24T11:00:09-07:00", "tracking_company": null, "shipment_status": null, "location_id": 63590301885, "origin_address": null, "line_items": [{"id": 12247585521853, "variant_id": 41561961824445, "title": "4 Ounce Soy Candle", "quantity": 1, "sku": "", "variant_title": "Test Variant 2", "vendor": "Hartmann Group", "fulfillment_service": "manual", "product_id": 6796220989629, "requires_shipping": true, "taxable": true, "gift_card": false, "name": "4 Ounce Soy Candle - Test Variant 2", "variant_inventory_management": "shopify", "properties": [], "product_exists": true, "fulfillable_quantity": 0, "grams": 112, "price": "19.00", "total_discount": "0.00", "fulfillment_status": "fulfilled", "price_set": {"shop_money": {"amount": "19.00", "currency_code": "USD"}, "presentment_money": {"amount": "19.00", "currency_code": "USD"}}, "total_discount_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "discount_allocations": [], "origin_location": {"id": 3000230707389, "country_code": "UA", "province_code": "", "name": "Heroiv UPA 72", "address1": "Heroiv UPA 72", "address2": "", "city": "Lviv", "zip": "30100"}, "admin_graphql_api_id": "gid://shopify/LineItem/12247585521853", "duties": [], "tax_lines": [{"price": 3.17, "rate": 0.2, "title": "PDV", "price_set": {"shop_money": {"amount": "3.17", "currency_code": "USD"}, "presentment_money": {"amount": "3.17", "currency_code": "USD"}}, "channel_liable": null}], "fulfillment_line_item_id": 10383179514045}], "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "receipt": {}, "name": "#1145.1", "admin_graphql_api_id": "gid://shopify/Fulfillment/4465911431357", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194693123}
-{"stream": "inventory_items", "data": {"id": 42185200631997, "sku": "", "created_at": "2021-06-22T18:09:47-07:00", "updated_at": "2022-02-22T00:40:19-08:00", "requires_shipping": true, "cost": 19.0, "country_code_of_origin": null, "province_code_of_origin": null, "harmonized_system_code": null, "tracked": true, "country_harmonized_system_codes": [], "admin_graphql_api_id": "gid://shopify/InventoryItem/42185200631997", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194695452}
-{"stream": "inventory_items", "data": {"id": 43653682495677, "sku": "", "created_at": "2022-03-06T14:09:20-08:00", "updated_at": "2022-03-06T14:09:20-08:00", "requires_shipping": true, "cost": 19.0, "country_code_of_origin": null, "province_code_of_origin": null, "harmonized_system_code": null, "tracked": true, "country_harmonized_system_codes": [], "admin_graphql_api_id": "gid://shopify/InventoryItem/43653682495677", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194695454}
-{"stream": "inventory_items", "data": {"id": 43653688524989, "sku": "", "created_at": "2022-03-06T14:12:20-08:00", "updated_at": "2022-03-06T14:12:20-08:00", "requires_shipping": true, "cost": 19.0, "country_code_of_origin": null, "province_code_of_origin": null, "harmonized_system_code": null, "tracked": true, "country_harmonized_system_codes": [], "admin_graphql_api_id": "gid://shopify/InventoryItem/43653688524989", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194695454}
-{"stream": "inventory_levels", "data": {"inventory_item_id": 42185194668221, "location_id": 63590301885, "available": 12, "updated_at": "2021-06-22T18:09:27-07:00", "admin_graphql_api_id": "gid://shopify/InventoryLevel/97912455357?inventory_item_id=42185194668221", "shop_url": "airbyte-integration-test", "id": "63590301885|42185194668221"}, "emitted_at": 1697194698578}
-{"stream": "inventory_levels", "data": {"inventory_item_id": 42185194700989, "location_id": 63590301885, "available": 3, "updated_at": "2021-06-22T18:09:27-07:00", "admin_graphql_api_id": "gid://shopify/InventoryLevel/97912455357?inventory_item_id=42185194700989", "shop_url": "airbyte-integration-test", "id": "63590301885|42185194700989"}, "emitted_at": 1697194698579}
-{"stream": "inventory_levels", "data": {"inventory_item_id": 42185194733757, "location_id": 63590301885, "available": 38, "updated_at": "2021-06-22T18:09:27-07:00", "admin_graphql_api_id": "gid://shopify/InventoryLevel/97912455357?inventory_item_id=42185194733757", "shop_url": "airbyte-integration-test", "id": "63590301885|42185194733757"}, "emitted_at": 1697194698579}
-{"stream":"locations","data":{"id":63590301885,"name":"Heroiv UPA 72","address1":"Heroiv UPA 72","address2":"","city":"Lviv","zip":"30100","province":null,"country":"UA","phone":"","created_at":"2021-06-22T18:00:29-07:00","updated_at":"2023-11-28T07:08:27-08:00","country_code":"UA","country_name":"Ukraine","province_code":null,"legacy":false,"active":true,"admin_graphql_api_id":"gid://shopify/Location/63590301885","localized_country_name":"Ukraine","localized_province_name":null,"shop_url":"airbyte-integration-test"},"emitted_at":1704314548257}
-{"stream": "metafield_articles", "data": {"id": 21519818162365, "namespace": "global", "key": "new", "value": "newvalue", "description": null, "owner_id": 558137508029, "created_at": "2022-10-07T16:09:02-07:00", "updated_at": "2022-10-07T16:09:02-07:00", "owner_resource": "article", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/21519818162365", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194703693}
-{"stream": "metafield_articles", "data": {"id": 22365709992125, "namespace": "custom", "key": "test_blog_post_metafield", "value": "Test Article Metafield", "description": null, "owner_id": 558137508029, "created_at": "2023-04-14T03:18:26-07:00", "updated_at": "2023-04-14T03:18:26-07:00", "owner_resource": "article", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365709992125", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194703694}
-{"stream": "metafield_articles", "data": {"id": 22365710352573, "namespace": "custom", "key": "test_blog_post_metafield", "value": "Test Blog Post Metafiled", "description": null, "owner_id": 558627979453, "created_at": "2023-04-14T03:19:18-07:00", "updated_at": "2023-04-14T03:19:18-07:00", "owner_resource": "article", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365710352573", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194704159}
-{"stream": "metafield_blogs", "data": {"id": 21519428255933, "namespace": "some_fields", "key": "sponsor", "value": "Shopify", "description": null, "owner_id": 80417685693, "created_at": "2022-10-07T06:05:23-07:00", "updated_at": "2022-10-07T06:05:23-07:00", "owner_resource": "blog", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/21519428255933", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194706701}
-{"stream": "metafield_blogs", "data": {"id": 22365710745789, "namespace": "custom", "key": "test_blog_metafield", "value": "Test Blog Metafield", "description": null, "owner_id": 80417685693, "created_at": "2023-04-14T03:20:20-07:00", "updated_at": "2023-04-14T03:20:20-07:00", "owner_resource": "blog", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365710745789", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194706702}
-{"stream": "metafield_collections", "data": {"id": 21520343367869, "namespace": "my_fields", "key": "discount", "value": "25%", "description": null, "owner_id": 270889287869, "created_at": "2022-10-08T04:44:51-07:00", "updated_at": "2022-10-08T04:44:51-07:00", "owner_resource": "collection", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/21520343367869", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194709216}
-{"stream": "metafield_collections", "data": {"id": 22365707174077, "namespace": "custom", "key": "test_collection_metafield", "value": "Test Collection Metafield", "description": null, "owner_id": 270889287869, "created_at": "2023-04-14T03:15:30-07:00", "updated_at": "2023-04-14T03:15:30-07:00", "owner_resource": "collection", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365707174077", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194709218}
-{"stream": "metafield_customers", "data": {"id": 22346893361341, "namespace": "custom", "key": "test_definition_list_1", "value": "Teste\n", "description": null, "owner_id": 6569096478909, "created_at": "2023-04-13T04:50:10-07:00", "updated_at": "2023-04-13T04:50:10-07:00", "owner_resource": "customer", "type": "multi_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22346893361341", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194711312}
-{"stream": "metafield_customers", "data": {"id": 22346893394109, "namespace": "custom", "key": "test_definition", "value": "Taster", "description": null, "owner_id": 6569096478909, "created_at": "2023-04-13T04:50:10-07:00", "updated_at": "2023-04-13T04:50:10-07:00", "owner_resource": "customer", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22346893394109", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194711313}
-{"stream": "metafield_draft_orders", "data": {"id": 22532787175613, "namespace": "new_metafield", "key": "new_metafield", "value": "updated_mon_24.04.2023", "description": null, "owner_id": 929019691197, "created_at": "2023-04-24T07:18:06-07:00", "updated_at": "2023-04-24T07:18:06-07:00", "owner_resource": "draft_order", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22532787175613", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194714876}
-{"stream":"metafield_locations","data":{"id":21524407255229,"namespace":"inventory","key":"warehouse_2","value":"234","description":null,"owner_id":63590301885,"created_at":"2022-10-12T02:21:27-07:00","updated_at":"2022-10-12T02:21:27-07:00","owner_resource":"location","type":"number_integer","admin_graphql_api_id":"gid://shopify/Metafield/21524407255229","shop_url":"airbyte-integration-test"},"emitted_at":1704314554082}
-{"stream":"metafield_locations","data":{"id":21524407681213,"namespace":"inventory","key":"warehouse_233","value":"564","description":null,"owner_id":63590301885,"created_at":"2022-10-12T02:21:35-07:00","updated_at":"2022-10-12T02:21:35-07:00","owner_resource":"location","type":"number_integer","admin_graphql_api_id":"gid://shopify/Metafield/21524407681213","shop_url":"airbyte-integration-test"},"emitted_at":1704314554084}
-{"stream": "metafield_orders", "data": {"id": 22347287855293, "namespace": "my_fields", "key": "purchase_order", "value": "trtrtr", "description": null, "owner_id": 4147980107965, "created_at": "2023-04-13T05:09:08-07:00", "updated_at": "2023-04-13T05:09:08-07:00", "owner_resource": "order", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22347287855293", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194720313}
-{"stream": "metafield_orders", "data": {"id": 22365749805245, "namespace": "my_fields", "key": "purchase_order", "value": "Test Draft Order Metafield", "description": null, "owner_id": 3935377129661, "created_at": "2023-04-14T03:52:40-07:00", "updated_at": "2023-04-14T03:52:40-07:00", "owner_resource": "order", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365749805245", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194720780}
-{"stream": "metafield_pages", "data": {"id": 22534014828733, "namespace": "new_metafield", "key": "new_metafield", "value": "updated_mon_24.04.2023", "description": null, "owner_id": 83074252989, "created_at": "2023-04-24T11:08:41-07:00", "updated_at": "2023-04-24T11:08:41-07:00", "owner_resource": "page", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22534014828733", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194723743}
-{"stream": "metafield_product_images", "data": {"id": 22533588451517, "namespace": "new_metafield", "key": "new_metafield", "value": "updated_mon_24.04.2023", "description": null, "owner_id": 29301297316029, "created_at": "2023-04-24T10:32:19-07:00", "updated_at": "2023-04-24T10:32:19-07:00", "owner_resource": "product_image", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22533588451517", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194726839}
-{"stream": "metafield_products", "data": {"id": 22365706944701, "namespace": "custom", "key": "test_product_metafield", "value": "gid://shopify/Product/6796220989629", "description": null, "owner_id": 6796220989629, "created_at": "2023-04-14T03:15:07-07:00", "updated_at": "2023-04-14T03:15:07-07:00", "owner_resource": "product", "type": "product_reference", "admin_graphql_api_id": "gid://shopify/Metafield/22365706944701", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194728238}
-{"stream": "metafield_products", "data": {"id": 22365762486461, "namespace": "custom", "key": "product_metafield_test_2", "value": "Test", "description": null, "owner_id": 6796220989629, "created_at": "2023-04-14T03:59:44-07:00", "updated_at": "2023-04-14T03:59:44-07:00", "owner_resource": "product", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365762486461", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194728239}
-{"stream": "metafield_product_variants", "data": {"id": 22365715955901, "namespace": "custom", "key": "test_variant_metafield", "value": "Test Varia", "description": null, "owner_id": 41561961824445, "created_at": "2023-04-14T03:24:03-07:00", "updated_at": "2023-04-14T03:24:03-07:00", "owner_resource": "variant", "type": "multi_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365715955901", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194733126}
-{"stream": "metafield_shops", "data": {"id": 22534020104381, "namespace": "new_metafield", "key": "new_metafield", "value": "updated_mon_24.04.2023", "description": null, "owner_id": 58033176765, "created_at": "2023-04-24T11:12:38-07:00", "updated_at": "2023-04-24T11:12:38-07:00", "owner_resource": "shop", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22534020104381", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194734113}
-{"stream": "metafield_smart_collections", "data": {"id": 21525604106429, "namespace": "my_fields", "key": "discount", "value": "50%", "description": null, "owner_id": 273278566589, "created_at": "2022-10-12T13:36:55-07:00", "updated_at": "2022-10-12T13:36:55-07:00", "owner_resource": "collection", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/21525604106429", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194736384}
-{"stream": "metafield_smart_collections", "data": {"id": 22366265573565, "namespace": "my_fields", "key": "new_key", "value": "51%", "description": null, "owner_id": 273278566589, "created_at": "2023-04-14T05:21:58-07:00", "updated_at": "2023-04-14T05:21:58-07:00", "owner_resource": "collection", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22366265573565", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194736385}
-{"stream": "order_refunds", "data": {"id": 829538369725, "order_id": 3935377129661, "created_at": "2021-09-21T05:31:59-07:00", "note": "test refund", "user_id": 74861019325, "processed_at": "2021-09-21T05:31:59-07:00", "restock": true, "duties": "[]", "total_duties_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "return": null, "admin_graphql_api_id": "gid://shopify/Refund/829538369725", "refund_line_items": [{"id": 332807864509, "quantity": 1, "line_item_id": 10130216452285, "location_id": 63590301885, "restock_type": "cancel", "subtotal": 102.0, "total_tax": 17.0, "subtotal_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "total_tax_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "line_item": {"id": 10130216452285, "variant_id": 40090604011709, "title": "8 Ounce Soy Candle", "quantity": 1, "sku": "", "variant_title": "Wooden", "vendor": "Bosco Inc", "fulfillment_service": "manual", "product_id": 6796229509309, "requires_shipping": true, "taxable": true, "gift_card": false, "name": "8 Ounce Soy Candle - Wooden", "variant_inventory_management": "shopify", "properties": [], "product_exists": true, "fulfillable_quantity": 0, "grams": 63, "price": 102.0, "total_discount": 0.0, "fulfillment_status": null, "price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "discount_allocations": [], "duties": [], "admin_graphql_api_id": "gid://shopify/LineItem/10130216452285", "tax_lines": [{"title": "PDV", "price": 17.0, "rate": 0.2, "channel_liable": false, "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}}]}}], "transactions": [{"id": 5189894406333, "order_id": 3935377129661, "kind": "refund", "gateway": "bogus", "status": "success", "message": "Bogus Gateway: Forced success", "created_at": "2021-09-21T05:31:58-07:00", "test": true, "authorization": null, "location_id": null, "user_id": 74861019325, "parent_id": 4933790040253, "processed_at": "2021-09-21T05:31:58-07:00", "device_id": null, "error_code": null, "source_name": "1830279", "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 11, "credit_card_expiration_year": 2023}, "receipt": {"paid_amount": "102.00"}, "amount": "102.00", "currency": "USD", "payment_id": "c21670281707709.2", "total_unsettled_set": {"presentment_money": {"amount": "0.0", "currency": "USD"}, "shop_money": {"amount": "0.0", "currency": "USD"}}, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5189894406333"}], "order_adjustments": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194739764}
-{"stream": "order_refunds", "data": {"id": 845032358077, "order_id": 4147980107965, "created_at": "2022-03-07T02:09:04-08:00", "note": null, "user_id": 74861019325, "processed_at": "2022-03-07T02:09:04-08:00", "restock": true, "duties": "[]", "total_duties_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "return": {"id": 822313149, "admin_graphql_api_id": "gid://shopify/Return/822313149"}, "admin_graphql_api_id": "gid://shopify/Refund/845032358077", "refund_line_items": [{"id": 352716947645, "quantity": 1, "line_item_id": 10576771317949, "location_id": 63590301885, "restock_type": "return", "subtotal": 27.0, "total_tax": 0.0, "subtotal_set": {"shop_money": {"amount": 27.0, "currency_code": "USD"}, "presentment_money": {"amount": 27.0, "currency_code": "USD"}}, "total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "line_item": {"id": 10576771317949, "variant_id": 40090580615357, "title": "Red & Silver Fishing Lure", "quantity": 1, "sku": "", "variant_title": "Plastic", "vendor": "Harris - Hamill", "fulfillment_service": "manual", "product_id": 6796218302653, "requires_shipping": true, "taxable": true, "gift_card": false, "name": "Red & Silver Fishing Lure - Plastic", "variant_inventory_management": "shopify", "properties": [], "product_exists": true, "fulfillable_quantity": 0, "grams": 285, "price": 27.0, "total_discount": 0.0, "fulfillment_status": "fulfilled", "price_set": {"shop_money": {"amount": 27.0, "currency_code": "USD"}, "presentment_money": {"amount": 27.0, "currency_code": "USD"}}, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "discount_allocations": [], "duties": [], "admin_graphql_api_id": "gid://shopify/LineItem/10576771317949", "tax_lines": []}}], "transactions": [], "order_adjustments": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194740336}
-{"stream": "order_refunds", "data": {"id": 852809646269, "order_id": 4554821468349, "created_at": "2022-06-15T06:25:43-07:00", "note": null, "user_id": 74861019325, "processed_at": "2022-06-15T06:25:43-07:00", "restock": true, "duties": "[]", "total_duties_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "return": {"id": 947388605, "admin_graphql_api_id": "gid://shopify/Return/947388605"}, "admin_graphql_api_id": "gid://shopify/Refund/852809646269", "refund_line_items": [{"id": 363131404477, "quantity": 1, "line_item_id": 11406125564093, "location_id": 63590301885, "restock_type": "return", "subtotal": 57.23, "total_tax": 0.0, "subtotal_set": {"shop_money": {"amount": 57.23, "currency_code": "USD"}, "presentment_money": {"amount": 57.23, "currency_code": "USD"}}, "total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "line_item": {"id": 11406125564093, "variant_id": 40090597884093, "title": "All Black Sneaker Right Foot", "quantity": 1, "sku": "", "variant_title": "ivory", "vendor": "Becker - Moore", "fulfillment_service": "manual", "product_id": 6796226560189, "requires_shipping": false, "taxable": true, "gift_card": false, "name": "All Black Sneaker Right Foot - ivory", "variant_inventory_management": "shopify", "properties": [], "product_exists": true, "fulfillable_quantity": 0, "grams": 0, "price": 59.0, "total_discount": 0.0, "fulfillment_status": "fulfilled", "price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "discount_allocations": [{"amount": 1.77, "discount_application_index": 0, "amount_set": {"shop_money": {"amount": 1.77, "currency_code": "USD"}, "presentment_money": {"amount": 1.77, "currency_code": "USD"}}}], "duties": [], "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "tax_lines": []}}], "transactions": [{"id": 5721170968765, "order_id": 4554821468349, "kind": "refund", "gateway": "bogus", "status": "success", "message": "Bogus Gateway: Forced success", "created_at": "2022-06-15T06:25:42-07:00", "test": true, "authorization": null, "location_id": null, "user_id": null, "parent_id": 5721110872253, "processed_at": "2022-06-15T06:25:42-07:00", "device_id": null, "error_code": null, "source_name": "1830279", "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 2, "credit_card_expiration_year": 2025}, "receipt": {"paid_amount": "57.23"}, "amount": "57.23", "currency": "USD", "payment_id": "c25048437719229.2", "total_unsettled_set": {"presentment_money": {"amount": "0.0", "currency": "USD"}, "shop_money": {"amount": "0.0", "currency": "USD"}}, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5721170968765"}], "order_adjustments": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194740934}
-{"stream": "order_risks", "data": {"id": 6446736474301, "order_id": 4147980107965, "checkout_id": null, "source": "External", "score": 1.0, "recommendation": "cancel", "display": true, "cause_cancel": true, "message": "This order came from an anonymous proxy", "merchant_message": "This order came from an anonymous proxy", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194743896}
-{"stream": "orders", "data": {"id": 4554821468349, "admin_graphql_api_id": "gid://shopify/Order/4554821468349", "app_id": 580111, "browser_ip": "176.113.167.23", "buyer_accepts_marketing": false, "cancel_reason": null, "cancelled_at": null, "cart_token": null, "checkout_id": 25048437719229, "checkout_token": "cf5d16a0a0688905bd551c6dec591506", "client_details": {"accept_language": "en-US,en;q=0.9,uk;q=0.8", "browser_height": 754, "browser_ip": "176.113.167.23", "browser_width": 1519, "session_hash": null, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53"}, "closed_at": "2022-06-15T06:25:43-07:00", "company": null, "confirmation_number": null, "confirmed": true, "contact_email": "integration-test@airbyte.io", "created_at": "2022-06-15T05:16:53-07:00", "currency": "USD", "current_subtotal_price": 0.0, "current_subtotal_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_additional_fees_set": null, "current_total_discounts": 0.0, "current_total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_duties_set": null, "current_total_price": 0.0, "current_total_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_tax": 0.0, "current_total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "customer_locale": "en", "device_id": null, "discount_codes": [], "email": "integration-test@airbyte.io", "estimated_taxes": false, "financial_status": "refunded", "fulfillment_status": "fulfilled", "landing_site": "/wallets/checkouts.json", "landing_site_ref": null, "location_id": null, "merchant_of_record_app_id": null, "name": "#1136", "note": "updated_mon_24.04.2023", "note_attributes": [], "number": 136, "order_number": 1136, "order_status_url": "https://airbyte-integration-test.myshopify.com/58033176765/orders/e4f98630ea44a884e33e700203ce2130/authenticate?key=edf087d6ae55a4541bf1375432f6a4b8", "original_total_additional_fees_set": null, "original_total_duties_set": null, "payment_gateway_names": ["bogus"], "phone": null, "po_number": null, "presentment_currency": "USD", "processed_at": "2022-06-15T05:16:53-07:00", "reference": null, "referring_site": "https://airbyte-integration-test.myshopify.com/products/all-black-sneaker-right-foot", "source_identifier": null, "source_name": "web", "source_url": null, "subtotal_price": 57.23, "subtotal_price_set": {"shop_money": {"amount": 57.23, "currency_code": "USD"}, "presentment_money": {"amount": 57.23, "currency_code": "USD"}}, "tags": "Refund", "tax_exempt": false, "tax_lines": [], "taxes_included": true, "test": true, "token": "e4f98630ea44a884e33e700203ce2130", "total_discounts": 1.77, "total_discounts_set": {"shop_money": {"amount": 1.77, "currency_code": "USD"}, "presentment_money": {"amount": 1.77, "currency_code": "USD"}}, "total_line_items_price": 59.0, "total_line_items_price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "total_outstanding": 0.0, "total_price": 57.23, "total_price_set": {"shop_money": {"amount": 57.23, "currency_code": "USD"}, "presentment_money": {"amount": 57.23, "currency_code": "USD"}}, "total_shipping_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tip_received": 0.0, "total_weight": 0, "updated_at": "2023-04-24T07:00:37-07:00", "user_id": null, "billing_address": {"first_name": "Iryna", "address1": "2261 Market Street", "phone": null, "city": "San Francisco", "zip": "94114", "province": "California", "country": "United States", "last_name": "Grankova", "address2": "4381", "company": null, "latitude": 37.7647751, "longitude": -122.4320369, "name": "Iryna Grankova", "country_code": "US", "province_code": "CA"}, "customer": {"id": 5362027233469, "email": "integration-test@airbyte.io", "accepts_marketing": false, "created_at": "2021-07-08T05:41:47-07:00", "updated_at": "2022-06-22T03:50:13-07:00", "first_name": "Airbyte", "last_name": "Team", "state": "disabled", "note": null, "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "phone": null, "email_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": null}, "sms_marketing_consent": null, "tags": "", "currency": "USD", "accepts_marketing_updated_at": "2021-07-08T05:41:47-07:00", "marketing_opt_in_level": null, "tax_exemptions": [], "admin_graphql_api_id": "gid://shopify/Customer/5362027233469", "default_address": {"id": 7492260823229, "customer_id": 5362027233469, "first_name": "Airbyte", "last_name": "Team", "company": null, "address1": "2261 Market Street", "address2": "4381", "city": "San Francisco", "province": "California", "country": "United States", "zip": "94114", "phone": null, "name": "Airbyte Team", "province_code": "CA", "country_code": "US", "country_name": "United States", "default": true}}, "discount_applications": [{"target_type": "line_item", "type": "automatic", "value": "3.0", "value_type": "percentage", "allocation_method": "across", "target_selection": "all", "title": "eeeee"}], "fulfillments": [{"id": 4075788501181, "admin_graphql_api_id": "gid://shopify/Fulfillment/4075788501181", "created_at": "2022-06-15T05:16:55-07:00", "location_id": 63590301885, "name": "#1136.1", "order_id": 4554821468349, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2022-06-15T05:16:55-07:00", "line_items": [{"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": 59.0, "price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": "1.77", "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}, "discount_application_index": 0}]}]}], "line_items": [{"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": 59.0, "price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": "1.77", "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}, "discount_application_index": 0}]}], "payment_terms": null, "refunds": [{"id": 852809646269, "admin_graphql_api_id": "gid://shopify/Refund/852809646269", "created_at": "2022-06-15T06:25:43-07:00", "note": null, "order_id": 4554821468349, "processed_at": "2022-06-15T06:25:43-07:00", "restock": true, "total_duties_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "user_id": 74861019325, "order_adjustments": [], "transactions": [{"id": 5721170968765, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5721170968765", "amount": "57.23", "authorization": null, "created_at": "2022-06-15T06:25:42-07:00", "currency": "USD", "device_id": null, "error_code": null, "gateway": "bogus", "kind": "refund", "location_id": null, "message": "Bogus Gateway: Forced success", "order_id": 4554821468349, "parent_id": 5721110872253, "payment_id": "c25048437719229.2", "processed_at": "2022-06-15T06:25:42-07:00", "receipt": {"paid_amount": "57.23"}, "source_name": "1830279", "status": "success", "test": true, "user_id": null, "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 2, "credit_card_expiration_year": 2025}}], "refund_line_items": [{"id": 363131404477, "line_item_id": 11406125564093, "location_id": 63590301885, "quantity": 1, "restock_type": "return", "subtotal": 57.23, "subtotal_set": {"shop_money": {"amount": "57.23", "currency_code": "USD"}, "presentment_money": {"amount": "57.23", "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "line_item": {"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": "59.00", "price_set": {"shop_money": {"amount": "59.00", "currency_code": "USD"}, "presentment_money": {"amount": "59.00", "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": "0.00", "total_discount_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": "1.77", "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}, "discount_application_index": 0}]}}], "duties": []}], "shipping_address": null, "shipping_lines": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194746441}
-{"stream": "orders", "data": {"id": 4147980107965, "admin_graphql_api_id": "gid://shopify/Order/4147980107965", "app_id": 5505221, "browser_ip": null, "buyer_accepts_marketing": false, "cancel_reason": null, "cancelled_at": null, "cart_token": null, "checkout_id": null, "checkout_token": null, "client_details": null, "closed_at": null, "company": null, "confirmation_number": null, "confirmed": true, "contact_email": "airbyte@airbyte.com", "created_at": "2021-09-19T09:08:23-07:00", "currency": "USD", "current_subtotal_price": 0.0, "current_subtotal_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_additional_fees_set": null, "current_total_discounts": 0.0, "current_total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_duties_set": null, "current_total_price": 0.0, "current_total_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_tax": 0.0, "current_total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "customer_locale": null, "device_id": null, "discount_codes": [], "email": "airbyte@airbyte.com", "estimated_taxes": false, "financial_status": "paid", "fulfillment_status": "fulfilled", "landing_site": null, "landing_site_ref": null, "location_id": null, "merchant_of_record_app_id": null, "name": "#1121", "note": "updated_mon_24.04.2023", "note_attributes": [], "number": 121, "order_number": 1121, "order_status_url": "https://airbyte-integration-test.myshopify.com/58033176765/orders/6adf11e07ccb49b280ea4b9f53d64f12/authenticate?key=4cef2ff10ba4d18f31114df33933f81e", "original_total_additional_fees_set": null, "original_total_duties_set": null, "payment_gateway_names": [], "phone": null, "po_number": null, "presentment_currency": "USD", "processed_at": "2021-09-19T09:08:23-07:00", "reference": null, "referring_site": null, "source_identifier": null, "source_name": "5505221", "source_url": null, "subtotal_price": 27.0, "subtotal_price_set": {"shop_money": {"amount": 27.0, "currency_code": "USD"}, "presentment_money": {"amount": 27.0, "currency_code": "USD"}}, "tags": "", "tax_exempt": false, "tax_lines": [], "taxes_included": false, "test": false, "token": "6adf11e07ccb49b280ea4b9f53d64f12", "total_discounts": 0.0, "total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_line_items_price": 27.0, "total_line_items_price_set": {"shop_money": {"amount": 27.0, "currency_code": "USD"}, "presentment_money": {"amount": 27.0, "currency_code": "USD"}}, "total_outstanding": 0.0, "total_price": 27.0, "total_price_set": {"shop_money": {"amount": 27.0, "currency_code": "USD"}, "presentment_money": {"amount": 27.0, "currency_code": "USD"}}, "total_shipping_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tip_received": 0.0, "total_weight": 0, "updated_at": "2023-04-24T07:03:06-07:00", "user_id": null, "billing_address": null, "customer": {"id": 5565161144509, "email": "airbyte@airbyte.com", "accepts_marketing": false, "created_at": "2021-09-19T08:31:05-07:00", "updated_at": "2021-09-19T09:08:24-07:00", "first_name": null, "last_name": null, "state": "disabled", "note": null, "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "phone": null, "email_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": null}, "sms_marketing_consent": null, "tags": "", "currency": "USD", "accepts_marketing_updated_at": "2021-09-19T08:31:05-07:00", "marketing_opt_in_level": null, "tax_exemptions": [], "admin_graphql_api_id": "gid://shopify/Customer/5565161144509"}, "discount_applications": [], "fulfillments": [{"id": 3693416710333, "admin_graphql_api_id": "gid://shopify/Fulfillment/3693416710333", "created_at": "2021-09-19T09:08:23-07:00", "location_id": 63590301885, "name": "#1121.1", "order_id": 4147980107965, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": "Amazon Logistics US", "tracking_number": "123456", "tracking_numbers": ["123456"], "tracking_url": "https://track.amazon.com/tracking/123456", "tracking_urls": ["https://track.amazon.com/tracking/123456"], "updated_at": "2022-02-22T00:35:47-08:00", "line_items": [{"id": 10576771317949, "admin_graphql_api_id": "gid://shopify/LineItem/10576771317949", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 285, "name": "Red & Silver Fishing Lure - Plastic", "price": 27.0, "price_set": {"shop_money": {"amount": 27.0, "currency_code": "USD"}, "presentment_money": {"amount": 27.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796218302653, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "Red & Silver Fishing Lure", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090580615357, "variant_inventory_management": "shopify", "variant_title": "Plastic", "vendor": "Harris - Hamill", "tax_lines": [], "duties": [], "discount_allocations": []}]}], "line_items": [{"id": 10576771317949, "admin_graphql_api_id": "gid://shopify/LineItem/10576771317949", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 285, "name": "Red & Silver Fishing Lure - Plastic", "price": 27.0, "price_set": {"shop_money": {"amount": 27.0, "currency_code": "USD"}, "presentment_money": {"amount": 27.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796218302653, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "Red & Silver Fishing Lure", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090580615357, "variant_inventory_management": "shopify", "variant_title": "Plastic", "vendor": "Harris - Hamill", "tax_lines": [], "duties": [], "discount_allocations": []}], "payment_terms": null, "refunds": [{"id": 845032358077, "admin_graphql_api_id": "gid://shopify/Refund/845032358077", "created_at": "2022-03-07T02:09:04-08:00", "note": null, "order_id": 4147980107965, "processed_at": "2022-03-07T02:09:04-08:00", "restock": true, "total_duties_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "user_id": 74861019325, "order_adjustments": [], "transactions": [], "refund_line_items": [{"id": 352716947645, "line_item_id": 10576771317949, "location_id": 63590301885, "quantity": 1, "restock_type": "return", "subtotal": 27.0, "subtotal_set": {"shop_money": {"amount": "27.00", "currency_code": "USD"}, "presentment_money": {"amount": "27.00", "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "line_item": {"id": 10576771317949, "admin_graphql_api_id": "gid://shopify/LineItem/10576771317949", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 285, "name": "Red & Silver Fishing Lure - Plastic", "price": "27.00", "price_set": {"shop_money": {"amount": "27.00", "currency_code": "USD"}, "presentment_money": {"amount": "27.00", "currency_code": "USD"}}, "product_exists": true, "product_id": 6796218302653, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "Red & Silver Fishing Lure", "total_discount": "0.00", "total_discount_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "variant_id": 40090580615357, "variant_inventory_management": "shopify", "variant_title": "Plastic", "vendor": "Harris - Hamill", "tax_lines": [], "duties": [], "discount_allocations": []}}], "duties": []}], "shipping_address": {"first_name": "John", "address1": "San Francisco", "phone": "", "city": "San Francisco", "zip": "91326", "province": "California", "country": "United States", "last_name": "Doe", "address2": "10", "company": "Umbrella LLC", "latitude": 34.2894584, "longitude": -118.5622893, "name": "John Doe", "country_code": "US", "province_code": "CA"}, "shipping_lines": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194746446}
-{"stream": "orders", "data": {"id": 3935377129661, "admin_graphql_api_id": "gid://shopify/Order/3935377129661", "app_id": 1354745, "browser_ip": "76.14.176.236", "buyer_accepts_marketing": false, "cancel_reason": null, "cancelled_at": null, "cart_token": null, "checkout_id": 21670281707709, "checkout_token": "ea03756d615a5f9e752f3c085e8cf9bd", "client_details": {"accept_language": "en-US,en;q=0.9", "browser_height": null, "browser_ip": "76.14.176.236", "browser_width": null, "session_hash": null, "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"}, "closed_at": null, "company": null, "confirmation_number": null, "confirmed": true, "contact_email": null, "created_at": "2021-07-02T00:51:50-07:00", "currency": "USD", "current_subtotal_price": 0.0, "current_subtotal_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_additional_fees_set": null, "current_total_discounts": 0.0, "current_total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_duties_set": null, "current_total_price": 0.0, "current_total_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_tax": 0.0, "current_total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "customer_locale": null, "device_id": null, "discount_codes": [], "email": "", "estimated_taxes": false, "financial_status": "refunded", "fulfillment_status": null, "landing_site": null, "landing_site_ref": null, "location_id": 63590301885, "merchant_of_record_app_id": null, "name": "#1001", "note": null, "note_attributes": [], "number": 1, "order_number": 1001, "order_status_url": "https://airbyte-integration-test.myshopify.com/58033176765/orders/16dd6c6e17f562f1f5eee0fefa00b4cb/authenticate?key=931eb302588779d0ab93839d42bf7166", "original_total_additional_fees_set": null, "original_total_duties_set": null, "payment_gateway_names": ["bogus"], "phone": null, "po_number": null, "presentment_currency": "USD", "processed_at": "2021-07-02T00:51:49-07:00", "reference": null, "referring_site": null, "source_identifier": null, "source_name": "shopify_draft_order", "source_url": null, "subtotal_price": 102.0, "subtotal_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "tags": "teest", "tax_exempt": false, "tax_lines": [{"price": 17.0, "rate": 0.2, "title": "PDV", "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "channel_liable": false}], "taxes_included": true, "test": true, "token": "16dd6c6e17f562f1f5eee0fefa00b4cb", "total_discounts": 0.0, "total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_line_items_price": 102.0, "total_line_items_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "total_outstanding": 0.0, "total_price": 102.0, "total_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "total_shipping_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tax": 17.0, "total_tax_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "total_tip_received": 0.0, "total_weight": 63, "updated_at": "2023-04-24T10:59:00-07:00", "user_id": 74861019325, "billing_address": null, "customer": {"id": 5349364105405, "email": null, "accepts_marketing": false, "created_at": "2021-07-02T00:51:46-07:00", "updated_at": "2021-07-02T00:51:46-07:00", "first_name": "Bogus", "last_name": "Gateway", "state": "disabled", "note": null, "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "phone": null, "email_marketing_consent": null, "sms_marketing_consent": null, "tags": "", "currency": "USD", "accepts_marketing_updated_at": "2021-07-02T00:51:46-07:00", "marketing_opt_in_level": null, "tax_exemptions": [], "admin_graphql_api_id": "gid://shopify/Customer/5349364105405"}, "discount_applications": [], "fulfillments": [], "line_items": [{"id": 10130216452285, "admin_graphql_api_id": "gid://shopify/LineItem/10130216452285", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": null, "gift_card": false, "grams": 63, "name": "8 Ounce Soy Candle - Wooden", "price": 102.0, "price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796229509309, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "8 Ounce Soy Candle", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090604011709, "variant_inventory_management": "shopify", "variant_title": "Wooden", "vendor": "Bosco Inc", "tax_lines": [{"channel_liable": false, "price": 17.0, "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}], "payment_terms": null, "refunds": [{"id": 829538369725, "admin_graphql_api_id": "gid://shopify/Refund/829538369725", "created_at": "2021-09-21T05:31:59-07:00", "note": "test refund", "order_id": 3935377129661, "processed_at": "2021-09-21T05:31:59-07:00", "restock": true, "total_duties_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "user_id": 74861019325, "order_adjustments": [], "transactions": [{"id": 5189894406333, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5189894406333", "amount": "102.00", "authorization": null, "created_at": "2021-09-21T05:31:58-07:00", "currency": "USD", "device_id": null, "error_code": null, "gateway": "bogus", "kind": "refund", "location_id": null, "message": "Bogus Gateway: Forced success", "order_id": 3935377129661, "parent_id": 4933790040253, "payment_id": "c21670281707709.2", "processed_at": "2021-09-21T05:31:58-07:00", "receipt": {"paid_amount": "102.00"}, "source_name": "1830279", "status": "success", "test": true, "user_id": 74861019325, "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 11, "credit_card_expiration_year": 2023}}], "refund_line_items": [{"id": 332807864509, "line_item_id": 10130216452285, "location_id": 63590301885, "quantity": 1, "restock_type": "cancel", "subtotal": 102.0, "subtotal_set": {"shop_money": {"amount": "102.00", "currency_code": "USD"}, "presentment_money": {"amount": "102.00", "currency_code": "USD"}}, "total_tax": 17.0, "total_tax_set": {"shop_money": {"amount": "17.00", "currency_code": "USD"}, "presentment_money": {"amount": "17.00", "currency_code": "USD"}}, "line_item": {"id": 10130216452285, "admin_graphql_api_id": "gid://shopify/LineItem/10130216452285", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": null, "gift_card": false, "grams": 63, "name": "8 Ounce Soy Candle - Wooden", "price": "102.00", "price_set": {"shop_money": {"amount": "102.00", "currency_code": "USD"}, "presentment_money": {"amount": "102.00", "currency_code": "USD"}}, "product_exists": true, "product_id": 6796229509309, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "8 Ounce Soy Candle", "total_discount": "0.00", "total_discount_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "variant_id": 40090604011709, "variant_inventory_management": "shopify", "variant_title": "Wooden", "vendor": "Bosco Inc", "tax_lines": [{"channel_liable": false, "price": "17.00", "price_set": {"shop_money": {"amount": "17.00", "currency_code": "USD"}, "presentment_money": {"amount": "17.00", "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}}], "duties": []}], "shipping_address": null, "shipping_lines": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194746449}
-{"stream": "pages", "data": {"id": 83074252989, "title": "Warranty information", "shop_id": 58033176765, "handle": "warranty-information", "body_html": "updated_mon_24.04.2023", "author": "Shopify API", "created_at": "2021-07-08T05:19:00-07:00", "updated_at": "2023-04-24T11:08:41-07:00", "published_at": "2021-07-08T05:19:00-07:00", "template_suffix": null, "admin_graphql_api_id": "gid://shopify/OnlineStorePage/83074252989", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194747936}
-{"stream": "pages", "data": {"id": 95926616253, "deleted_at": "2023-09-06T03:37:06-07:00", "updated_at": "2023-09-06T03:37:06-07:00", "deleted_message": "Online Store deleted a page: Test Page for delete.", "deleted_description": "Online Store deleted a page: Test Page for delete.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194748486}
-{"stream": "price_rules", "data": {"id": 945000284349, "value_type": "percentage", "value": "-3.0", "customer_selection": "all", "target_type": "line_item", "target_selection": "all", "allocation_method": "across", "allocation_limit": null, "once_per_customer": true, "usage_limit": 10, "starts_at": "2021-07-07T07:22:04-07:00", "ends_at": null, "created_at": "2021-07-07T07:23:11-07:00", "updated_at": "2023-04-24T05:52:22-07:00", "entitled_product_ids": [], "entitled_variant_ids": [], "entitled_collection_ids": [], "entitled_country_ids": [], "prerequisite_product_ids": [], "prerequisite_variant_ids": [], "prerequisite_collection_ids": [], "customer_segment_prerequisite_ids": [], "prerequisite_customer_ids": [], "prerequisite_subtotal_range": null, "prerequisite_quantity_range": null, "prerequisite_shipping_price_range": null, "prerequisite_to_entitlement_quantity_ratio": {"prerequisite_quantity": null, "entitled_quantity": null}, "prerequisite_to_entitlement_purchase": {"prerequisite_amount": null}, "title": "1V8Z165KSH5T", "admin_graphql_api_id": "gid://shopify/PriceRule/945000284349", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194749554}
-{"stream": "price_rules", "data": {"id": 1278552473789, "deleted_at": "2023-09-06T03:48:46-07:00", "updated_at": "2023-09-06T03:48:46-07:00", "deleted_message": "Airbyte Test deleted this discount.", "deleted_description": "Airbyte Test deleted this discount.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194750128}
-{"stream": "product_images", "data": {"id": 29301297316029, "product_id": 6796220989629, "position": 1, "created_at": "2021-06-22T18:09:47-07:00", "updated_at": "2023-04-24T10:32:19-07:00", "alt": "updated_mon_24.04.2023", "width": 2200, "height": 1467, "src": "https://cdn.shopify.com/s/files/1/0580/3317/6765/products/4-ounce-soy-candle.jpg?v=1682357539", "variant_ids": [], "admin_graphql_api_id": "gid://shopify/ProductImage/29301297316029", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194752617}
-{"stream": "products", "data": {"id": 6796220989629, "title": "4 Ounce Soy Candle", "body_html": "updated_mon_24.04.2023", "vendor": "Hartmann Group", "product_type": "Baby", "created_at": "2021-06-22T18:09:47-07:00", "handle": "4-ounce-soy-candle", "updated_at": "2023-04-24T11:05:13-07:00", "published_at": "2021-06-22T18:09:47-07:00", "template_suffix": "", "published_scope": "web", "tags": "developer-tools-generator", "status": "active", "admin_graphql_api_id": "gid://shopify/Product/6796220989629", "variants": [{"id": 40090585923773, "product_id": 6796220989629, "title": "Metal", "price": 19.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Metal", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:47-07:00", "updated_at": "2023-04-13T05:00:55-07:00", "taxable": true, "barcode": null, "grams": 112, "image_id": null, "weight": 112.0, "weight_unit": "g", "inventory_item_id": 42185200631997, "inventory_quantity": 15, "old_inventory_quantity": 15, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090585923773"}, {"id": 41561955827901, "product_id": 6796220989629, "title": "Test Variant 1", "price": 19.0, "sku": "", "position": 2, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Test Variant 1", "option2": null, "option3": null, "created_at": "2022-03-06T14:09:20-08:00", "updated_at": "2022-03-06T14:12:40-08:00", "taxable": true, "barcode": "", "grams": 112, "image_id": null, "weight": 112.0, "weight_unit": "g", "inventory_item_id": 43653682495677, "inventory_quantity": 2, "old_inventory_quantity": 2, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/41561955827901"}, {"id": 41561961824445, "product_id": 6796220989629, "title": "Test Variant 2", "price": 19.0, "sku": "", "position": 3, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Test Variant 2", "option2": null, "option3": null, "created_at": "2022-03-06T14:12:20-08:00", "updated_at": "2023-04-24T11:00:10-07:00", "taxable": true, "barcode": "", "grams": 112, "image_id": null, "weight": 112.0, "weight_unit": "g", "inventory_item_id": 43653688524989, "inventory_quantity": 0, "old_inventory_quantity": 0, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/41561961824445"}], "options": [{"id": 8720178315453, "product_id": 6796220989629, "name": "Title", "position": 1, "values": ["Metal", "Test Variant 1", "Test Variant 2"]}], "images": [{"id": 29301297316029, "product_id": 6796220989629, "position": 1, "created_at": "2021-06-22T18:09:47-07:00", "updated_at": "2023-04-24T10:32:19-07:00", "alt": "updated_mon_24.04.2023", "width": 2200, "height": 1467, "src": "https://cdn.shopify.com/s/files/1/0580/3317/6765/products/4-ounce-soy-candle.jpg?v=1682357539", "variant_ids": [], "admin_graphql_api_id": "gid://shopify/ProductImage/29301297316029"}], "image": {"id": 29301297316029, "product_id": 6796220989629, "position": 1, "created_at": "2021-06-22T18:09:47-07:00", "updated_at": "2023-04-24T10:32:19-07:00", "alt": "updated_mon_24.04.2023", "width": 2200, "height": 1467, "src": "https://cdn.shopify.com/s/files/1/0580/3317/6765/products/4-ounce-soy-candle.jpg?v=1682357539", "variant_ids": [], "admin_graphql_api_id": "gid://shopify/ProductImage/29301297316029"}, "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194753037}
-{"stream": "products", "data": {"id": 6796217843901, "title": "Lace Detail On Womens Top", "body_html": "A close-up side view of a woman's off-white shirt shows the design detail in the lace.", "vendor": "Hayes, Hettinger and Hauck", "product_type": "Beauty", "created_at": "2021-06-22T18:09:26-07:00", "handle": "lace-detail-on-womens-top", "updated_at": "2023-09-05T07:12:05-07:00", "published_at": null, "template_suffix": null, "published_scope": "web", "tags": "developer-tools-generator", "status": "archived", "admin_graphql_api_id": "gid://shopify/Product/6796217843901", "variants": [{"id": 40090579959997, "product_id": 6796217843901, "title": "Soft", "price": 85.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Soft", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2021-06-22T18:09:27-07:00", "taxable": true, "barcode": null, "grams": 391, "image_id": null, "weight": 391.0, "weight_unit": "g", "inventory_item_id": 42185194668221, "inventory_quantity": 12, "old_inventory_quantity": 12, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090579959997"}], "options": [{"id": 8720175169725, "product_id": 6796217843901, "name": "Title", "position": 1, "values": ["Soft"]}], "images": [], "image": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194753040}
-{"stream": "products", "data": {"id": 6796217811133, "deleted_at": "2023-09-05T07:07:00-07:00", "updated_at": "2023-09-05T07:07:00-07:00", "deleted_message": "Airbyte Airbyte deleted a product: Yoga Mat Rolled.", "deleted_description": "Airbyte Airbyte deleted a product: Yoga Mat Rolled.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194753917}
-{"stream": "products_graph_ql", "data": {"id": "gid://shopify/Product/6796217843901", "title": "Lace Detail On Womens Top", "updatedAt": "2023-09-05T14:12:05Z", "createdAt": "2021-06-23T01:09:26Z", "publishedAt": null, "status": "ARCHIVED", "vendor": "Hayes, Hettinger and Hauck", "productType": "Beauty", "tags": ["developer-tools-generator"], "options": [{"id": "gid://shopify/ProductOption/8720175169725", "name": "Title", "position": 1, "values": ["Soft"]}], "handle": "lace-detail-on-womens-top", "description": "A close-up side view of a woman's off-white shirt shows the design detail in the lace.", "tracksInventory": true, "totalInventory": 12, "totalVariants": 1, "onlineStoreUrl": null, "onlineStorePreviewUrl": "https://xozdpweqwavev7lh-58033176765.shopifypreview.com/products_preview?preview_key=6fd9afd8977385d048b67ffb24ad7a7f&_bt=eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaXRoYVhKaWVYUmxMV2x1ZEdWbmNtRjBhVzl1TFhSbGMzUXViWGx6YUc5d2FXWjVMbU52YlFZNkJrVlUiLCJleHAiOiIyMDIzLTEwLTEzVDExOjU5OjE0LjkwNFoiLCJwdXIiOiJwZXJtYW5lbnRfcGFzc3dvcmRfYnlwYXNzIn19--aee5ded34bedee80bb841b77b1205d58a10f607e", "descriptionHtml": "A close-up side view of a woman's off-white shirt shows the design detail in the lace.", "isGiftCard": false, "legacyResourceId": "6796217843901", "mediaCount": 0, "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194755072}
-{"stream": "products_graph_ql", "data": {"id": "gid://shopify/Product/6796220989629", "title": "4 Ounce Soy Candle", "updatedAt": "2023-04-24T18:05:13Z", "createdAt": "2021-06-23T01:09:47Z", "publishedAt": "2021-06-23T01:09:47Z", "status": "ACTIVE", "vendor": "Hartmann Group", "productType": "Baby", "tags": ["developer-tools-generator"], "options": [{"id": "gid://shopify/ProductOption/8720178315453", "name": "Title", "position": 1, "values": ["Metal", "Test Variant 1", "Test Variant 2"]}], "handle": "4-ounce-soy-candle", "description": "updated_mon_24.04.2023", "tracksInventory": true, "totalInventory": 17, "totalVariants": 3, "onlineStoreUrl": null, "onlineStorePreviewUrl": "https://airbyte-integration-test.myshopify.com/products/4-ounce-soy-candle", "descriptionHtml": "updated_mon_24.04.2023", "isGiftCard": false, "legacyResourceId": "6796220989629", "mediaCount": 1, "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194755073}
-{"stream": "product_variants", "data": {"id": 40090579959997, "product_id": 6796217843901, "title": "Soft", "price": 85.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Soft", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2021-06-22T18:09:27-07:00", "taxable": true, "barcode": null, "grams": 391, "image_id": null, "weight": 391.0, "weight_unit": "g", "inventory_item_id": 42185194668221, "inventory_quantity": 12, "old_inventory_quantity": 12, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090579959997", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194757681}
-{"stream": "product_variants", "data": {"id": 40090585923773, "product_id": 6796220989629, "title": "Metal", "price": 19.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Metal", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:47-07:00", "updated_at": "2023-04-13T05:00:55-07:00", "taxable": true, "barcode": null, "grams": 112, "image_id": null, "weight": 112.0, "weight_unit": "g", "inventory_item_id": 42185200631997, "inventory_quantity": 15, "old_inventory_quantity": 15, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090585923773", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194758143}
-{"stream": "product_variants", "data": {"id": 41561955827901, "product_id": 6796220989629, "title": "Test Variant 1", "price": 19.0, "sku": "", "position": 2, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Test Variant 1", "option2": null, "option3": null, "created_at": "2022-03-06T14:09:20-08:00", "updated_at": "2022-03-06T14:12:40-08:00", "taxable": true, "barcode": "", "grams": 112, "image_id": null, "weight": 112.0, "weight_unit": "g", "inventory_item_id": 43653682495677, "inventory_quantity": 2, "old_inventory_quantity": 2, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/41561955827901", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194758144}
-{"stream": "shop", "data": {"id": 58033176765, "name": "airbyte integration test", "email": "sherif@airbyte.io", "domain": "airbyte-integration-test.myshopify.com", "province": "California", "country": "US", "address1": "350 29th Avenue", "zip": "94121", "city": "San Francisco", "source": null, "phone": "8023494963", "latitude": 37.7827286, "longitude": -122.4889911, "primary_locale": "en", "address2": "", "created_at": "2021-06-22T18:00:23-07:00", "updated_at": "2023-04-30T09:02:52-07:00", "country_code": "US", "country_name": "United States", "currency": "USD", "customer_email": "sherif@airbyte.io", "timezone": "(GMT-08:00) America/Los_Angeles", "iana_timezone": "America/Los_Angeles", "shop_owner": "Airbyte Airbyte", "money_format": "${{amount}}", "money_with_currency_format": "${{amount}} USD", "weight_unit": "kg", "province_code": "CA", "taxes_included": true, "auto_configure_tax_inclusivity": null, "tax_shipping": null, "county_taxes": true, "plan_display_name": "Developer Preview", "plan_name": "partner_test", "has_discounts": true, "has_gift_cards": false, "myshopify_domain": "airbyte-integration-test.myshopify.com", "google_apps_domain": null, "google_apps_login_enabled": null, "money_in_emails_format": "${{amount}}", "money_with_currency_in_emails_format": "${{amount}} USD", "eligible_for_payments": true, "requires_extra_payments_agreement": false, "password_enabled": true, "has_storefront": true, "finances": true, "primary_location_id": 63590301885, "checkout_api_supported": true, "multi_location_enabled": true, "setup_required": false, "pre_launch_enabled": false, "enabled_presentment_currencies": ["USD"], "transactional_sms_disabled": false, "marketing_sms_consent_enabled_at_checkout": false, "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194759349}
-{"stream": "smart_collections", "data": {"id": 273278566589, "handle": "test-collection", "title": "Test Collection", "updated_at": "2023-09-05T07:12:04-07:00", "body_html": "updated_mon_24.04.2023", "published_at": "2021-07-19T07:02:54-07:00", "sort_order": "best-selling", "template_suffix": "", "disjunctive": false, "rules": ["{'column': 'type', 'relation': 'equals', 'condition': 'Beauty'}"], "published_scope": "web", "admin_graphql_api_id": "gid://shopify/Collection/273278566589", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194760379}
-{"stream": "tender_transactions", "data": {"id": 4464009117885, "order_id": 5033391718589, "amount": "19.00", "currency": "USD", "user_id": null, "test": false, "processed_at": "2023-04-24T11:00:08-07:00", "remote_reference": null, "payment_details": null, "payment_method": "other", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194761405}
-{"stream": "transactions", "data": {"id": 5721110872253, "order_id": 4554821468349, "kind": "sale", "gateway": "bogus", "status": "success", "message": "Bogus Gateway: Forced success", "created_at": "2022-06-15T05:16:52-07:00", "test": true, "authorization": "53433", "location_id": null, "user_id": null, "parent_id": null, "processed_at": "2022-06-15T05:16:52-07:00", "device_id": null, "error_code": null, "source_name": "580111", "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 2, "credit_card_expiration_year": 2025}, "receipt": {"paid_amount": "57.23"}, "amount": 57.23, "currency": "USD", "payment_id": "c25048437719229.1", "total_unsettled_set": {"presentment_money": {"amount": 0.0, "currency": "USD"}, "shop_money": {"amount": 0.0, "currency": "USD"}}, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5721110872253", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194763489}
-{"stream": "transactions", "data": {"id": 5721170968765, "order_id": 4554821468349, "kind": "refund", "gateway": "bogus", "status": "success", "message": "Bogus Gateway: Forced success", "created_at": "2022-06-15T06:25:42-07:00", "test": true, "authorization": null, "location_id": null, "user_id": null, "parent_id": 5721110872253, "processed_at": "2022-06-15T06:25:42-07:00", "device_id": null, "error_code": null, "source_name": "1830279", "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 2, "credit_card_expiration_year": 2025}, "receipt": {"paid_amount": "57.23"}, "amount": 57.23, "currency": "USD", "payment_id": "c25048437719229.2", "total_unsettled_set": {"presentment_money": {"amount": 0.0, "currency": "USD"}, "shop_money": {"amount": 0.0, "currency": "USD"}}, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5721170968765", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194763490}
-{"stream": "transactions", "data": {"id": 4933790040253, "order_id": 3935377129661, "kind": "sale", "gateway": "bogus", "status": "success", "message": "Bogus Gateway: Forced success", "created_at": "2021-07-02T00:51:49-07:00", "test": true, "authorization": "53433", "location_id": null, "user_id": null, "parent_id": null, "processed_at": "2021-07-02T00:51:49-07:00", "device_id": null, "error_code": null, "source_name": "shopify_draft_order", "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 11, "credit_card_expiration_year": 2023}, "receipt": {"paid_amount": "102.00"}, "amount": 102.0, "currency": "USD", "payment_id": "c21670281707709.1", "total_unsettled_set": {"presentment_money": {"amount": 0.0, "currency": "USD"}, "shop_money": {"amount": 0.0, "currency": "USD"}}, "admin_graphql_api_id": "gid://shopify/OrderTransaction/4933790040253", "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194764447}
-{"stream": "customer_address", "data": {"id": 8092523135165, "customer_id": 6569096478909, "first_name": "New Test", "last_name": "Customer", "company": "Test Company", "address1": "My Best Accent", "address2": "", "city": "Fair Lawn", "province": "New Jersey", "country": "United States", "zip": "07410", "phone": "", "name": "New Test Customer", "province_code": "NJ", "country_code": "US", "country_name": "United States", "default": true, "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194770214}
-{"stream": "customer_address", "data": {"id": 8212915650749, "customer_id": 6676027932861, "first_name": "MArcos", "last_name": "Millnitz", "company": null, "address1": null, "address2": null, "city": null, "province": null, "country": null, "zip": null, "phone": null, "name": "MArcos Millnitz", "province_code": null, "country_code": null, "country_name": null, "default": true, "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194770676}
-{"stream": "countries", "data": {"id": 417014841533, "name": "Rest of World", "code": "*", "tax_name": "Tax", "tax": 0.0, "provinces": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194771844}
-{"stream": "countries", "data": {"id": 417014808765, "name": "Ukraine", "code": "UA", "tax_name": "PDV", "tax": 0.2, "provinces": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1697194771845}
+{"stream": "articles", "data": {"id": 558137508029, "title": "My new Article title", "created_at": "2022-10-07T16:09:02-07:00", "body_html": "I like articles
\nYea, I like posting them through REST.
", "blog_id": 80417685693, "author": "John Smith", "user_id": null, "published_at": "2011-03-24T08:45:47-07:00", "updated_at": "2023-04-14T03:18:26-07:00", "summary_html": null, "template_suffix": null, "handle": "my-new-article-title", "tags": "Has Been Tagged, This Post", "admin_graphql_api_id": "gid://shopify/OnlineStoreArticle/558137508029", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953761718}
+{"stream": "articles", "data": {"id": 558627979453, "title": "Test Blog Post", "created_at": "2023-04-14T03:19:02-07:00", "body_html": "Test Blog Post 1", "blog_id": 80417685693, "author": "Airbyte Airbyte", "user_id": "74861019325", "published_at": null, "updated_at": "2023-04-14T03:19:18-07:00", "summary_html": "", "template_suffix": "", "handle": "test-blog-post", "tags": "Has Been Tagged", "admin_graphql_api_id": "gid://shopify/OnlineStoreArticle/558627979453", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953761720}
+{"stream": "articles", "data": {"id": 558999371965, "deleted_at": "2023-09-05T13:50:04-07:00", "updated_at": "2023-09-05T13:50:04-07:00", "deleted_message": "Online Store deleted an article: Test Article 1.", "deleted_description": "Online Store deleted an article: Test Article 1.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953762282}
+{"stream": "blogs", "data": {"id": 80417685693, "handle": "news", "title": "News", "updated_at": "2023-09-05T14:02:00-07:00", "commentable": "no", "feedburner": null, "feedburner_location": null, "created_at": "2021-06-22T18:00:25-07:00", "template_suffix": null, "tags": "Has Been Tagged, This Post", "admin_graphql_api_id": "gid://shopify/OnlineStoreBlog/80417685693", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953764270}
+{"stream": "blogs", "data": {"id": 85733114045, "deleted_at": "2023-09-06T03:30:22-07:00", "updated_at": "2023-09-06T03:30:22-07:00", "deleted_message": "Online Store deleted a blog: Test Blog 1.", "deleted_description": "Online Store deleted a blog: Test Blog 1.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953764809}
+{"stream": "collections", "data": {"id": 270889287869, "handle": "frontpage", "title": "Home page", "updated_at": "2023-09-05T14:06:59+00:00", "body_html": "updated_mon_24.04.2023", "sort_order": "BEST_SELLING", "template_suffix": "", "products_count": 1, "admin_graphql_api_id": "gid://shopify/Collection/270889287869", "published_at": "2021-06-23T01:00:25+00:00", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953771931}
+{"stream": "collections", "data": {"id": 273278566589, "handle": "test-collection", "title": "Test Collection", "updated_at": "2023-09-05T14:12:04+00:00", "body_html": "updated_mon_24.04.2023", "sort_order": "BEST_SELLING", "template_suffix": "", "products_count": 26, "admin_graphql_api_id": "gid://shopify/Collection/273278566589", "published_at": "2021-07-19T14:02:54+00:00", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953771932}
+{"stream": "collects", "data": {"id": 29427031703741, "collection_id": 270889287869, "product_id": 6796220989629, "created_at": "2021-07-19T07:01:36-07:00", "updated_at": "2022-03-06T14:12:21-08:00", "position": 2, "sort_value": "0000000002", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953772898}
+{"stream": "custom_collections", "data": {"id": 270889287869, "handle": "frontpage", "title": "Home page", "updated_at": "2023-09-05T07:06:59-07:00", "body_html": "updated_mon_24.04.2023", "published_at": "2021-06-22T18:00:25-07:00", "sort_order": "best-selling", "template_suffix": "", "published_scope": "web", "admin_graphql_api_id": "gid://shopify/Collection/270889287869", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953773873}
+{"stream": "custom_collections", "data": {"id": 294253822141, "deleted_at": "2023-09-06T03:34:39-07:00", "updated_at": "2023-09-06T03:34:39-07:00", "deleted_message": "Airbyte Airbyte deleted a collection.", "deleted_description": "Airbyte Airbyte deleted a collection.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953774396}
+{"stream": "customers", "data": {"id": 6569096478909, "email": "test@test.com", "created_at": "2023-04-13T02:30:04-07:00", "updated_at": "2023-04-24T06:53:48-07:00", "first_name": "New Test", "last_name": "Customer", "orders_count": 0, "state": "disabled", "total_spent": 0.0, "last_order_id": null, "note": "updated_mon_24.04.2023", "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "tags": "", "last_order_name": null, "currency": "USD", "phone": "+380639379992", "addresses": [{"id": 8092523135165, "customer_id": 6569096478909, "first_name": "New Test", "last_name": "Customer", "company": "Test Company", "address1": "My Best Accent", "address2": "", "city": "Fair Lawn", "province": "New Jersey", "country": "United States", "zip": "07410", "phone": "", "name": "New Test Customer", "province_code": "NJ", "country_code": "US", "country_name": "United States", "default": true}], "accepts_marketing": true, "accepts_marketing_updated_at": "2023-04-13T02:30:04-07:00", "marketing_opt_in_level": "single_opt_in", "tax_exemptions": "[]", "email_marketing_consent": {"state": "subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": "2023-04-13T02:30:04-07:00"}, "sms_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": null, "consent_collected_from": "SHOPIFY"}, "admin_graphql_api_id": "gid://shopify/Customer/6569096478909", "default_address": {"id": 8092523135165, "customer_id": 6569096478909, "first_name": "New Test", "last_name": "Customer", "company": "Test Company", "address1": "My Best Accent", "address2": "", "city": "Fair Lawn", "province": "New Jersey", "country": "United States", "zip": "07410", "phone": "", "name": "New Test Customer", "province_code": "NJ", "country_code": "US", "country_name": "United States", "default": true}, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953775493}
+{"stream": "customers", "data": {"id": 6676027932861, "email": "marcos@airbyte.io", "created_at": "2023-07-11T13:07:45-07:00", "updated_at": "2023-07-11T13:07:45-07:00", "first_name": "MArcos", "last_name": "Millnitz", "orders_count": 0, "state": "disabled", "total_spent": 0.0, "last_order_id": null, "note": null, "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "tags": "", "last_order_name": null, "currency": "USD", "phone": null, "addresses": [{"id": 8212915650749, "customer_id": 6676027932861, "first_name": "MArcos", "last_name": "Millnitz", "company": null, "address1": null, "address2": null, "city": null, "province": null, "country": null, "zip": null, "phone": null, "name": "MArcos Millnitz", "province_code": null, "country_code": null, "country_name": null, "default": true}], "accepts_marketing": false, "accepts_marketing_updated_at": null, "marketing_opt_in_level": "single_opt_in", "tax_exemptions": "[]", "email_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": null}, "sms_marketing_consent": null, "admin_graphql_api_id": "gid://shopify/Customer/6676027932861", "default_address": {"id": 8212915650749, "customer_id": 6676027932861, "first_name": "MArcos", "last_name": "Millnitz", "company": null, "address1": null, "address2": null, "city": null, "province": null, "country": null, "zip": null, "phone": null, "name": "MArcos Millnitz", "province_code": null, "country_code": null, "country_name": null, "default": true}, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953775495}
+{"stream": "discount_codes", "data": {"usage_count": 0, "code": "updated_mon_24.04.2023", "id": 11539415990461, "admin_graphql_api_id": "gid://shopify/DiscountRedeemCode/11539415990461", "price_rule_id": 945000284349, "updated_at": "2023-04-24T12:52:22+00:00", "created_at": "2021-07-07T14:23:11+00:00", "summary": "3% off entire order \u2022 One use per customer", "discount_type": "ORDER", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953782734}
+{"stream": "discount_codes", "data": {"usage_count": 0, "code": "HZAVNV2487WC", "id": 11545139282109, "admin_graphql_api_id": "gid://shopify/DiscountRedeemCode/11545139282109", "price_rule_id": 945205379261, "updated_at": "2023-12-07T11:40:44+00:00", "created_at": "2021-07-08T12:40:37+00:00", "summary": "Free shipping on all products \u2022 Minimum purchase of $1.00 \u2022 For all countries", "discount_type": "SHIPPING", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953782734}
+{"stream": "discount_codes", "data": {"usage_count": 0, "code": "SUMMERSALE10OFF", "id": 13175793582269, "admin_graphql_api_id": "gid://shopify/DiscountRedeemCode/13175793582269", "price_rule_id": 945205379261, "updated_at": "2023-12-07T11:40:44+00:00", "created_at": "2021-07-08T12:40:37+00:00", "summary": "Free shipping on all products \u2022 Minimum purchase of $1.00 \u2022 For all countries", "discount_type": "SHIPPING", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953782734}
+{"stream": "draft_orders", "data": {"id": 874683629757, "note": null, "email": null, "taxes_included": true, "currency": "USD", "invoice_sent_at": null, "created_at": "2021-07-02T00:50:29-07:00", "updated_at": "2023-04-14T05:16:33-07:00", "tax_exempt": false, "completed_at": "2021-07-02T00:51:50-07:00", "name": "#D2", "status": "completed", "line_items": [{"id": 57443281666237, "variant_id": 40090604011709, "product_id": 6796229509309, "title": "8 Ounce Soy Candle", "variant_title": "Wooden", "sku": "", "vendor": "Bosco Inc", "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 63, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 17.0}], "applied_discount": null, "name": "8 Ounce Soy Candle - Wooden", "properties": [], "custom": false, "price": 102.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/57443281666237"}], "shipping_address": null, "billing_address": null, "invoice_url": "https://airbyte-integration-test.myshopify.com/58033176765/invoices/e155e3254d0c0d64fa90587de417e0f3", "applied_discount": null, "order_id": 3935377129661, "shipping_line": null, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 17.0}], "tags": "", "note_attributes": [], "total_price": "102.00", "subtotal_price": "102.00", "total_tax": "17.00", "payment_terms": null, "admin_graphql_api_id": "gid://shopify/DraftOrder/874683629757", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953784884}
+{"stream": "draft_orders", "data": {"id": 929019691197, "note": "updated_mon_24.04.2023", "email": null, "taxes_included": true, "currency": "USD", "invoice_sent_at": null, "created_at": "2022-02-22T03:23:19-08:00", "updated_at": "2023-04-24T07:18:06-07:00", "tax_exempt": false, "completed_at": null, "name": "#D21", "status": "open", "line_items": [{"id": 58117295538365, "variant_id": 40090585923773, "product_id": 6796220989629, "title": "4 Ounce Soy Candle", "variant_title": "Metal", "sku": "", "vendor": "Hartmann Group", "quantity": 2, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 112, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 6.33}], "applied_discount": null, "name": "4 Ounce Soy Candle - Metal", "properties": [], "custom": false, "price": 19.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58117295538365"}, {"id": 58117295571133, "variant_id": null, "product_id": null, "title": "Test Item", "variant_title": null, "sku": null, "vendor": null, "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 1000, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 0.17}], "applied_discount": null, "name": "Test Item", "properties": [], "custom": true, "price": 1.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58117295571133"}], "shipping_address": null, "billing_address": null, "invoice_url": "https://airbyte-integration-test.myshopify.com/58033176765/invoices/12893992cc01fc67935ab014fcf9300f", "applied_discount": null, "order_id": null, "shipping_line": {"title": "Test Shipping Fee", "custom": true, "handle": null, "price": 3.0}, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 6.33}, {"rate": 0.2, "title": "PDV", "price": 0.17}], "tags": "", "note_attributes": [], "total_price": "42.00", "subtotal_price": "39.00", "total_tax": "6.50", "payment_terms": null, "admin_graphql_api_id": "gid://shopify/DraftOrder/929019691197", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953784892}
+{"stream": "draft_orders", "data": {"id": 987391033533, "note": null, "email": null, "taxes_included": true, "currency": "USD", "invoice_sent_at": null, "created_at": "2023-04-13T04:56:17-07:00", "updated_at": "2023-04-13T04:56:17-07:00", "tax_exempt": false, "completed_at": null, "name": "#D25", "status": "open", "line_items": [{"id": 58116862083261, "variant_id": 40090585923773, "product_id": 6796220989629, "title": "4 Ounce Soy Candle", "variant_title": "Metal", "sku": "", "vendor": "Hartmann Group", "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 112, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.16}], "applied_discount": null, "name": "4 Ounce Soy Candle - Metal", "properties": [], "custom": false, "price": 19.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58116862083261"}, {"id": 58116862116029, "variant_id": 41561955827901, "product_id": 6796220989629, "title": "4 Ounce Soy Candle", "variant_title": "Test Variant 1", "sku": "", "vendor": "Hartmann Group", "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 112, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.17}], "applied_discount": null, "name": "4 Ounce Soy Candle - Test Variant 1", "properties": [], "custom": false, "price": 19.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58116862116029"}, {"id": 58116862148797, "variant_id": 41561961824445, "product_id": 6796220989629, "title": "4 Ounce Soy Candle", "variant_title": "Test Variant 2", "sku": "", "vendor": "Hartmann Group", "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 112, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.17}], "applied_discount": null, "name": "4 Ounce Soy Candle - Test Variant 2", "properties": [], "custom": false, "price": 19.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58116862148797"}], "shipping_address": null, "billing_address": null, "invoice_url": "https://airbyte-integration-test.myshopify.com/58033176765/invoices/d193a965f7815817a2d37fddb30bfdb2", "applied_discount": null, "order_id": null, "shipping_line": null, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.16}, {"rate": 0.2, "title": "PDV", "price": 3.17}, {"rate": 0.2, "title": "PDV", "price": 3.17}], "tags": "", "note_attributes": [], "total_price": "57.00", "subtotal_price": "57.00", "total_tax": "9.50", "payment_terms": null, "admin_graphql_api_id": "gid://shopify/DraftOrder/987391033533", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953784893}
+{"stream": "fulfillment_orders", "data": {"id": 5962451452093, "assigned_location": {"address1": "Heroiv UPA 72", "address2": null, "city": "Lviv", "country_code": "UA", "name": "Heroiv UPA 72", "phone": "", "province": null, "zip": "30100", "location_id": 63590301885}, "destination": null, "delivery_method": {"id": 431686549693, "method_type": "SHIPPING", "min_delivery_date_time": null, "max_delivery_date_time": null}, "fulfill_at": "2023-04-13T12:00:00+00:00", "fulfill_by": null, "international_duties": null, "fulfillment_holds": [], "created_at": "2023-04-13T12:09:45+00:00", "updated_at": "2023-04-13T12:09:46+00:00", "request_status": "UNSUBMITTED", "status": "CLOSED", "supported_actions": [], "admin_graphql_api_id": "gid://shopify/FulfillmentOrder/5962451452093", "shop_id": 58033176765, "order_id": 5010584895677, "assigned_location_id": 63590301885, "line_items": [{"id": 12363725996221, "inventory_item_id": 42185218719933, "shop_id": 58033176765, "fulfillment_order_id": 5962451452093, "quantity": 1, "line_item_id": 12204214845629, "fulfillable_quantity": 0, "variant_id": 40090604011709}], "merchant_requests": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953792126}
+{"stream": "fulfillment_orders", "data": {"id": 5962452467901, "assigned_location": {"address1": "Heroiv UPA 72", "address2": null, "city": "Lviv", "country_code": "UA", "name": "Heroiv UPA 72", "phone": "", "province": null, "zip": "30100", "location_id": 63590301885}, "destination": null, "delivery_method": {"id": 431687532733, "method_type": "SHIPPING", "min_delivery_date_time": null, "max_delivery_date_time": null}, "fulfill_at": "2023-04-13T12:00:00+00:00", "fulfill_by": null, "international_duties": null, "fulfillment_holds": [], "created_at": "2023-04-13T12:11:16+00:00", "updated_at": "2023-04-13T12:11:16+00:00", "request_status": "UNSUBMITTED", "status": "CLOSED", "supported_actions": [], "admin_graphql_api_id": "gid://shopify/FulfillmentOrder/5962452467901", "shop_id": 58033176765, "order_id": 5010585911485, "assigned_location_id": 63590301885, "line_items": [{"id": 12363727536317, "inventory_item_id": 43653688524989, "shop_id": 58033176765, "fulfillment_order_id": 5962452467901, "quantity": 1, "line_item_id": 12204216385725, "fulfillable_quantity": 0, "variant_id": 41561961824445}], "merchant_requests": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953792129}
+{"stream": "fulfillment_orders", "data": {"id": 5985636450493, "assigned_location": {"address1": "Heroiv UPA 72", "address2": null, "city": "Lviv", "country_code": "UA", "name": "Heroiv UPA 72", "phone": "", "province": null, "zip": "30100", "location_id": 63590301885}, "destination": null, "delivery_method": {"id": 442031046845, "method_type": "SHIPPING", "min_delivery_date_time": null, "max_delivery_date_time": null}, "fulfill_at": "2023-04-24T18:00:00+00:00", "fulfill_by": null, "international_duties": null, "fulfillment_holds": [], "created_at": "2023-04-24T18:00:09+00:00", "updated_at": "2023-04-24T18:00:09+00:00", "request_status": "UNSUBMITTED", "status": "CLOSED", "supported_actions": [], "admin_graphql_api_id": "gid://shopify/FulfillmentOrder/5985636450493", "shop_id": 58033176765, "order_id": 5033391718589, "assigned_location_id": 63590301885, "line_items": [{"id": 12407122067645, "inventory_item_id": 43653688524989, "shop_id": 58033176765, "fulfillment_order_id": 5985636450493, "quantity": 1, "line_item_id": 12247585521853, "fulfillable_quantity": 0, "variant_id": 41561961824445}], "merchant_requests": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953792131}
+{"stream": "fulfillments", "data": {"id": 4451164913853, "admin_graphql_api_id": "gid://shopify/Fulfillment/4451164913853", "created_at": "2023-04-13T05:09:45-07:00", "location_id": 63590301885, "name": "#1143.1", "order_id": 5010584895677, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2023-04-13T05:09:45-07:00", "line_items": [{"id": 12204214845629, "admin_graphql_api_id": "gid://shopify/LineItem/12204214845629", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 63, "name": "8 Ounce Soy Candle - Wooden", "price": "102.00", "price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796229509309, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "8 Ounce Soy Candle", "total_discount": "0.00", "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090604011709, "variant_inventory_management": "shopify", "variant_title": "Wooden", "vendor": "Bosco Inc", "tax_lines": [{"channel_liable": false, "price": 17.0, "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953793256}
+{"stream": "fulfillments", "data": {"id": 4451169501373, "admin_graphql_api_id": "gid://shopify/Fulfillment/4451169501373", "created_at": "2023-04-13T05:11:16-07:00", "location_id": 63590301885, "name": "#1144.1", "order_id": 5010585911485, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2023-04-13T05:11:16-07:00", "line_items": [{"id": 12204216385725, "admin_graphql_api_id": "gid://shopify/LineItem/12204216385725", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 112, "name": "4 Ounce Soy Candle - Test Variant 2", "price": "19.00", "price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796220989629, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "4 Ounce Soy Candle", "total_discount": "0.00", "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 41561961824445, "variant_inventory_management": "shopify", "variant_title": "Test Variant 2", "vendor": "Hartmann Group", "tax_lines": [{"channel_liable": false, "price": 3.17, "price_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953793263}
+{"stream": "fulfillments", "data": {"id": 4075788501181, "admin_graphql_api_id": "gid://shopify/Fulfillment/4075788501181", "created_at": "2022-06-15T05:16:55-07:00", "location_id": 63590301885, "name": "#1136.1", "order_id": 4554821468349, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2022-06-15T05:16:55-07:00", "line_items": [{"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": "59.00", "price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": "0.00", "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": "1.77", "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}, "discount_application_index": 0}]}], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953793275}
+{"stream": "inventory_items", "data": {"id": 44871665713341, "country_code_of_origin": null, "harmonized_system_code": null, "province_code_of_origin": null, "updated_at": "2023-04-14T10:29:27+00:00", "created_at": "2023-04-14T10:29:27+00:00", "sku": "", "tracked": true, "requires_shipping": false, "admin_graphql_api_id": "gid://shopify/InventoryItem/44871665713341", "cost": 60.0, "country_harmonized_system_codes": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953800805}
+{"stream": "inventory_items", "data": {"id": 45419395743933, "country_code_of_origin": "UA", "harmonized_system_code": "330510", "province_code_of_origin": null, "updated_at": "2023-12-11T10:37:41+00:00", "created_at": "2023-12-11T10:37:41+00:00", "sku": "123", "tracked": true, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/InventoryItem/45419395743933", "cost": 29.0, "country_harmonized_system_codes": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953800806}
+{"stream": "inventory_levels", "data": {"id": "63590301885|42185200631997", "available": 15, "updated_at": "2023-04-13T12:00:55+00:00", "admin_graphql_api_id": "gid://shopify/InventoryLevel/97912455357?inventory_item_id=42185200631997", "inventory_item_id": 42185200631997, "location_id": 63590301885, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953807899}
+{"stream": "inventory_levels", "data": {"id": "63590301885|42185218719933", "available": 8, "updated_at": "2023-04-13T12:09:45+00:00", "admin_graphql_api_id": "gid://shopify/InventoryLevel/97912455357?inventory_item_id=42185218719933", "inventory_item_id": 42185218719933, "location_id": 63590301885, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953807904}
+{"stream": "inventory_levels", "data": {"id": "63590301885|43653688524989", "available": 0, "updated_at": "2023-04-24T18:00:10+00:00", "admin_graphql_api_id": "gid://shopify/InventoryLevel/97912455357?inventory_item_id=43653688524989", "inventory_item_id": 43653688524989, "location_id": 63590301885, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953807905}
+{"stream": "locations", "data": {"id": 63590301885, "name": "Heroiv UPA 72", "address1": "Heroiv UPA 72", "address2": "", "city": "Lviv", "zip": "30100", "province": null, "country": "UA", "phone": "", "created_at": "2021-06-22T18:00:29-07:00", "updated_at": "2023-11-28T07:08:27-08:00", "country_code": "UA", "country_name": "Ukraine", "province_code": null, "legacy": false, "active": true, "admin_graphql_api_id": "gid://shopify/Location/63590301885", "localized_country_name": "Ukraine", "localized_province_name": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953808895}
+{"stream": "metafield_articles", "data": {"id": 21519818162365, "namespace": "global", "key": "new", "value": "newvalue", "description": null, "owner_id": 558137508029, "created_at": "2022-10-07T16:09:02-07:00", "updated_at": "2022-10-07T16:09:02-07:00", "owner_resource": "article", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/21519818162365", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953810882}
+{"stream": "metafield_articles", "data": {"id": 22365709992125, "namespace": "custom", "key": "test_blog_post_metafield", "value": "Test Article Metafield", "description": null, "owner_id": 558137508029, "created_at": "2023-04-14T03:18:26-07:00", "updated_at": "2023-04-14T03:18:26-07:00", "owner_resource": "article", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365709992125", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953810884}
+{"stream": "metafield_articles", "data": {"id": 22365710352573, "namespace": "custom", "key": "test_blog_post_metafield", "value": "Test Blog Post Metafiled", "description": null, "owner_id": 558627979453, "created_at": "2023-04-14T03:19:18-07:00", "updated_at": "2023-04-14T03:19:18-07:00", "owner_resource": "article", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365710352573", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953811338}
+{"stream": "metafield_blogs", "data": {"id": 21519428255933, "namespace": "some_fields", "key": "sponsor", "value": "Shopify", "description": null, "owner_id": 80417685693, "created_at": "2022-10-07T06:05:23-07:00", "updated_at": "2022-10-07T06:05:23-07:00", "owner_resource": "blog", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/21519428255933", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953813888}
+{"stream": "metafield_blogs", "data": {"id": 22365710745789, "namespace": "custom", "key": "test_blog_metafield", "value": "Test Blog Metafield", "description": null, "owner_id": 80417685693, "created_at": "2023-04-14T03:20:20-07:00", "updated_at": "2023-04-14T03:20:20-07:00", "owner_resource": "blog", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365710745789", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953813890}
+{"stream": "metafield_collections", "data": {"id": 22365707174077, "namespace": "custom", "value": "Test Collection Metafield", "key": "test_collection_metafield", "description": null, "created_at": "2023-04-14T10:15:30+00:00", "updated_at": "2023-04-14T10:15:30+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365707174077", "owner_id": 270889287869, "owner_resource": "collection", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953821449}
+{"stream": "metafield_collections", "data": {"id": 22366265573565, "namespace": "my_fields", "value": "51%", "key": "new_key", "description": null, "created_at": "2023-04-14T12:21:58+00:00", "updated_at": "2023-04-14T12:21:58+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22366265573565", "owner_id": 273278566589, "owner_resource": "collection", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953821450}
+{"stream": "metafield_customers", "data": {"id": 22346893361341, "namespace": "custom", "value": "Teste\n", "key": "test_definition_list_1", "description": null, "created_at": "2023-04-13T11:50:10+00:00", "updated_at": "2023-04-13T11:50:10+00:00", "type": "multi_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22346893361341", "owner_id": 6569096478909, "owner_resource": "customer", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953828534}
+{"stream": "metafield_customers", "data": {"id": 22346893394109, "namespace": "custom", "value": "Taster", "key": "test_definition", "description": null, "created_at": "2023-04-13T11:50:10+00:00", "updated_at": "2023-04-13T11:50:10+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22346893394109", "owner_id": 6569096478909, "owner_resource": "customer", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953828534}
+{"stream": "metafield_draft_orders", "data": {"id": 22366258528445, "namespace": "discounts", "value": "50%", "key": "hello", "description": null, "created_at": "2023-04-14T12:16:33+00:00", "updated_at": "2023-04-14T12:16:33+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22366258528445", "owner_id": 874683629757, "owner_resource": "draft_order", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953835570}
+{"stream": "metafield_draft_orders", "data": {"id": 22532787175613, "namespace": "new_metafield", "value": "updated_mon_24.04.2023", "key": "new_metafield", "description": null, "created_at": "2023-04-24T14:18:06+00:00", "updated_at": "2023-04-24T14:18:06+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22532787175613", "owner_id": 929019691197, "owner_resource": "draft_order", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953835572}
+{"stream": "metafield_locations", "data": {"id": 26246034161853, "namespace": "custom", "value": "2023-11-28 updated", "key": "test_location_metafield", "description": null, "created_at": "2023-11-28T15:08:26+00:00", "updated_at": "2023-11-28T15:08:26+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/26246034161853", "owner_id": 63590301885, "owner_resource": "location", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953842618}
+{"stream": "metafield_orders", "data": {"id": 22347288150205, "namespace": "my_fields", "value": "asdfasdf", "key": "purchase_order", "description": null, "created_at": "2023-04-13T12:09:50+00:00", "updated_at": "2023-04-13T12:09:50+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22347288150205", "owner_id": 5010584895677, "owner_resource": "order", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953849753}
+{"stream": "metafield_orders", "data": {"id": 22347288740029, "namespace": "my_fields", "value": "asdfasdfasdf", "key": "purchase_order", "description": null, "created_at": "2023-04-13T12:11:20+00:00", "updated_at": "2023-04-13T12:11:20+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22347288740029", "owner_id": 5010585911485, "owner_resource": "order", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953849753}
+{"stream": "metafield_orders", "data": {"id": 22347287855293, "namespace": "my_fields", "value": "trtrtr", "key": "purchase_order", "description": null, "created_at": "2023-04-13T12:09:08+00:00", "updated_at": "2023-04-13T12:09:08+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22347287855293", "owner_id": 4147980107965, "owner_resource": "order", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953849754}
+{"stream": "metafield_pages", "data": {"id": 22365711499453, "namespace": "custom", "key": "test_page_metafield", "value": "Test Page Metafield", "description": null, "owner_id": 93795909821, "created_at": "2023-04-14T03:21:49-07:00", "updated_at": "2023-04-14T03:21:49-07:00", "owner_resource": "page", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365711499453", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953851755}
+{"stream": "metafield_pages", "data": {"id": 22534014828733, "namespace": "new_metafield", "key": "new_metafield", "value": "updated_mon_24.04.2023", "description": null, "owner_id": 83074252989, "created_at": "2023-04-24T11:08:41-07:00", "updated_at": "2023-04-24T11:08:41-07:00", "owner_resource": "page", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22534014828733", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953852192}
+{"stream": "metafield_product_images", "data": {"id": 22365851517117, "namespace": "my_fields", "value": "natural coton", "key": "liner_material", "description": null, "created_at": "2023-04-14T11:59:27+00:00", "updated_at": "2023-04-14T11:59:27+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365851517117", "owner_id": 29301295481021, "owner_resource": "product_image", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953865505}
+{"stream": "metafield_product_images", "data": {"id": 22533588451517, "namespace": "new_metafield", "value": "updated_mon_24.04.2023", "key": "new_metafield", "description": null, "created_at": "2023-04-24T17:32:19+00:00", "updated_at": "2023-04-24T17:32:19+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22533588451517", "owner_id": 29301297316029, "owner_resource": "product_image", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953865509}
+{"stream": "metafield_products", "data": {"id": 22365729718461, "namespace": "custom", "value": "Test Product Metafield", "key": "product_metafield_test_2", "description": null, "created_at": "2023-04-14T10:31:19+00:00", "updated_at": "2023-04-14T10:31:19+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365729718461", "owner_id": 6796226560189, "owner_resource": "product", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953872773}
+{"stream": "metafield_products", "data": {"id": 22365729816765, "namespace": "custom", "value": "gid://shopify/Product/6796229574845", "key": "test_product_metafield", "description": null, "created_at": "2023-04-14T10:31:29+00:00", "updated_at": "2023-04-14T10:31:29+00:00", "type": "product_reference", "admin_graphql_api_id": "gid://shopify/Metafield/22365729816765", "owner_id": 6796226560189, "owner_resource": "product", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953872775}
+{"stream": "metafield_products", "data": {"id": 22365772251325, "namespace": "custom", "value": "Test", "key": "product_metafield_test_2", "description": null, "created_at": "2023-04-14T11:04:46+00:00", "updated_at": "2023-04-14T11:04:46+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365772251325", "owner_id": 6796229574845, "owner_resource": "product", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953872776}
+{"stream": "metafield_product_variants", "data": {"id": 22365715955901, "namespace": "custom", "value": "Test Varia", "key": "test_variant_metafield", "description": null, "created_at": "2023-04-14T10:24:03+00:00", "updated_at": "2023-04-14T10:24:03+00:00", "type": "multi_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365715955901", "owner_id": 41561961824445, "owner_resource": "product_variant", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953885682}
+{"stream": "metafield_product_variants", "data": {"id": 22365724082365, "namespace": "custom", "value": "Test Varia", "key": "test_variant_metafield", "description": null, "created_at": "2023-04-14T10:29:27+00:00", "updated_at": "2023-04-14T10:29:27+00:00", "type": "multi_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365724082365", "owner_id": 42778150305981, "owner_resource": "product_variant", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953885682}
+{"stream": "metafield_product_variants", "data": {"id": 26493956391101, "namespace": "global", "value": "330510", "key": "harmonized_system_code", "description": null, "created_at": "2023-12-11T10:37:41+00:00", "updated_at": "2023-12-11T10:37:41+00:00", "type": "string", "admin_graphql_api_id": "gid://shopify/Metafield/26493956391101", "owner_id": 43315735396541, "owner_resource": "product_variant", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953885683}
+{"stream": "metafield_shops", "data": {"id": 19716782129341, "namespace": "inventory", "key": "warehouse", "value": "26", "description": null, "owner_id": 58033176765, "created_at": "2021-07-08T03:38:45-07:00", "updated_at": "2023-04-14T05:47:26-07:00", "owner_resource": "shop", "type": "number_integer", "admin_graphql_api_id": "gid://shopify/Metafield/19716782129341", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953886629}
+{"stream": "metafield_shops", "data": {"id": 22534020104381, "namespace": "new_metafield", "key": "new_metafield", "value": "updated_mon_24.04.2023", "description": null, "owner_id": 58033176765, "created_at": "2023-04-24T11:12:38-07:00", "updated_at": "2023-04-24T11:12:38-07:00", "owner_resource": "shop", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22534020104381", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953886630}
+{"stream": "metafield_smart_collections", "data": {"id": 21525604106429, "namespace": "my_fields", "key": "discount", "value": "50%", "description": null, "owner_id": 273278566589, "created_at": "2022-10-12T13:36:55-07:00", "updated_at": "2022-10-12T13:36:55-07:00", "owner_resource": "collection", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/21525604106429", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953888675}
+{"stream": "metafield_smart_collections", "data": {"id": 22366265573565, "namespace": "my_fields", "key": "new_key", "value": "51%", "description": null, "owner_id": 273278566589, "created_at": "2023-04-14T05:21:58-07:00", "updated_at": "2023-04-14T05:21:58-07:00", "owner_resource": "collection", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22366265573565", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953888677}
+{"stream": "order_refunds", "data": {"id": 852809646269, "admin_graphql_api_id": "gid://shopify/Refund/852809646269", "created_at": "2022-06-15T06:25:43-07:00", "note": null, "order_id": 4554821468349, "processed_at": "2022-06-15T06:25:43-07:00", "restock": true, "total_duties_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "user_id": 74861019325, "order_adjustments": [], "transactions": [{"id": 5721170968765, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5721170968765", "amount": "57.23", "authorization": null, "created_at": "2022-06-15T06:25:42-07:00", "currency": "USD", "device_id": null, "error_code": null, "gateway": "bogus", "kind": "refund", "location_id": null, "message": "Bogus Gateway: Forced success", "order_id": 4554821468349, "parent_id": 5721110872253, "payment_id": "c25048437719229.2", "processed_at": "2022-06-15T06:25:42-07:00", "receipt": {"paid_amount": "57.23"}, "source_name": "1830279", "status": "success", "test": true, "user_id": null, "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 2, "credit_card_expiration_year": 2025}}], "refund_line_items": [{"id": 363131404477, "line_item_id": 11406125564093, "location_id": 63590301885, "quantity": 1, "restock_type": "return", "subtotal": 57.23, "subtotal_set": {"shop_money": {"amount": 57.23, "currency_code": "USD"}, "presentment_money": {"amount": 57.23, "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "line_item": {"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": 59.0, "price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": 1.77, "amount_set": {"shop_money": {"amount": 1.77, "currency_code": "USD"}, "presentment_money": {"amount": 1.77, "currency_code": "USD"}}, "discount_application_index": 0}]}}], "duties": "[]", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953889759}
+{"stream": "order_refunds", "data": {"id": 845032358077, "admin_graphql_api_id": "gid://shopify/Refund/845032358077", "created_at": "2022-03-07T02:09:04-08:00", "note": null, "order_id": 4147980107965, "processed_at": "2022-03-07T02:09:04-08:00", "restock": true, "total_duties_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "user_id": 74861019325, "order_adjustments": [], "transactions": [], "refund_line_items": [{"id": 352716947645, "line_item_id": 10576771317949, "location_id": 63590301885, "quantity": 1, "restock_type": "return", "subtotal": 27.0, "subtotal_set": {"shop_money": {"amount": 27.0, "currency_code": "USD"}, "presentment_money": {"amount": 27.0, "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "line_item": {"id": 10576771317949, "admin_graphql_api_id": "gid://shopify/LineItem/10576771317949", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 285, "name": "Red & Silver Fishing Lure - Plastic", "price": 27.0, "price_set": {"shop_money": {"amount": 27.0, "currency_code": "USD"}, "presentment_money": {"amount": 27.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796218302653, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "Red & Silver Fishing Lure", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090580615357, "variant_inventory_management": "shopify", "variant_title": "Plastic", "vendor": "Harris - Hamill", "tax_lines": [], "duties": [], "discount_allocations": []}}], "duties": "[]", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953889761}
+{"stream": "order_refunds", "data": {"id": 829538369725, "admin_graphql_api_id": "gid://shopify/Refund/829538369725", "created_at": "2021-09-21T05:31:59-07:00", "note": "test refund", "order_id": 3935377129661, "processed_at": "2021-09-21T05:31:59-07:00", "restock": true, "total_duties_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "user_id": 74861019325, "order_adjustments": [], "transactions": [{"id": 5189894406333, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5189894406333", "amount": "102.00", "authorization": null, "created_at": "2021-09-21T05:31:58-07:00", "currency": "USD", "device_id": null, "error_code": null, "gateway": "bogus", "kind": "refund", "location_id": null, "message": "Bogus Gateway: Forced success", "order_id": 3935377129661, "parent_id": 4933790040253, "payment_id": "c21670281707709.2", "processed_at": "2021-09-21T05:31:58-07:00", "receipt": {"paid_amount": "102.00"}, "source_name": "1830279", "status": "success", "test": true, "user_id": 74861019325, "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 11, "credit_card_expiration_year": 2023}}], "refund_line_items": [{"id": 332807864509, "line_item_id": 10130216452285, "location_id": 63590301885, "quantity": 1, "restock_type": "cancel", "subtotal": 102.0, "subtotal_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "total_tax": 17.0, "total_tax_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "line_item": {"id": 10130216452285, "admin_graphql_api_id": "gid://shopify/LineItem/10130216452285", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": null, "gift_card": false, "grams": 63, "name": "8 Ounce Soy Candle - Wooden", "price": 102.0, "price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796229509309, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "8 Ounce Soy Candle", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090604011709, "variant_inventory_management": "shopify", "variant_title": "Wooden", "vendor": "Bosco Inc", "tax_lines": [{"channel_liable": false, "price": 17.0, "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}}], "duties": "[]", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953889762}
+{"stream": "order_risks", "data": {"id": 6446736474301, "order_id": 4147980107965, "checkout_id": null, "source": "External", "score": 1.0, "recommendation": "cancel", "display": true, "cause_cancel": true, "message": "This order came from an anonymous proxy", "merchant_message": "This order came from an anonymous proxy", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953893694}
+{"stream": "orders", "data": {"id": 5010584895677, "admin_graphql_api_id": "gid://shopify/Order/5010584895677", "app_id": 1354745, "browser_ip": "109.162.18.117", "buyer_accepts_marketing": false, "cancel_reason": null, "cancelled_at": null, "cart_token": null, "checkout_id": 27351199088829, "checkout_token": "4064bfadc2457c9e15f2c7b4ee7ddb7d", "client_details": {"accept_language": null, "browser_height": null, "browser_ip": "109.162.18.117", "browser_width": null, "session_hash": null, "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"}, "closed_at": "2023-04-13T05:09:46-07:00", "company": null, "confirmation_number": "ECI3YZGWP", "confirmed": true, "contact_email": null, "created_at": "2023-04-13T05:09:44-07:00", "currency": "USD", "current_subtotal_price": 102.0, "current_subtotal_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "current_total_additional_fees_set": null, "current_total_discounts": 0.0, "current_total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_duties_set": null, "current_total_price": 102.0, "current_total_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "current_total_tax": 17.0, "current_total_tax_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "customer_locale": "en", "device_id": null, "discount_codes": [], "email": "", "estimated_taxes": false, "financial_status": "paid", "fulfillment_status": "fulfilled", "landing_site": null, "landing_site_ref": null, "location_id": 63590301885, "merchant_of_record_app_id": null, "name": "#1143", "note": null, "note_attributes": [], "number": 143, "order_number": 1143, "order_status_url": "https://airbyte-integration-test.myshopify.com/58033176765/orders/ad85969259bee7d4b380744934e67556/authenticate?key=cdd70808759b04f31c29975ba796fce9", "original_total_additional_fees_set": null, "original_total_duties_set": null, "payment_gateway_names": ["manual"], "phone": null, "po_number": null, "presentment_currency": "USD", "processed_at": "2023-04-13T05:09:44-07:00", "reference": "b9344c8b118753db132edd503dc91515", "referring_site": null, "source_identifier": "b9344c8b118753db132edd503dc91515", "source_name": "shopify_draft_order", "source_url": null, "subtotal_price": 102.0, "subtotal_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "tags": "", "tax_exempt": false, "tax_lines": [{"price": 17.0, "rate": 0.2, "title": "PDV", "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "channel_liable": false}], "taxes_included": true, "test": false, "token": "ad85969259bee7d4b380744934e67556", "total_discounts": 0.0, "total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_line_items_price": 102.0, "total_line_items_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "total_outstanding": 0.0, "total_price": 102.0, "total_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "total_shipping_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tax": 17.0, "total_tax_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "total_tip_received": 0.0, "total_weight": 63, "updated_at": "2023-04-13T05:09:50-07:00", "user_id": 74861019325, "billing_address": null, "customer": null, "discount_applications": [], "fulfillments": [{"id": 4451164913853, "admin_graphql_api_id": "gid://shopify/Fulfillment/4451164913853", "created_at": "2023-04-13T05:09:45-07:00", "location_id": 63590301885, "name": "#1143.1", "order_id": 5010584895677, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2023-04-13T05:09:45-07:00", "line_items": [{"id": 12204214845629, "admin_graphql_api_id": "gid://shopify/LineItem/12204214845629", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 63, "name": "8 Ounce Soy Candle - Wooden", "price": 102.0, "price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796229509309, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "8 Ounce Soy Candle", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090604011709, "variant_inventory_management": "shopify", "variant_title": "Wooden", "vendor": "Bosco Inc", "tax_lines": [{"channel_liable": false, "price": 17.0, "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}]}], "line_items": [{"id": 12204214845629, "admin_graphql_api_id": "gid://shopify/LineItem/12204214845629", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 63, "name": "8 Ounce Soy Candle - Wooden", "price": 102.0, "price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796229509309, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "8 Ounce Soy Candle", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090604011709, "variant_inventory_management": "shopify", "variant_title": "Wooden", "vendor": "Bosco Inc", "tax_lines": [{"channel_liable": false, "price": 17.0, "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}], "payment_terms": null, "refunds": [], "shipping_address": null, "shipping_lines": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953896328}
+{"stream": "orders", "data": {"id": 5010585911485, "admin_graphql_api_id": "gid://shopify/Order/5010585911485", "app_id": 1354745, "browser_ip": "109.162.18.117", "buyer_accepts_marketing": false, "cancel_reason": null, "cancelled_at": null, "cart_token": null, "checkout_id": 27351203774653, "checkout_token": "117b35b4fd64c8de8d984830b72edfaf", "client_details": {"accept_language": null, "browser_height": null, "browser_ip": "109.162.18.117", "browser_width": null, "session_hash": null, "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"}, "closed_at": "2023-04-13T05:11:17-07:00", "company": null, "confirmation_number": "CQPWZK5ZU", "confirmed": true, "contact_email": null, "created_at": "2023-04-13T05:11:15-07:00", "currency": "USD", "current_subtotal_price": 19.0, "current_subtotal_price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "current_total_additional_fees_set": null, "current_total_discounts": 0.0, "current_total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_duties_set": null, "current_total_price": 19.0, "current_total_price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "current_total_tax": 3.17, "current_total_tax_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "customer_locale": "en", "device_id": null, "discount_codes": [], "email": "", "estimated_taxes": false, "financial_status": "paid", "fulfillment_status": "fulfilled", "landing_site": null, "landing_site_ref": null, "location_id": 63590301885, "merchant_of_record_app_id": null, "name": "#1144", "note": null, "note_attributes": [], "number": 144, "order_number": 1144, "order_status_url": "https://airbyte-integration-test.myshopify.com/58033176765/orders/a2d4a8a04fc6ec52a85f1811d269c88f/authenticate?key=a26b27cc1a040df3a1d7c67f6b14df75", "original_total_additional_fees_set": null, "original_total_duties_set": null, "payment_gateway_names": ["manual"], "phone": null, "po_number": null, "presentment_currency": "USD", "processed_at": "2023-04-13T05:11:15-07:00", "reference": "f75c72a120e34e15a4dbc2d32315cc72", "referring_site": null, "source_identifier": "f75c72a120e34e15a4dbc2d32315cc72", "source_name": "shopify_draft_order", "source_url": null, "subtotal_price": 19.0, "subtotal_price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "tags": "", "tax_exempt": false, "tax_lines": [{"price": 3.17, "rate": 0.2, "title": "PDV", "price_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "channel_liable": false}], "taxes_included": true, "test": false, "token": "a2d4a8a04fc6ec52a85f1811d269c88f", "total_discounts": 0.0, "total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_line_items_price": 19.0, "total_line_items_price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "total_outstanding": 0.0, "total_price": 19.0, "total_price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "total_shipping_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tax": 3.17, "total_tax_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "total_tip_received": 0.0, "total_weight": 112, "updated_at": "2023-04-13T05:11:20-07:00", "user_id": 74861019325, "billing_address": null, "customer": null, "discount_applications": [], "fulfillments": [{"id": 4451169501373, "admin_graphql_api_id": "gid://shopify/Fulfillment/4451169501373", "created_at": "2023-04-13T05:11:16-07:00", "location_id": 63590301885, "name": "#1144.1", "order_id": 5010585911485, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2023-04-13T05:11:16-07:00", "line_items": [{"id": 12204216385725, "admin_graphql_api_id": "gid://shopify/LineItem/12204216385725", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 112, "name": "4 Ounce Soy Candle - Test Variant 2", "price": 19.0, "price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796220989629, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "4 Ounce Soy Candle", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 41561961824445, "variant_inventory_management": "shopify", "variant_title": "Test Variant 2", "vendor": "Hartmann Group", "tax_lines": [{"channel_liable": false, "price": 3.17, "price_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}]}], "line_items": [{"id": 12204216385725, "admin_graphql_api_id": "gid://shopify/LineItem/12204216385725", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 112, "name": "4 Ounce Soy Candle - Test Variant 2", "price": 19.0, "price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796220989629, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "4 Ounce Soy Candle", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 41561961824445, "variant_inventory_management": "shopify", "variant_title": "Test Variant 2", "vendor": "Hartmann Group", "tax_lines": [{"channel_liable": false, "price": 3.17, "price_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}], "payment_terms": null, "refunds": [], "shipping_address": null, "shipping_lines": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953896336}
+{"stream": "orders", "data": {"id": 4554821468349, "admin_graphql_api_id": "gid://shopify/Order/4554821468349", "app_id": 580111, "browser_ip": "176.113.167.23", "buyer_accepts_marketing": false, "cancel_reason": null, "cancelled_at": null, "cart_token": null, "checkout_id": 25048437719229, "checkout_token": "cf5d16a0a0688905bd551c6dec591506", "client_details": {"accept_language": "en-US,en;q=0.9,uk;q=0.8", "browser_height": 754, "browser_ip": "176.113.167.23", "browser_width": 1519, "session_hash": null, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53"}, "closed_at": "2022-06-15T06:25:43-07:00", "company": null, "confirmation_number": null, "confirmed": true, "contact_email": "integration-test@airbyte.io", "created_at": "2022-06-15T05:16:53-07:00", "currency": "USD", "current_subtotal_price": 0.0, "current_subtotal_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_additional_fees_set": null, "current_total_discounts": 0.0, "current_total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_duties_set": null, "current_total_price": 0.0, "current_total_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_tax": 0.0, "current_total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "customer_locale": "en", "device_id": null, "discount_codes": [], "email": "integration-test@airbyte.io", "estimated_taxes": false, "financial_status": "refunded", "fulfillment_status": "fulfilled", "landing_site": "/wallets/checkouts.json", "landing_site_ref": null, "location_id": null, "merchant_of_record_app_id": null, "name": "#1136", "note": "updated_mon_24.04.2023", "note_attributes": [], "number": 136, "order_number": 1136, "order_status_url": "https://airbyte-integration-test.myshopify.com/58033176765/orders/e4f98630ea44a884e33e700203ce2130/authenticate?key=edf087d6ae55a4541bf1375432f6a4b8", "original_total_additional_fees_set": null, "original_total_duties_set": null, "payment_gateway_names": ["bogus"], "phone": null, "po_number": null, "presentment_currency": "USD", "processed_at": "2022-06-15T05:16:53-07:00", "reference": null, "referring_site": "https://airbyte-integration-test.myshopify.com/products/all-black-sneaker-right-foot", "source_identifier": null, "source_name": "web", "source_url": null, "subtotal_price": 57.23, "subtotal_price_set": {"shop_money": {"amount": 57.23, "currency_code": "USD"}, "presentment_money": {"amount": 57.23, "currency_code": "USD"}}, "tags": "Refund", "tax_exempt": false, "tax_lines": [], "taxes_included": true, "test": true, "token": "e4f98630ea44a884e33e700203ce2130", "total_discounts": 1.77, "total_discounts_set": {"shop_money": {"amount": 1.77, "currency_code": "USD"}, "presentment_money": {"amount": 1.77, "currency_code": "USD"}}, "total_line_items_price": 59.0, "total_line_items_price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "total_outstanding": 0.0, "total_price": 57.23, "total_price_set": {"shop_money": {"amount": 57.23, "currency_code": "USD"}, "presentment_money": {"amount": 57.23, "currency_code": "USD"}}, "total_shipping_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tip_received": 0.0, "total_weight": 0, "updated_at": "2023-04-24T07:00:37-07:00", "user_id": null, "billing_address": {"first_name": "Iryna", "address1": "2261 Market Street", "phone": null, "city": "San Francisco", "zip": "94114", "province": "California", "country": "United States", "last_name": "Grankova", "address2": "4381", "company": null, "latitude": 37.7647751, "longitude": -122.4320369, "name": "Iryna Grankova", "country_code": "US", "province_code": "CA"}, "customer": {"id": 5362027233469, "email": "integration-test@airbyte.io", "created_at": "2021-07-08T05:41:47-07:00", "updated_at": "2022-06-22T03:50:13-07:00", "first_name": "Airbyte", "last_name": "Team", "state": "disabled", "note": null, "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "phone": null, "email_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": null}, "sms_marketing_consent": null, "tags": "", "currency": "USD", "accepts_marketing": false, "accepts_marketing_updated_at": null, "marketing_opt_in_level": "single_opt_in", "tax_exemptions": [], "admin_graphql_api_id": "gid://shopify/Customer/5362027233469", "default_address": {"id": 7492260823229, "customer_id": 5362027233469, "first_name": "Airbyte", "last_name": "Team", "company": null, "address1": "2261 Market Street", "address2": "4381", "city": "San Francisco", "province": "California", "country": "United States", "zip": "94114", "phone": null, "name": "Airbyte Team", "province_code": "CA", "country_code": "US", "country_name": "United States", "default": true}}, "discount_applications": [{"target_type": "line_item", "type": "automatic", "value": "3.0", "value_type": "percentage", "allocation_method": "across", "target_selection": "all", "title": "eeeee"}], "fulfillments": [{"id": 4075788501181, "admin_graphql_api_id": "gid://shopify/Fulfillment/4075788501181", "created_at": "2022-06-15T05:16:55-07:00", "location_id": 63590301885, "name": "#1136.1", "order_id": 4554821468349, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2022-06-15T05:16:55-07:00", "line_items": [{"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": 59.0, "price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": "1.77", "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}, "discount_application_index": 0}]}]}], "line_items": [{"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": 59.0, "price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": "1.77", "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}, "discount_application_index": 0}]}], "payment_terms": null, "refunds": [{"id": 852809646269, "admin_graphql_api_id": "gid://shopify/Refund/852809646269", "created_at": "2022-06-15T06:25:43-07:00", "note": null, "order_id": 4554821468349, "processed_at": "2022-06-15T06:25:43-07:00", "restock": true, "total_duties_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "user_id": 74861019325, "order_adjustments": [], "transactions": [{"id": 5721170968765, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5721170968765", "amount": "57.23", "authorization": null, "created_at": "2022-06-15T06:25:42-07:00", "currency": "USD", "device_id": null, "error_code": null, "gateway": "bogus", "kind": "refund", "location_id": null, "message": "Bogus Gateway: Forced success", "order_id": 4554821468349, "parent_id": 5721110872253, "payment_id": "c25048437719229.2", "processed_at": "2022-06-15T06:25:42-07:00", "receipt": {"paid_amount": "57.23"}, "source_name": "1830279", "status": "success", "test": true, "user_id": null, "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 2, "credit_card_expiration_year": 2025}}], "refund_line_items": [{"id": 363131404477, "line_item_id": 11406125564093, "location_id": 63590301885, "quantity": 1, "restock_type": "return", "subtotal": 57.23, "subtotal_set": {"shop_money": {"amount": "57.23", "currency_code": "USD"}, "presentment_money": {"amount": "57.23", "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "line_item": {"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": "59.00", "price_set": {"shop_money": {"amount": "59.00", "currency_code": "USD"}, "presentment_money": {"amount": "59.00", "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": "0.00", "total_discount_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": "1.77", "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}, "discount_application_index": 0}]}}], "duties": []}], "shipping_address": null, "shipping_lines": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953896344}
+{"stream": "pages", "data": {"id": 93795909821, "title": "Test Page", "shop_id": 58033176765, "handle": "test-page", "body_html": "Test Page 1", "author": null, "created_at": "2023-04-14T03:21:40-07:00", "updated_at": "2023-04-14T03:21:49-07:00", "published_at": "2023-04-14T03:21:40-07:00", "template_suffix": "", "admin_graphql_api_id": "gid://shopify/OnlineStorePage/93795909821", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953897896}
+{"stream": "pages", "data": {"id": 83074252989, "title": "Warranty information", "shop_id": 58033176765, "handle": "warranty-information", "body_html": "updated_mon_24.04.2023", "author": "Shopify API", "created_at": "2021-07-08T05:19:00-07:00", "updated_at": "2023-04-24T11:08:41-07:00", "published_at": "2021-07-08T05:19:00-07:00", "template_suffix": null, "admin_graphql_api_id": "gid://shopify/OnlineStorePage/83074252989", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953897896}
+{"stream": "pages", "data": {"id": 95926616253, "deleted_at": "2023-09-06T03:37:06-07:00", "updated_at": "2023-09-06T03:37:06-07:00", "deleted_message": "Online Store deleted a page: Test Page for delete.", "deleted_description": "Online Store deleted a page: Test Page for delete.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953898431}
+{"stream": "price_rules", "data": {"id": 1112171741373, "value_type": "fixed_amount", "value": "-10.0", "customer_selection": "all", "target_type": "line_item", "target_selection": "all", "allocation_method": "across", "allocation_limit": null, "once_per_customer": false, "usage_limit": null, "starts_at": "2017-01-19T09:59:10-08:00", "ends_at": null, "created_at": "2022-10-14T10:19:39-07:00", "updated_at": "2023-04-14T05:24:53-07:00", "entitled_product_ids": [], "entitled_variant_ids": [], "entitled_collection_ids": [], "entitled_country_ids": [], "prerequisite_product_ids": [], "prerequisite_variant_ids": [], "prerequisite_collection_ids": [], "customer_segment_prerequisite_ids": [], "prerequisite_customer_ids": [], "prerequisite_subtotal_range": null, "prerequisite_quantity_range": null, "prerequisite_shipping_price_range": null, "prerequisite_to_entitlement_quantity_ratio": {"prerequisite_quantity": null, "entitled_quantity": null}, "prerequisite_to_entitlement_purchase": {"prerequisite_amount": null}, "title": "New Title 2023", "admin_graphql_api_id": "gid://shopify/PriceRule/1112171741373", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953899511}
+{"stream": "price_rules", "data": {"id": 945000284349, "value_type": "percentage", "value": "-3.0", "customer_selection": "all", "target_type": "line_item", "target_selection": "all", "allocation_method": "across", "allocation_limit": null, "once_per_customer": true, "usage_limit": 10, "starts_at": "2021-07-07T07:22:04-07:00", "ends_at": null, "created_at": "2021-07-07T07:23:11-07:00", "updated_at": "2023-04-24T05:52:22-07:00", "entitled_product_ids": [], "entitled_variant_ids": [], "entitled_collection_ids": [], "entitled_country_ids": [], "prerequisite_product_ids": [], "prerequisite_variant_ids": [], "prerequisite_collection_ids": [], "customer_segment_prerequisite_ids": [], "prerequisite_customer_ids": [], "prerequisite_subtotal_range": null, "prerequisite_quantity_range": null, "prerequisite_shipping_price_range": null, "prerequisite_to_entitlement_quantity_ratio": {"prerequisite_quantity": null, "entitled_quantity": null}, "prerequisite_to_entitlement_purchase": {"prerequisite_amount": null}, "title": "1V8Z165KSH5T", "admin_graphql_api_id": "gid://shopify/PriceRule/945000284349", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953899512}
+{"stream": "price_rules", "data": {"id": 945205379261, "value_type": "percentage", "value": "-100.0", "customer_selection": "all", "target_type": "shipping_line", "target_selection": "all", "allocation_method": "each", "allocation_limit": null, "once_per_customer": false, "usage_limit": null, "starts_at": "2021-07-08T05:40:13-07:00", "ends_at": "2024-01-01T23:59:59-08:00", "created_at": "2021-07-08T05:40:37-07:00", "updated_at": "2023-12-07T03:40:44-08:00", "entitled_product_ids": [], "entitled_variant_ids": [], "entitled_collection_ids": [], "entitled_country_ids": [], "prerequisite_product_ids": [], "prerequisite_variant_ids": [], "prerequisite_collection_ids": [], "customer_segment_prerequisite_ids": [], "prerequisite_customer_ids": [], "prerequisite_subtotal_range": {"greater_than_or_equal_to": "1.0"}, "prerequisite_quantity_range": null, "prerequisite_shipping_price_range": null, "prerequisite_to_entitlement_quantity_ratio": {"prerequisite_quantity": null, "entitled_quantity": null}, "prerequisite_to_entitlement_purchase": {"prerequisite_amount": null}, "title": "HZAVNV2487WC", "admin_graphql_api_id": "gid://shopify/PriceRule/945205379261", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953899513}
+{"stream": "product_images", "data": {"id": 29301295481021, "alt": null, "position": 1, "product_id": 6796218138813, "created_at": "2021-06-22T18:09:28-07:00", "updated_at": "2021-06-22T18:09:28-07:00", "admin_graphql_api_id": "gid://shopify/ProductImage/29301295481021", "width": 4393, "height": 2929, "src": "https://cdn.shopify.com/s/files/1/0580/3317/6765/products/tin-of-beard-balm.jpg?v=1624410568", "variant_ids": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953901149}
+{"stream": "product_images", "data": {"id": 29301295513789, "alt": null, "position": 1, "product_id": 6796218269885, "created_at": "2021-06-22T18:09:29-07:00", "updated_at": "2021-06-22T18:09:29-07:00", "admin_graphql_api_id": "gid://shopify/ProductImage/29301295513789", "width": 3840, "height": 2560, "src": "https://cdn.shopify.com/s/files/1/0580/3317/6765/products/pair-of-all-black-sneakers.jpg?v=1624410569", "variant_ids": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953901154}
+{"stream": "product_images", "data": {"id": 29301295546557, "alt": null, "position": 1, "product_id": 6796218302653, "created_at": "2021-06-22T18:09:29-07:00", "updated_at": "2021-06-22T18:09:29-07:00", "admin_graphql_api_id": "gid://shopify/ProductImage/29301295546557", "width": 3960, "height": 2640, "src": "https://cdn.shopify.com/s/files/1/0580/3317/6765/products/red-silver-fishing-lure.jpg?v=1624410569", "variant_ids": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953901155}
+{"stream": "products", "data": {"id": 6796217909437, "title": "Red And Navy Tee Sleeve", "body_html": "Zoom in on the sleeve of a red t-shirt with navy blue trim along the sleeve. Looks like a great tennis outfit.", "vendor": "Little Group", "product_type": "Movies", "created_at": "2021-06-22T18:09:27-07:00", "handle": "red-and-navy-tee-sleeve", "updated_at": "2023-04-20T04:12:25-07:00", "published_at": "2021-06-22T18:09:27-07:00", "template_suffix": null, "published_scope": "web", "tags": "developer-tools-generator", "status": "active", "admin_graphql_api_id": "gid://shopify/Product/6796217909437", "variants": [{"id": 40090579992765, "product_id": 6796217909437, "title": "Plastic", "price": 23.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Plastic", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 39, "weight": 39.0, "weight_unit": "g", "inventory_item_id": 42185194700989, "inventory_quantity": 3, "old_inventory_quantity": 3, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090579992765", "image_id": null}], "options": [{"id": 8720175235261, "product_id": 6796217909437, "name": "Title", "position": 1, "values": ["Plastic"]}], "images": [], "image": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953903012}
+{"stream": "products", "data": {"id": 6796217942205, "title": "Grey T-Shirt", "body_html": "A grey t-shirt on a hanger. Simple. Classic. Grey.", "vendor": "Lang - Bogisich", "product_type": "Home", "created_at": "2021-06-22T18:09:27-07:00", "handle": "grey-t-shirt", "updated_at": "2023-04-20T04:12:25-07:00", "published_at": "2021-06-22T18:09:27-07:00", "template_suffix": null, "published_scope": "web", "tags": "developer-tools-generator", "status": "active", "admin_graphql_api_id": "gid://shopify/Product/6796217942205", "variants": [{"id": 40090580025533, "product_id": 6796217942205, "title": "Granite", "price": 70.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Granite", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 0, "weight": 0.0, "weight_unit": "g", "inventory_item_id": 42185194733757, "inventory_quantity": 38, "old_inventory_quantity": 38, "requires_shipping": false, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090580025533", "image_id": null}], "options": [{"id": 8720175268029, "product_id": 6796217942205, "name": "Title", "position": 1, "values": ["Granite"]}], "images": [], "image": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953903015}
+{"stream": "products", "data": {"id": 6796217974973, "title": "Pool Floaty Icecream", "body_html": "Inflatable pink ice cream pool toy.", "vendor": "Fritsch - Ferry", "product_type": "Grocery", "created_at": "2021-06-22T18:09:27-07:00", "handle": "pool-floaty-icecream", "updated_at": "2023-04-20T04:12:25-07:00", "published_at": "2021-06-22T18:09:27-07:00", "template_suffix": null, "published_scope": "web", "tags": "developer-tools-generator", "status": "active", "admin_graphql_api_id": "gid://shopify/Product/6796217974973", "variants": [{"id": 40090580091069, "product_id": 6796217974973, "title": "magenta", "price": 57.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "magenta", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 499, "weight": 499.0, "weight_unit": "g", "inventory_item_id": 42185194766525, "inventory_quantity": 1, "old_inventory_quantity": 1, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090580091069", "image_id": null}], "options": [{"id": 8720175300797, "product_id": 6796217974973, "name": "Title", "position": 1, "values": ["magenta"]}], "images": [], "image": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953903015}
+{"stream": "products_graph_ql", "data": {"id": "gid://shopify/Product/6796217843901", "title": "Lace Detail On Womens Top", "updatedAt": "2023-09-05T14:12:05Z", "createdAt": "2021-06-23T01:09:26Z", "publishedAt": null, "status": "ARCHIVED", "vendor": "Hayes, Hettinger and Hauck", "productType": "Beauty", "tags": ["developer-tools-generator"], "options": [{"id": "gid://shopify/ProductOption/8720175169725", "name": "Title", "position": 1, "values": ["Soft"]}], "handle": "lace-detail-on-womens-top", "description": "A close-up side view of a woman's off-white shirt shows the design detail in the lace.", "tracksInventory": true, "totalInventory": 12, "totalVariants": 1, "onlineStoreUrl": null, "onlineStorePreviewUrl": "https://2p5oyhnqeai50h4v-58033176765.shopifypreview.com/products_preview?preview_key=0684b80dc464e2ee090442093af4a856&_bt=eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaXRoYVhKaWVYUmxMV2x1ZEdWbmNtRjBhVzl1TFhSbGMzUXViWGx6YUc5d2FXWjVMbU52YlFZNkJrVlUiLCJleHAiOiIyMDI0LTAyLTI2VDE0OjI1OjA2LjQwMVoiLCJwdXIiOiJwZXJtYW5lbnRfcGFzc3dvcmRfYnlwYXNzIn19--7b63f2609629fadb3ba6b372b742a474055b5d14", "descriptionHtml": "A close-up side view of a woman's off-white shirt shows the design detail in the lace.", "isGiftCard": false, "legacyResourceId": "6796217843901", "mediaCount": 0, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953906953}
+{"stream": "products_graph_ql", "data": {"id": "gid://shopify/Product/6796217909437", "title": "Red And Navy Tee Sleeve", "updatedAt": "2023-04-20T11:12:25Z", "createdAt": "2021-06-23T01:09:27Z", "publishedAt": "2021-06-23T01:09:27Z", "status": "ACTIVE", "vendor": "Little Group", "productType": "Movies", "tags": ["developer-tools-generator"], "options": [{"id": "gid://shopify/ProductOption/8720175235261", "name": "Title", "position": 1, "values": ["Plastic"]}], "handle": "red-and-navy-tee-sleeve", "description": "Zoom in on the sleeve of a red t-shirt with navy blue trim along the sleeve. Looks like a great tennis outfit.", "tracksInventory": true, "totalInventory": 3, "totalVariants": 1, "onlineStoreUrl": null, "onlineStorePreviewUrl": "https://airbyte-integration-test.myshopify.com/products/red-and-navy-tee-sleeve", "descriptionHtml": "Zoom in on the sleeve of a red t-shirt with navy blue trim along the sleeve. Looks like a great tennis outfit.", "isGiftCard": false, "legacyResourceId": "6796217909437", "mediaCount": 0, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953906955}
+{"stream": "products_graph_ql", "data": {"id": "gid://shopify/Product/6796217942205", "title": "Grey T-Shirt", "updatedAt": "2023-04-20T11:12:25Z", "createdAt": "2021-06-23T01:09:27Z", "publishedAt": "2021-06-23T01:09:27Z", "status": "ACTIVE", "vendor": "Lang - Bogisich", "productType": "Home", "tags": ["developer-tools-generator"], "options": [{"id": "gid://shopify/ProductOption/8720175268029", "name": "Title", "position": 1, "values": ["Granite"]}], "handle": "grey-t-shirt", "description": "A grey t-shirt on a hanger. Simple. Classic. Grey.", "tracksInventory": true, "totalInventory": 38, "totalVariants": 1, "onlineStoreUrl": null, "onlineStorePreviewUrl": "https://airbyte-integration-test.myshopify.com/products/grey-t-shirt", "descriptionHtml": "A grey t-shirt on a hanger. Simple. Classic. Grey.", "isGiftCard": false, "legacyResourceId": "6796217942205", "mediaCount": 0, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953906956}
+{"stream": "product_variants", "data": {"id": 40090579992765, "product_id": 6796217909437, "title": "Plastic", "price": 23.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Plastic", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 39, "weight": 39.0, "weight_unit": "g", "inventory_item_id": 42185194700989, "inventory_quantity": 3, "old_inventory_quantity": 3, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090579992765", "image_id": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953908829}
+{"stream": "product_variants", "data": {"id": 40090580025533, "product_id": 6796217942205, "title": "Granite", "price": 70.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Granite", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 0, "weight": 0.0, "weight_unit": "g", "inventory_item_id": 42185194733757, "inventory_quantity": 38, "old_inventory_quantity": 38, "requires_shipping": false, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090580025533", "image_id": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953908831}
+{"stream": "product_variants", "data": {"id": 40090580091069, "product_id": 6796217974973, "title": "magenta", "price": 57.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "magenta", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 499, "weight": 499.0, "weight_unit": "g", "inventory_item_id": 42185194766525, "inventory_quantity": 1, "old_inventory_quantity": 1, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090580091069", "image_id": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953908832}
+{"stream": "shop", "data": {"id": 58033176765, "name": "airbyte integration test", "email": "sherif@airbyte.io", "domain": "airbyte-integration-test.myshopify.com", "province": "California", "country": "US", "address1": "350 29th Avenue", "zip": "94121", "city": "San Francisco", "source": null, "phone": "8023494963", "latitude": 37.7827286, "longitude": -122.4889911, "primary_locale": "en", "address2": "", "created_at": "2021-06-22T18:00:23-07:00", "updated_at": "2024-01-30T21:11:05-08:00", "country_code": "US", "country_name": "United States", "currency": "USD", "customer_email": "sherif@airbyte.io", "timezone": "(GMT-08:00) America/Los_Angeles", "iana_timezone": "America/Los_Angeles", "shop_owner": "Airbyte Airbyte", "money_format": "${{amount}}", "money_with_currency_format": "${{amount}} USD", "weight_unit": "kg", "province_code": "CA", "taxes_included": true, "auto_configure_tax_inclusivity": null, "tax_shipping": null, "county_taxes": true, "plan_display_name": "Developer Preview", "plan_name": "partner_test", "has_discounts": true, "has_gift_cards": false, "myshopify_domain": "airbyte-integration-test.myshopify.com", "google_apps_domain": null, "google_apps_login_enabled": null, "money_in_emails_format": "${{amount}}", "money_with_currency_in_emails_format": "${{amount}} USD", "eligible_for_payments": true, "requires_extra_payments_agreement": false, "password_enabled": true, "has_storefront": true, "finances": true, "primary_location_id": 63590301885, "checkout_api_supported": true, "multi_location_enabled": true, "setup_required": false, "pre_launch_enabled": false, "enabled_presentment_currencies": ["USD"], "transactional_sms_disabled": false, "marketing_sms_consent_enabled_at_checkout": false, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953910990}
+{"stream": "smart_collections", "data": {"id": 273278566589, "handle": "test-collection", "title": "Test Collection", "updated_at": "2023-09-05T07:12:04-07:00", "body_html": "updated_mon_24.04.2023", "published_at": "2021-07-19T07:02:54-07:00", "sort_order": "best-selling", "template_suffix": "", "disjunctive": false, "rules": ["{'column': 'type', 'relation': 'equals', 'condition': 'Beauty'}"], "published_scope": "web", "admin_graphql_api_id": "gid://shopify/Collection/273278566589", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953912019}
+{"stream": "tender_transactions", "data": {"id": 4464009117885, "order_id": 5033391718589, "amount": "19.00", "currency": "USD", "user_id": null, "test": false, "processed_at": "2023-04-24T11:00:08-07:00", "remote_reference": null, "payment_details": null, "payment_method": "other", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953913062}
+{"stream": "tender_transactions", "data": {"id": 4448993542333, "order_id": 5010585911485, "amount": "19.00", "currency": "USD", "user_id": null, "test": false, "processed_at": "2023-04-13T05:11:15-07:00", "remote_reference": null, "payment_details": null, "payment_method": "other", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953913064}
+{"stream": "tender_transactions", "data": {"id": 4448992690365, "order_id": 5010584895677, "amount": "102.00", "currency": "USD", "user_id": null, "test": false, "processed_at": "2023-04-13T05:09:44-07:00", "remote_reference": null, "payment_details": null, "payment_method": "other", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953913065}
+{"stream": "transactions", "data": {"id": 6281692217533, "error_code": null, "test": false, "kind": "SALE", "amount": 102.0, "receipt": "{}", "gateway": "manual", "authorization": null, "created_at": "2023-04-13T12:09:44+00:00", "status": "SUCCESS", "processed_at": "2023-04-13T12:09:44+00:00", "total_unsettled_set": {"presentment_money": {"amount": 0.0, "currency": "USD"}, "shop_money": {"amount": 0.0, "currency": "USD"}}, "payment_id": "r9BerEaVJ5OzQNmPGZsK2V7zq", "payment_details": null, "order_id": 5010584895677, "currency": "USD", "admin_graphql_api_id": "gid://shopify/OrderTransaction/6281692217533", "parent_id": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953920174}
+{"stream": "transactions", "data": {"id": 6281693561021, "error_code": null, "test": false, "kind": "SALE", "amount": 19.0, "receipt": "{}", "gateway": "manual", "authorization": null, "created_at": "2023-04-13T12:11:15+00:00", "status": "SUCCESS", "processed_at": "2023-04-13T12:11:15+00:00", "total_unsettled_set": {"presentment_money": {"amount": 0.0, "currency": "USD"}, "shop_money": {"amount": 0.0, "currency": "USD"}}, "payment_id": "rguGpKMnZqzpEzPvDfnSS8x4B", "payment_details": null, "order_id": 5010585911485, "currency": "USD", "admin_graphql_api_id": "gid://shopify/OrderTransaction/6281693561021", "parent_id": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953920180}
+{"stream": "transactions", "data": {"id": 6302086037693, "error_code": null, "test": false, "kind": "SALE", "amount": 19.0, "receipt": "{}", "gateway": "manual", "authorization": null, "created_at": "2023-04-24T18:00:08+00:00", "status": "SUCCESS", "processed_at": "2023-04-24T18:00:08+00:00", "total_unsettled_set": {"presentment_money": {"amount": 0.0, "currency": "USD"}, "shop_money": {"amount": 0.0, "currency": "USD"}}, "payment_id": "ru7Najsh1HavL8RRkZHavCzGe", "payment_details": null, "order_id": 5033391718589, "currency": "USD", "admin_graphql_api_id": "gid://shopify/OrderTransaction/6302086037693", "parent_id": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953920187}
+{"stream": "customer_address", "data": {"address1": "My Best Accent", "address2": "", "city": "Fair Lawn", "country": "United States", "country_code": "US", "company": "Test Company", "first_name": "New Test", "id": 8092523135165, "last_name": "Customer", "name": "New Test Customer", "phone": "", "province": "New Jersey", "province_code": "NJ", "zip": "07410", "customer_id": 6569096478909, "country_name": "United States", "default": true, "updated_at": "2023-04-24T13:53:48+00:00", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953929853}
+{"stream": "customer_address", "data": {"address1": null, "address2": null, "city": null, "country": null, "country_code": null, "company": null, "first_name": "MArcos", "id": 8212915650749, "last_name": "Millnitz", "name": "MArcos Millnitz", "phone": null, "province": null, "province_code": null, "zip": null, "customer_id": 6676027932861, "country_name": null, "default": true, "updated_at": "2023-07-11T20:07:45+00:00", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953929855}
+{"stream": "countries", "data": {"id": 417014841533, "name": "Rest of World", "code": "*", "tax_name": "Tax", "tax": 0.0, "provinces": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953930918}
+{"stream": "countries", "data": {"id": 417014808765, "name": "Ukraine", "code": "UA", "tax_name": "PDV", "tax": 0.2, "provinces": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953930918}
diff --git a/airbyte-integrations/connectors/source-shopify/integration_tests/expected_records_transactions_with_user_id.jsonl b/airbyte-integrations/connectors/source-shopify/integration_tests/expected_records_transactions_with_user_id.jsonl
new file mode 100644
index 000000000000..37be336a3ed6
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/integration_tests/expected_records_transactions_with_user_id.jsonl
@@ -0,0 +1,96 @@
+{"stream": "articles", "data": {"id": 558137508029, "title": "My new Article title", "created_at": "2022-10-07T16:09:02-07:00", "body_html": "I like articles
\nYea, I like posting them through REST.
", "blog_id": 80417685693, "author": "John Smith", "user_id": null, "published_at": "2011-03-24T08:45:47-07:00", "updated_at": "2023-04-14T03:18:26-07:00", "summary_html": null, "template_suffix": null, "handle": "my-new-article-title", "tags": "Has Been Tagged, This Post", "admin_graphql_api_id": "gid://shopify/OnlineStoreArticle/558137508029", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953538863}
+{"stream": "articles", "data": {"id": 558627979453, "title": "Test Blog Post", "created_at": "2023-04-14T03:19:02-07:00", "body_html": "Test Blog Post 1", "blog_id": 80417685693, "author": "Airbyte Airbyte", "user_id": "74861019325", "published_at": null, "updated_at": "2023-04-14T03:19:18-07:00", "summary_html": "", "template_suffix": "", "handle": "test-blog-post", "tags": "Has Been Tagged", "admin_graphql_api_id": "gid://shopify/OnlineStoreArticle/558627979453", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953538864}
+{"stream": "articles", "data": {"id": 558999371965, "deleted_at": "2023-09-05T13:50:04-07:00", "updated_at": "2023-09-05T13:50:04-07:00", "deleted_message": "Online Store deleted an article: Test Article 1.", "deleted_description": "Online Store deleted an article: Test Article 1.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953539407}
+{"stream": "blogs", "data": {"id": 80417685693, "handle": "news", "title": "News", "updated_at": "2023-09-05T14:02:00-07:00", "commentable": "no", "feedburner": null, "feedburner_location": null, "created_at": "2021-06-22T18:00:25-07:00", "template_suffix": null, "tags": "Has Been Tagged, This Post", "admin_graphql_api_id": "gid://shopify/OnlineStoreBlog/80417685693", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953541474}
+{"stream": "blogs", "data": {"id": 85733114045, "deleted_at": "2023-09-06T03:30:22-07:00", "updated_at": "2023-09-06T03:30:22-07:00", "deleted_message": "Online Store deleted a blog: Test Blog 1.", "deleted_description": "Online Store deleted a blog: Test Blog 1.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953541999}
+{"stream": "collections", "data": {"id": 270889287869, "handle": "frontpage", "title": "Home page", "updated_at": "2023-09-05T14:06:59+00:00", "body_html": "updated_mon_24.04.2023", "sort_order": "BEST_SELLING", "template_suffix": "", "products_count": 1, "admin_graphql_api_id": "gid://shopify/Collection/270889287869", "published_at": "2021-06-23T01:00:25+00:00", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953549142}
+{"stream": "collections", "data": {"id": 273278566589, "handle": "test-collection", "title": "Test Collection", "updated_at": "2023-09-05T14:12:04+00:00", "body_html": "updated_mon_24.04.2023", "sort_order": "BEST_SELLING", "template_suffix": "", "products_count": 26, "admin_graphql_api_id": "gid://shopify/Collection/273278566589", "published_at": "2021-07-19T14:02:54+00:00", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953549142}
+{"stream": "collects", "data": {"id": 29427031703741, "collection_id": 270889287869, "product_id": 6796220989629, "created_at": "2021-07-19T07:01:36-07:00", "updated_at": "2022-03-06T14:12:21-08:00", "position": 2, "sort_value": "0000000002", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953550149}
+{"stream": "custom_collections", "data": {"id": 270889287869, "handle": "frontpage", "title": "Home page", "updated_at": "2023-09-05T07:06:59-07:00", "body_html": "updated_mon_24.04.2023", "published_at": "2021-06-22T18:00:25-07:00", "sort_order": "best-selling", "template_suffix": "", "published_scope": "web", "admin_graphql_api_id": "gid://shopify/Collection/270889287869", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953551166}
+{"stream": "custom_collections", "data": {"id": 294253822141, "deleted_at": "2023-09-06T03:34:39-07:00", "updated_at": "2023-09-06T03:34:39-07:00", "deleted_message": "Airbyte Airbyte deleted a collection.", "deleted_description": "Airbyte Airbyte deleted a collection.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953551694}
+{"stream": "customers", "data": {"id": 6569096478909, "email": "test@test.com", "created_at": "2023-04-13T02:30:04-07:00", "updated_at": "2023-04-24T06:53:48-07:00", "first_name": "New Test", "last_name": "Customer", "orders_count": 0, "state": "disabled", "total_spent": 0.0, "last_order_id": null, "note": "updated_mon_24.04.2023", "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "tags": "", "last_order_name": null, "currency": "USD", "phone": "+380639379992", "addresses": [{"id": 8092523135165, "customer_id": 6569096478909, "first_name": "New Test", "last_name": "Customer", "company": "Test Company", "address1": "My Best Accent", "address2": "", "city": "Fair Lawn", "province": "New Jersey", "country": "United States", "zip": "07410", "phone": "", "name": "New Test Customer", "province_code": "NJ", "country_code": "US", "country_name": "United States", "default": true}], "accepts_marketing": true, "accepts_marketing_updated_at": "2023-04-13T02:30:04-07:00", "marketing_opt_in_level": "single_opt_in", "tax_exemptions": "[]", "email_marketing_consent": {"state": "subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": "2023-04-13T02:30:04-07:00"}, "sms_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": null, "consent_collected_from": "SHOPIFY"}, "admin_graphql_api_id": "gid://shopify/Customer/6569096478909", "default_address": {"id": 8092523135165, "customer_id": 6569096478909, "first_name": "New Test", "last_name": "Customer", "company": "Test Company", "address1": "My Best Accent", "address2": "", "city": "Fair Lawn", "province": "New Jersey", "country": "United States", "zip": "07410", "phone": "", "name": "New Test Customer", "province_code": "NJ", "country_code": "US", "country_name": "United States", "default": true}, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953552788}
+{"stream": "customers", "data": {"id": 6676027932861, "email": "marcos@airbyte.io", "created_at": "2023-07-11T13:07:45-07:00", "updated_at": "2023-07-11T13:07:45-07:00", "first_name": "MArcos", "last_name": "Millnitz", "orders_count": 0, "state": "disabled", "total_spent": 0.0, "last_order_id": null, "note": null, "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "tags": "", "last_order_name": null, "currency": "USD", "phone": null, "addresses": [{"id": 8212915650749, "customer_id": 6676027932861, "first_name": "MArcos", "last_name": "Millnitz", "company": null, "address1": null, "address2": null, "city": null, "province": null, "country": null, "zip": null, "phone": null, "name": "MArcos Millnitz", "province_code": null, "country_code": null, "country_name": null, "default": true}], "accepts_marketing": false, "accepts_marketing_updated_at": null, "marketing_opt_in_level": "single_opt_in", "tax_exemptions": "[]", "email_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": null}, "sms_marketing_consent": null, "admin_graphql_api_id": "gid://shopify/Customer/6676027932861", "default_address": {"id": 8212915650749, "customer_id": 6676027932861, "first_name": "MArcos", "last_name": "Millnitz", "company": null, "address1": null, "address2": null, "city": null, "province": null, "country": null, "zip": null, "phone": null, "name": "MArcos Millnitz", "province_code": null, "country_code": null, "country_name": null, "default": true}, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953552789}
+{"stream": "discount_codes", "data": {"usage_count": 0, "code": "updated_mon_24.04.2023", "id": 11539415990461, "admin_graphql_api_id": "gid://shopify/DiscountRedeemCode/11539415990461", "price_rule_id": 945000284349, "updated_at": "2023-04-24T12:52:22+00:00", "created_at": "2021-07-07T14:23:11+00:00", "summary": "3% off entire order \u2022 One use per customer", "discount_type": "ORDER", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953559794}
+{"stream": "discount_codes", "data": {"usage_count": 0, "code": "HZAVNV2487WC", "id": 11545139282109, "admin_graphql_api_id": "gid://shopify/DiscountRedeemCode/11545139282109", "price_rule_id": 945205379261, "updated_at": "2023-12-07T11:40:44+00:00", "created_at": "2021-07-08T12:40:37+00:00", "summary": "Free shipping on all products \u2022 Minimum purchase of $1.00 \u2022 For all countries", "discount_type": "SHIPPING", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953559795}
+{"stream": "discount_codes", "data": {"usage_count": 0, "code": "SUMMERSALE10OFF", "id": 13175793582269, "admin_graphql_api_id": "gid://shopify/DiscountRedeemCode/13175793582269", "price_rule_id": 945205379261, "updated_at": "2023-12-07T11:40:44+00:00", "created_at": "2021-07-08T12:40:37+00:00", "summary": "Free shipping on all products \u2022 Minimum purchase of $1.00 \u2022 For all countries", "discount_type": "SHIPPING", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953559795}
+{"stream": "draft_orders", "data": {"id": 874683629757, "note": null, "email": null, "taxes_included": true, "currency": "USD", "invoice_sent_at": null, "created_at": "2021-07-02T00:50:29-07:00", "updated_at": "2023-04-14T05:16:33-07:00", "tax_exempt": false, "completed_at": "2021-07-02T00:51:50-07:00", "name": "#D2", "status": "completed", "line_items": [{"id": 57443281666237, "variant_id": 40090604011709, "product_id": 6796229509309, "title": "8 Ounce Soy Candle", "variant_title": "Wooden", "sku": "", "vendor": "Bosco Inc", "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 63, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 17.0}], "applied_discount": null, "name": "8 Ounce Soy Candle - Wooden", "properties": [], "custom": false, "price": 102.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/57443281666237"}], "shipping_address": null, "billing_address": null, "invoice_url": "https://airbyte-integration-test.myshopify.com/58033176765/invoices/e155e3254d0c0d64fa90587de417e0f3", "applied_discount": null, "order_id": 3935377129661, "shipping_line": null, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 17.0}], "tags": "", "note_attributes": [], "total_price": "102.00", "subtotal_price": "102.00", "total_tax": "17.00", "payment_terms": null, "admin_graphql_api_id": "gid://shopify/DraftOrder/874683629757", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953561948}
+{"stream": "draft_orders", "data": {"id": 929019691197, "note": "updated_mon_24.04.2023", "email": null, "taxes_included": true, "currency": "USD", "invoice_sent_at": null, "created_at": "2022-02-22T03:23:19-08:00", "updated_at": "2023-04-24T07:18:06-07:00", "tax_exempt": false, "completed_at": null, "name": "#D21", "status": "open", "line_items": [{"id": 58117295538365, "variant_id": 40090585923773, "product_id": 6796220989629, "title": "4 Ounce Soy Candle", "variant_title": "Metal", "sku": "", "vendor": "Hartmann Group", "quantity": 2, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 112, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 6.33}], "applied_discount": null, "name": "4 Ounce Soy Candle - Metal", "properties": [], "custom": false, "price": 19.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58117295538365"}, {"id": 58117295571133, "variant_id": null, "product_id": null, "title": "Test Item", "variant_title": null, "sku": null, "vendor": null, "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 1000, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 0.17}], "applied_discount": null, "name": "Test Item", "properties": [], "custom": true, "price": 1.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58117295571133"}], "shipping_address": null, "billing_address": null, "invoice_url": "https://airbyte-integration-test.myshopify.com/58033176765/invoices/12893992cc01fc67935ab014fcf9300f", "applied_discount": null, "order_id": null, "shipping_line": {"title": "Test Shipping Fee", "custom": true, "handle": null, "price": 3.0}, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 6.33}, {"rate": 0.2, "title": "PDV", "price": 0.17}], "tags": "", "note_attributes": [], "total_price": "42.00", "subtotal_price": "39.00", "total_tax": "6.50", "payment_terms": null, "admin_graphql_api_id": "gid://shopify/DraftOrder/929019691197", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953561951}
+{"stream": "draft_orders", "data": {"id": 987391033533, "note": null, "email": null, "taxes_included": true, "currency": "USD", "invoice_sent_at": null, "created_at": "2023-04-13T04:56:17-07:00", "updated_at": "2023-04-13T04:56:17-07:00", "tax_exempt": false, "completed_at": null, "name": "#D25", "status": "open", "line_items": [{"id": 58116862083261, "variant_id": 40090585923773, "product_id": 6796220989629, "title": "4 Ounce Soy Candle", "variant_title": "Metal", "sku": "", "vendor": "Hartmann Group", "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 112, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.16}], "applied_discount": null, "name": "4 Ounce Soy Candle - Metal", "properties": [], "custom": false, "price": 19.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58116862083261"}, {"id": 58116862116029, "variant_id": 41561955827901, "product_id": 6796220989629, "title": "4 Ounce Soy Candle", "variant_title": "Test Variant 1", "sku": "", "vendor": "Hartmann Group", "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 112, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.17}], "applied_discount": null, "name": "4 Ounce Soy Candle - Test Variant 1", "properties": [], "custom": false, "price": 19.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58116862116029"}, {"id": 58116862148797, "variant_id": 41561961824445, "product_id": 6796220989629, "title": "4 Ounce Soy Candle", "variant_title": "Test Variant 2", "sku": "", "vendor": "Hartmann Group", "quantity": 1, "requires_shipping": true, "taxable": true, "gift_card": false, "fulfillment_service": "manual", "grams": 112, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.17}], "applied_discount": null, "name": "4 Ounce Soy Candle - Test Variant 2", "properties": [], "custom": false, "price": 19.0, "admin_graphql_api_id": "gid://shopify/DraftOrderLineItem/58116862148797"}], "shipping_address": null, "billing_address": null, "invoice_url": "https://airbyte-integration-test.myshopify.com/58033176765/invoices/d193a965f7815817a2d37fddb30bfdb2", "applied_discount": null, "order_id": null, "shipping_line": null, "tax_lines": [{"rate": 0.2, "title": "PDV", "price": 3.16}, {"rate": 0.2, "title": "PDV", "price": 3.17}, {"rate": 0.2, "title": "PDV", "price": 3.17}], "tags": "", "note_attributes": [], "total_price": "57.00", "subtotal_price": "57.00", "total_tax": "9.50", "payment_terms": null, "admin_graphql_api_id": "gid://shopify/DraftOrder/987391033533", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953561952}
+{"stream": "fulfillment_orders", "data": {"id": 5962451452093, "assigned_location": {"address1": "Heroiv UPA 72", "address2": null, "city": "Lviv", "country_code": "UA", "name": "Heroiv UPA 72", "phone": "", "province": null, "zip": "30100", "location_id": 63590301885}, "destination": null, "delivery_method": {"id": 431686549693, "method_type": "SHIPPING", "min_delivery_date_time": null, "max_delivery_date_time": null}, "fulfill_at": "2023-04-13T12:00:00+00:00", "fulfill_by": null, "international_duties": null, "fulfillment_holds": [], "created_at": "2023-04-13T12:09:45+00:00", "updated_at": "2023-04-13T12:09:46+00:00", "request_status": "UNSUBMITTED", "status": "CLOSED", "supported_actions": [], "admin_graphql_api_id": "gid://shopify/FulfillmentOrder/5962451452093", "shop_id": 58033176765, "order_id": 5010584895677, "assigned_location_id": 63590301885, "line_items": [{"id": 12363725996221, "inventory_item_id": 42185218719933, "shop_id": 58033176765, "fulfillment_order_id": 5962451452093, "quantity": 1, "line_item_id": 12204214845629, "fulfillable_quantity": 0, "variant_id": 40090604011709}], "merchant_requests": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953569038}
+{"stream": "fulfillment_orders", "data": {"id": 5962452467901, "assigned_location": {"address1": "Heroiv UPA 72", "address2": null, "city": "Lviv", "country_code": "UA", "name": "Heroiv UPA 72", "phone": "", "province": null, "zip": "30100", "location_id": 63590301885}, "destination": null, "delivery_method": {"id": 431687532733, "method_type": "SHIPPING", "min_delivery_date_time": null, "max_delivery_date_time": null}, "fulfill_at": "2023-04-13T12:00:00+00:00", "fulfill_by": null, "international_duties": null, "fulfillment_holds": [], "created_at": "2023-04-13T12:11:16+00:00", "updated_at": "2023-04-13T12:11:16+00:00", "request_status": "UNSUBMITTED", "status": "CLOSED", "supported_actions": [], "admin_graphql_api_id": "gid://shopify/FulfillmentOrder/5962452467901", "shop_id": 58033176765, "order_id": 5010585911485, "assigned_location_id": 63590301885, "line_items": [{"id": 12363727536317, "inventory_item_id": 43653688524989, "shop_id": 58033176765, "fulfillment_order_id": 5962452467901, "quantity": 1, "line_item_id": 12204216385725, "fulfillable_quantity": 0, "variant_id": 41561961824445}], "merchant_requests": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953569039}
+{"stream": "fulfillment_orders", "data": {"id": 5985636450493, "assigned_location": {"address1": "Heroiv UPA 72", "address2": null, "city": "Lviv", "country_code": "UA", "name": "Heroiv UPA 72", "phone": "", "province": null, "zip": "30100", "location_id": 63590301885}, "destination": null, "delivery_method": {"id": 442031046845, "method_type": "SHIPPING", "min_delivery_date_time": null, "max_delivery_date_time": null}, "fulfill_at": "2023-04-24T18:00:00+00:00", "fulfill_by": null, "international_duties": null, "fulfillment_holds": [], "created_at": "2023-04-24T18:00:09+00:00", "updated_at": "2023-04-24T18:00:09+00:00", "request_status": "UNSUBMITTED", "status": "CLOSED", "supported_actions": [], "admin_graphql_api_id": "gid://shopify/FulfillmentOrder/5985636450493", "shop_id": 58033176765, "order_id": 5033391718589, "assigned_location_id": 63590301885, "line_items": [{"id": 12407122067645, "inventory_item_id": 43653688524989, "shop_id": 58033176765, "fulfillment_order_id": 5985636450493, "quantity": 1, "line_item_id": 12247585521853, "fulfillable_quantity": 0, "variant_id": 41561961824445}], "merchant_requests": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953569040}
+{"stream": "fulfillments", "data": {"id": 4451164913853, "admin_graphql_api_id": "gid://shopify/Fulfillment/4451164913853", "created_at": "2023-04-13T05:09:45-07:00", "location_id": 63590301885, "name": "#1143.1", "order_id": 5010584895677, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2023-04-13T05:09:45-07:00", "line_items": [{"id": 12204214845629, "admin_graphql_api_id": "gid://shopify/LineItem/12204214845629", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 63, "name": "8 Ounce Soy Candle - Wooden", "price": "102.00", "price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796229509309, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "8 Ounce Soy Candle", "total_discount": "0.00", "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090604011709, "variant_inventory_management": "shopify", "variant_title": "Wooden", "vendor": "Bosco Inc", "tax_lines": [{"channel_liable": false, "price": 17.0, "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953570024}
+{"stream": "fulfillments", "data": {"id": 4451169501373, "admin_graphql_api_id": "gid://shopify/Fulfillment/4451169501373", "created_at": "2023-04-13T05:11:16-07:00", "location_id": 63590301885, "name": "#1144.1", "order_id": 5010585911485, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2023-04-13T05:11:16-07:00", "line_items": [{"id": 12204216385725, "admin_graphql_api_id": "gid://shopify/LineItem/12204216385725", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 112, "name": "4 Ounce Soy Candle - Test Variant 2", "price": "19.00", "price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796220989629, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "4 Ounce Soy Candle", "total_discount": "0.00", "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 41561961824445, "variant_inventory_management": "shopify", "variant_title": "Test Variant 2", "vendor": "Hartmann Group", "tax_lines": [{"channel_liable": false, "price": 3.17, "price_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953570026}
+{"stream": "fulfillments", "data": {"id": 4075788501181, "admin_graphql_api_id": "gid://shopify/Fulfillment/4075788501181", "created_at": "2022-06-15T05:16:55-07:00", "location_id": 63590301885, "name": "#1136.1", "order_id": 4554821468349, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2022-06-15T05:16:55-07:00", "line_items": [{"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": "59.00", "price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": "0.00", "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": "1.77", "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}, "discount_application_index": 0}]}], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953570027}
+{"stream": "inventory_items", "data": {"id": 44871665713341, "country_code_of_origin": null, "harmonized_system_code": null, "province_code_of_origin": null, "updated_at": "2023-04-14T10:29:27+00:00", "created_at": "2023-04-14T10:29:27+00:00", "sku": "", "tracked": true, "requires_shipping": false, "admin_graphql_api_id": "gid://shopify/InventoryItem/44871665713341", "cost": 60.0, "country_harmonized_system_codes": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953577593}
+{"stream": "inventory_items", "data": {"id": 45419395743933, "country_code_of_origin": "UA", "harmonized_system_code": "330510", "province_code_of_origin": null, "updated_at": "2023-12-11T10:37:41+00:00", "created_at": "2023-12-11T10:37:41+00:00", "sku": "123", "tracked": true, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/InventoryItem/45419395743933", "cost": 29.0, "country_harmonized_system_codes": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953577593}
+{"stream": "inventory_levels", "data": {"id": "63590301885|42185200631997", "available": 15, "updated_at": "2023-04-13T12:00:55+00:00", "admin_graphql_api_id": "gid://shopify/InventoryLevel/97912455357?inventory_item_id=42185200631997", "inventory_item_id": 42185200631997, "location_id": 63590301885, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953584675}
+{"stream": "inventory_levels", "data": {"id": "63590301885|42185218719933", "available": 8, "updated_at": "2023-04-13T12:09:45+00:00", "admin_graphql_api_id": "gid://shopify/InventoryLevel/97912455357?inventory_item_id=42185218719933", "inventory_item_id": 42185218719933, "location_id": 63590301885, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953584677}
+{"stream": "inventory_levels", "data": {"id": "63590301885|43653688524989", "available": 0, "updated_at": "2023-04-24T18:00:10+00:00", "admin_graphql_api_id": "gid://shopify/InventoryLevel/97912455357?inventory_item_id=43653688524989", "inventory_item_id": 43653688524989, "location_id": 63590301885, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953584677}
+{"stream": "locations", "data": {"id": 63590301885, "name": "Heroiv UPA 72", "address1": "Heroiv UPA 72", "address2": "", "city": "Lviv", "zip": "30100", "province": null, "country": "UA", "phone": "", "created_at": "2021-06-22T18:00:29-07:00", "updated_at": "2023-11-28T07:08:27-08:00", "country_code": "UA", "country_name": "Ukraine", "province_code": null, "legacy": false, "active": true, "admin_graphql_api_id": "gid://shopify/Location/63590301885", "localized_country_name": "Ukraine", "localized_province_name": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953585688}
+{"stream": "metafield_articles", "data": {"id": 21519818162365, "namespace": "global", "key": "new", "value": "newvalue", "description": null, "owner_id": 558137508029, "created_at": "2022-10-07T16:09:02-07:00", "updated_at": "2022-10-07T16:09:02-07:00", "owner_resource": "article", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/21519818162365", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953587648}
+{"stream": "metafield_articles", "data": {"id": 22365709992125, "namespace": "custom", "key": "test_blog_post_metafield", "value": "Test Article Metafield", "description": null, "owner_id": 558137508029, "created_at": "2023-04-14T03:18:26-07:00", "updated_at": "2023-04-14T03:18:26-07:00", "owner_resource": "article", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365709992125", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953587649}
+{"stream": "metafield_articles", "data": {"id": 22365710352573, "namespace": "custom", "key": "test_blog_post_metafield", "value": "Test Blog Post Metafiled", "description": null, "owner_id": 558627979453, "created_at": "2023-04-14T03:19:18-07:00", "updated_at": "2023-04-14T03:19:18-07:00", "owner_resource": "article", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365710352573", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953588091}
+{"stream": "metafield_blogs", "data": {"id": 21519428255933, "namespace": "some_fields", "key": "sponsor", "value": "Shopify", "description": null, "owner_id": 80417685693, "created_at": "2022-10-07T06:05:23-07:00", "updated_at": "2022-10-07T06:05:23-07:00", "owner_resource": "blog", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/21519428255933", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953590792}
+{"stream": "metafield_blogs", "data": {"id": 22365710745789, "namespace": "custom", "key": "test_blog_metafield", "value": "Test Blog Metafield", "description": null, "owner_id": 80417685693, "created_at": "2023-04-14T03:20:20-07:00", "updated_at": "2023-04-14T03:20:20-07:00", "owner_resource": "blog", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365710745789", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953590794}
+{"stream": "metafield_collections", "data": {"id": 22365707174077, "namespace": "custom", "value": "Test Collection Metafield", "key": "test_collection_metafield", "description": null, "created_at": "2023-04-14T10:15:30+00:00", "updated_at": "2023-04-14T10:15:30+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365707174077", "owner_id": 270889287869, "owner_resource": "collection", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953598420}
+{"stream": "metafield_collections", "data": {"id": 22366265573565, "namespace": "my_fields", "value": "51%", "key": "new_key", "description": null, "created_at": "2023-04-14T12:21:58+00:00", "updated_at": "2023-04-14T12:21:58+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22366265573565", "owner_id": 273278566589, "owner_resource": "collection", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953598428}
+{"stream": "metafield_customers", "data": {"id": 22346893361341, "namespace": "custom", "value": "Teste\n", "key": "test_definition_list_1", "description": null, "created_at": "2023-04-13T11:50:10+00:00", "updated_at": "2023-04-13T11:50:10+00:00", "type": "multi_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22346893361341", "owner_id": 6569096478909, "owner_resource": "customer", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953605731}
+{"stream": "metafield_customers", "data": {"id": 22346893394109, "namespace": "custom", "value": "Taster", "key": "test_definition", "description": null, "created_at": "2023-04-13T11:50:10+00:00", "updated_at": "2023-04-13T11:50:10+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22346893394109", "owner_id": 6569096478909, "owner_resource": "customer", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953605732}
+{"stream": "metafield_draft_orders", "data": {"id": 22366258528445, "namespace": "discounts", "value": "50%", "key": "hello", "description": null, "created_at": "2023-04-14T12:16:33+00:00", "updated_at": "2023-04-14T12:16:33+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22366258528445", "owner_id": 874683629757, "owner_resource": "draft_order", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953612753}
+{"stream": "metafield_draft_orders", "data": {"id": 22532787175613, "namespace": "new_metafield", "value": "updated_mon_24.04.2023", "key": "new_metafield", "description": null, "created_at": "2023-04-24T14:18:06+00:00", "updated_at": "2023-04-24T14:18:06+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22532787175613", "owner_id": 929019691197, "owner_resource": "draft_order", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953612755}
+{"stream": "metafield_locations", "data": {"id": 26246034161853, "namespace": "custom", "value": "2023-11-28 updated", "key": "test_location_metafield", "description": null, "created_at": "2023-11-28T15:08:26+00:00", "updated_at": "2023-11-28T15:08:26+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/26246034161853", "owner_id": 63590301885, "owner_resource": "location", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953619903}
+{"stream": "metafield_orders", "data": {"id": 22347288150205, "namespace": "my_fields", "value": "asdfasdf", "key": "purchase_order", "description": null, "created_at": "2023-04-13T12:09:50+00:00", "updated_at": "2023-04-13T12:09:50+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22347288150205", "owner_id": 5010584895677, "owner_resource": "order", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953626961}
+{"stream": "metafield_orders", "data": {"id": 22347288740029, "namespace": "my_fields", "value": "asdfasdfasdf", "key": "purchase_order", "description": null, "created_at": "2023-04-13T12:11:20+00:00", "updated_at": "2023-04-13T12:11:20+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22347288740029", "owner_id": 5010585911485, "owner_resource": "order", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953626961}
+{"stream": "metafield_orders", "data": {"id": 22347287855293, "namespace": "my_fields", "value": "trtrtr", "key": "purchase_order", "description": null, "created_at": "2023-04-13T12:09:08+00:00", "updated_at": "2023-04-13T12:09:08+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22347287855293", "owner_id": 4147980107965, "owner_resource": "order", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953626962}
+{"stream": "metafield_pages", "data": {"id": 22365711499453, "namespace": "custom", "key": "test_page_metafield", "value": "Test Page Metafield", "description": null, "owner_id": 93795909821, "created_at": "2023-04-14T03:21:49-07:00", "updated_at": "2023-04-14T03:21:49-07:00", "owner_resource": "page", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365711499453", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953628925}
+{"stream": "metafield_pages", "data": {"id": 22534014828733, "namespace": "new_metafield", "key": "new_metafield", "value": "updated_mon_24.04.2023", "description": null, "owner_id": 83074252989, "created_at": "2023-04-24T11:08:41-07:00", "updated_at": "2023-04-24T11:08:41-07:00", "owner_resource": "page", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22534014828733", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953629370}
+{"stream": "metafield_product_images", "data": {"id": 22365851517117, "namespace": "my_fields", "value": "natural coton", "key": "liner_material", "description": null, "created_at": "2023-04-14T11:59:27+00:00", "updated_at": "2023-04-14T11:59:27+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365851517117", "owner_id": 29301295481021, "owner_resource": "product_image", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953637175}
+{"stream": "metafield_product_images", "data": {"id": 22533588451517, "namespace": "new_metafield", "value": "updated_mon_24.04.2023", "key": "new_metafield", "description": null, "created_at": "2023-04-24T17:32:19+00:00", "updated_at": "2023-04-24T17:32:19+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22533588451517", "owner_id": 29301297316029, "owner_resource": "product_image", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953637175}
+{"stream": "metafield_products", "data": {"id": 22365729718461, "namespace": "custom", "value": "Test Product Metafield", "key": "product_metafield_test_2", "description": null, "created_at": "2023-04-14T10:31:19+00:00", "updated_at": "2023-04-14T10:31:19+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365729718461", "owner_id": 6796226560189, "owner_resource": "product", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953644458}
+{"stream": "metafield_products", "data": {"id": 22365729816765, "namespace": "custom", "value": "gid://shopify/Product/6796229574845", "key": "test_product_metafield", "description": null, "created_at": "2023-04-14T10:31:29+00:00", "updated_at": "2023-04-14T10:31:29+00:00", "type": "product_reference", "admin_graphql_api_id": "gid://shopify/Metafield/22365729816765", "owner_id": 6796226560189, "owner_resource": "product", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953644459}
+{"stream": "metafield_products", "data": {"id": 22365772251325, "namespace": "custom", "value": "Test", "key": "product_metafield_test_2", "description": null, "created_at": "2023-04-14T11:04:46+00:00", "updated_at": "2023-04-14T11:04:46+00:00", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365772251325", "owner_id": 6796229574845, "owner_resource": "product", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953644459}
+{"stream": "metafield_product_variants", "data": {"id": 22365715955901, "namespace": "custom", "value": "Test Varia", "key": "test_variant_metafield", "description": null, "created_at": "2023-04-14T10:24:03+00:00", "updated_at": "2023-04-14T10:24:03+00:00", "type": "multi_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365715955901", "owner_id": 41561961824445, "owner_resource": "product_variant", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953657344}
+{"stream": "metafield_product_variants", "data": {"id": 22365724082365, "namespace": "custom", "value": "Test Varia", "key": "test_variant_metafield", "description": null, "created_at": "2023-04-14T10:29:27+00:00", "updated_at": "2023-04-14T10:29:27+00:00", "type": "multi_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22365724082365", "owner_id": 42778150305981, "owner_resource": "product_variant", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953657344}
+{"stream": "metafield_product_variants", "data": {"id": 26493956391101, "namespace": "global", "value": "330510", "key": "harmonized_system_code", "description": null, "created_at": "2023-12-11T10:37:41+00:00", "updated_at": "2023-12-11T10:37:41+00:00", "type": "string", "admin_graphql_api_id": "gid://shopify/Metafield/26493956391101", "owner_id": 43315735396541, "owner_resource": "product_variant", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953657344}
+{"stream": "metafield_shops", "data": {"id": 19716782129341, "namespace": "inventory", "key": "warehouse", "value": "26", "description": null, "owner_id": 58033176765, "created_at": "2021-07-08T03:38:45-07:00", "updated_at": "2023-04-14T05:47:26-07:00", "owner_resource": "shop", "type": "number_integer", "admin_graphql_api_id": "gid://shopify/Metafield/19716782129341", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953658313}
+{"stream": "metafield_shops", "data": {"id": 22534020104381, "namespace": "new_metafield", "key": "new_metafield", "value": "updated_mon_24.04.2023", "description": null, "owner_id": 58033176765, "created_at": "2023-04-24T11:12:38-07:00", "updated_at": "2023-04-24T11:12:38-07:00", "owner_resource": "shop", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22534020104381", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953658314}
+{"stream": "metafield_smart_collections", "data": {"id": 21525604106429, "namespace": "my_fields", "key": "discount", "value": "50%", "description": null, "owner_id": 273278566589, "created_at": "2022-10-12T13:36:55-07:00", "updated_at": "2022-10-12T13:36:55-07:00", "owner_resource": "collection", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/21525604106429", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953660383}
+{"stream": "metafield_smart_collections", "data": {"id": 22366265573565, "namespace": "my_fields", "key": "new_key", "value": "51%", "description": null, "owner_id": 273278566589, "created_at": "2023-04-14T05:21:58-07:00", "updated_at": "2023-04-14T05:21:58-07:00", "owner_resource": "collection", "type": "single_line_text_field", "admin_graphql_api_id": "gid://shopify/Metafield/22366265573565", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953660391}
+{"stream": "order_refunds", "data": {"id": 852809646269, "admin_graphql_api_id": "gid://shopify/Refund/852809646269", "created_at": "2022-06-15T06:25:43-07:00", "note": null, "order_id": 4554821468349, "processed_at": "2022-06-15T06:25:43-07:00", "restock": true, "total_duties_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "user_id": 74861019325, "order_adjustments": [], "transactions": [{"id": 5721170968765, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5721170968765", "amount": "57.23", "authorization": null, "created_at": "2022-06-15T06:25:42-07:00", "currency": "USD", "device_id": null, "error_code": null, "gateway": "bogus", "kind": "refund", "location_id": null, "message": "Bogus Gateway: Forced success", "order_id": 4554821468349, "parent_id": 5721110872253, "payment_id": "c25048437719229.2", "processed_at": "2022-06-15T06:25:42-07:00", "receipt": {"paid_amount": "57.23"}, "source_name": "1830279", "status": "success", "test": true, "user_id": null, "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 2, "credit_card_expiration_year": 2025}}], "refund_line_items": [{"id": 363131404477, "line_item_id": 11406125564093, "location_id": 63590301885, "quantity": 1, "restock_type": "return", "subtotal": 57.23, "subtotal_set": {"shop_money": {"amount": 57.23, "currency_code": "USD"}, "presentment_money": {"amount": 57.23, "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "line_item": {"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": 59.0, "price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": 1.77, "amount_set": {"shop_money": {"amount": 1.77, "currency_code": "USD"}, "presentment_money": {"amount": 1.77, "currency_code": "USD"}}, "discount_application_index": 0}]}}], "duties": "[]", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953661477}
+{"stream": "order_refunds", "data": {"id": 845032358077, "admin_graphql_api_id": "gid://shopify/Refund/845032358077", "created_at": "2022-03-07T02:09:04-08:00", "note": null, "order_id": 4147980107965, "processed_at": "2022-03-07T02:09:04-08:00", "restock": true, "total_duties_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "user_id": 74861019325, "order_adjustments": [], "transactions": [], "refund_line_items": [{"id": 352716947645, "line_item_id": 10576771317949, "location_id": 63590301885, "quantity": 1, "restock_type": "return", "subtotal": 27.0, "subtotal_set": {"shop_money": {"amount": 27.0, "currency_code": "USD"}, "presentment_money": {"amount": 27.0, "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "line_item": {"id": 10576771317949, "admin_graphql_api_id": "gid://shopify/LineItem/10576771317949", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 285, "name": "Red & Silver Fishing Lure - Plastic", "price": 27.0, "price_set": {"shop_money": {"amount": 27.0, "currency_code": "USD"}, "presentment_money": {"amount": 27.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796218302653, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "Red & Silver Fishing Lure", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090580615357, "variant_inventory_management": "shopify", "variant_title": "Plastic", "vendor": "Harris - Hamill", "tax_lines": [], "duties": [], "discount_allocations": []}}], "duties": "[]", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953661479}
+{"stream": "order_refunds", "data": {"id": 829538369725, "admin_graphql_api_id": "gid://shopify/Refund/829538369725", "created_at": "2021-09-21T05:31:59-07:00", "note": "test refund", "order_id": 3935377129661, "processed_at": "2021-09-21T05:31:59-07:00", "restock": true, "total_duties_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "user_id": 74861019325, "order_adjustments": [], "transactions": [{"id": 5189894406333, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5189894406333", "amount": "102.00", "authorization": null, "created_at": "2021-09-21T05:31:58-07:00", "currency": "USD", "device_id": null, "error_code": null, "gateway": "bogus", "kind": "refund", "location_id": null, "message": "Bogus Gateway: Forced success", "order_id": 3935377129661, "parent_id": 4933790040253, "payment_id": "c21670281707709.2", "processed_at": "2021-09-21T05:31:58-07:00", "receipt": {"paid_amount": "102.00"}, "source_name": "1830279", "status": "success", "test": true, "user_id": 74861019325, "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 11, "credit_card_expiration_year": 2023}}], "refund_line_items": [{"id": 332807864509, "line_item_id": 10130216452285, "location_id": 63590301885, "quantity": 1, "restock_type": "cancel", "subtotal": 102.0, "subtotal_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "total_tax": 17.0, "total_tax_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "line_item": {"id": 10130216452285, "admin_graphql_api_id": "gid://shopify/LineItem/10130216452285", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": null, "gift_card": false, "grams": 63, "name": "8 Ounce Soy Candle - Wooden", "price": 102.0, "price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796229509309, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "8 Ounce Soy Candle", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090604011709, "variant_inventory_management": "shopify", "variant_title": "Wooden", "vendor": "Bosco Inc", "tax_lines": [{"channel_liable": false, "price": 17.0, "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}}], "duties": "[]", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953661480}
+{"stream": "order_risks", "data": {"id": 6446736474301, "order_id": 4147980107965, "checkout_id": null, "source": "External", "score": 1.0, "recommendation": "cancel", "display": true, "cause_cancel": true, "message": "This order came from an anonymous proxy", "merchant_message": "This order came from an anonymous proxy", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953665729}
+{"stream": "orders", "data": {"id": 5010584895677, "admin_graphql_api_id": "gid://shopify/Order/5010584895677", "app_id": 1354745, "browser_ip": "109.162.18.117", "buyer_accepts_marketing": false, "cancel_reason": null, "cancelled_at": null, "cart_token": null, "checkout_id": 27351199088829, "checkout_token": "4064bfadc2457c9e15f2c7b4ee7ddb7d", "client_details": {"accept_language": null, "browser_height": null, "browser_ip": "109.162.18.117", "browser_width": null, "session_hash": null, "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"}, "closed_at": "2023-04-13T05:09:46-07:00", "company": null, "confirmation_number": "ECI3YZGWP", "confirmed": true, "contact_email": null, "created_at": "2023-04-13T05:09:44-07:00", "currency": "USD", "current_subtotal_price": 102.0, "current_subtotal_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "current_total_additional_fees_set": null, "current_total_discounts": 0.0, "current_total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_duties_set": null, "current_total_price": 102.0, "current_total_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "current_total_tax": 17.0, "current_total_tax_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "customer_locale": "en", "device_id": null, "discount_codes": [], "email": "", "estimated_taxes": false, "financial_status": "paid", "fulfillment_status": "fulfilled", "landing_site": null, "landing_site_ref": null, "location_id": 63590301885, "merchant_of_record_app_id": null, "name": "#1143", "note": null, "note_attributes": [], "number": 143, "order_number": 1143, "order_status_url": "https://airbyte-integration-test.myshopify.com/58033176765/orders/ad85969259bee7d4b380744934e67556/authenticate?key=cdd70808759b04f31c29975ba796fce9", "original_total_additional_fees_set": null, "original_total_duties_set": null, "payment_gateway_names": ["manual"], "phone": null, "po_number": null, "presentment_currency": "USD", "processed_at": "2023-04-13T05:09:44-07:00", "reference": "b9344c8b118753db132edd503dc91515", "referring_site": null, "source_identifier": "b9344c8b118753db132edd503dc91515", "source_name": "shopify_draft_order", "source_url": null, "subtotal_price": 102.0, "subtotal_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "tags": "", "tax_exempt": false, "tax_lines": [{"price": 17.0, "rate": 0.2, "title": "PDV", "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "channel_liable": false}], "taxes_included": true, "test": false, "token": "ad85969259bee7d4b380744934e67556", "total_discounts": 0.0, "total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_line_items_price": 102.0, "total_line_items_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "total_outstanding": 0.0, "total_price": 102.0, "total_price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "total_shipping_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tax": 17.0, "total_tax_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "total_tip_received": 0.0, "total_weight": 63, "updated_at": "2023-04-13T05:09:50-07:00", "user_id": 74861019325, "billing_address": null, "customer": null, "discount_applications": [], "fulfillments": [{"id": 4451164913853, "admin_graphql_api_id": "gid://shopify/Fulfillment/4451164913853", "created_at": "2023-04-13T05:09:45-07:00", "location_id": 63590301885, "name": "#1143.1", "order_id": 5010584895677, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2023-04-13T05:09:45-07:00", "line_items": [{"id": 12204214845629, "admin_graphql_api_id": "gid://shopify/LineItem/12204214845629", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 63, "name": "8 Ounce Soy Candle - Wooden", "price": 102.0, "price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796229509309, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "8 Ounce Soy Candle", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090604011709, "variant_inventory_management": "shopify", "variant_title": "Wooden", "vendor": "Bosco Inc", "tax_lines": [{"channel_liable": false, "price": 17.0, "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}]}], "line_items": [{"id": 12204214845629, "admin_graphql_api_id": "gid://shopify/LineItem/12204214845629", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 63, "name": "8 Ounce Soy Candle - Wooden", "price": 102.0, "price_set": {"shop_money": {"amount": 102.0, "currency_code": "USD"}, "presentment_money": {"amount": 102.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796229509309, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "8 Ounce Soy Candle", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090604011709, "variant_inventory_management": "shopify", "variant_title": "Wooden", "vendor": "Bosco Inc", "tax_lines": [{"channel_liable": false, "price": 17.0, "price_set": {"shop_money": {"amount": 17.0, "currency_code": "USD"}, "presentment_money": {"amount": 17.0, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}], "payment_terms": null, "refunds": [], "shipping_address": null, "shipping_lines": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953668490}
+{"stream": "orders", "data": {"id": 5010585911485, "admin_graphql_api_id": "gid://shopify/Order/5010585911485", "app_id": 1354745, "browser_ip": "109.162.18.117", "buyer_accepts_marketing": false, "cancel_reason": null, "cancelled_at": null, "cart_token": null, "checkout_id": 27351203774653, "checkout_token": "117b35b4fd64c8de8d984830b72edfaf", "client_details": {"accept_language": null, "browser_height": null, "browser_ip": "109.162.18.117", "browser_width": null, "session_hash": null, "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"}, "closed_at": "2023-04-13T05:11:17-07:00", "company": null, "confirmation_number": "CQPWZK5ZU", "confirmed": true, "contact_email": null, "created_at": "2023-04-13T05:11:15-07:00", "currency": "USD", "current_subtotal_price": 19.0, "current_subtotal_price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "current_total_additional_fees_set": null, "current_total_discounts": 0.0, "current_total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_duties_set": null, "current_total_price": 19.0, "current_total_price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "current_total_tax": 3.17, "current_total_tax_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "customer_locale": "en", "device_id": null, "discount_codes": [], "email": "", "estimated_taxes": false, "financial_status": "paid", "fulfillment_status": "fulfilled", "landing_site": null, "landing_site_ref": null, "location_id": 63590301885, "merchant_of_record_app_id": null, "name": "#1144", "note": null, "note_attributes": [], "number": 144, "order_number": 1144, "order_status_url": "https://airbyte-integration-test.myshopify.com/58033176765/orders/a2d4a8a04fc6ec52a85f1811d269c88f/authenticate?key=a26b27cc1a040df3a1d7c67f6b14df75", "original_total_additional_fees_set": null, "original_total_duties_set": null, "payment_gateway_names": ["manual"], "phone": null, "po_number": null, "presentment_currency": "USD", "processed_at": "2023-04-13T05:11:15-07:00", "reference": "f75c72a120e34e15a4dbc2d32315cc72", "referring_site": null, "source_identifier": "f75c72a120e34e15a4dbc2d32315cc72", "source_name": "shopify_draft_order", "source_url": null, "subtotal_price": 19.0, "subtotal_price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "tags": "", "tax_exempt": false, "tax_lines": [{"price": 3.17, "rate": 0.2, "title": "PDV", "price_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "channel_liable": false}], "taxes_included": true, "test": false, "token": "a2d4a8a04fc6ec52a85f1811d269c88f", "total_discounts": 0.0, "total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_line_items_price": 19.0, "total_line_items_price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "total_outstanding": 0.0, "total_price": 19.0, "total_price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "total_shipping_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tax": 3.17, "total_tax_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "total_tip_received": 0.0, "total_weight": 112, "updated_at": "2023-04-13T05:11:20-07:00", "user_id": 74861019325, "billing_address": null, "customer": null, "discount_applications": [], "fulfillments": [{"id": 4451169501373, "admin_graphql_api_id": "gid://shopify/Fulfillment/4451169501373", "created_at": "2023-04-13T05:11:16-07:00", "location_id": 63590301885, "name": "#1144.1", "order_id": 5010585911485, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2023-04-13T05:11:16-07:00", "line_items": [{"id": 12204216385725, "admin_graphql_api_id": "gid://shopify/LineItem/12204216385725", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 112, "name": "4 Ounce Soy Candle - Test Variant 2", "price": 19.0, "price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796220989629, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "4 Ounce Soy Candle", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 41561961824445, "variant_inventory_management": "shopify", "variant_title": "Test Variant 2", "vendor": "Hartmann Group", "tax_lines": [{"channel_liable": false, "price": 3.17, "price_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}]}], "line_items": [{"id": 12204216385725, "admin_graphql_api_id": "gid://shopify/LineItem/12204216385725", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 112, "name": "4 Ounce Soy Candle - Test Variant 2", "price": 19.0, "price_set": {"shop_money": {"amount": 19.0, "currency_code": "USD"}, "presentment_money": {"amount": 19.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796220989629, "properties": [], "quantity": 1, "requires_shipping": true, "sku": "", "taxable": true, "title": "4 Ounce Soy Candle", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 41561961824445, "variant_inventory_management": "shopify", "variant_title": "Test Variant 2", "vendor": "Hartmann Group", "tax_lines": [{"channel_liable": false, "price": 3.17, "price_set": {"shop_money": {"amount": 3.17, "currency_code": "USD"}, "presentment_money": {"amount": 3.17, "currency_code": "USD"}}, "rate": 0.2, "title": "PDV"}], "duties": [], "discount_allocations": []}], "payment_terms": null, "refunds": [], "shipping_address": null, "shipping_lines": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953668500}
+{"stream": "orders", "data": {"id": 4554821468349, "admin_graphql_api_id": "gid://shopify/Order/4554821468349", "app_id": 580111, "browser_ip": "176.113.167.23", "buyer_accepts_marketing": false, "cancel_reason": null, "cancelled_at": null, "cart_token": null, "checkout_id": 25048437719229, "checkout_token": "cf5d16a0a0688905bd551c6dec591506", "client_details": {"accept_language": "en-US,en;q=0.9,uk;q=0.8", "browser_height": 754, "browser_ip": "176.113.167.23", "browser_width": 1519, "session_hash": null, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53"}, "closed_at": "2022-06-15T06:25:43-07:00", "company": null, "confirmation_number": null, "confirmed": true, "contact_email": "integration-test@airbyte.io", "created_at": "2022-06-15T05:16:53-07:00", "currency": "USD", "current_subtotal_price": 0.0, "current_subtotal_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_additional_fees_set": null, "current_total_discounts": 0.0, "current_total_discounts_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_duties_set": null, "current_total_price": 0.0, "current_total_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "current_total_tax": 0.0, "current_total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "customer_locale": "en", "device_id": null, "discount_codes": [], "email": "integration-test@airbyte.io", "estimated_taxes": false, "financial_status": "refunded", "fulfillment_status": "fulfilled", "landing_site": "/wallets/checkouts.json", "landing_site_ref": null, "location_id": null, "merchant_of_record_app_id": null, "name": "#1136", "note": "updated_mon_24.04.2023", "note_attributes": [], "number": 136, "order_number": 1136, "order_status_url": "https://airbyte-integration-test.myshopify.com/58033176765/orders/e4f98630ea44a884e33e700203ce2130/authenticate?key=edf087d6ae55a4541bf1375432f6a4b8", "original_total_additional_fees_set": null, "original_total_duties_set": null, "payment_gateway_names": ["bogus"], "phone": null, "po_number": null, "presentment_currency": "USD", "processed_at": "2022-06-15T05:16:53-07:00", "reference": null, "referring_site": "https://airbyte-integration-test.myshopify.com/products/all-black-sneaker-right-foot", "source_identifier": null, "source_name": "web", "source_url": null, "subtotal_price": 57.23, "subtotal_price_set": {"shop_money": {"amount": 57.23, "currency_code": "USD"}, "presentment_money": {"amount": 57.23, "currency_code": "USD"}}, "tags": "Refund", "tax_exempt": false, "tax_lines": [], "taxes_included": true, "test": true, "token": "e4f98630ea44a884e33e700203ce2130", "total_discounts": 1.77, "total_discounts_set": {"shop_money": {"amount": 1.77, "currency_code": "USD"}, "presentment_money": {"amount": 1.77, "currency_code": "USD"}}, "total_line_items_price": 59.0, "total_line_items_price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "total_outstanding": 0.0, "total_price": 57.23, "total_price_set": {"shop_money": {"amount": 57.23, "currency_code": "USD"}, "presentment_money": {"amount": 57.23, "currency_code": "USD"}}, "total_shipping_price_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "total_tip_received": 0.0, "total_weight": 0, "updated_at": "2023-04-24T07:00:37-07:00", "user_id": null, "billing_address": {"first_name": "Iryna", "address1": "2261 Market Street", "phone": null, "city": "San Francisco", "zip": "94114", "province": "California", "country": "United States", "last_name": "Grankova", "address2": "4381", "company": null, "latitude": 37.7647751, "longitude": -122.4320369, "name": "Iryna Grankova", "country_code": "US", "province_code": "CA"}, "customer": {"id": 5362027233469, "email": "integration-test@airbyte.io", "created_at": "2021-07-08T05:41:47-07:00", "updated_at": "2022-06-22T03:50:13-07:00", "first_name": "Airbyte", "last_name": "Team", "state": "disabled", "note": null, "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "phone": null, "email_marketing_consent": {"state": "not_subscribed", "opt_in_level": "single_opt_in", "consent_updated_at": null}, "sms_marketing_consent": null, "tags": "", "currency": "USD", "accepts_marketing": false, "accepts_marketing_updated_at": null, "marketing_opt_in_level": "single_opt_in", "tax_exemptions": [], "admin_graphql_api_id": "gid://shopify/Customer/5362027233469", "default_address": {"id": 7492260823229, "customer_id": 5362027233469, "first_name": "Airbyte", "last_name": "Team", "company": null, "address1": "2261 Market Street", "address2": "4381", "city": "San Francisco", "province": "California", "country": "United States", "zip": "94114", "phone": null, "name": "Airbyte Team", "province_code": "CA", "country_code": "US", "country_name": "United States", "default": true}}, "discount_applications": [{"target_type": "line_item", "type": "automatic", "value": "3.0", "value_type": "percentage", "allocation_method": "across", "target_selection": "all", "title": "eeeee"}], "fulfillments": [{"id": 4075788501181, "admin_graphql_api_id": "gid://shopify/Fulfillment/4075788501181", "created_at": "2022-06-15T05:16:55-07:00", "location_id": 63590301885, "name": "#1136.1", "order_id": 4554821468349, "origin_address": {}, "receipt": {}, "service": "manual", "shipment_status": null, "status": "success", "tracking_company": null, "tracking_number": null, "tracking_numbers": [], "tracking_url": null, "tracking_urls": [], "updated_at": "2022-06-15T05:16:55-07:00", "line_items": [{"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": 59.0, "price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": "1.77", "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}, "discount_application_index": 0}]}]}], "line_items": [{"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": 59.0, "price_set": {"shop_money": {"amount": 59.0, "currency_code": "USD"}, "presentment_money": {"amount": 59.0, "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": 0.0, "total_discount_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": "1.77", "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}, "discount_application_index": 0}]}], "payment_terms": null, "refunds": [{"id": 852809646269, "admin_graphql_api_id": "gid://shopify/Refund/852809646269", "created_at": "2022-06-15T06:25:43-07:00", "note": null, "order_id": 4554821468349, "processed_at": "2022-06-15T06:25:43-07:00", "restock": true, "total_duties_set": {"shop_money": {"amount": 0.0, "currency_code": "USD"}, "presentment_money": {"amount": 0.0, "currency_code": "USD"}}, "user_id": 74861019325, "order_adjustments": [], "transactions": [{"id": 5721170968765, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5721170968765", "amount": "57.23", "authorization": null, "created_at": "2022-06-15T06:25:42-07:00", "currency": "USD", "device_id": null, "error_code": null, "gateway": "bogus", "kind": "refund", "location_id": null, "message": "Bogus Gateway: Forced success", "order_id": 4554821468349, "parent_id": 5721110872253, "payment_id": "c25048437719229.2", "processed_at": "2022-06-15T06:25:42-07:00", "receipt": {"paid_amount": "57.23"}, "source_name": "1830279", "status": "success", "test": true, "user_id": null, "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 2, "credit_card_expiration_year": 2025}}], "refund_line_items": [{"id": 363131404477, "line_item_id": 11406125564093, "location_id": 63590301885, "quantity": 1, "restock_type": "return", "subtotal": 57.23, "subtotal_set": {"shop_money": {"amount": "57.23", "currency_code": "USD"}, "presentment_money": {"amount": "57.23", "currency_code": "USD"}}, "total_tax": 0.0, "total_tax_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "line_item": {"id": 11406125564093, "admin_graphql_api_id": "gid://shopify/LineItem/11406125564093", "fulfillable_quantity": 0, "fulfillment_service": "manual", "fulfillment_status": "fulfilled", "gift_card": false, "grams": 0, "name": "All Black Sneaker Right Foot - ivory", "price": "59.00", "price_set": {"shop_money": {"amount": "59.00", "currency_code": "USD"}, "presentment_money": {"amount": "59.00", "currency_code": "USD"}}, "product_exists": true, "product_id": 6796226560189, "properties": [], "quantity": 1, "requires_shipping": false, "sku": "", "taxable": true, "title": "All Black Sneaker Right Foot", "total_discount": "0.00", "total_discount_set": {"shop_money": {"amount": "0.00", "currency_code": "USD"}, "presentment_money": {"amount": "0.00", "currency_code": "USD"}}, "variant_id": 40090597884093, "variant_inventory_management": "shopify", "variant_title": "ivory", "vendor": "Becker - Moore", "tax_lines": [], "duties": [], "discount_allocations": [{"amount": "1.77", "amount_set": {"shop_money": {"amount": "1.77", "currency_code": "USD"}, "presentment_money": {"amount": "1.77", "currency_code": "USD"}}, "discount_application_index": 0}]}}], "duties": []}], "shipping_address": null, "shipping_lines": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953668502}
+{"stream": "pages", "data": {"id": 93795909821, "title": "Test Page", "shop_id": 58033176765, "handle": "test-page", "body_html": "Test Page 1", "author": null, "created_at": "2023-04-14T03:21:40-07:00", "updated_at": "2023-04-14T03:21:49-07:00", "published_at": "2023-04-14T03:21:40-07:00", "template_suffix": "", "admin_graphql_api_id": "gid://shopify/OnlineStorePage/93795909821", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953670254}
+{"stream": "pages", "data": {"id": 83074252989, "title": "Warranty information", "shop_id": 58033176765, "handle": "warranty-information", "body_html": "updated_mon_24.04.2023", "author": "Shopify API", "created_at": "2021-07-08T05:19:00-07:00", "updated_at": "2023-04-24T11:08:41-07:00", "published_at": "2021-07-08T05:19:00-07:00", "template_suffix": null, "admin_graphql_api_id": "gid://shopify/OnlineStorePage/83074252989", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953670255}
+{"stream": "pages", "data": {"id": 95926616253, "deleted_at": "2023-09-06T03:37:06-07:00", "updated_at": "2023-09-06T03:37:06-07:00", "deleted_message": "Online Store deleted a page: Test Page for delete.", "deleted_description": "Online Store deleted a page: Test Page for delete.", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953670813}
+{"stream": "price_rules", "data": {"id": 1112171741373, "value_type": "fixed_amount", "value": "-10.0", "customer_selection": "all", "target_type": "line_item", "target_selection": "all", "allocation_method": "across", "allocation_limit": null, "once_per_customer": false, "usage_limit": null, "starts_at": "2017-01-19T09:59:10-08:00", "ends_at": null, "created_at": "2022-10-14T10:19:39-07:00", "updated_at": "2023-04-14T05:24:53-07:00", "entitled_product_ids": [], "entitled_variant_ids": [], "entitled_collection_ids": [], "entitled_country_ids": [], "prerequisite_product_ids": [], "prerequisite_variant_ids": [], "prerequisite_collection_ids": [], "customer_segment_prerequisite_ids": [], "prerequisite_customer_ids": [], "prerequisite_subtotal_range": null, "prerequisite_quantity_range": null, "prerequisite_shipping_price_range": null, "prerequisite_to_entitlement_quantity_ratio": {"prerequisite_quantity": null, "entitled_quantity": null}, "prerequisite_to_entitlement_purchase": {"prerequisite_amount": null}, "title": "New Title 2023", "admin_graphql_api_id": "gid://shopify/PriceRule/1112171741373", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953671890}
+{"stream": "price_rules", "data": {"id": 945000284349, "value_type": "percentage", "value": "-3.0", "customer_selection": "all", "target_type": "line_item", "target_selection": "all", "allocation_method": "across", "allocation_limit": null, "once_per_customer": true, "usage_limit": 10, "starts_at": "2021-07-07T07:22:04-07:00", "ends_at": null, "created_at": "2021-07-07T07:23:11-07:00", "updated_at": "2023-04-24T05:52:22-07:00", "entitled_product_ids": [], "entitled_variant_ids": [], "entitled_collection_ids": [], "entitled_country_ids": [], "prerequisite_product_ids": [], "prerequisite_variant_ids": [], "prerequisite_collection_ids": [], "customer_segment_prerequisite_ids": [], "prerequisite_customer_ids": [], "prerequisite_subtotal_range": null, "prerequisite_quantity_range": null, "prerequisite_shipping_price_range": null, "prerequisite_to_entitlement_quantity_ratio": {"prerequisite_quantity": null, "entitled_quantity": null}, "prerequisite_to_entitlement_purchase": {"prerequisite_amount": null}, "title": "1V8Z165KSH5T", "admin_graphql_api_id": "gid://shopify/PriceRule/945000284349", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953671890}
+{"stream": "price_rules", "data": {"id": 945205379261, "value_type": "percentage", "value": "-100.0", "customer_selection": "all", "target_type": "shipping_line", "target_selection": "all", "allocation_method": "each", "allocation_limit": null, "once_per_customer": false, "usage_limit": null, "starts_at": "2021-07-08T05:40:13-07:00", "ends_at": "2024-01-01T23:59:59-08:00", "created_at": "2021-07-08T05:40:37-07:00", "updated_at": "2023-12-07T03:40:44-08:00", "entitled_product_ids": [], "entitled_variant_ids": [], "entitled_collection_ids": [], "entitled_country_ids": [], "prerequisite_product_ids": [], "prerequisite_variant_ids": [], "prerequisite_collection_ids": [], "customer_segment_prerequisite_ids": [], "prerequisite_customer_ids": [], "prerequisite_subtotal_range": {"greater_than_or_equal_to": "1.0"}, "prerequisite_quantity_range": null, "prerequisite_shipping_price_range": null, "prerequisite_to_entitlement_quantity_ratio": {"prerequisite_quantity": null, "entitled_quantity": null}, "prerequisite_to_entitlement_purchase": {"prerequisite_amount": null}, "title": "HZAVNV2487WC", "admin_graphql_api_id": "gid://shopify/PriceRule/945205379261", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953671891}
+{"stream": "product_images", "data": {"id": 29301295481021, "alt": null, "position": 1, "product_id": 6796218138813, "created_at": "2021-06-22T18:09:28-07:00", "updated_at": "2021-06-22T18:09:28-07:00", "admin_graphql_api_id": "gid://shopify/ProductImage/29301295481021", "width": 4393, "height": 2929, "src": "https://cdn.shopify.com/s/files/1/0580/3317/6765/products/tin-of-beard-balm.jpg?v=1624410568", "variant_ids": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953673537}
+{"stream": "product_images", "data": {"id": 29301295513789, "alt": null, "position": 1, "product_id": 6796218269885, "created_at": "2021-06-22T18:09:29-07:00", "updated_at": "2021-06-22T18:09:29-07:00", "admin_graphql_api_id": "gid://shopify/ProductImage/29301295513789", "width": 3840, "height": 2560, "src": "https://cdn.shopify.com/s/files/1/0580/3317/6765/products/pair-of-all-black-sneakers.jpg?v=1624410569", "variant_ids": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953673539}
+{"stream": "product_images", "data": {"id": 29301295546557, "alt": null, "position": 1, "product_id": 6796218302653, "created_at": "2021-06-22T18:09:29-07:00", "updated_at": "2021-06-22T18:09:29-07:00", "admin_graphql_api_id": "gid://shopify/ProductImage/29301295546557", "width": 3960, "height": 2640, "src": "https://cdn.shopify.com/s/files/1/0580/3317/6765/products/red-silver-fishing-lure.jpg?v=1624410569", "variant_ids": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953673539}
+{"stream": "products", "data": {"id": 6796217909437, "title": "Red And Navy Tee Sleeve", "body_html": "Zoom in on the sleeve of a red t-shirt with navy blue trim along the sleeve. Looks like a great tennis outfit.", "vendor": "Little Group", "product_type": "Movies", "created_at": "2021-06-22T18:09:27-07:00", "handle": "red-and-navy-tee-sleeve", "updated_at": "2023-04-20T04:12:25-07:00", "published_at": "2021-06-22T18:09:27-07:00", "template_suffix": null, "published_scope": "web", "tags": "developer-tools-generator", "status": "active", "admin_graphql_api_id": "gid://shopify/Product/6796217909437", "variants": [{"id": 40090579992765, "product_id": 6796217909437, "title": "Plastic", "price": 23.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Plastic", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 39, "weight": 39.0, "weight_unit": "g", "inventory_item_id": 42185194700989, "inventory_quantity": 3, "old_inventory_quantity": 3, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090579992765", "image_id": null}], "options": [{"id": 8720175235261, "product_id": 6796217909437, "name": "Title", "position": 1, "values": ["Plastic"]}], "images": [], "image": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953675398}
+{"stream": "products", "data": {"id": 6796217942205, "title": "Grey T-Shirt", "body_html": "A grey t-shirt on a hanger. Simple. Classic. Grey.", "vendor": "Lang - Bogisich", "product_type": "Home", "created_at": "2021-06-22T18:09:27-07:00", "handle": "grey-t-shirt", "updated_at": "2023-04-20T04:12:25-07:00", "published_at": "2021-06-22T18:09:27-07:00", "template_suffix": null, "published_scope": "web", "tags": "developer-tools-generator", "status": "active", "admin_graphql_api_id": "gid://shopify/Product/6796217942205", "variants": [{"id": 40090580025533, "product_id": 6796217942205, "title": "Granite", "price": 70.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Granite", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 0, "weight": 0.0, "weight_unit": "g", "inventory_item_id": 42185194733757, "inventory_quantity": 38, "old_inventory_quantity": 38, "requires_shipping": false, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090580025533", "image_id": null}], "options": [{"id": 8720175268029, "product_id": 6796217942205, "name": "Title", "position": 1, "values": ["Granite"]}], "images": [], "image": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953675399}
+{"stream": "products", "data": {"id": 6796217974973, "title": "Pool Floaty Icecream", "body_html": "Inflatable pink ice cream pool toy.", "vendor": "Fritsch - Ferry", "product_type": "Grocery", "created_at": "2021-06-22T18:09:27-07:00", "handle": "pool-floaty-icecream", "updated_at": "2023-04-20T04:12:25-07:00", "published_at": "2021-06-22T18:09:27-07:00", "template_suffix": null, "published_scope": "web", "tags": "developer-tools-generator", "status": "active", "admin_graphql_api_id": "gid://shopify/Product/6796217974973", "variants": [{"id": 40090580091069, "product_id": 6796217974973, "title": "magenta", "price": 57.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "magenta", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 499, "weight": 499.0, "weight_unit": "g", "inventory_item_id": 42185194766525, "inventory_quantity": 1, "old_inventory_quantity": 1, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090580091069", "image_id": null}], "options": [{"id": 8720175300797, "product_id": 6796217974973, "name": "Title", "position": 1, "values": ["magenta"]}], "images": [], "image": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953675399}
+{"stream": "products_graph_ql", "data": {"id": "gid://shopify/Product/6796217843901", "title": "Lace Detail On Womens Top", "updatedAt": "2023-09-05T14:12:05Z", "createdAt": "2021-06-23T01:09:26Z", "publishedAt": null, "status": "ARCHIVED", "vendor": "Hayes, Hettinger and Hauck", "productType": "Beauty", "tags": ["developer-tools-generator"], "options": [{"id": "gid://shopify/ProductOption/8720175169725", "name": "Title", "position": 1, "values": ["Soft"]}], "handle": "lace-detail-on-womens-top", "description": "A close-up side view of a woman's off-white shirt shows the design detail in the lace.", "tracksInventory": true, "totalInventory": 12, "totalVariants": 1, "onlineStoreUrl": null, "onlineStorePreviewUrl": "https://2p5oyhnqeai50h4v-58033176765.shopifypreview.com/products_preview?preview_key=49fdc517904f477196144662c8ad7b8f&_bt=eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaXRoYVhKaWVYUmxMV2x1ZEdWbmNtRjBhVzl1TFhSbGMzUXViWGx6YUc5d2FXWjVMbU52YlFZNkJrVlUiLCJleHAiOiIyMDI0LTAyLTI2VDE0OjIxOjE5LjAyOVoiLCJwdXIiOiJwZXJtYW5lbnRfcGFzc3dvcmRfYnlwYXNzIn19--a4d2e3e622f6ab0bcd3820bf524f8f50b65c14d7", "descriptionHtml": "A close-up side view of a woman's off-white shirt shows the design detail in the lace.", "isGiftCard": false, "legacyResourceId": "6796217843901", "mediaCount": 0, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953679676}
+{"stream": "products_graph_ql", "data": {"id": "gid://shopify/Product/6796217909437", "title": "Red And Navy Tee Sleeve", "updatedAt": "2023-04-20T11:12:25Z", "createdAt": "2021-06-23T01:09:27Z", "publishedAt": "2021-06-23T01:09:27Z", "status": "ACTIVE", "vendor": "Little Group", "productType": "Movies", "tags": ["developer-tools-generator"], "options": [{"id": "gid://shopify/ProductOption/8720175235261", "name": "Title", "position": 1, "values": ["Plastic"]}], "handle": "red-and-navy-tee-sleeve", "description": "Zoom in on the sleeve of a red t-shirt with navy blue trim along the sleeve. Looks like a great tennis outfit.", "tracksInventory": true, "totalInventory": 3, "totalVariants": 1, "onlineStoreUrl": null, "onlineStorePreviewUrl": "https://airbyte-integration-test.myshopify.com/products/red-and-navy-tee-sleeve", "descriptionHtml": "Zoom in on the sleeve of a red t-shirt with navy blue trim along the sleeve. Looks like a great tennis outfit.", "isGiftCard": false, "legacyResourceId": "6796217909437", "mediaCount": 0, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953679682}
+{"stream": "products_graph_ql", "data": {"id": "gid://shopify/Product/6796217942205", "title": "Grey T-Shirt", "updatedAt": "2023-04-20T11:12:25Z", "createdAt": "2021-06-23T01:09:27Z", "publishedAt": "2021-06-23T01:09:27Z", "status": "ACTIVE", "vendor": "Lang - Bogisich", "productType": "Home", "tags": ["developer-tools-generator"], "options": [{"id": "gid://shopify/ProductOption/8720175268029", "name": "Title", "position": 1, "values": ["Granite"]}], "handle": "grey-t-shirt", "description": "A grey t-shirt on a hanger. Simple. Classic. Grey.", "tracksInventory": true, "totalInventory": 38, "totalVariants": 1, "onlineStoreUrl": null, "onlineStorePreviewUrl": "https://airbyte-integration-test.myshopify.com/products/grey-t-shirt", "descriptionHtml": "A grey t-shirt on a hanger. Simple. Classic. Grey.", "isGiftCard": false, "legacyResourceId": "6796217942205", "mediaCount": 0, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953679683}
+{"stream": "product_variants", "data": {"id": 40090579992765, "product_id": 6796217909437, "title": "Plastic", "price": 23.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Plastic", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 39, "weight": 39.0, "weight_unit": "g", "inventory_item_id": 42185194700989, "inventory_quantity": 3, "old_inventory_quantity": 3, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090579992765", "image_id": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953681543}
+{"stream": "product_variants", "data": {"id": 40090580025533, "product_id": 6796217942205, "title": "Granite", "price": 70.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "Granite", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 0, "weight": 0.0, "weight_unit": "g", "inventory_item_id": 42185194733757, "inventory_quantity": 38, "old_inventory_quantity": 38, "requires_shipping": false, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090580025533", "image_id": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953681544}
+{"stream": "product_variants", "data": {"id": 40090580091069, "product_id": 6796217974973, "title": "magenta", "price": 57.0, "sku": "", "position": 1, "inventory_policy": "deny", "compare_at_price": null, "fulfillment_service": "manual", "inventory_management": "shopify", "option1": "magenta", "option2": null, "option3": null, "created_at": "2021-06-22T18:09:27-07:00", "updated_at": "2023-10-27T09:55:54-07:00", "taxable": true, "barcode": null, "grams": 499, "weight": 499.0, "weight_unit": "g", "inventory_item_id": 42185194766525, "inventory_quantity": 1, "old_inventory_quantity": 1, "requires_shipping": true, "admin_graphql_api_id": "gid://shopify/ProductVariant/40090580091069", "image_id": null, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953681544}
+{"stream": "shop", "data": {"id": 58033176765, "name": "airbyte integration test", "email": "sherif@airbyte.io", "domain": "airbyte-integration-test.myshopify.com", "province": "California", "country": "US", "address1": "350 29th Avenue", "zip": "94121", "city": "San Francisco", "source": null, "phone": "8023494963", "latitude": 37.7827286, "longitude": -122.4889911, "primary_locale": "en", "address2": "", "created_at": "2021-06-22T18:00:23-07:00", "updated_at": "2024-01-30T21:11:05-08:00", "country_code": "US", "country_name": "United States", "currency": "USD", "customer_email": "sherif@airbyte.io", "timezone": "(GMT-08:00) America/Los_Angeles", "iana_timezone": "America/Los_Angeles", "shop_owner": "Airbyte Airbyte", "money_format": "${{amount}}", "money_with_currency_format": "${{amount}} USD", "weight_unit": "kg", "province_code": "CA", "taxes_included": true, "auto_configure_tax_inclusivity": null, "tax_shipping": null, "county_taxes": true, "plan_display_name": "Developer Preview", "plan_name": "partner_test", "has_discounts": true, "has_gift_cards": false, "myshopify_domain": "airbyte-integration-test.myshopify.com", "google_apps_domain": null, "google_apps_login_enabled": null, "money_in_emails_format": "${{amount}}", "money_with_currency_in_emails_format": "${{amount}} USD", "eligible_for_payments": true, "requires_extra_payments_agreement": false, "password_enabled": true, "has_storefront": true, "finances": true, "primary_location_id": 63590301885, "checkout_api_supported": true, "multi_location_enabled": true, "setup_required": false, "pre_launch_enabled": false, "enabled_presentment_currencies": ["USD"], "transactional_sms_disabled": false, "marketing_sms_consent_enabled_at_checkout": false, "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953683813}
+{"stream": "smart_collections", "data": {"id": 273278566589, "handle": "test-collection", "title": "Test Collection", "updated_at": "2023-09-05T07:12:04-07:00", "body_html": "updated_mon_24.04.2023", "published_at": "2021-07-19T07:02:54-07:00", "sort_order": "best-selling", "template_suffix": "", "disjunctive": false, "rules": ["{'column': 'type', 'relation': 'equals', 'condition': 'Beauty'}"], "published_scope": "web", "admin_graphql_api_id": "gid://shopify/Collection/273278566589", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953684911}
+{"stream": "tender_transactions", "data": {"id": 4464009117885, "order_id": 5033391718589, "amount": "19.00", "currency": "USD", "user_id": null, "test": false, "processed_at": "2023-04-24T11:00:08-07:00", "remote_reference": null, "payment_details": null, "payment_method": "other", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953685992}
+{"stream": "tender_transactions", "data": {"id": 4448993542333, "order_id": 5010585911485, "amount": "19.00", "currency": "USD", "user_id": null, "test": false, "processed_at": "2023-04-13T05:11:15-07:00", "remote_reference": null, "payment_details": null, "payment_method": "other", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953685994}
+{"stream": "tender_transactions", "data": {"id": 4448992690365, "order_id": 5010584895677, "amount": "102.00", "currency": "USD", "user_id": null, "test": false, "processed_at": "2023-04-13T05:09:44-07:00", "remote_reference": null, "payment_details": null, "payment_method": "other", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953685995}
+{"stream": "transactions", "data": {"id": 6281692217533, "order_id": 5010584895677, "kind": "sale", "gateway": "manual", "status": "success", "message": "Marked the manual payment as received", "created_at": "2023-04-13T05:09:44-07:00", "test": false, "authorization": null, "location_id": null, "user_id": null, "parent_id": null, "processed_at": "2023-04-13T05:09:44-07:00", "device_id": null, "error_code": null, "source_name": "checkout_one", "receipt": {}, "amount": 102.0, "currency": "USD", "payment_id": "r9BerEaVJ5OzQNmPGZsK2V7zq", "total_unsettled_set": {"presentment_money": {"amount": 0.0, "currency": "USD"}, "shop_money": {"amount": 0.0, "currency": "USD"}}, "admin_graphql_api_id": "gid://shopify/OrderTransaction/6281692217533", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953688151}
+{"stream": "transactions", "data": {"id": 6281693561021, "order_id": 5010585911485, "kind": "sale", "gateway": "manual", "status": "success", "message": "Marked the manual payment as received", "created_at": "2023-04-13T05:11:15-07:00", "test": false, "authorization": null, "location_id": null, "user_id": null, "parent_id": null, "processed_at": "2023-04-13T05:11:15-07:00", "device_id": null, "error_code": null, "source_name": "checkout_one", "receipt": {}, "amount": 19.0, "currency": "USD", "payment_id": "rguGpKMnZqzpEzPvDfnSS8x4B", "total_unsettled_set": {"presentment_money": {"amount": 0.0, "currency": "USD"}, "shop_money": {"amount": 0.0, "currency": "USD"}}, "admin_graphql_api_id": "gid://shopify/OrderTransaction/6281693561021", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953688613}
+{"stream": "transactions", "data": {"id": 5721110872253, "order_id": 4554821468349, "kind": "sale", "gateway": "bogus", "status": "success", "message": "Bogus Gateway: Forced success", "created_at": "2022-06-15T05:16:52-07:00", "test": true, "authorization": "53433", "location_id": null, "user_id": null, "parent_id": null, "processed_at": "2022-06-15T05:16:52-07:00", "device_id": null, "error_code": null, "source_name": "580111", "payment_details": {"credit_card_bin": "1", "avs_result_code": null, "cvv_result_code": null, "credit_card_number": "\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 1", "credit_card_company": "Bogus", "buyer_action_info": null, "credit_card_name": "Bogus Gateway", "credit_card_wallet": null, "credit_card_expiration_month": 2, "credit_card_expiration_year": 2025}, "receipt": {"paid_amount": "57.23"}, "amount": 57.23, "currency": "USD", "payment_id": "c25048437719229.1", "total_unsettled_set": {"presentment_money": {"amount": 0.0, "currency": "USD"}, "shop_money": {"amount": 0.0, "currency": "USD"}}, "admin_graphql_api_id": "gid://shopify/OrderTransaction/5721110872253", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953689123}
+{"stream": "customer_address", "data": {"address1": "My Best Accent", "address2": "", "city": "Fair Lawn", "country": "United States", "country_code": "US", "company": "Test Company", "first_name": "New Test", "id": 8092523135165, "last_name": "Customer", "name": "New Test Customer", "phone": "", "province": "New Jersey", "province_code": "NJ", "zip": "07410", "customer_id": 6569096478909, "country_name": "United States", "default": true, "updated_at": "2023-04-24T13:53:48+00:00", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953700866}
+{"stream": "customer_address", "data": {"address1": null, "address2": null, "city": null, "country": null, "country_code": null, "company": null, "first_name": "MArcos", "id": 8212915650749, "last_name": "Millnitz", "name": "MArcos Millnitz", "phone": null, "province": null, "province_code": null, "zip": null, "customer_id": 6676027932861, "country_name": null, "default": true, "updated_at": "2023-07-11T20:07:45+00:00", "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953700867}
+{"stream": "countries", "data": {"id": 417014841533, "name": "Rest of World", "code": "*", "tax_name": "Tax", "tax": 0.0, "provinces": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953701837}
+{"stream": "countries", "data": {"id": 417014808765, "name": "Ukraine", "code": "UA", "tax_name": "PDV", "tax": 0.2, "provinces": [], "shop_url": "airbyte-integration-test"}, "emitted_at": 1708953701838}
diff --git a/airbyte-integrations/connectors/source-shopify/integration_tests/state.json b/airbyte-integrations/connectors/source-shopify/integration_tests/state.json
index 25734860ba98..c29ae675c6c5 100644
--- a/airbyte-integrations/connectors/source-shopify/integration_tests/state.json
+++ b/airbyte-integrations/connectors/source-shopify/integration_tests/state.json
@@ -174,13 +174,13 @@
"updated_at": "2023-04-14T04:04:46-07:00"
},
"product_images": {
- "id": 33290489659581,
"products": {
- "updated_at": "",
+ "updated_at": "2023-04-24T11:05:13-07:00",
"deleted": {
"deleted_at": "2023-09-05T13:32:22-07:00"
}
- }
+ },
+ "updated_at": "2023-04-24T10:27:15-07:00"
},
"metafield_product_images": {
"products": {
diff --git a/airbyte-integrations/connectors/source-shopify/metadata.yaml b/airbyte-integrations/connectors/source-shopify/metadata.yaml
index 0eb582dd457d..a1881ee5550b 100644
--- a/airbyte-integrations/connectors/source-shopify/metadata.yaml
+++ b/airbyte-integrations/connectors/source-shopify/metadata.yaml
@@ -11,7 +11,7 @@ data:
connectorSubtype: api
connectorType: source
definitionId: 9da77001-af33-4bcd-be46-6252bf9342b9
- dockerImageTag: 1.1.8
+ dockerImageTag: 2.0.0
dockerRepository: airbyte/source-shopify
documentationUrl: https://docs.airbyte.com/integrations/sources/shopify
githubIssueLabel: source-shopify
@@ -35,11 +35,37 @@ data:
"This upgrade brings changes to certain streams after migration to
Shopify API version `2023-07`, more details in this PR: https://github.com/airbytehq/airbyte/pull/29361."
upgradeDeadline: "2023-09-17"
+ 2.0.0:
+ message: "This upgrade brings perfomance impovements and stream schema changes. Details are available here: https://github.com/airbytehq/airbyte/pull/32345#issue-1985556333."
+ upgradeDeadline: "2024-03-18"
+ scopedImpact:
+ - scopeType: stream
+ impactedScopes:
+ [
+ "collections",
+ "customer_address",
+ "discount_codes",
+ "fulfillment_orders",
+ "fulfillments",
+ "inventory_items",
+ "inventory_levels",
+ "metafield_collections",
+ "metafield_customers",
+ "metafield_draft_orders",
+ "metafield_locations",
+ "metafield_orders",
+ "metafield_product_images",
+ "metafield_product_variants",
+ "order_refunds",
+ "product_images",
+ "product_variants",
+ "transactions",
+ ]
suggestedStreams:
streams:
- customers
- order_refunds
- - transactions
+ - transactions_graphql
- product_variants
- abandoned_checkouts
- discount_codes
@@ -50,7 +76,6 @@ data:
- inventory_levels
- custom_collections
- fulfillments
- - order_risks
- products_graph_ql
- product_images
- collects
diff --git a/airbyte-integrations/connectors/source-shopify/poetry.lock b/airbyte-integrations/connectors/source-shopify/poetry.lock
index faca58b052f6..ea5d5de6d857 100644
--- a/airbyte-integrations/connectors/source-shopify/poetry.lock
+++ b/airbyte-integrations/connectors/source-shopify/poetry.lock
@@ -312,6 +312,26 @@ files = [
{file = "graphql_core-3.2.3-py3-none-any.whl", hash = "sha256:5766780452bd5ec8ba133f8bf287dc92713e3868ddd83aee4faab9fc3e303dc3"},
]
+[[package]]
+name = "graphql-query"
+version = "1.1.1"
+description = "Complete GraphQL query string generation for python."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "graphql_query-1.1.1-py3-none-any.whl", hash = "sha256:c88e052d5739cbc0c20ed4597892025b2e3c363c75b44a06ea55005f09ecbd3d"},
+ {file = "graphql_query-1.1.1.tar.gz", hash = "sha256:b0f52b560977fdf48c5ca48bb35772d86632018e13e948b10681815a58945b07"},
+]
+
+[package.dependencies]
+jinja2 = ">=3.1,<3.2"
+pydantic = ">=1.10,<1.11"
+
+[package.extras]
+dev = ["black", "mypy", "pylint-pydantic", "ruff", "wheel"]
+docs = ["sphinx", "sphinx-argparse", "sphinx-rtd-theme", "sphinxcontrib-github"]
+test = ["pytest", "pytest-cov", "pytest-mock"]
+
[[package]]
name = "idna"
version = "3.6"
@@ -1037,4 +1057,4 @@ files = [
[metadata]
lock-version = "2.0"
python-versions = "^3.9,<3.12"
-content-hash = "71f6b166e4220683dea93a273110eca25f9680be5842ee802d78a9583f31ee2f"
+content-hash = "d5eb24b58b8ae8d10cc9f421ea1d125ef3833c69a1007e13624990a30bf2070a"
diff --git a/airbyte-integrations/connectors/source-shopify/pyproject.toml b/airbyte-integrations/connectors/source-shopify/pyproject.toml
index 65ae0c202895..e26cb727a7e7 100644
--- a/airbyte-integrations/connectors/source-shopify/pyproject.toml
+++ b/airbyte-integrations/connectors/source-shopify/pyproject.toml
@@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",]
build-backend = "poetry.core.masonry.api"
[tool.poetry]
-version = "1.1.8"
+version = "2.0.0"
name = "source-shopify"
description = "Source CDK implementation for Shopify."
authors = [ "Airbyte ",]
@@ -19,6 +19,7 @@ include = "source_shopify"
python = "^3.9,<3.12"
airbyte-cdk = "==0.59.0"
sgqlc = "==16.3"
+graphql-query = "^1.1.1"
[tool.poetry.scripts]
source-shopify = "source_shopify.run:run"
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/auth.py b/airbyte-integrations/connectors/source-shopify/source_shopify/auth.py
index cba5ea272f26..6d53197ff18a 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/auth.py
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/auth.py
@@ -34,7 +34,6 @@ def __init__(self, config: Mapping[str, Any]):
self.config = config
def get_auth_header(self) -> Mapping[str, Any]:
-
auth_header: str = "X-Shopify-Access-Token"
credentials: Dict = self.config.get("credentials", self.config.get("auth_method"))
auth_method: str = credentials.get("auth_method")
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/customer_address.json b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/customer_address.json
index 31d24b3c458c..a2e9af21f4fc 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/customer_address.json
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/customer_address.json
@@ -55,6 +55,10 @@
},
"shop_url": {
"type": ["null", "string"]
+ },
+ "updated_at": {
+ "type": ["null", "string"],
+ "format": "date-time"
}
}
}
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/customers.json b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/customers.json
index 3baa26ec8d73..c78b7ee47494 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/customers.json
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/customers.json
@@ -214,6 +214,9 @@
"sms_marketing_consent": {
"type": ["null", "object"],
"properties": {
+ "consent_collected_from": {
+ "type": ["null", "string"]
+ },
"consent_updated_at": {
"type": ["null", "string"],
"format": "date-time"
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/discount_codes.json b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/discount_codes.json
index f3e208e014c5..4b864604d486 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/discount_codes.json
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/discount_codes.json
@@ -22,6 +22,15 @@
"type": ["null", "string"],
"format": "date-time"
},
+ "summary": {
+ "type": ["null", "string"]
+ },
+ "discount_type": {
+ "type": ["null", "string"]
+ },
+ "admin_graphql_api_id": {
+ "type": ["null", "string"]
+ },
"shop_url": {
"type": ["null", "string"]
}
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/fulfillment_orders.json b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/fulfillment_orders.json
index 9d810f8a694a..d4644ee66075 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/fulfillment_orders.json
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/fulfillment_orders.json
@@ -54,6 +54,14 @@
},
"method_type": {
"type": ["null", "string"]
+ },
+ "min_delivery_date_time": {
+ "type": ["null", "string"],
+ "format": "date-time"
+ },
+ "max_delivery_date_time": {
+ "type": ["null", "string"],
+ "format": "date-time"
}
}
},
@@ -99,7 +107,7 @@
"shop_id": {
"type": ["null", "integer"]
},
- "fullfillment_order_id": {
+ "fulfillment_order_id": {
"type": ["null", "integer"]
},
"line_item_id": {
@@ -135,7 +143,15 @@
"supported_actions": {
"type": ["null", "array"],
"items": {
- "type": ["null", "string"]
+ "type": ["null", "object"],
+ "properties": {
+ "action": {
+ "type": ["null", "string"]
+ },
+ "external_url": {
+ "type": ["null", "string"]
+ }
+ }
}
},
"merchant_requests": {
@@ -143,6 +159,9 @@
"items": {
"type": ["null", "object"],
"properties": {
+ "id": {
+ "type": ["null", "integer"]
+ },
"message": {
"type": ["null", "string"]
},
@@ -150,7 +169,13 @@
"type": ["null", "string"]
},
"request_options": {
- "type": ["null", "object"]
+ "type": ["null", "object"],
+ "additionalProperties": true,
+ "properties": {
+ "notify_customer": {
+ "type": ["null", "boolean"]
+ }
+ }
}
}
}
@@ -197,6 +222,9 @@
"updated_at": {
"type": ["null", "string"],
"format": "date-time"
+ },
+ "admin_graphql_api_id": {
+ "type": ["null", "string"]
}
}
}
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/fulfillments.json b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/fulfillments.json
index d04a0c3686c6..3b85a5fc97b2 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/fulfillments.json
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/fulfillments.json
@@ -115,6 +115,33 @@
"price": {
"type": ["null", "string"]
},
+ "price_set": {
+ "type": ["null", "object"],
+ "properties": {
+ "shop_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "number"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ },
+ "presentment_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "number"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ }
+ }
+ },
"grams": {
"type": ["null", "number"]
},
@@ -163,6 +190,33 @@
"total_discount": {
"type": ["null", "string"]
},
+ "total_discount_set": {
+ "type": ["null", "object"],
+ "properties": {
+ "shop_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "number"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ },
+ "presentment_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "number"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ }
+ }
+ },
"fulfillment_status": {
"type": ["null", "string"]
},
@@ -174,9 +228,39 @@
"items": {
"type": ["null", "object"],
"properties": {
+ "channel_liable": {
+ "type": ["null", "boolean"]
+ },
"price": {
"type": ["null", "number"]
},
+ "price_set": {
+ "type": ["null", "object"],
+ "properties": {
+ "shop_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "number"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ },
+ "presentment_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "number"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ }
+ }
+ },
"rate": {
"type": ["null", "number"]
},
@@ -185,6 +269,149 @@
}
}
}
+ },
+ "duties": {
+ "type": ["null", "array"],
+ "items": {
+ "type": ["null", "object"],
+ "properties": {
+ "id": {
+ "type": ["null", "string"]
+ },
+ "harmonized_system_code": {
+ "type": ["null", "string"]
+ },
+ "country_code_of_origin": {
+ "type": ["null", "string"]
+ },
+ "shop_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "string"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ },
+ "presentment_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "string"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ },
+ "tax_lines": {
+ "type": ["null", "array"],
+ "items": {
+ "type": ["null", "object"],
+ "properties": {
+ "title": {
+ "type": ["null", "string"]
+ },
+ "price": {
+ "type": ["null", "string"]
+ },
+ "rate": {
+ "type": ["null", "number"]
+ },
+ "price_set": {
+ "type": ["null", "object"],
+ "properties": {
+ "shop_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "string"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ },
+ "presentment_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "string"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ }
+ }
+ },
+ "channel_liable": {
+ "type": ["null", "boolean"]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "discount_allocations": {
+ "type": ["null", "array"],
+ "items": {
+ "type": ["null", "object"],
+ "properties": {
+ "id": {
+ "type": ["null", "string"]
+ },
+ "amount": {
+ "type": ["null", "string"]
+ },
+ "description": {
+ "type": ["null", "string"]
+ },
+ "created_at": {
+ "type": ["null", "string"],
+ "format": "date-time"
+ },
+ "discount_application_index": {
+ "type": ["null", "number"]
+ },
+ "amount_set": {
+ "type": ["null", "object"],
+ "properties": {
+ "shop_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "string"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ },
+ "presentment_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "amount": {
+ "type": ["null", "string"]
+ },
+ "currency_code": {
+ "type": ["null", "string"]
+ }
+ }
+ }
+ }
+ },
+ "application_type": {
+ "type": ["null", "string"]
+ }
+ }
+ }
+ },
+ "admin_graphql_api_id": {
+ "type": ["null", "string"]
}
}
}
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/order_refunds.json b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/order_refunds.json
index aa1b05981036..85b2c167674f 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/order_refunds.json
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/order_refunds.json
@@ -179,6 +179,9 @@
},
"rate": {
"type": ["null", "number"]
+ },
+ "channel_liable": {
+ "type": ["null", "boolean"]
}
},
"type": ["null", "object"]
@@ -196,15 +199,7 @@
"properties": {
"type": ["null", "array"],
"items": {
- "properties": {
- "name": {
- "type": ["null", "string"]
- },
- "value": {
- "type": ["null", "string"]
- }
- },
- "type": ["null", "object"]
+ "type": ["null", "string"]
}
},
"quantity": {
@@ -379,6 +374,45 @@
},
"title": {
"type": ["null", "string"]
+ },
+ "duties": {
+ "type": ["null", "array"],
+ "items": {
+ "type": ["null", "object"],
+ "additionalProperties": true,
+ "properties": {
+ "duty_id": {
+ "type": ["null", "integer"]
+ },
+ "amount_set": {
+ "properties": {
+ "shop_money": {
+ "properties": {
+ "currency_code": {
+ "type": ["null", "string"]
+ },
+ "amount": {
+ "type": ["null", "number"]
+ }
+ },
+ "type": ["null", "object"]
+ },
+ "presentment_money": {
+ "properties": {
+ "currency_code": {
+ "type": ["null", "string"]
+ },
+ "amount": {
+ "type": ["null", "number"]
+ }
+ },
+ "type": ["null", "object"]
+ }
+ },
+ "type": ["null", "object"]
+ }
+ }
+ }
}
},
"type": ["null", "object"]
@@ -473,6 +507,45 @@
},
"user_id": {
"type": ["null", "integer"]
+ },
+ "payment_details": {
+ "type": ["null", "object"],
+ "additionalProperties": true,
+ "properties": {
+ "avs_result_code": {
+ "type": ["null", "string"]
+ },
+ "buyer_action_info": {
+ "type": ["null", "string"]
+ },
+ "credit_card_bin": {
+ "type": ["null", "string"]
+ },
+ "credit_card_company": {
+ "type": ["null", "string"]
+ },
+ "credit_card_expiration_month": {
+ "type": ["null", "integer"]
+ },
+ "credit_card_expiration_year": {
+ "type": ["null", "integer"]
+ },
+ "credit_card_name": {
+ "type": ["null", "string"]
+ },
+ "credit_card_number": {
+ "type": ["null", "string"]
+ },
+ "credit_card_wallet": {
+ "type": ["null", "string"]
+ },
+ "cvv_result_code": {
+ "type": ["null", "string"]
+ }
+ }
+ },
+ "payment_id": {
+ "type": ["null", "string"]
}
}
}
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/orders.json b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/orders.json
index 416b20b7d0f4..f7e975ac9e12 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/orders.json
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/orders.json
@@ -447,6 +447,9 @@
"items": {
"type": ["null", "object"],
"properties": {
+ "channel_liable": {
+ "type": ["null", "boolean"]
+ },
"price": {
"type": ["null", "number"]
},
@@ -837,6 +840,50 @@
"type": ["null", "boolean"]
}
}
+ },
+ "email_marketing_consent": {
+ "type": ["null", "object"],
+ "additionalProperties": true,
+ "properties": {
+ "state": {
+ "type": ["null", "string"]
+ },
+ "opt_in_level": {
+ "type": ["null", "string"]
+ },
+ "consent_updated_at": {
+ "type": ["null", "string"],
+ "format": "date-time"
+ },
+ "consent_collected_from": {
+ "type": ["null", "string"]
+ }
+ }
+ },
+ "sms_marketing_consent": {
+ "type": ["null", "object"],
+ "additionalProperties": true,
+ "properties": {
+ "state": {
+ "type": ["null", "string"]
+ },
+ "opt_in_level": {
+ "type": ["null", "string"]
+ },
+ "consent_updated_at": {
+ "type": ["null", "string"],
+ "format": "date-time"
+ },
+ "consent_collected_from": {
+ "type": ["null", "string"]
+ }
+ }
+ },
+ "tax_exemptions": {
+ "type": ["null", "array"],
+ "items": {
+ "type": ["null", "string"]
+ }
}
}
},
@@ -1157,6 +1204,9 @@
"items": {
"type": ["null", "object"],
"properties": {
+ "channel_liable": {
+ "type": ["null", "boolean"]
+ },
"price": {
"type": ["null", "number"]
},
@@ -1341,6 +1391,30 @@
}
}
}
+ },
+ "origin_address": {
+ "type": ["null", "object"],
+ "additionalProperties": true,
+ "properties": {
+ "address1": {
+ "type": ["null", "string"]
+ },
+ "address2": {
+ "type": ["null", "string"]
+ },
+ "city": {
+ "type": ["null", "string"]
+ },
+ "country_code": {
+ "type": ["null", "string"]
+ },
+ "province_code": {
+ "type": ["null", "string"]
+ },
+ "zip": {
+ "type": ["null", "string"]
+ }
+ }
}
}
}
@@ -1547,6 +1621,9 @@
"items": {
"type": ["null", "object"],
"properties": {
+ "channel_liable": {
+ "type": ["null", "boolean"]
+ },
"price": {
"type": ["null", "number"]
},
@@ -1915,6 +1992,45 @@
},
"user_id": {
"type": ["null", "integer"]
+ },
+ "payment_details": {
+ "type": ["null", "object"],
+ "additionalProperties": true,
+ "properties": {
+ "avs_result_code": {
+ "type": ["null", "string"]
+ },
+ "buyer_action_info": {
+ "type": ["null", "string"]
+ },
+ "credit_card_bin": {
+ "type": ["null", "string"]
+ },
+ "credit_card_company": {
+ "type": ["null", "string"]
+ },
+ "credit_card_expiration_month": {
+ "type": ["null", "integer"]
+ },
+ "credit_card_expiration_year": {
+ "type": ["null", "integer"]
+ },
+ "credit_card_name": {
+ "type": ["null", "string"]
+ },
+ "credit_card_number": {
+ "type": ["null", "string"]
+ },
+ "credit_card_wallet": {
+ "type": ["null", "string"]
+ },
+ "cvv_result_code": {
+ "type": ["null", "string"]
+ }
+ }
+ },
+ "payment_id": {
+ "type": ["null", "string"]
}
}
}
@@ -2130,6 +2246,9 @@
"items": {
"type": ["null", "object"],
"properties": {
+ "channel_liable": {
+ "type": ["null", "boolean"]
+ },
"price": {
"type": ["null", "string"]
},
@@ -2209,11 +2328,116 @@
}
}
}
+ },
+ "duties": {
+ "type": ["null", "array"],
+ "items": {
+ "type": ["null", "object"],
+ "additionalProperties": true,
+ "properties": {
+ "duty_id": {
+ "type": ["null", "integer"]
+ },
+ "amount_set": {
+ "properties": {
+ "shop_money": {
+ "properties": {
+ "currency_code": {
+ "type": ["null", "string"]
+ },
+ "amount": {
+ "type": ["null", "number"]
+ }
+ },
+ "type": ["null", "object"]
+ },
+ "presentment_money": {
+ "properties": {
+ "currency_code": {
+ "type": ["null", "string"]
+ },
+ "amount": {
+ "type": ["null", "number"]
+ }
+ },
+ "type": ["null", "object"]
+ }
+ },
+ "type": ["null", "object"]
+ }
+ }
+ }
}
}
}
}
}
+ },
+ "duties": {
+ "type": ["null", "array"],
+ "items": {
+ "type": ["null", "object"],
+ "additionalProperties": true,
+ "properties": {
+ "duty_id": {
+ "type": ["null", "integer"]
+ },
+ "amount_set": {
+ "properties": {
+ "shop_money": {
+ "properties": {
+ "currency_code": {
+ "type": ["null", "string"]
+ },
+ "amount": {
+ "type": ["null", "number"]
+ }
+ },
+ "type": ["null", "object"]
+ },
+ "presentment_money": {
+ "properties": {
+ "currency_code": {
+ "type": ["null", "string"]
+ },
+ "amount": {
+ "type": ["null", "number"]
+ }
+ },
+ "type": ["null", "object"]
+ }
+ },
+ "type": ["null", "object"]
+ }
+ }
+ }
+ },
+ "total_duties_set": {
+ "type": ["null", "object"],
+ "properties": {
+ "shop_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "currency_code": {
+ "type": ["null", "string"]
+ },
+ "amount": {
+ "type": ["null", "number"]
+ }
+ }
+ },
+ "presentment_money": {
+ "type": ["null", "object"],
+ "properties": {
+ "currency_code": {
+ "type": ["null", "string"]
+ },
+ "amount": {
+ "type": ["null", "number"]
+ }
+ }
+ }
+ }
}
}
}
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/products.json b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/products.json
index c97a60b74645..f70f3ecb39e7 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/products.json
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/products.json
@@ -94,6 +94,9 @@
},
"width": {
"type": ["null", "integer"]
+ },
+ "product_id": {
+ "type": ["null", "integer"]
}
},
"type": ["null", "object"]
@@ -139,6 +142,9 @@
},
"width": {
"type": ["null", "integer"]
+ },
+ "product_id": {
+ "type": ["null", "integer"]
}
},
"type": ["null", "object"]
@@ -255,6 +261,9 @@
},
"option3": {
"type": ["null", "string"]
+ },
+ "product_id": {
+ "type": ["null", "integer"]
}
},
"type": ["null", "object"]
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/transactions.json b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/transactions.json
index f8a05c8091f5..cec14d1d20b2 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/transactions.json
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/schemas/transactions.json
@@ -57,6 +57,9 @@
},
"currency_code": {
"type": ["null", "string"]
+ },
+ "currency": {
+ "type": ["null", "string"]
}
}
},
@@ -68,6 +71,9 @@
},
"currency_code": {
"type": ["null", "string"]
+ },
+ "currency": {
+ "type": ["null", "string"]
}
}
}
@@ -77,8 +83,13 @@
"type": ["null", "string"]
},
"payment_details": {
+ "type": ["null", "object"],
+ "additionalProperties": true,
"properties": {
- "cvv_result_code": {
+ "avs_result_code": {
+ "type": ["null", "string"]
+ },
+ "buyer_action_info": {
"type": ["null", "string"]
},
"credit_card_bin": {
@@ -87,14 +98,25 @@
"credit_card_company": {
"type": ["null", "string"]
},
+ "credit_card_expiration_month": {
+ "type": ["null", "integer"]
+ },
+ "credit_card_expiration_year": {
+ "type": ["null", "integer"]
+ },
+ "credit_card_name": {
+ "type": ["null", "string"]
+ },
"credit_card_number": {
"type": ["null", "string"]
},
- "avs_result_code": {
+ "credit_card_wallet": {
+ "type": ["null", "string"]
+ },
+ "cvv_result_code": {
"type": ["null", "string"]
}
- },
- "type": ["null", "object"]
+ }
},
"processed_at": {
"type": ["null", "string"],
@@ -107,21 +129,29 @@
"type": ["null", "string"]
},
"receipt": {
- "type": ["null", "object"],
- "properties": {
- "fee_amount": {
- "type": ["null", "number"],
- "multipleOf": 1e-10
- },
- "gross_amount": {
- "type": ["null", "number"],
- "multipleOf": 1e-10
+ "oneOf": [
+ {
+ "type": ["null", "object"],
+ "additionalProperties": true,
+ "properties": {
+ "fee_amount": {
+ "type": ["null", "number"],
+ "multipleOf": 1e-10
+ },
+ "gross_amount": {
+ "type": ["null", "number"],
+ "multipleOf": 1e-10
+ },
+ "tax_amount": {
+ "type": ["null", "number"],
+ "multipleOf": 1e-10
+ }
+ }
},
- "tax_amount": {
- "type": ["null", "number"],
- "multipleOf": 1e-10
+ {
+ "type": ["null", "string"]
}
- }
+ ]
},
"location_id": {
"type": ["null", "integer"]
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/scopes.py b/airbyte-integrations/connectors/source-shopify/source_shopify/scopes.py
new file mode 100644
index 000000000000..805acc1f8d68
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/scopes.py
@@ -0,0 +1,157 @@
+#
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+#
+
+
+import logging
+from typing import Any, Iterable, List, Mapping, Optional
+
+import requests
+from requests.exceptions import ConnectionError, InvalidURL, JSONDecodeError, SSLError
+
+from .utils import ShopifyAccessScopesError, ShopifyBadJsonError, ShopifyConnectionError, ShopifyWrongShopNameError
+
+SCOPES_MAPPING: Mapping[str, set[str]] = {
+ # SCOPE: read_customers
+ "Customers": ("read_customers",),
+ "MetafieldCustomers": ("read_customers",),
+ "CustomerSavedSearch": ("read_customers",),
+ "CustomerAddress": ("read_customers",),
+ # SCOPE: read_orders
+ "Orders": ("read_orders",),
+ "AbandonedCheckouts": ("read_orders",),
+ "TenderTransactions": ("read_orders",),
+ "Transactions": ("read_orders",),
+ "TransactionsGraphql": ("read_orders",),
+ "Fulfillments": ("read_orders",),
+ "OrderRefunds": ("read_orders",),
+ "OrderRisks": ("read_orders",),
+ "MetafieldOrders": ("read_orders",),
+ # SCOPE: read_draft_orders
+ "DraftOrders": ("read_draft_orders",),
+ "MetafieldDraftOrders": ("read_draft_orders",),
+ # SCOPE: read_products
+ "Products": ("read_products",),
+ "ProductsGraphQl": ("read_products",),
+ "MetafieldProducts": ("read_products",),
+ "ProductImages": ("read_products",),
+ "MetafieldProductImages": ("read_products",),
+ "MetafieldProductVariants": ("read_products",),
+ "CustomCollections": ("read_products",),
+ "Collects": ("read_products",),
+ "ProductVariants": ("read_products",),
+ "MetafieldCollections": ("read_products",),
+ "SmartCollections": ("read_products",),
+ "MetafieldSmartCollections": ("read_products",),
+ # SCOPE: read_products, read_publications
+ "Collections": ("read_products", "read_publications"),
+ # SCOPE: read_content
+ "Pages": ("read_content",),
+ "MetafieldPages": ("read_content",),
+ # SCOPE: read_price_rules
+ "PriceRules": ("read_price_rules",),
+ # SCOPE: read_discounts
+ "DiscountCodes": ("read_discounts",),
+ # SCOPE: read_locations
+ "Locations": ("read_locations",),
+ "MetafieldLocations": ("read_locations",),
+ # SCOPE: read_inventory
+ "InventoryItems": ("read_inventory",),
+ "InventoryLevels": ("read_inventory",),
+ # SCOPE: read_merchant_managed_fulfillment_orders
+ "FulfillmentOrders": ("read_merchant_managed_fulfillment_orders",),
+ # SCOPE: read_shopify_payments_payouts
+ "BalanceTransactions": ("read_shopify_payments_payouts",),
+ "Disputes": ("read_shopify_payments_payouts",),
+ # SCOPE: read_online_store_pages
+ "Articles": ("read_online_store_pages",),
+ "MetafieldArticles": ("read_online_store_pages",),
+ "Blogs": ("read_online_store_pages",),
+ "MetafieldBlogs": ("read_online_store_pages",),
+}
+
+ALWAYS_PERMITTED_STREAMS: List[str] = [
+ "MetafieldShops",
+ "Shop",
+ "Countries",
+]
+
+
+class ShopifyScopes:
+
+ # define default logger
+ logger = logging.getLogger("airbyte")
+
+ def __init__(self, config: Mapping[str, Any]) -> None:
+ self.user_scopes = self.get_user_scopes(config)
+ # for each stream check the authenticated user has all scopes required
+ self.get_streams_from_user_scopes()
+ # log if there are streams missing scopes and should be omitted
+ self.emit_missing_scopes()
+
+ # the list of validated streams
+ permitted_streams: List[str] = ALWAYS_PERMITTED_STREAMS
+ # the list of not permitted streams
+ not_permitted_streams: List[set[str, str]] = []
+ # template for the log message
+ missing_scope_message: str = (
+ "The stream `{stream}` could not be synced without the `{scope}` scope. Please check the `{scope}` is granted."
+ )
+
+ @staticmethod
+ def get_user_scopes(config) -> list[Any]:
+ session = requests.Session()
+ url = f"https://{config['shop']}.myshopify.com/admin/oauth/access_scopes.json"
+ headers = config["authenticator"].get_auth_header()
+ try:
+ response = session.get(url, headers=headers).json()
+ access_scopes = [scope.get("handle") for scope in response.get("access_scopes")]
+ except InvalidURL:
+ raise ShopifyWrongShopNameError(url)
+ except JSONDecodeError as json_error:
+ raise ShopifyBadJsonError(json_error)
+ except (SSLError, ConnectionError) as con_error:
+ raise ShopifyConnectionError(con_error)
+
+ if access_scopes:
+ return access_scopes
+ else:
+ raise ShopifyAccessScopesError(response)
+
+ def log_missing_scope(self, not_permitted_stream: Mapping[str, Any]) -> str:
+ stream_name, scope = not_permitted_stream
+ self.logger.warning(self.missing_scope_message.format(stream=stream_name, scope=scope))
+
+ def emit_missing_scopes(self) -> Optional[Iterable[List[str]]]:
+ if len(self.not_permitted_streams) > 0:
+ for not_permitted_stream in self.not_permitted_streams:
+ self.log_missing_scope(not_permitted_stream)
+
+ def get_permitted_streams(self) -> List[str]:
+ # return the list of validated streams
+ return self.permitted_streams
+
+ def not_permitted_streams_names(self) -> List[str]:
+ return [not_permitted[0] for not_permitted in self.not_permitted_streams]
+
+ def stream_has_no_missing_scopes(self, stream_name: str) -> bool:
+ return stream_name not in self.not_permitted_streams_names()
+
+ def check_user_has_stream_scope(self, stream_name: str, scope: str) -> None:
+ if scope not in self.user_scopes:
+ self.not_permitted_streams.append((stream_name, scope))
+
+ def register_permitted_stream(self, stream_name: str) -> None:
+ # allow stream only if there is a complete match with required scopes
+ if self.stream_has_no_missing_scopes(stream_name):
+ self.permitted_streams.append(stream_name)
+
+ def validate_stream_scopes(self, stream_name: str, scopes_required: str) -> None:
+ for scope in scopes_required:
+ self.check_user_has_stream_scope(stream_name, scope)
+
+ def get_streams_from_user_scopes(self) -> None:
+ # for each stream check the authenticated user has all scopes required
+ for stream_name, stream_scopes in SCOPES_MAPPING.items():
+ self.validate_stream_scopes(stream_name, stream_scopes)
+ self.register_permitted_stream(stream_name)
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/exceptions.py b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/exceptions.py
new file mode 100644
index 000000000000..51a0a0b004ff
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/exceptions.py
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+#
+
+
+from airbyte_cdk.utils import AirbyteTracedException
+from airbyte_protocol.models import FailureType
+
+
+class ShopifyBulkExceptions:
+ class BaseBulkException(AirbyteTracedException):
+ def __init__(self, message: str, **kwargs) -> None:
+ super().__init__(internal_message=message, failure_type=FailureType.config_error, **kwargs)
+
+ class BulkJobError(BaseBulkException):
+ """Raised when there are BULK Job Errors in response"""
+
+ class BulkJobUnknownError(BaseBulkException):
+ """Raised when BULK Job has FAILED with Unknown status"""
+
+ class BulkJobBadResponse(BaseBulkException):
+ """Raised when the requests.Response object could not be parsed"""
+
+ class BulkJobResultUrlError(BaseBulkException):
+ """Raised when BULK Job has ACCESS_DENIED status"""
+
+ class BulkRecordProduceError(BaseBulkException):
+ """Raised when there are error producing records from BULK Job result"""
+
+ class BulkJobFailed(BaseBulkException):
+ """Raised when BULK Job has FAILED status"""
+
+ class BulkJobTimout(BaseBulkException):
+ """Raised when BULK Job has TIMEOUT status"""
+
+ class BulkJobAccessDenied(BaseBulkException):
+ """Raised when BULK Job has ACCESS_DENIED status"""
+
+ class BulkJobConcurrentError(BaseBulkException):
+ """Raised when BULK Job could not be created, since the 1 Bulk job / shop quota is exceeded."""
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/job.py b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/job.py
new file mode 100644
index 000000000000..127b87161762
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/job.py
@@ -0,0 +1,262 @@
+#
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+#
+
+import logging
+from dataclasses import dataclass, field
+from enum import Enum
+from time import sleep, time
+from typing import Any, Iterable, List, Mapping, Optional, Union
+
+import requests
+from airbyte_cdk import AirbyteLogger
+from requests.exceptions import JSONDecodeError
+from source_shopify.utils import ApiTypeEnum
+from source_shopify.utils import ShopifyRateLimiter as limiter
+
+from .exceptions import AirbyteTracedException, ShopifyBulkExceptions
+from .query import ShopifyBulkTemplates
+from .tools import END_OF_FILE, BulkTools
+
+
+class ShopifyBulkStatus(Enum):
+ CREATED = "CREATED"
+ COMPLETED = "COMPLETED"
+ RUNNING = "RUNNING"
+ FAILED = "FAILED"
+ TIMEOUT = "TIMEOUT"
+ ACCESS_DENIED = "ACCESS_DENIED"
+
+
+@dataclass
+class ShopifyBulkManager:
+ session: requests.Session
+ base_url: str
+
+ # 5Mb chunk size to save the file
+ retrieve_chunk_size: int = 1024 * 1024 * 5
+ # time between job status checks
+ job_check_interval_sec: int = 5
+
+ # PLATFORM HEARTBEAT NOTES:
+ # 30 sec / attempt * 19 attempts = 570 sec of wait time in total,
+ # which is < 10 min of retrying, before Heartbeat will kill the source as non-responsive
+
+ # sleep time per creation attempt
+ concurrent_interval_sec = 30
+ # max attempts for job creation
+ concurrent_max_retry: int = 19
+
+ # attempt limit indicator
+ concurrent_max_attempt_reached: bool = field(init=False, default=False)
+ # attempt counter
+ concurrent_attempt: int = field(init=False, default=0)
+
+ # default logger
+ logger: AirbyteLogger = field(init=False, default=logging.getLogger("airbyte"))
+
+ # currents: job_id, job_state
+ job_id: Optional[str] = field(init=False, default=None)
+ job_state: ShopifyBulkStatus = field(init=False, default=None)
+
+ @property
+ def tools(self) -> BulkTools:
+ return BulkTools()
+
+ @property
+ def job_state_to_fn_map(self) -> Mapping[str, Any]:
+ return {
+ ShopifyBulkStatus.CREATED.value: self.on_created_job,
+ ShopifyBulkStatus.COMPLETED.value: self.on_completed_job,
+ ShopifyBulkStatus.RUNNING.value: self.on_running_job,
+ ShopifyBulkStatus.TIMEOUT.value: self.on_timeout_job,
+ ShopifyBulkStatus.FAILED.value: self.on_failed_job,
+ ShopifyBulkStatus.ACCESS_DENIED.value: self.on_access_denied_job,
+ }
+
+ def __reset_state(self) -> None:
+ # set current job state to default value
+ self.job_state, self.job_id = None, None
+
+ def job_completed(self) -> bool:
+ return self.job_state == ShopifyBulkStatus.COMPLETED.value
+
+ def log_state(self) -> None:
+ self.logger.info(f"The BULK Job: `{self.job_id}` is {self.job_state}.")
+
+ def job_get_state_args(self) -> Mapping[str, Any]:
+ return {
+ "method": "POST",
+ "url": self.base_url,
+ "data": ShopifyBulkTemplates.status(self.job_id),
+ "headers": {"Content-Type": "application/graphql"},
+ }
+
+ def job_get_result(self, response: Optional[requests.Response] = None) -> Optional[str]:
+ job_result_url = response.json().get("data", {}).get("node", {}).get("url") if response else None
+ if job_result_url:
+ # save to local file using chunks to avoid OOM
+ filename = self.tools.filename_from_url(job_result_url)
+ with self.session.get(job_result_url, stream=True) as response:
+ response.raise_for_status()
+ with open(filename, "wb") as file:
+ for chunk in response.iter_content(chunk_size=self.retrieve_chunk_size):
+ file.write(chunk)
+ # add `` line to the bottom of the saved data for easy parsing
+ file.write(END_OF_FILE.encode())
+ return filename
+
+ def job_update_state(self, response: Optional[requests.Response] = None) -> None:
+ if response:
+ self.job_state = response.json().get("data", {}).get("node", {}).get("status")
+ self.log_state()
+
+ def on_created_job(self, **kwargs) -> None:
+ pass
+
+ def on_running_job(self, **kwargs) -> None:
+ sleep(self.job_check_interval_sec)
+
+ def on_completed_job(self, **kwargs) -> None:
+ pass
+
+ def on_failed_job(self, response: requests.Response) -> AirbyteTracedException:
+ raise ShopifyBulkExceptions.BulkJobFailed(
+ f"The BULK Job: `{self.job_id}` exited with {self.job_state}, details: {response.text}",
+ )
+
+ def on_timeout_job(self, **kwargs) -> AirbyteTracedException:
+ raise ShopifyBulkExceptions.BulkJobTimout(
+ f"The BULK Job: `{self.job_id}` exited with {self.job_state}, please reduce the `GraphQL BULK Date Range in Days` in SOURCES > Your Shopify Source > SETTINGS.",
+ )
+
+ def on_access_denied_job(self, **kwagrs) -> AirbyteTracedException:
+ raise ShopifyBulkExceptions.BulkJobAccessDenied(
+ f"The BULK Job: `{self.job_id}` exited with {self.job_state}, please check your PERMISSION to fetch the data for this stream.",
+ )
+
+ def on_job_with_errors(self, errors: List[Mapping[str, Any]]) -> AirbyteTracedException:
+ raise ShopifyBulkExceptions.BulkJobUnknownError(f"Could not validate the status of the BULK Job `{self.job_id}`. Errors: {errors}.")
+
+ @limiter.balance_rate_limit(api_type=ApiTypeEnum.graphql.value)
+ def job_check_for_errors(self, response: requests.Response) -> Iterable[Mapping[str, Any]]:
+ try:
+ return response.json().get("errors") or response.json().get("data", {}).get("bulkOperationRunQuery", {}).get("userErrors", [])
+ except (Exception, JSONDecodeError) as e:
+ raise ShopifyBulkExceptions.BulkJobBadResponse(
+ f"Couldn't check the `response` for `errors`, response: `{response.text}`. Trace: {repr(e)}."
+ )
+
+ def job_track_running(self) -> Union[AirbyteTracedException, requests.Response]:
+ # format Job state check args
+ status_args = self.job_get_state_args()
+ # re-use of `self._session(*, **)` to make BULK Job status checks
+ response = self.session.request(**status_args)
+ # errors check
+ errors = self.job_check_for_errors(response)
+ if not errors:
+ self.job_update_state(response)
+ self.job_state_to_fn_map.get(self.job_state)(response=response)
+ return response
+ else:
+ # execute ERRORS scenario
+ self.on_job_with_errors(errors)
+
+ def job_check_state(self) -> Optional[str]:
+ while not self.job_completed():
+ response = self.job_track_running()
+ # return `job_result_url` when status is `COMPLETED`
+ return self.job_get_result(response)
+
+ def has_running_concurrent_job(self, errors: Optional[Iterable[Mapping[str, Any]]] = None) -> bool:
+ """
+ When concurent BULK Job is already running for the same SHOP we receive:
+ Error example:
+ [
+ {
+ 'field': None,
+ 'message': 'A bulk query operation for this app and shop is already in progress: gid://shopify/BulkOperation/4039184154813.',
+ }
+ ]
+ """
+
+ concurent_job_pattern = "A bulk query operation for this app and shop is already in progress"
+ # the errors are handled in `job_job_check_for_errors`
+ if errors:
+ for error in errors:
+ message = error.get("message", "")
+ if concurent_job_pattern in message:
+ return True
+ # reset the `concurrent_attempt` counter, once there is no concurrent job error
+ self.concurrent_attempt = 0
+ return False
+
+ def has_reached_max_concurrency_attempt(self) -> bool:
+ return self.concurrent_attempt == self.concurrent_max_retry
+
+ def job_retry_concurrent(self, request: requests.PreparedRequest) -> Optional[requests.Response]:
+ # increment attempt
+ self.concurrent_attempt += 1
+ # try to execute previous request, it's handy because we can retry / each slice yielded
+ self.logger.warning(
+ f"The BULK concurrency limit has reached. Waiting {self.concurrent_interval_sec} sec before retry, atttempt: {self.concurrent_attempt}.",
+ )
+ sleep(self.concurrent_interval_sec)
+ # retry current `request`
+ return self.job_healthcheck(self.session.send(request))
+
+ def job_get_id(self, response: requests.Response) -> Optional[str]:
+ response_data = response.json()
+ bulk_response = response_data.get("data", {}).get("bulkOperationRunQuery", {}).get("bulkOperation", {})
+ if bulk_response and bulk_response.get("status") == ShopifyBulkStatus.CREATED.value:
+ job_id = bulk_response.get("id")
+ self.logger.info(f"The BULK Job: `{job_id}` is {ShopifyBulkStatus.CREATED.value}")
+ return job_id
+ else:
+ return None
+
+ def job_retry_on_concurrency(self, request: requests.PreparedRequest) -> Union[AirbyteTracedException, Optional[requests.Response]]:
+ if self.has_reached_max_concurrency_attempt():
+ # indicate we're out of attempts to retry with job creation
+ message = f"The BULK Job couldn't be created at this time, since another job is running."
+ # log the message
+ self.logger.error(message)
+ # raise AibyteTracebackException with `INCOMPLETE` status
+ raise ShopifyBulkExceptions.BulkJobConcurrentError(message)
+ else:
+ return self.job_retry_concurrent(request)
+
+ def job_healthcheck(self, response: requests.Response) -> Optional[requests.Response]:
+ # errors check
+ errors = self.job_check_for_errors(response)
+ # when the concurrent job takes place, we typically need to wait and retry, but no longer than 10 min.
+ if not self.has_running_concurrent_job(errors):
+ return response if not errors else None
+ else:
+ # get the latest request to retry
+ request: requests.PreparedRequest = response.request
+ return self.job_retry_on_concurrency(request)
+
+ @limiter.balance_rate_limit(api_type=ApiTypeEnum.graphql.value)
+ def job_check(self, created_job_response: requests.Response) -> Optional[str]:
+ """
+ This method checks the status for the BULK Job created, using it's `ID`.
+ The time spent for the Job execution is tracked to understand the effort.
+ """
+ job_response = self.job_healthcheck(created_job_response)
+ self.job_id: str = self.job_get_id(job_response)
+ job_started = time()
+ try:
+ return self.job_check_state()
+ except (
+ ShopifyBulkExceptions.BulkJobFailed,
+ ShopifyBulkExceptions.BulkJobTimout,
+ ShopifyBulkExceptions.BulkJobAccessDenied,
+ ShopifyBulkExceptions.BulkJobUnknownError,
+ ) as bulk_job_error:
+ raise bulk_job_error
+ finally:
+ time_elapsed = round((time() - job_started), 3)
+ self.logger.info(f"The BULK Job: `{self.job_id}` time elapsed: {time_elapsed} sec.")
+ # reset the state for COMPLETED job
+ self.__reset_state()
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/query.py b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/query.py
new file mode 100644
index 000000000000..c614def08dfa
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/query.py
@@ -0,0 +1,1484 @@
+#
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+#
+
+
+from abc import abstractmethod
+from dataclasses import dataclass
+from enum import Enum
+from string import Template
+from typing import Any, Iterable, List, Mapping, MutableMapping, Optional, Union
+
+from attr import dataclass
+from graphql_query import Argument, Field, InlineFragment, Operation, Query
+
+from .tools import BULK_PARENT_KEY, BulkTools
+
+
+class ShopifyBulkTemplates:
+ @staticmethod
+ def status(bulk_job_id: str) -> str:
+ return Template(
+ """query {
+ node(id: "$job_id") {
+ ... on BulkOperation {
+ id
+ status
+ errorCode
+ objectCount
+ fileSize
+ url
+ partialDataUrl
+ }
+ }
+ }"""
+ ).substitute(job_id=bulk_job_id)
+
+ @staticmethod
+ def prepare(query: str) -> str:
+ bulk_template = Template(
+ '''mutation {
+ bulkOperationRunQuery(
+ query: """
+ $query
+ """
+ ) {
+ bulkOperation {
+ id
+ status
+ }
+ userErrors {
+ field
+ message
+ }
+ }
+ }'''
+ )
+ return bulk_template.substitute(query=query)
+
+
+@dataclass
+class ShopifyBulkQuery:
+ shop_id: int
+
+ @property
+ def tools(self) -> BulkTools:
+ return BulkTools()
+
+ @property
+ @abstractmethod
+ def query_name(self) -> str:
+ """
+ Defines the root graph node name to fetch from: https://shopify.dev/docs/api/admin-graphql
+ """
+
+ @property
+ def record_composition(self) -> Optional[Mapping[str, Any]]:
+ """
+ Example:
+ {
+ "new_record": "Collection", // the GQL Typename of the parent entity
+ "record_components": [
+ "CollectionPublication" // each `collection` has List `publications`
+ ],
+ }
+ """
+ return {}
+
+ @property
+ def sort_key(self) -> Optional[str]:
+ """
+ The field name by which the records are ASC sorted, if defined.
+ """
+ return None
+
+ @property
+ def query_nodes(self) -> Optional[Union[List[Field], List[str]]]:
+ """
+ Defines the fields for final graph selection.
+ https://shopify.dev/docs/api/admin-graphql
+ """
+ return ["__typename", "id"]
+
+ def get(self, filter_field: Optional[str] = None, start: Optional[str] = None, end: Optional[str] = None) -> str:
+ # define filter query string, if passed
+ filter_query = f"{filter_field}:>='{start}' AND {filter_field}:<='{end}'" if filter_field else None
+ # building query
+ query: Query = self.query(filter_query)
+ # resolving
+ return self.resolve(query)
+
+ def query(self, filter_query: Optional[str] = None) -> Query:
+ """
+ Overide this method, if you need to customize query build logic.
+ Output example to BULK query `` with `filter query`:
+ {
+ (query: "") {
+ edges {
+ node {
+ id
+ }
+ }
+ }
+ }
+ """
+ # return the constructed query operation
+ return self.build(self.query_name, self.query_nodes, filter_query)
+
+ def build(
+ self,
+ name: str,
+ edges: Optional[Union[List[Field], List[InlineFragment], Field, InlineFragment]] = None,
+ filter_query: Optional[str] = None,
+ additional_query_args: Optional[Mapping[str, Any]] = None,
+ ) -> Query:
+ """
+ Defines the root of the graph with edges.
+ """
+ query_args: List[Argument] = []
+ # constructing arguments
+ if filter_query:
+ query_args.append(Argument(name="query", value=f'"{filter_query}"'))
+ if self.sort_key:
+ query_args.append(Argument(name="sortKey", value=self.sort_key))
+ if additional_query_args:
+ for k, v in additional_query_args.items():
+ query_args.append(Argument(name=k, value=v))
+ # constructing edges
+ query_fields = [
+ Field(name="edges", fields=[Field(name="node", fields=edges if edges else ["id"])]),
+ ]
+ # return constucted query
+ return Query(name=name, arguments=query_args, fields=query_fields)
+
+ def resolve(self, query: Query) -> str:
+ """
+ Default query resolver from type(Operation) > type(str).
+ Overide this method to build multiple queries in one, if needed.
+ """
+ # return the constructed query operation
+ return Operation(type="", queries=[query]).render()
+
+ def record_process_components(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ """
+ Defines how to process collected components, default `as is`.
+ """
+ yield record
+
+
+class MetafieldType(Enum):
+ CUSTOMERS = "customers"
+ ORDERS = "orders"
+ DRAFT_ORDERS = "draftOrders"
+ PRODUCTS = "products"
+ PRODUCT_IMAGES = ["products", "images"]
+ PRODUCT_VARIANTS = "productVariants"
+ COLLECTIONS = "collections"
+ LOCATIONS = "locations"
+
+
+class Metafield(ShopifyBulkQuery):
+ """
+ Only 2 lvl nesting is available: https://shopify.dev/docs/api/usage/bulk-operations/queries#operation-restrictions
+ Output example to BULK query `customers.metafields` with `filter query` by `updated_at` sorted `ASC`:
+ {
+ (
+ query: "updated_at:>='2023-04-13' AND updated_at:<='2023-12-01'"
+ sortKey: UPDATED_AT
+ ) {
+ edges {
+ node {
+ __typename
+ id
+ metafields {
+ edges {
+ node {
+ __typename
+ id
+ namespace
+ value
+ key
+ description
+ createdAt
+ updatedAt
+ type
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ sort_key = "UPDATED_AT"
+ record_composition = {"new_record": "Metafield"}
+
+ metafield_fields: List[Field] = [
+ "__typename",
+ "id",
+ "namespace",
+ "value",
+ "key",
+ "description",
+ "createdAt",
+ "updatedAt",
+ "type",
+ ]
+
+ @property
+ def query_name(self) -> str:
+ if isinstance(self.type.value, list):
+ return self.type.value[0]
+ elif isinstance(self.type.value, str):
+ return self.type.value
+
+ @property
+ @abstractmethod
+ def type(self) -> MetafieldType:
+ """
+ Defines the Metafield type to fetch, see `MetafieldType` for more info.
+ """
+
+ def get_edge_node(self, name: str, fields: Union[List[str], List[Field], str]) -> Field:
+ """
+ Defines the edge of the graph and it's fields to select for Shopify BULK Operaion.
+ https://shopify.dev/docs/api/usage/bulk-operations/queries#the-jsonl-data-format
+ """
+ return Field(name=name, fields=[Field(name="edges", fields=[Field(name="node", fields=fields)])])
+
+ @property
+ def query_nodes(self) -> List[Field]:
+ """
+ List of available fields:
+ https://shopify.dev/docs/api/admin-graphql/unstable/objects/Metafield
+ """
+ # define metafield node
+ metafield_node = self.get_edge_node("metafields", self.metafield_fields)
+
+ if isinstance(self.type.value, list):
+ return ["__typename", "id", self.get_edge_node(self.type.value[1], ["__typename", "id", metafield_node])]
+ elif isinstance(self.type.value, str):
+ return ["__typename", "id", metafield_node]
+
+ def record_process_components(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ # resolve parent id from `str` to `int`
+ record["owner_id"] = self.tools.resolve_str_id(record.get(BULK_PARENT_KEY))
+ # add `owner_resource` field
+ record["owner_resource"] = self.tools.camel_to_snake(record.get(BULK_PARENT_KEY, "").split("/")[3])
+ # remove `__parentId` from record
+ record.pop(BULK_PARENT_KEY, None)
+ # convert dates from ISO-8601 to RFC-3339
+ record["createdAt"] = self.tools.from_iso8601_to_rfc3339(record, "createdAt")
+ record["updatedAt"] = self.tools.from_iso8601_to_rfc3339(record, "updatedAt")
+ record = self.tools.fields_names_to_snake_case(record)
+ yield record
+
+
+class MetafieldCollection(Metafield):
+ """
+ {
+ collections(query: "updated_at:>='2023-02-07T00:00:00+00:00' AND updated_at:<='2023-12-04T00:00:00+00:00'", sortKey: UPDATED_AT) {
+ edges {
+ node {
+ id
+ metafields {
+ edges {
+ node {
+ id
+ namespace
+ value
+ key
+ description
+ createdAt
+ updatedAt
+ type
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ type = MetafieldType.COLLECTIONS
+
+
+class MetafieldCustomer(Metafield):
+ """
+ {
+ customers(query: "updated_at:>='2023-02-07T00:00:00+00:00' AND updated_at:<='2023-12-04T00:00:00+00:00'", sortKey: UPDATED_AT) {
+ edges {
+ node {
+ id
+ metafields {
+ edges {
+ node {
+ id
+ namespace
+ value
+ key
+ description
+ createdAt
+ updatedAt
+ type
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ type = MetafieldType.CUSTOMERS
+
+
+class MetafieldLocation(Metafield):
+ """
+ {
+ locations {
+ edges {
+ node {
+ id
+ metafields {
+ edges {
+ node {
+ id
+ namespace
+ value
+ key
+ description
+ createdAt
+ updatedAt
+ type
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ sort_key = None
+ type = MetafieldType.LOCATIONS
+
+
+class MetafieldOrder(Metafield):
+ """
+ {
+ orders(query: "updated_at:>='2023-02-07T00:00:00+00:00' AND updated_at:<='2023-12-04T00:00:00+00:00'", sortKey: UPDATED_AT) {
+ edges {
+ node {
+ id
+ metafields {
+ edges {
+ node {
+ id
+ namespace
+ value
+ key
+ description
+ createdAt
+ updatedAt
+ type
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ type = MetafieldType.ORDERS
+
+
+class MetafieldDraftOrder(Metafield):
+ """
+ {
+ draftOrders(query: "updated_at:>='2023-02-07T00:00:00+00:00' AND updated_at:<='2023-12-04T00:00:00+00:00'", sortKey: UPDATED_AT) {
+ edges {
+ node {
+ id
+ metafields {
+ edges {
+ node {
+ id
+ namespace
+ value
+ key
+ description
+ createdAt
+ updatedAt
+ type
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ type = MetafieldType.DRAFT_ORDERS
+
+
+class MetafieldProduct(Metafield):
+ """
+ {
+ products(query: "updated_at:>='2023-02-07T00:00:00+00:00' AND updated_at:<='2023-12-04T00:00:00+00:00'", sortKey: UPDATED_AT) {
+ edges {
+ node {
+ id
+ metafields {
+ edges {
+ node {
+ id
+ namespace
+ value
+ key
+ description
+ createdAt
+ updatedAt
+ type
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ type = MetafieldType.PRODUCTS
+
+
+class MetafieldProductImage(Metafield):
+ """
+ {
+ products(query: "updated_at:>='2023-02-07T00:00:00+00:00' AND updated_at:<='2023-12-04T00:00:00+00:00'", sortKey: UPDATED_AT) {
+ edges {
+ node {
+ id
+ images{
+ edges{
+ node{
+ id
+ metafields {
+ edges {
+ node {
+ id
+ namespace
+ value
+ key
+ description
+ createdAt
+ updatedAt
+ type
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ type = MetafieldType.PRODUCT_IMAGES
+
+
+class MetafieldProductVariant(Metafield):
+ """
+ {
+ productVariants(query: "updated_at:>='2023-02-07T00:00:00+00:00' AND updated_at:<='2023-12-04T00:00:00+00:00'") {
+ edges {
+ node {
+ id
+ metafields {
+ edges {
+ node {
+ id
+ namespace
+ value
+ key
+ description
+ createdAt
+ updatedAt
+ type
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ sort_key = None
+ type = MetafieldType.PRODUCT_VARIANTS
+
+
+class DiscountCode(ShopifyBulkQuery):
+ """
+ Output example to BULK query `codeDiscountNodes` with `filter query` by `updated_at` sorted `ASC`:
+ {
+ codeDiscountNodes(query: "updated_at:>='2023-12-07T00:00:00Z' AND updated_at:<='2023-12-30T00:00:00Z'", sortKey: UPDATED_AT) {
+ edges {
+ node {
+ __typename
+ id
+ codeDiscount {
+ ... on DiscountCodeApp {
+ updatedAt
+ createdAt
+ discountType: discountClass
+ codes {
+ edges {
+ node {
+ __typename
+ usageCount: asyncUsageCount
+ code
+ id
+ }
+ }
+ }
+ }
+ ... on DiscountCodeBasic {
+ createdAt
+ updatedAt
+ discountType: discountClass
+ summary
+ codes {
+ edges {
+ node {
+ __typename
+ usageCount: asyncUsageCount
+ code
+ id
+ }
+ }
+ }
+ }
+ ... on DiscountCodeBxgy {
+ updatedAt
+ createdAt
+ discountType: discountClass
+ summary
+ codes {
+ edges {
+ node {
+ __typename
+ usageCount: asyncUsageCount
+ code
+ id
+ }
+ }
+ }
+ }
+ ... on DiscountCodeFreeShipping {
+ updatedAt
+ createdAt
+ discountType: discountClass
+ summary
+ codes {
+ edges {
+ node {
+ __typename
+ usageCount: asyncUsageCount
+ code
+ id
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ query_name = "codeDiscountNodes"
+ sort_key = "UPDATED_AT"
+
+ code_discount_fields: List[Field] = [
+ Field(name="discountClass", alias="discountType"),
+ Field(
+ name="codes",
+ fields=[
+ Field(
+ name="edges",
+ fields=[
+ Field(
+ name="node",
+ fields=[
+ "__typename",
+ Field(name="asyncUsageCount", alias="usageCount"),
+ "code",
+ "id",
+ ],
+ )
+ ],
+ )
+ ],
+ ),
+ ]
+
+ code_discount_fragments: List[InlineFragment] = [
+ # the type: DiscountCodeApp has no `"summary"` field available
+ InlineFragment(type="DiscountCodeApp", fields=["updatedAt", "createdAt", *code_discount_fields]),
+ InlineFragment(type="DiscountCodeBasic", fields=["updatedAt", "createdAt", "summary", *code_discount_fields]),
+ InlineFragment(type="DiscountCodeBxgy", fields=["updatedAt", "createdAt", "summary", *code_discount_fields]),
+ InlineFragment(type="DiscountCodeFreeShipping", fields=["updatedAt", "createdAt", "summary", *code_discount_fields]),
+ ]
+
+ query_nodes: List[Field] = [
+ "__typename",
+ "id",
+ Field(name="codeDiscount", fields=code_discount_fragments),
+ ]
+
+ record_composition = {
+ "new_record": "DiscountCodeNode",
+ # each DiscountCodeNode has `DiscountRedeemCode`
+ "record_components": ["DiscountRedeemCode"],
+ }
+
+ def record_process_components(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ """
+ Defines how to process collected components.
+ """
+
+ record_components = record.get("record_components", {})
+ if record_components:
+ discounts = record_components.get("DiscountRedeemCode", [])
+ if len(discounts) > 0:
+ for discount in discounts:
+ # resolve parent id from `str` to `int`
+ discount["admin_graphql_api_id"] = discount.get("id")
+ discount["price_rule_id"] = self.tools.resolve_str_id(discount.get(BULK_PARENT_KEY))
+ discount["id"] = self.tools.resolve_str_id(discount.get("id"))
+ code_discount = record.get("codeDiscount", {})
+ if code_discount:
+ discount.update(**code_discount)
+ discount.pop(BULK_PARENT_KEY, None)
+ # field names to snake case for discount
+ discount = self.tools.fields_names_to_snake_case(discount)
+ # convert dates from ISO-8601 to RFC-3339
+ discount["created_at"] = self.tools.from_iso8601_to_rfc3339(discount, "created_at")
+ discount["updated_at"] = self.tools.from_iso8601_to_rfc3339(discount, "updated_at")
+ yield discount
+
+
+class Collection(ShopifyBulkQuery):
+ """
+ {
+ collections(query: "updated_at:>='2023-02-07T00:00:00+00:00' AND updated_at:<='2023-12-04T00:00:00+00:00'", sortKey: UPDATED_AT) {
+ edges {
+ node {
+ __typename
+ id
+ handle
+ title
+ updatedAt
+ bodyHtml: descriptionHtml
+ publications {
+ edges {
+ node {
+ __typename
+ publishedAt: publishDate
+ }
+ }
+ }
+ sortOrder
+ templateSuffix
+ productsCount
+ }
+ }
+ }
+ }
+ """
+
+ query_name = "collections"
+ sort_key = "UPDATED_AT"
+
+ publications_fields: List[Field] = [
+ Field(name="edges", fields=[Field(name="node", fields=["__typename", Field(name="publishDate", alias="publishedAt")])])
+ ]
+
+ query_nodes: List[Field] = [
+ "__typename",
+ "id",
+ Field(name="handle"),
+ Field(name="title"),
+ Field(name="updatedAt"),
+ Field(name="descriptionHtml", alias="bodyHtml"),
+ Field(name="publications", fields=publications_fields),
+ Field(name="sortOrder"),
+ Field(name="templateSuffix"),
+ Field(name="productsCount"),
+ ]
+
+ record_composition = {
+ "new_record": "Collection",
+ # each collection has `publications`
+ "record_components": ["CollectionPublication"],
+ }
+
+ def record_process_components(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ """
+ Defines how to process collected components.
+ """
+ record_components = record.get("record_components", {})
+ if record_components:
+ publications = record_components.get("CollectionPublication", [])
+ if len(publications) > 0:
+ record["published_at"] = publications[0].get("publishedAt")
+ record.pop("record_components")
+ # convert dates from ISO-8601 to RFC-3339
+ record["published_at"] = self.tools.from_iso8601_to_rfc3339(record, "published_at")
+ record["updatedAt"] = self.tools.from_iso8601_to_rfc3339(record, "updatedAt")
+ # remove leftovers
+ record.pop(BULK_PARENT_KEY, None)
+ yield record
+
+
+class CustomerAddresses(ShopifyBulkQuery):
+ """
+ {
+ customers(query: "updated_at:>='2024-01-20T00:00:00+00:00' AND updated_at:<'2024-01-24T00:00:00+00:00'", sortKey:UPDATED_AT) {
+ edges {
+ node {
+ __typename
+ customerId: id
+ defaultAddress {
+ id
+ }
+ addresses {
+ address1
+ address2
+ city
+ country
+ countryCode
+ company
+ firstName
+ id
+ lastName
+ name
+ phone
+ province
+ provinceCode
+ zip
+ }
+ }
+ }
+ }
+ }
+ """
+
+ query_name = "customers"
+ sort_key = "UPDATED_AT"
+
+ addresses_fields: List[str] = [
+ "address1",
+ "address2",
+ "city",
+ "country",
+ "countryCode",
+ "company",
+ "firstName",
+ "id",
+ "lastName",
+ "name",
+ "phone",
+ "province",
+ "provinceCode",
+ "zip",
+ ]
+ query_nodes: List[Field] = [
+ "__typename",
+ "id",
+ Field(name="defaultAddress", fields=["id"]),
+ Field(name="addresses", fields=addresses_fields),
+ # add `Customer.updated_at` field to provide the parent state
+ "updatedAt",
+ ]
+
+ record_composition = {
+ "new_record": "Customer",
+ }
+
+ def set_default_address(self, record: MutableMapping[str, Any], address_record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ default_address = record.get("defaultAddress", {})
+ # the default_address could be literal `None`, additional check is required
+ if default_address:
+ if address_record.get("id") == record.get("defaultAddress", {}).get("id"):
+ address_record["default"] = True
+ return address_record
+
+ def record_process_components(self, record: MutableMapping[str, Any]) -> Optional[Iterable[MutableMapping[str, Any]]]:
+ """
+ Defines how to process collected components.
+ """
+ if "addresses" in record.keys():
+ addresses = record.get("addresses")
+ if len(addresses) > 0:
+ for customer_address in addresses:
+ # add `customer_id` to each address entry
+ customer_address["customer_id"] = record.get("id")
+ # add `country_name` from `country`
+ customer_address["country_name"] = customer_address.get("country")
+ # default address check
+ customer_address = self.set_default_address(record, customer_address)
+ # resolve address id
+ customer_address["id"] = self.tools.resolve_str_id(customer_address.get("id"))
+ # add PARENT stream cursor_field to the root level of the record
+ # providing the ability to track the PARENT state as well
+ # convert dates from ISO-8601 to RFC-3339
+ customer_address["updated_at"] = self.tools.from_iso8601_to_rfc3339(record, "updatedAt")
+ # names to snake
+ customer_address = self.tools.fields_names_to_snake_case(customer_address)
+ yield customer_address
+
+
+class InventoryItem(ShopifyBulkQuery):
+ """
+ {
+ inventoryItems(query: "updated_at:>='2022-04-13T00:00:00+00:00' AND updated_at:<='2023-02-07T00:00:00+00:00'") {
+ edges {
+ node {
+ __typename
+ unitCost {
+ cost: amount
+ }
+ countryCodeOfOrigin
+ countryHarmonizedSystemCodes {
+ edges {
+ node {
+ harmonizedSystemCode
+ countryCode
+ }
+ }
+ }
+ harmonizedSystemCode
+ provinceCodeOfOrigin
+ updatedAt
+ createdAt
+ sku
+ tracked
+ requiresShipping
+ }
+ }
+ }
+ }
+ """
+
+ query_name = "inventoryItems"
+
+ country_harmonizedS_system_codes: List[Field] = [
+ Field(name="edges", fields=[Field(name="node", fields=["__typename", "harmonizedSystemCode", "countryCode"])])
+ ]
+
+ query_nodes: List[Field] = [
+ "__typename",
+ "id",
+ Field(name="unitCost", fields=[Field(name="amount", alias="cost")]),
+ Field(name="countryCodeOfOrigin"),
+ Field(name="countryHarmonizedSystemCodes", fields=country_harmonizedS_system_codes),
+ Field(name="harmonizedSystemCode"),
+ Field(name="provinceCodeOfOrigin"),
+ Field(name="updatedAt"),
+ Field(name="createdAt"),
+ Field(name="sku"),
+ Field(name="tracked"),
+ Field(name="requiresShipping"),
+ ]
+
+ record_composition = {
+ "new_record": "InventoryItem",
+ }
+
+ def record_process_components(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ """
+ Defines how to process collected components.
+ """
+
+ # resolve `cost` to root lvl as `number`
+ unit_cost = record.get("unitCost", {})
+ if unit_cost:
+ record["cost"] = float(unit_cost.get("cost"))
+ else:
+ record["cost"] = None
+ # clean up
+ record.pop("unitCost", None)
+ # add empty `country_harmonized_system_codes` array, if missing for record
+ if "countryHarmonizedSystemCodes" not in record.keys():
+ record["country_harmonized_system_codes"] = []
+ # convert dates from ISO-8601 to RFC-3339
+ record["createdAt"] = self.tools.from_iso8601_to_rfc3339(record, "createdAt")
+ record["updatedAt"] = self.tools.from_iso8601_to_rfc3339(record, "updatedAt")
+ record = self.tools.fields_names_to_snake_case(record)
+ yield record
+
+
+class InventoryLevel(ShopifyBulkQuery):
+ """
+ Output example to BULK query `inventory_levels` from `locations` with `filter query` by `updated_at`:
+ {
+ locations(includeLegacy: true, includeInactive: true) {
+ edges {
+ node {
+ __typename
+ id
+ inventoryLevels(query: "updated_at:>='2023-04-14T00:00:00+00:00'") {
+ edges {
+ node {
+ __typename
+ id
+ available
+ item {
+ inventory_item_id: id
+ }
+ updatedAt
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ query_name = "locations"
+ # in order to return all the locations, additional query args must be provided
+ # https://shopify.dev/docs/api/admin-graphql/2023-10/queries/locations#query-arguments
+ locations_query_args = {
+ "includeLegacy": "true",
+ "includeInactive": "true",
+ }
+ record_composition = {
+ "new_record": "InventoryLevel",
+ }
+
+ inventory_levels_fields: List[Field] = [
+ "__typename",
+ "id",
+ Field(name="available"),
+ Field(name="item", fields=[Field(name="id", alias="inventory_item_id")]),
+ Field(name="updatedAt"),
+ ]
+
+ def query(self, filter_query: Optional[str] = None) -> Query:
+ # build the nested query first with `filter_query` to have the incremental syncs
+ inventory_levels: List[Query] = [self.build("inventoryLevels", self.inventory_levels_fields, filter_query)]
+ # build the main query around previous
+ # return the constructed query operation
+ return self.build(
+ name=self.query_name,
+ edges=self.query_nodes + inventory_levels,
+ # passing more query args for `locations` query
+ additional_query_args=self.locations_query_args,
+ )
+
+ def record_process_components(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ """
+ Defines how to process collected components.
+ """
+
+ # resolve `inventory_item_id` to root lvl + resolve to int
+ record["inventory_item_id"] = self.tools.resolve_str_id(record.get("item", {}).get("inventory_item_id"))
+ # add `location_id` from `__parentId`
+ record["location_id"] = self.tools.resolve_str_id(record[BULK_PARENT_KEY])
+ # make composite `id` from `location_id|inventory_item_id`
+ record["id"] = "|".join((str(record.get("location_id", "")), str(record.get("inventory_item_id", ""))))
+ # convert dates from ISO-8601 to RFC-3339
+ record["updatedAt"] = self.tools.from_iso8601_to_rfc3339(record, "updatedAt")
+ # remove leftovers
+ record.pop("item", None)
+ record.pop(BULK_PARENT_KEY, None)
+ record = self.tools.fields_names_to_snake_case(record)
+ yield record
+
+
+class FulfillmentOrder(ShopifyBulkQuery):
+ """
+ Output example to BULK query `fulfillmentOrders` from `orders` with `filter query` by `updated_at`, sorted by `UPDATED_AT`:
+ {
+ orders(query: "updated_at:>='2023-04-13T05:00:09Z' and updated_at:<='2023-04-15T05:00:09Z'", sortKey: UPDATED_AT){
+ edges {
+ node {
+ __typename
+ id
+ fulfillmentOrders {
+ edges {
+ node {
+ __typename
+ id
+ assignedLocation {
+ location {
+ locationId: id
+ }
+ address1
+ address2
+ city
+ countryCode
+ name
+ phone
+ province
+ zip
+ }
+ destination {
+ id
+ address1
+ address2
+ city
+ company
+ countryCode
+ email
+ firstName
+ lastName
+ phone
+ province
+ zip
+ }
+ deliveryMethod {
+ id
+ methodType
+ minDeliveryDateTime
+ maxDeliveryDateTime
+ }
+ fulfillAt
+ fulfillBy
+ internationalDuties {
+ incoterm
+ }
+ fulfillmentHolds {
+ reason
+ reasonNotes
+ }
+ lineItems {
+ edges {
+ node {
+ __typename
+ id
+ inventoryItemId
+ lineItem {
+ lineItemId: id
+ fulfillableQuantity
+ quantity: currentQuantity
+ variant {
+ variantId: id
+ }
+ }
+ }
+ }
+ }
+ createdAt
+ updatedAt
+ requestStatus
+ status
+ supportedActions {
+ action
+ externalUrl
+ }
+ merchantRequests {
+ edges {
+ node {
+ __typename
+ id
+ message
+ kind
+ requestOptions
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ query_name = "orders"
+ sort_key = "UPDATED_AT"
+
+ assigned_location_fields: List[Field] = [
+ "address1",
+ "address2",
+ "city",
+ "countryCode",
+ "name",
+ "phone",
+ "province",
+ "zip",
+ Field(name="location", fields=[Field(name="id", alias="locationId")]),
+ ]
+
+ destination_fields: List[Field] = [
+ "id",
+ "address1",
+ "address2",
+ "city",
+ "company",
+ "countryCode",
+ "email",
+ "firstName",
+ "lastName",
+ "phone",
+ "province",
+ "zip",
+ ]
+
+ delivery_method_fields: List[Field] = [
+ "id",
+ "methodType",
+ "minDeliveryDateTime",
+ "maxDeliveryDateTime",
+ ]
+
+ line_items_fields: List[Field] = [
+ "__typename",
+ "id",
+ "inventoryItemId",
+ Field(
+ name="lineItem",
+ fields=[
+ Field(name="id", alias="lineItemId"),
+ "fulfillableQuantity",
+ Field(name="currentQuantity", alias="quantity"),
+ Field(name="variant", fields=[Field(name="id", alias="variantId")]),
+ ],
+ ),
+ ]
+
+ merchant_requests_fields: List[Field] = [
+ "__typename",
+ "id",
+ "message",
+ "kind",
+ "requestOptions",
+ ]
+
+ fulfillment_order_fields: List[Field] = [
+ "__typename",
+ "id",
+ Field(name="assignedLocation", fields=assigned_location_fields),
+ Field(name="destination", fields=destination_fields),
+ Field(name="deliveryMethod", fields=delivery_method_fields),
+ "fulfillAt",
+ "fulfillBy",
+ Field(name="internationalDuties", fields=["incoterm"]),
+ Field(name="fulfillmentHolds", fields=["reason", "reasonNotes"]),
+ Field(name="lineItems", fields=[Field(name="edges", fields=[Field(name="node", fields=line_items_fields)])]),
+ "createdAt",
+ "updatedAt",
+ "requestStatus",
+ "status",
+ Field(name="supportedActions", fields=["action", "externalUrl"]),
+ Field(name="merchantRequests", fields=[Field(name="edges", fields=[Field(name="node", fields=merchant_requests_fields)])]),
+ ]
+
+ query_nodes: List[Field] = [
+ "__typename",
+ "id",
+ Field(name="fulfillmentOrders", fields=[Field(name="edges", fields=[Field(name="node", fields=fulfillment_order_fields)])]),
+ ]
+
+ record_composition = {
+ "new_record": "FulfillmentOrder",
+ # each FulfillmentOrder has multiple `FulfillmentOrderLineItem` and `FulfillmentOrderMerchantRequest`
+ "record_components": [
+ "FulfillmentOrderLineItem",
+ "FulfillmentOrderMerchantRequest",
+ ],
+ }
+
+ def process_fulfillment_order(self, record: MutableMapping[str, Any], shop_id: int) -> MutableMapping[str, Any]:
+ # addings
+ record["shop_id"] = shop_id
+ record["order_id"] = record.get(BULK_PARENT_KEY)
+ # unnest nested locationId to the `assignedLocation`
+ location_id = record.get("assignedLocation", {}).get("location", {}).get("locationId")
+ record["assignedLocation"]["locationId"] = location_id
+ record["assigned_location_id"] = location_id
+ # create nested placeholders for other parts
+ record["line_items"] = []
+ record["merchant_requests"] = []
+ # cleaning
+ record.pop(BULK_PARENT_KEY)
+ record.get("assignedLocation").pop("location", None)
+ # resolve ids from `str` to `int`
+ # location id
+ location = record.get("assignedLocation", {})
+ if location:
+ location_id = location.get("locationId")
+ if location_id:
+ record["assignedLocation"]["locationId"] = self.tools.resolve_str_id(location_id)
+ # assigned_location_id
+ record["assigned_location_id"] = self.tools.resolve_str_id(record.get("assigned_location_id"))
+ # destination id
+ destination = record.get("destination", {})
+ if destination:
+ destination_id = destination.get("id")
+ if destination_id:
+ record["destination"]["id"] = self.tools.resolve_str_id(destination_id)
+ # delivery method id
+ delivery_method = record.get("deliveryMethod", {})
+ if delivery_method:
+ delivery_method_id = delivery_method.get("id")
+ if delivery_method_id:
+ record["deliveryMethod"]["id"] = self.tools.resolve_str_id(delivery_method_id)
+ # order id
+ record["order_id"] = self.tools.resolve_str_id(record.get("order_id"))
+ # field names to snake for nested objects
+ # `assignedLocation`(object) field names to snake case
+ record["assignedLocation"] = self.tools.fields_names_to_snake_case(record.get("assignedLocation"))
+ # `deliveryMethod`(object) field names to snake case
+ record["deliveryMethod"] = self.tools.fields_names_to_snake_case(record.get("deliveryMethod"))
+ # `destination`(object) field names to snake case
+ record["destination"] = self.tools.fields_names_to_snake_case(record.get("destination"))
+ # `fulfillmentHolds`(list[object]) field names to snake case
+ record["fulfillment_holds"] = [self.tools.fields_names_to_snake_case(el) for el in record.get("fulfillment_holds", [])]
+ # `supportedActions`(list[object]) field names to snake case
+ record["supported_actions"] = [self.tools.fields_names_to_snake_case(el) for el in record.get("supported_actions", [])]
+ return record
+
+ def process_line_item(self, record: MutableMapping[str, Any], shop_id: int) -> MutableMapping[str, Any]:
+ # addings
+ record["shop_id"] = shop_id
+ record["fulfillmentOrderId"] = record.get(BULK_PARENT_KEY)
+ # unnesting nested `lineItem`
+ line_item = record.get("lineItem", {})
+ if line_item:
+ record["quantity"] = line_item.get("quantity")
+ record["lineItemId"] = line_item.get("lineItemId")
+ record["fulfillableQuantity"] = line_item.get("fulfillableQuantity")
+ variant = line_item.get("variant", {})
+ if variant:
+ record["variantId"] = variant.get("variantId")
+ # cleaning
+ record.pop(BULK_PARENT_KEY)
+ record.pop("lineItem")
+ # resolve ids from `str` to `int`
+ record["id"] = self.tools.resolve_str_id(record.get("id"))
+ # inventoryItemId
+ record["inventoryItemId"] = self.tools.resolve_str_id(record.get("inventoryItemId"))
+ # fulfillmentOrderId
+ record["fulfillmentOrderId"] = self.tools.resolve_str_id(record.get("fulfillmentOrderId"))
+ # lineItemId
+ record["lineItemId"] = self.tools.resolve_str_id(record.get("lineItemId"))
+ # variantId
+ record["variantId"] = self.tools.resolve_str_id(record.get("variantId"))
+ # field names to snake case
+ record = self.tools.fields_names_to_snake_case(record)
+ return record
+
+ def process_merchant_request(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ # cleaning
+ record.pop(BULK_PARENT_KEY)
+ # resolve ids from `str` to `int`
+ record["id"] = self.tools.resolve_str_id(record.get("id"))
+ # field names to snake case
+ record = self.tools.fields_names_to_snake_case(record)
+ return record
+
+ def record_process_components(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ """
+ Defines how to process collected components.
+ """
+
+ record = self.process_fulfillment_order(record, self.shop_id)
+ record_components = record.get("record_components", {})
+ if record_components:
+ line_items = record_components.get("FulfillmentOrderLineItem", [])
+ if len(line_items) > 0:
+ for line_item in line_items:
+ record["line_items"].append(self.process_line_item(line_item, self.shop_id))
+ merchant_requests = record_components.get("FulfillmentOrderMerchantRequest", [])
+ if len(merchant_requests) > 0:
+ for merchant_request in merchant_requests:
+ record["merchant_requests"].append(self.process_merchant_request(merchant_request))
+ record.pop("record_components")
+ # convert dates from ISO-8601 to RFC-3339
+ record["updatedAt"] = self.tools.from_iso8601_to_rfc3339(record, "updatedAt")
+ # convert dates from ISO-8601 to RFC-3339
+ record["fulfillAt"] = self.tools.from_iso8601_to_rfc3339(record, "fulfillAt")
+ record["createdAt"] = self.tools.from_iso8601_to_rfc3339(record, "createdAt")
+ record["updatedAt"] = self.tools.from_iso8601_to_rfc3339(record, "updatedAt")
+ # delivery method
+ delivery_method = record.get("deliveryMethod", {})
+ if delivery_method:
+ record["deliveryMethod"]["min_delivery_date_time"] = self.tools.from_iso8601_to_rfc3339(
+ delivery_method, "min_delivery_date_time"
+ )
+ record["deliveryMethod"]["max_delivery_date_time"] = self.tools.from_iso8601_to_rfc3339(
+ delivery_method, "max_delivery_date_time"
+ )
+ yield record
+
+
+class Transaction(ShopifyBulkQuery):
+ """
+ Output example to BULK query `transactions` from `orders` with `filter query` by `updated_at` sorted `ASC`:
+ {
+ orders(query: "updated_at:>='2021-05-23T00:00:00+00:00' AND updated_at:<'2021-12-22T00:00:00+00:00'", sortKey:UPDATED_AT) {
+ edges {
+ node {
+ __typename
+ id
+ currency: currencyCode
+ transactions {
+ id
+ errorCode
+ parentTransaction {
+ parentId: id
+ }
+ test
+ kind
+ amount
+ receipt: receiptJson
+ gateway
+ authorization: authorizationCode
+ createdAt
+ status
+ processedAt
+ totalUnsettledSet {
+ presentmentMoney {
+ amount
+ currency: currencyCode
+ }
+ shopMoney {
+ amount
+ currency: currencyCode
+ }
+ }
+ paymentId
+ paymentDetails {
+ ... on CardPaymentDetails {
+ avsResultCode
+ creditCardBin: bin
+ creditCardCompany: company
+ creditCardNumber: number
+ creditCardName: name
+ cvvResultCode
+ creditCardWallet: wallet
+ creditCardExpirationYear: expirationYear
+ creditCardExpirationMonth: expirationMonth
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ """
+
+ query_name = "orders"
+ sort_key = "UPDATED_AT"
+
+ total_unsettled_set_fields: List[Field] = [
+ Field(name="presentmentMoney", fields=["amount", Field(name="currencyCode", alias="currency")]),
+ Field(name="shopMoney", fields=["amount", Field(name="currencyCode", alias="currency")]),
+ ]
+
+ payment_details: List[InlineFragment] = [
+ InlineFragment(
+ type="CardPaymentDetails",
+ fields=[
+ "avsResultCode",
+ "cvvResultCode",
+ Field(name="bin", alias="creditCardBin"),
+ Field(name="company", alias="creditCardCompany"),
+ Field(name="number", alias="creditCardNumber"),
+ Field(name="name", alias="creditCardName"),
+ Field(name="wallet", alias="creditCardWallet"),
+ Field(name="expirationYear", alias="creditCardExpirationYear"),
+ Field(name="expirationMonth", alias="creditCardExpirationMonth"),
+ ],
+ )
+ ]
+
+ query_nodes: List[Field] = [
+ "__typename",
+ "id",
+ Field(name="currencyCode", alias="currency"),
+ Field(
+ name="transactions",
+ fields=[
+ "id",
+ "errorCode",
+ Field(name="parentTransaction", fields=[Field(name="id", alias="parentId")]),
+ "test",
+ "kind",
+ "amount",
+ Field(name="receiptJson", alias="receipt"),
+ "gateway",
+ Field(name="authorizationCode", alias="authorization"),
+ "createdAt",
+ "status",
+ "processedAt",
+ Field(name="totalUnsettledSet", fields=total_unsettled_set_fields),
+ "paymentId",
+ Field(name="paymentDetails", fields=payment_details),
+ ],
+ ),
+ ]
+
+ record_composition = {
+ "new_record": "Order",
+ }
+
+ def process_transaction(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ # save the id before it's resolved
+ record["admin_graphql_api_id"] = record.get("id")
+ # unnest nested fields
+ parent_transaction = record.get("parentTransaction", {})
+ if parent_transaction:
+ record["parent_id"] = parent_transaction.get("parentId")
+ # str values to float
+ record["amount"] = float(record.get("amount"))
+ # convert dates from ISO-8601 to RFC-3339
+ record["processedAt"] = self.tools.from_iso8601_to_rfc3339(record, "processedAt")
+ record["createdAt"] = self.tools.from_iso8601_to_rfc3339(record, "createdAt")
+ # resolve ids
+ record["id"] = self.tools.resolve_str_id(record.get("id"))
+ record["parent_id"] = self.tools.resolve_str_id(record.get("parent_id"))
+ # remove leftovers
+ record.pop("parentTransaction", None)
+ # field names to snake case
+ total_unsettled_set = record.get("totalUnsettledSet", {})
+ if total_unsettled_set:
+ record["totalUnsettledSet"] = self.tools.fields_names_to_snake_case(total_unsettled_set)
+ # nested str values to float
+ record["totalUnsettledSet"]["presentment_money"]["amount"] = float(
+ total_unsettled_set.get("presentmentMoney", {}).get("amount")
+ )
+ record["totalUnsettledSet"]["shop_money"]["amount"] = float(total_unsettled_set.get("shopMoney", {}).get("amount"))
+ payment_details = record.get("paymentDetails", {})
+ if payment_details:
+ record["paymentDetails"] = self.tools.fields_names_to_snake_case(payment_details)
+ # field names to snake case for root level
+ record = self.tools.fields_names_to_snake_case(record)
+ return record
+
+ def record_process_components(self, record: MutableMapping[str, Any]) -> Optional[MutableMapping[str, Any]]:
+ """
+ Defines how to process collected components.
+ """
+
+ if "transactions" in record.keys():
+ transactions = record.get("transactions")
+ if len(transactions) > 0:
+ for transaction in transactions:
+ # populate parent record keys
+ transaction["order_id"] = record.get("id")
+ transaction["currency"] = record.get("currency")
+ yield self.process_transaction(transaction)
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/record.py b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/record.py
new file mode 100644
index 000000000000..5564dad60822
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/record.py
@@ -0,0 +1,154 @@
+#
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+#
+
+
+import logging
+from dataclasses import dataclass, field
+from io import TextIOWrapper
+from json import loads
+from os import remove
+from typing import Any, Callable, Iterable, List, Mapping, MutableMapping, Optional, Union
+
+from airbyte_cdk import AirbyteLogger
+
+from .exceptions import ShopifyBulkExceptions
+from .query import ShopifyBulkQuery
+from .tools import END_OF_FILE, BulkTools
+
+
+@dataclass
+class ShopifyBulkRecord:
+ query: ShopifyBulkQuery
+
+ # default buffer
+ buffer: List[MutableMapping[str, Any]] = field(init=False, default_factory=list)
+
+ # default logger
+ logger: AirbyteLogger = field(init=False, default=logging.getLogger("airbyte"))
+
+ def __post_init__(self) -> None:
+ self.composition: Optional[Mapping[str, Any]] = self.query.record_composition
+ self.record_process_components: Optional[Callable[[MutableMapping], MutableMapping]] = self.query.record_process_components
+ self.components: List[str] = self.composition.get("record_components", []) if self.composition else []
+
+ @property
+ def tools(self) -> BulkTools:
+ return BulkTools()
+
+ @staticmethod
+ def check_type(record: Mapping[str, Any], types: Union[List[str], str]) -> bool:
+ record_type = record.get("__typename")
+ if isinstance(types, list):
+ return any(record_type == t for t in types)
+ else:
+ return record_type == types
+
+ def record_new(self, record: MutableMapping[str, Any]) -> None:
+ record = self.component_prepare(record)
+ record.pop("__typename")
+ self.buffer.append(record)
+
+ def record_new_component(self, record: MutableMapping[str, Any]) -> None:
+ component = record.get("__typename")
+ record.pop("__typename")
+ # add component to its placeholder in the components list
+ self.buffer[-1]["record_components"][component].append(record)
+
+ def component_prepare(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ if self.components:
+ record["record_components"] = {}
+ for component in self.components:
+ record["record_components"][component] = []
+ return record
+
+ def buffer_flush(self) -> Iterable[Mapping[str, Any]]:
+ if len(self.buffer) > 0:
+ for record in self.buffer:
+ # resolve id from `str` to `int`
+ record = self.record_resolve_id(record)
+ # process record components
+ yield from self.record_process_components(record)
+ # clean the buffer
+ self.buffer.clear()
+
+ def record_compose(self, record: Mapping[str, Any]) -> Optional[Iterable[MutableMapping[str, Any]]]:
+ """
+ Step 1: register the new record by it's `__typename`
+ Step 2: check for `components` by their `__typename` and add to the placeholder
+ Step 3: repeat until the ``.
+ """
+ if self.check_type(record, self.composition.get("new_record")):
+ # emit from previous iteration, if present
+ yield from self.buffer_flush()
+ # register the record
+ self.record_new(record)
+ # components check
+ elif self.check_type(record, self.components):
+ self.record_new_component(record)
+
+ def process_line(self, jsonl_file: TextIOWrapper) -> Iterable[MutableMapping[str, Any]]:
+ # process the json lines
+ for line in jsonl_file:
+ # we exit from the loop when receive (file ends)
+ if line == END_OF_FILE:
+ break
+ elif line != "":
+ yield from self.record_compose(loads(line))
+
+ # emit what's left in the buffer, typically last record
+ yield from self.buffer_flush()
+
+ def record_resolve_id(self, record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
+ """
+ The ids are fetched in the format of: " gid://shopify/Order/ "
+ Input:
+ { "Id": "gid://shopify/Order/19435458986123"}
+ We need to extract the actual id from the string instead.
+ Output:
+ { "id": 19435458986123, "admin_graphql_api_id": "gid://shopify/Order/19435458986123"}
+ """
+ # save the actual api id to the `admin_graphql_api_id`
+ # while resolving the `id` in `record_resolve_id`,
+ # we re-assign the original id like `"gid://shopify/Order/19435458986123"`,
+ # into `admin_graphql_api_id` have the ability to identify the record oigin correctly in subsequent actions.
+ id = record.get("id")
+ if isinstance(id, str):
+ record["admin_graphql_api_id"] = id
+ # extracting the int(id) and reassign
+ record["id"] = self.tools.resolve_str_id(id)
+ return record
+ elif isinstance(id, int):
+ return record
+
+ def produce_records(self, filename: str) -> Iterable[MutableMapping[str, Any]]:
+ """
+ Read the JSONL content saved from `job.job_retrieve_result()` line-by-line to avoid OOM.
+ The filename example: `bulk-4039263649981.jsonl`,
+ where `4039263649981` is the `id` of the COMPLETED BULK Jobw with `result_url`.
+ Note: typically the `filename` is taken from the `result_url` string provided in the response.
+ """
+
+ with open(filename, "r") as jsonl_file:
+ for record in self.process_line(jsonl_file):
+ yield self.tools.fields_names_to_snake_case(record)
+
+ def read_file(self, filename: str, remove_file: Optional[bool] = True) -> Iterable[Mapping[str, Any]]:
+ try:
+ # produce records from saved result
+ yield from self.produce_records(filename)
+ except Exception as e:
+ raise ShopifyBulkExceptions.BulkRecordProduceError(
+ f"An error occured while producing records from BULK Job result. Trace: {repr(e)}.",
+ )
+ finally:
+ # removing the tmp file, if requested
+ if remove_file and filename:
+ try:
+ remove(filename)
+ except Exception as e:
+ self.logger.info(f"Failed to remove the `tmp job result` file, the file doen't exist. Details: {repr(e)}.")
+ # we should pass here, if the file wasn't removed , it's either:
+ # - doesn't exist
+ # - will be dropped with the container shut down.
+ pass
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/tools.py b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/tools.py
new file mode 100644
index 000000000000..bd5d26099edb
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/tools.py
@@ -0,0 +1,83 @@
+#
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+#
+
+
+import re
+from typing import Any, Mapping, MutableMapping, Optional, Union
+from urllib.parse import parse_qsl, urlparse
+
+import pendulum as pdm
+
+from .exceptions import ShopifyBulkExceptions
+
+# default end line tag
+END_OF_FILE: str = ""
+BULK_PARENT_KEY: str = "__parentId"
+
+
+class BulkTools:
+ @staticmethod
+ def camel_to_snake(camel_case: str) -> str:
+ snake_case = []
+ for char in camel_case:
+ if char.isupper():
+ snake_case.append("_" + char.lower())
+ else:
+ snake_case.append(char)
+ return "".join(snake_case).lstrip("_")
+
+ @staticmethod
+ def filename_from_url(job_result_url: str) -> str:
+ """
+ Example of `job_result_url` (str) :
+ https://storage.googleapis.com/shopify-tiers-assets-prod-us-east1/?
+ GoogleAccessId=assets-us-prod%40shopify-tiers.iam.gserviceaccount.com&
+ Expires=1705508208&
+ Signature=%3D%3D&
+ response-content-disposition=attachment%3B+filename%3D%22bulk-4147374162109.jsonl%22%3B+filename%2A%3DUTF-8%27%27bulk-4147374162109.jsonl&
+ response-content-type=application%2Fjsonl
+
+ Output:
+ (str): bulk-4147374162109.jsonl
+ """
+ # Regular expression pattern to extract the filename
+ filename_pattern = r'filename\*?=(?:UTF-8\'\')?"([^"]+)"'
+ parsed_url = dict(parse_qsl(urlparse(job_result_url).query))
+ match = re.search(filename_pattern, parsed_url.get("response-content-disposition", ""))
+ if match:
+ return match.group(1)
+ else:
+ raise ShopifyBulkExceptions.BulkJobResultUrlError(
+ f"Could not extract the `filename` from `result_url` provided, details: {job_result_url}",
+ )
+
+ @staticmethod
+ def from_iso8601_to_rfc3339(record: Mapping[str, Any], field: str) -> Mapping[str, Any]:
+ """
+ Converts date-time as follows:
+ Input: "2023-01-01T15:00:00Z"
+ Output: "2023-01-01T15:00:00+00:00"
+ If the value of the `field` is `None` we return it `as is`.
+ """
+ # some fields that expected to be resolved as ids, might not be populated for the particular `RECORD`,
+ # we should return `None` to make the field `null` in the output as the result of the transformation.
+ target_value = record.get(field)
+ return pdm.parse(target_value).to_rfc3339_string() if target_value else record.get(field)
+
+ def fields_names_to_snake_case(self, dict_input: Optional[Mapping[str, Any]] = None) -> Optional[MutableMapping[str, Any]]:
+ # transforming record field names from camel to snake case, leaving the `__parent_id` relation in place
+ if dict_input:
+ # the `None` type check is required, to properly handle nested missing entities (return None)
+ return {self.camel_to_snake(k) if dict_input and k != BULK_PARENT_KEY else k: v for k, v in dict_input.items()}
+
+ @staticmethod
+ def resolve_str_id(
+ str_input: Optional[str] = None, output_type: Optional[Union[int, str, float]] = int
+ ) -> Optional[Union[int, str, float]]:
+ # some fields that expected to be resolved as ids, might not be populated for the particular `RECORD`,
+ # we should return `None` to make the field `null` in the output as the result of the transformation.
+ if str_input:
+ return output_type(re.search(r"\d+", str_input).group())
+ else:
+ return None
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/graphql.py b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/graphql.py
similarity index 97%
rename from airbyte-integrations/connectors/source-shopify/source_shopify/graphql.py
rename to airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/graphql.py
index e8d38c64cdff..462ad3ea3aa8 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/graphql.py
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/graphql.py
@@ -2,13 +2,14 @@
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#
+
from typing import Optional
import sgqlc.operation
-from . import shopify_schema
+from . import schema
-_schema = shopify_schema
+_schema = schema
_schema_root = _schema.shopify_schema
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_schema.py b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/schema.py
similarity index 78%
rename from airbyte-integrations/connectors/source-shopify/source_shopify/shopify_schema.py
rename to airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/schema.py
index 81966b99fc95..d3647a562084 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_schema.py
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/schema.py
@@ -2,6 +2,7 @@
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#
+
import sgqlc.types
import sgqlc.types.datetime
import sgqlc.types.relay
@@ -21,6 +22,31 @@ class ARN(sgqlc.types.Scalar):
__schema__ = shopify_schema
+class AbandonmentAbandonmentType(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("BROWSE", "CART", "CHECKOUT")
+
+
+class AbandonmentDeliveryState(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("NOT_SENT", "SCHEDULED", "SENT")
+
+
+class AbandonmentEmailState(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("NOT_SENT", "SCHEDULED", "SENT")
+
+
+class AbandonmentEmailStateUpdateUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ABANDONMENT_NOT_FOUND",)
+
+
+class AbandonmentUpdateActivitiesDeliveryStatusesUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ABANDONMENT_NOT_FOUND", "DELIVERY_STATUS_INFO_NOT_FOUND", "MARKETING_ACTIVITY_NOT_FOUND")
+
+
class AppDeveloperType(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("MERCHANT", "PARTNER", "SHOPIFY", "UNKNOWN")
@@ -118,7 +144,16 @@ class BadgeType(sgqlc.types.Enum):
class BillingAttemptUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("BLANK", "CONTRACT_NOT_FOUND", "INVALID")
+ __choices__ = (
+ "BLANK",
+ "CONTRACT_NOT_FOUND",
+ "CYCLE_INDEX_OUT_OF_RANGE",
+ "CYCLE_START_DATE_OUT_OF_RANGE",
+ "INVALID",
+ "ORIGIN_TIME_BEFORE_CONTRACT_CREATION",
+ "ORIGIN_TIME_OUT_OF_RANGE",
+ "UPCOMING_CYCLE_LIMIT_EXCEEDED",
+ )
Boolean = sgqlc.types.Boolean
@@ -126,13 +161,7 @@ class BillingAttemptUserErrorCode(sgqlc.types.Enum):
class BulkMutationErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "INTERNAL_FILE_SERVER_ERROR",
- "INVALID_MUTATION",
- "INVALID_STAGED_UPLOAD_FILE",
- "NO_SUCH_FILE",
- "OPERATION_IN_PROGRESS",
- )
+ __choices__ = ("INTERNAL_FILE_SERVER_ERROR", "INVALID_MUTATION", "INVALID_STAGED_UPLOAD_FILE", "NO_SUCH_FILE", "OPERATION_IN_PROGRESS")
class BulkOperationErrorCode(sgqlc.types.Enum):
@@ -181,9 +210,75 @@ class BusinessCustomerErrorCode(sgqlc.types.Enum):
)
+class CartTransformCreateUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("FUNCTION_ALREADY_REGISTERED", "FUNCTION_DOES_NOT_IMPLEMENT", "FUNCTION_NOT_FOUND", "INPUT_INVALID")
+
+
+class CartTransformDeleteUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("NOT_FOUND", "UNAUTHORIZED_APP_SCOPE")
+
+
+class CatalogSortKeys(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ID", "RELEVANCE", "TITLE")
+
+
+class CatalogStatus(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ACTIVE", "ARCHIVED", "DRAFT")
+
+
+class CatalogType(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("APP", "COMPANY_LOCATION", "MARKET", "NONE")
+
+
+class CatalogUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "APP_CATALOG_PRICE_LIST_ASSIGNMENT",
+ "BLANK",
+ "CANNOT_ADD_MORE_THAN_ONE_MARKET",
+ "CANNOT_CREATE_APP_CATALOG",
+ "CANNOT_CREATE_MARKET_CATALOG",
+ "CANNOT_DELETE_APP_CATALOG",
+ "CANNOT_DELETE_MARKET_CATALOG",
+ "CANNOT_MODIFY_APP_CATALOG",
+ "CANNOT_MODIFY_MARKET_CATALOG",
+ "CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_RULES",
+ "CATALOG_FAILED_TO_SAVE",
+ "CATALOG_NOT_FOUND",
+ "COMPANY_LOCATION_CATALOG_STATUS_PLAN",
+ "COMPANY_LOCATION_NOT_FOUND",
+ "CONTEXT_ALREADY_ASSIGNED_TO_CATALOG",
+ "CONTEXT_CATALOG_LIMIT_REACHED",
+ "CONTEXT_DRIVER_MISMATCH",
+ "COUNTRY_PRICE_LIST_ASSIGNMENT",
+ "INVALID",
+ "INVALID_CATALOG_CONTEXT_TYPE",
+ "MARKET_AND_PRICE_LIST_CURRENCY_MISMATCH",
+ "MARKET_CATALOG_STATUS",
+ "MARKET_NOT_FOUND",
+ "MARKET_TAKEN",
+ "MUST_PROVIDE_EXACTLY_ONE_CONTEXT_TYPE",
+ "PRICE_LIST_FAILED_TO_SAVE",
+ "PRICE_LIST_LOCKED",
+ "PRICE_LIST_NOT_ALLOWED_FOR_PRIMARY_MARKET",
+ "PRICE_LIST_NOT_FOUND",
+ "PUBLICATION_NOT_FOUND",
+ "REQUIRES_CONTEXTS_TO_ADD_OR_REMOVE",
+ "TAKEN",
+ "TOO_LONG",
+ "TOO_SHORT",
+ "UNSUPPORTED_CATALOG_ACTION",
+ )
+
+
class CheckoutProfileSortKeys(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("CREATED_AT", "ID", "IS_PUBLISHED", "RELEVANCE", "UPDATED_AT")
+ __choices__ = ("CREATED_AT", "EDITED_AT", "ID", "IS_PUBLISHED", "RELEVANCE", "UPDATED_AT")
class CodeDiscountSortKeys(sgqlc.types.Enum):
@@ -200,12 +295,14 @@ class CollectionRuleColumn(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
"IS_PRICE_REDUCED",
+ "PRODUCT_METAFIELD_DEFINITION",
"PRODUCT_TAXONOMY_NODE_ID",
"TAG",
"TITLE",
"TYPE",
"VARIANT_COMPARE_AT_PRICE",
"VARIANT_INVENTORY",
+ "VARIANT_METAFIELD_DEFINITION",
"VARIANT_PRICE",
"VARIANT_TITLE",
"VARIANT_WEIGHT",
@@ -236,16 +333,7 @@ class CollectionSortKeys(sgqlc.types.Enum):
class CollectionSortOrder(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "ALPHA_ASC",
- "ALPHA_DESC",
- "BEST_SELLING",
- "CREATED",
- "CREATED_DESC",
- "MANUAL",
- "PRICE_ASC",
- "PRICE_DESC",
- )
+ __choices__ = ("ALPHA_ASC", "ALPHA_DESC", "BEST_SELLING", "CREATED", "CREATED_DESC", "MANUAL", "PRICE_ASC", "PRICE_DESC")
class CompanyAddressType(sgqlc.types.Enum):
@@ -728,16 +816,60 @@ class CustomerMarketingOptInLevel(sgqlc.types.Enum):
__choices__ = ("CONFIRMED_OPT_IN", "SINGLE_OPT_IN", "UNKNOWN")
-class CustomerPaymentMethodGetUpdateUrlUserErrorCode(sgqlc.types.Enum):
+class CustomerMergeErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "CUSTOMER_HAS_GIFT_CARDS",
+ "INTERNAL_ERROR",
+ "INVALID_CUSTOMER",
+ "INVALID_CUSTOMER_ID",
+ "MISSING_OVERRIDE_ATTRIBUTE",
+ "OVERRIDE_ATTRIBUTE_INVALID",
+ )
+
+
+class CustomerMergeErrorFieldType(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "COMPANY_CONTACT",
+ "CUSTOMER_PAYMENT_METHODS",
+ "DELETED_AT",
+ "GIFT_CARDS",
+ "MERGE_IN_PROGRESS",
+ "MULTIPASS_IDENTIFIER",
+ "PENDING_DATA_REQUEST",
+ "REDACTED_AT",
+ "SUBSCRIPTIONS",
+ )
+
+
+class CustomerMergeRequestStatus(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("COMPLETED", "FAILED", "IN_PROGRESS", "REQUESTED")
+
+
+class CustomerPaymentMethodCreateFromDuplicationDataUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("CUSTOMER_DOES_NOT_EXIST", "INVALID_ENCRYPTED_DUPLICATION_DATA", "TOO_MANY_REQUESTS")
+
+
+class CustomerPaymentMethodGetDuplicationDataUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
"CUSTOMER_DOES_NOT_EXIST",
"INVALID_INSTRUMENT",
+ "INVALID_ORGANIZATION_SHOP",
"PAYMENT_METHOD_DOES_NOT_EXIST",
+ "SAME_SHOP",
"TOO_MANY_REQUESTS",
)
+class CustomerPaymentMethodGetUpdateUrlUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("CUSTOMER_DOES_NOT_EXIST", "INVALID_INSTRUMENT", "PAYMENT_METHOD_DOES_NOT_EXIST", "TOO_MANY_REQUESTS")
+
+
class CustomerPaymentMethodRemoteUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
@@ -790,6 +922,11 @@ class CustomerSavedSearchSortKeys(sgqlc.types.Enum):
__choices__ = ("ID", "NAME", "RELEVANCE")
+class CustomerSegmentMembersQueryUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("INVALID",)
+
+
class CustomerSmsMarketingConsentErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("INCLUSION", "INTERNAL_ERROR", "INVALID", "MISSING_ARGUMENT")
@@ -802,17 +939,7 @@ class CustomerSmsMarketingState(sgqlc.types.Enum):
class CustomerSortKeys(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "CREATED_AT",
- "ID",
- "LAST_ORDER_DATE",
- "LOCATION",
- "NAME",
- "ORDERS_COUNT",
- "RELEVANCE",
- "TOTAL_SPENT",
- "UPDATED_AT",
- )
+ __choices__ = ("CREATED_AT", "ID", "LAST_ORDER_DATE", "LOCATION", "NAME", "ORDERS_COUNT", "RELEVANCE", "TOTAL_SPENT", "UPDATED_AT")
class CustomerState(sgqlc.types.Enum):
@@ -847,6 +974,11 @@ class DelegateAccessTokenCreateUserErrorCode(sgqlc.types.Enum):
)
+class DelegateAccessTokenDestroyUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ACCESS_DENIED", "ACCESS_TOKEN_NOT_FOUND", "CAN_ONLY_DELETE_DELEGATE_TOKENS", "PERSISTENCE_FAILED")
+
+
class DeletionEventSortKeys(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("CREATED_AT", "ID", "RELEVANCE")
@@ -867,11 +999,39 @@ class DeliveryConditionOperator(sgqlc.types.Enum):
__choices__ = ("GREATER_THAN_OR_EQUAL_TO", "LESS_THAN_OR_EQUAL_TO")
+class DeliveryCustomizationErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "CUSTOM_APP_FUNCTION_NOT_ELIGIBLE",
+ "DELIVERY_CUSTOMIZATION_FUNCTION_NOT_ELIGIBLE",
+ "DELIVERY_CUSTOMIZATION_NOT_FOUND",
+ "FUNCTION_DOES_NOT_IMPLEMENT",
+ "FUNCTION_ID_CANNOT_BE_CHANGED",
+ "FUNCTION_NOT_FOUND",
+ "FUNCTION_PENDING_DELETION",
+ "INVALID",
+ "INVALID_METAFIELDS",
+ "MAXIMUM_ACTIVE_DELIVERY_CUSTOMIZATIONS",
+ "REQUIRED_INPUT_FIELD",
+ "UNAUTHORIZED_APP_SCOPE",
+ )
+
+
class DeliveryLegacyModeBlockedReason(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("NO_LOCATIONS_FULFILLING_ONLINE_ORDERS",)
+class DeliveryLocalPickupTime(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("FIVE_OR_MORE_DAYS", "FOUR_HOURS", "ONE_HOUR", "TWENTY_FOUR_HOURS", "TWO_HOURS", "TWO_TO_FOUR_DAYS")
+
+
+class DeliveryLocationLocalPickupSettingsErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ACTIVE_LOCATION_NOT_FOUND", "GENERIC_ERROR")
+
+
class DeliveryMethodDefinitionType(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("MERCHANT", "PARTICIPANT")
@@ -1010,6 +1170,11 @@ class DraftOrderStatus(sgqlc.types.Enum):
__choices__ = ("COMPLETED", "INVOICE_SENT", "OPEN")
+class ErrorsServerPixelUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ALREADY_EXISTS", "NEEDS_CONFIGURATION_TO_CONNECT", "NOT_FOUND", "PUB_SUB_ERROR")
+
+
class ErrorsWebPixelUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("BLANK", "INVALID_SETTINGS", "NOT_FOUND", "TAKEN", "UNABLE_TO_DELETE")
@@ -1025,9 +1190,15 @@ class FileContentType(sgqlc.types.Enum):
__choices__ = ("FILE", "IMAGE", "VIDEO")
+class FileCreateInputDuplicateResolutionMode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("APPEND_UUID", "RAISE_ERROR", "REPLACE")
+
+
class FileErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
+ "DUPLICATE_FILENAME_ERROR",
"EXTERNAL_VIDEO_EMBED_DISABLED",
"EXTERNAL_VIDEO_EMBED_NOT_FOUND_OR_TRANSCODING",
"EXTERNAL_VIDEO_INVALID_ASPECT_RATIO",
@@ -1047,6 +1218,7 @@ class FileErrorCode(sgqlc.types.Enum):
"MODEL3D_GLB_TO_USDZ_CONVERSION_ERROR",
"MODEL3D_PROCESSING_FAILURE",
"MODEL3D_THUMBNAIL_GENERATION_ERROR",
+ "MODEL3D_THUMBNAIL_REGENERATION_ERROR",
"MODEL3D_VALIDATION_ERROR",
"UNKNOWN",
"UNSUPPORTED_IMAGE_FILE_TYPE",
@@ -1064,7 +1236,7 @@ class FileErrorCode(sgqlc.types.Enum):
class FileSortKeys(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("CREATED_AT", "FILENAME", "ID", "ORIGINAL_UPLOAD_SIZE", "RELEVANCE")
+ __choices__ = ("CREATED_AT", "FILENAME", "ID", "ORIGINAL_UPLOAD_SIZE", "RELEVANCE", "UPDATED_AT")
class FileStatus(sgqlc.types.Enum):
@@ -1077,16 +1249,25 @@ class FilesErrorCode(sgqlc.types.Enum):
__choices__ = (
"ALT_VALUE_LIMIT_EXCEEDED",
"BLANK_SEARCH",
+ "FILENAME_ALREADY_EXISTS",
"FILE_DOES_NOT_EXIST",
"FILE_LOCKED",
"INVALID",
+ "INVALID_DUPLICATE_MODE_FOR_TYPE",
+ "INVALID_FILENAME",
+ "INVALID_FILENAME_EXTENSION",
+ "INVALID_IMAGE_SOURCE_URL",
"INVALID_QUERY",
+ "MISMATCHED_FILENAME_AND_ORIGINAL_SOURCE",
"MISSING_ARGUMENTS",
+ "MISSING_FILENAME_FOR_DUPLICATE_MODE_REPLACE",
"NON_IMAGE_MEDIA_PER_SHOP_LIMIT_EXCEEDED",
+ "NON_READY_STATE",
"TOO_MANY_ARGUMENTS",
"UNACCEPTABLE_ASSET",
"UNACCEPTABLE_TRIAL_ASSET",
"UNACCEPTABLE_UNVERIFIED_TRIAL_ASSET",
+ "UNSUPPORTED_MEDIA_TYPE_FOR_FILENAME_UPDATE",
)
@@ -1146,6 +1327,7 @@ class FulfillmentHoldReason(sgqlc.types.Enum):
"HIGH_RISK_OF_FRAUD",
"INCORRECT_ADDRESS",
"INVENTORY_OUT_OF_STOCK",
+ "ONLINE_STORE_POST_PURCHASE_CROSS_SELL",
"OTHER",
"UNKNOWN_DELIVERY_DATE",
)
@@ -1159,10 +1341,12 @@ class FulfillmentOrderAction(sgqlc.types.Enum):
"EXTERNAL",
"HOLD",
"MARK_AS_OPEN",
+ "MERGE",
"MOVE",
"RELEASE_HOLD",
"REQUEST_CANCELLATION",
"REQUEST_FULFILLMENT",
+ "SPLIT",
)
@@ -1173,7 +1357,12 @@ class FulfillmentOrderAssignmentStatus(sgqlc.types.Enum):
class FulfillmentOrderHoldUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("FULFILLMENT_ORDER_NOT_FOUND", "TAKEN")
+ __choices__ = ("FULFILLMENT_ORDER_NOT_FOUND", "GREATER_THAN_ZERO", "INVALID_LINE_ITEM_QUANTITY", "TAKEN")
+
+
+class FulfillmentOrderLineItemsPreparedForPickupUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("FULFILLMENT_ORDER_INVALID", "NO_LINE_ITEMS_TO_PREPARE_FOR_FULFILLMENT_ORDER", "UNABLE_TO_PREPARE_QUANTITY")
class FulfillmentOrderMerchantRequestKind(sgqlc.types.Enum):
@@ -1181,20 +1370,19 @@ class FulfillmentOrderMerchantRequestKind(sgqlc.types.Enum):
__choices__ = ("CANCELLATION_REQUEST", "FULFILLMENT_REQUEST")
+class FulfillmentOrderMergeUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("FULFILLMENT_ORDER_NOT_FOUND", "GREATER_THAN", "INVALID_LINE_ITEM_QUANTITY")
+
+
class FulfillmentOrderRejectionReason(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "INCORRECT_ADDRESS",
- "INELIGIBLE_PRODUCT",
- "INVENTORY_OUT_OF_STOCK",
- "OTHER",
- "UNDELIVERABLE_DESTINATION",
- )
+ __choices__ = ("INCORRECT_ADDRESS", "INELIGIBLE_PRODUCT", "INVENTORY_OUT_OF_STOCK", "OTHER", "UNDELIVERABLE_DESTINATION")
class FulfillmentOrderReleaseHoldUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("FULFILLMENT_ORDER_NOT_FOUND",)
+ __choices__ = ("FULFILLMENT_ORDER_NOT_FOUND", "GREATER_THAN_ZERO", "INVALID_LINE_ITEM_QUANTITY")
class FulfillmentOrderRequestStatus(sgqlc.types.Enum):
@@ -1221,11 +1409,21 @@ class FulfillmentOrderSortKeys(sgqlc.types.Enum):
__choices__ = ("ID", "RELEVANCE")
+class FulfillmentOrderSplitUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("FULFILLMENT_ORDER_NOT_FOUND", "GREATER_THAN", "INVALID_LINE_ITEM_QUANTITY")
+
+
class FulfillmentOrderStatus(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("CANCELLED", "CLOSED", "INCOMPLETE", "IN_PROGRESS", "ON_HOLD", "OPEN", "SCHEDULED")
+class FulfillmentOrdersReleaseHoldsUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("FAILED_TO_CREATE_JOB",)
+
+
class FulfillmentOrdersSetFulfillmentDeadlineUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("FULFILLMENT_ORDERS_NOT_FOUND",)
@@ -1278,15 +1476,256 @@ class ImageContentType(sgqlc.types.Enum):
Int = sgqlc.types.Int
+class InventoryAdjustQuantitiesUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "ADJUST_QUANTITIES_FAILED",
+ "INTERNAL_LEDGER_DOCUMENT",
+ "INVALID_AVAILABLE_DOCUMENT",
+ "INVALID_INVENTORY_ITEM",
+ "INVALID_LEDGER_DOCUMENT",
+ "INVALID_LOCATION",
+ "INVALID_QUANTITY_DOCUMENT",
+ "INVALID_QUANTITY_NAME",
+ "INVALID_QUANTITY_TOO_HIGH",
+ "INVALID_QUANTITY_TOO_LOW",
+ "INVALID_REASON",
+ "INVALID_REFERENCE_DOCUMENT",
+ "ITEM_NOT_STOCKED_AT_LOCATION",
+ "MAX_ONE_LEDGER_DOCUMENT",
+ "NON_MUTABLE_INVENTORY_ITEM",
+ )
+
+
class InventoryBulkToggleActivationUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("GENERIC_ERROR",)
+ __choices__ = (
+ "CANNOT_DEACTIVATE_FROM_ONLY_LOCATION",
+ "COMMITTED_INVENTORY_AT_LOCATION",
+ "FAILED_TO_STOCK_AT_LOCATION",
+ "FAILED_TO_UNSTOCK_FROM_LOCATION",
+ "GENERIC_ERROR",
+ "INCOMING_INVENTORY_AT_LOCATION",
+ "INVENTORY_ITEM_NOT_FOUND",
+ "INVENTORY_MANAGED_BY_3RD_PARTY",
+ "INVENTORY_MANAGED_BY_SHOPIFY",
+ "LOCATION_NOT_FOUND",
+ "MISSING_SKU",
+ "RESERVED_INVENTORY_AT_LOCATION",
+ )
+
+
+class InventoryMoveQuantitiesUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "DIFFERENT_LOCATIONS",
+ "INTERNAL_LEDGER_DOCUMENT",
+ "INVALID_AVAILABLE_DOCUMENT",
+ "INVALID_INVENTORY_ITEM",
+ "INVALID_LEDGER_DOCUMENT",
+ "INVALID_LOCATION",
+ "INVALID_QUANTITY_DOCUMENT",
+ "INVALID_QUANTITY_NAME",
+ "INVALID_QUANTITY_NEGATIVE",
+ "INVALID_QUANTITY_TOO_HIGH",
+ "INVALID_REASON",
+ "INVALID_REFERENCE_DOCUMENT",
+ "ITEM_NOT_STOCKED_AT_LOCATION",
+ "MAXIMUM_LEDGER_DOCUMENT_URIS",
+ "MOVE_QUANTITIES_FAILED",
+ "NON_MUTABLE_INVENTORY_ITEM",
+ "SAME_QUANTITY_NAME",
+ )
+
+
+class InventorySetOnHandQuantitiesUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "INVALID_INVENTORY_ITEM",
+ "INVALID_LOCATION",
+ "INVALID_QUANTITY_NEGATIVE",
+ "INVALID_QUANTITY_TOO_HIGH",
+ "INVALID_REASON",
+ "INVALID_REFERENCE_DOCUMENT",
+ "ITEM_NOT_STOCKED_AT_LOCATION",
+ "NON_MUTABLE_INVENTORY_ITEM",
+ "SET_ON_HAND_QUANTITIES_FAILED",
+ )
class JSON(sgqlc.types.Scalar):
__schema__ = shopify_schema
+class LanguageCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "AF",
+ "AK",
+ "AM",
+ "AR",
+ "AS",
+ "AZ",
+ "BE",
+ "BG",
+ "BM",
+ "BN",
+ "BO",
+ "BR",
+ "BS",
+ "CA",
+ "CE",
+ "CS",
+ "CU",
+ "CY",
+ "DA",
+ "DE",
+ "DZ",
+ "EE",
+ "EL",
+ "EN",
+ "EO",
+ "ES",
+ "ET",
+ "EU",
+ "FA",
+ "FF",
+ "FI",
+ "FO",
+ "FR",
+ "FY",
+ "GA",
+ "GD",
+ "GL",
+ "GU",
+ "GV",
+ "HA",
+ "HE",
+ "HI",
+ "HR",
+ "HU",
+ "HY",
+ "IA",
+ "ID",
+ "IG",
+ "II",
+ "IS",
+ "IT",
+ "JA",
+ "JV",
+ "KA",
+ "KI",
+ "KK",
+ "KL",
+ "KM",
+ "KN",
+ "KO",
+ "KS",
+ "KU",
+ "KW",
+ "KY",
+ "LB",
+ "LG",
+ "LN",
+ "LO",
+ "LT",
+ "LU",
+ "LV",
+ "MG",
+ "MI",
+ "MK",
+ "ML",
+ "MN",
+ "MR",
+ "MS",
+ "MT",
+ "MY",
+ "NB",
+ "ND",
+ "NE",
+ "NL",
+ "NN",
+ "NO",
+ "OM",
+ "OR",
+ "OS",
+ "PA",
+ "PL",
+ "PS",
+ "PT",
+ "PT_BR",
+ "PT_PT",
+ "QU",
+ "RM",
+ "RN",
+ "RO",
+ "RU",
+ "RW",
+ "SD",
+ "SE",
+ "SG",
+ "SI",
+ "SK",
+ "SL",
+ "SN",
+ "SO",
+ "SQ",
+ "SR",
+ "SU",
+ "SV",
+ "SW",
+ "TA",
+ "TE",
+ "TG",
+ "TH",
+ "TI",
+ "TK",
+ "TO",
+ "TR",
+ "TT",
+ "UG",
+ "UK",
+ "UR",
+ "UZ",
+ "VI",
+ "VO",
+ "WO",
+ "XH",
+ "YI",
+ "YO",
+ "ZH",
+ "ZH_CN",
+ "ZH_TW",
+ "ZU",
+ )
+
+
+class LengthUnit(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("CENTIMETERS", "FEET", "INCHES", "METERS", "MILLIMETERS", "YARDS")
+
+
+class LocalizableContentType(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "FILE_REFERENCE",
+ "HTML",
+ "INLINE_RICH_TEXT",
+ "JSON",
+ "JSON_STRING",
+ "LIST_FILE_REFERENCE",
+ "LIST_MULTI_LINE_TEXT_FIELD",
+ "LIST_SINGLE_LINE_TEXT_FIELD",
+ "LIST_URL",
+ "MULTI_LINE_TEXT_FIELD",
+ "RICH_TEXT_FIELD",
+ "SINGLE_LINE_TEXT_FIELD",
+ "STRING",
+ "URI",
+ "URL",
+ )
+
+
class LocalizationExtensionKey(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
@@ -1306,12 +1745,27 @@ class LocalizationExtensionPurpose(sgqlc.types.Enum):
class LocationActivateUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("GENERIC_ERROR", "HAS_ONGOING_RELOCATION", "LOCATION_LIMIT", "LOCATION_NOT_FOUND")
+ __choices__ = ("GENERIC_ERROR", "HAS_NON_UNIQUE_NAME", "HAS_ONGOING_RELOCATION", "LOCATION_LIMIT", "LOCATION_NOT_FOUND")
class LocationAddUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("BLANK", "GENERIC_ERROR", "INVALID", "INVALID_US_ZIPCODE", "TAKEN", "TOO_LONG")
+ __choices__ = (
+ "APP_NOT_AUTHORIZED",
+ "BLANK",
+ "DISALLOWED_OWNER_TYPE",
+ "GENERIC_ERROR",
+ "INCLUSION",
+ "INVALID",
+ "INVALID_TYPE",
+ "INVALID_US_ZIPCODE",
+ "INVALID_VALUE",
+ "PRESENT",
+ "TAKEN",
+ "TOO_LONG",
+ "TOO_SHORT",
+ "UNSTRUCTURED_RESERVED_NAMESPACE",
+ )
class LocationDeactivateUserErrorCode(sgqlc.types.Enum):
@@ -1330,7 +1784,6 @@ class LocationDeactivateUserErrorCode(sgqlc.types.Enum):
"HAS_INCOMING_MOVEMENTS_ERROR",
"HAS_OPEN_PURCHASE_ORDERS_ERROR",
"HAS_OPEN_TRANSFERS_ERROR",
- "INVALID",
"LOCATION_NOT_FOUND",
"PERMANENTLY_BLOCKED_FROM_DEACTIVATION_ERROR",
"TEMPORARILY_BLOCKED_FROM_DEACTIVATION_ERROR",
@@ -1352,13 +1805,22 @@ class LocationDeleteUserErrorCode(sgqlc.types.Enum):
class LocationEditUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
+ "APP_NOT_AUTHORIZED",
"BLANK",
"CANNOT_DISABLE_ONLINE_ORDER_FULFILLMENT",
+ "DISALLOWED_OWNER_TYPE",
"GENERIC_ERROR",
+ "INCLUSION",
"INVALID",
+ "INVALID_TYPE",
"INVALID_US_ZIPCODE",
+ "INVALID_VALUE",
"NOT_FOUND",
- "TOO_LONG",
+ "PRESENT",
+ "TAKEN",
+ "TOO_LONG",
+ "TOO_SHORT",
+ "UNSTRUCTURED_RESERVED_NAMESPACE",
)
@@ -1409,7 +1871,7 @@ class MarketUserErrorCode(sgqlc.types.Enum):
"REQUIRES_DOMAIN_OR_SUBFOLDER",
"REQUIRES_EXACTLY_ONE_OPTION",
"SHOP_REACHED_MARKETS_LIMIT",
- "SUBFOLDER_NOT_ALLOWED_FOR_CCTLD_DOMAINS",
+ "SUBFOLDER_SUFFIX_CANNOT_BE_SCRIPT_CODE",
"SUBFOLDER_SUFFIX_MUST_CONTAIN_ONLY_LETTERS",
"TAKEN",
"TOO_LONG",
@@ -1500,6 +1962,7 @@ class MediaContentType(sgqlc.types.Enum):
class MediaErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
+ "DUPLICATE_FILENAME_ERROR",
"EXTERNAL_VIDEO_EMBED_DISABLED",
"EXTERNAL_VIDEO_EMBED_NOT_FOUND_OR_TRANSCODING",
"EXTERNAL_VIDEO_INVALID_ASPECT_RATIO",
@@ -1519,6 +1982,7 @@ class MediaErrorCode(sgqlc.types.Enum):
"MODEL3D_GLB_TO_USDZ_CONVERSION_ERROR",
"MODEL3D_PROCESSING_FAILURE",
"MODEL3D_THUMBNAIL_GENERATION_ERROR",
+ "MODEL3D_THUMBNAIL_REGENERATION_ERROR",
"MODEL3D_VALIDATION_ERROR",
"UNKNOWN",
"UNSUPPORTED_IMAGE_FILE_TYPE",
@@ -1585,6 +2049,11 @@ class MerchandiseDiscountClass(sgqlc.types.Enum):
__choices__ = ("ORDER", "PRODUCT")
+class MetafieldAdminAccess(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("MERCHANT_READ", "MERCHANT_READ_WRITE", "PRIVATE", "PUBLIC_READ")
+
+
class MetafieldDefinitionCreateUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
@@ -1594,6 +2063,7 @@ class MetafieldDefinitionCreateUserErrorCode(sgqlc.types.Enum):
"INVALID_CHARACTER",
"INVALID_OPTION",
"LIMIT_EXCEEDED",
+ "OWNER_TYPE_LIMIT_EXCEEDED_FOR_AUTOMATED_COLLECTIONS",
"PINNED_LIMIT_REACHED",
"PRESENT",
"RESERVED_NAMESPACE_KEY",
@@ -1601,18 +2071,26 @@ class MetafieldDefinitionCreateUserErrorCode(sgqlc.types.Enum):
"TAKEN",
"TOO_LONG",
"TOO_SHORT",
+ "TYPE_NOT_ALLOWED_FOR_CONDITIONS",
"UNSTRUCTURED_ALREADY_EXISTS",
)
class MetafieldDefinitionDeleteUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("INTERNAL_ERROR", "NOT_FOUND", "PRESENT", "REFERENCE_TYPE_DELETION_ERROR")
+ __choices__ = (
+ "DISALLOWED_OWNER_TYPE",
+ "INTERNAL_ERROR",
+ "METAFIELD_DEFINITION_IN_USE",
+ "NOT_FOUND",
+ "PRESENT",
+ "REFERENCE_TYPE_DELETION_ERROR",
+ )
class MetafieldDefinitionPinUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("ALREADY_PINNED", "INTERNAL_ERROR", "NOT_FOUND", "PINNED_LIMIT_REACHED")
+ __choices__ = ("ALREADY_PINNED", "DISALLOWED_OWNER_TYPE", "INTERNAL_ERROR", "NOT_FOUND", "PINNED_LIMIT_REACHED")
class MetafieldDefinitionPinnedStatus(sgqlc.types.Enum):
@@ -1627,12 +2105,22 @@ class MetafieldDefinitionSortKeys(sgqlc.types.Enum):
class MetafieldDefinitionUnpinUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("INTERNAL_ERROR", "NOT_FOUND", "NOT_PINNED")
+ __choices__ = ("DISALLOWED_OWNER_TYPE", "INTERNAL_ERROR", "NOT_FOUND", "NOT_PINNED")
class MetafieldDefinitionUpdateUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("INTERNAL_ERROR", "INVALID_INPUT", "NOT_FOUND", "PINNED_LIMIT_REACHED", "PRESENT", "TOO_LONG")
+ __choices__ = (
+ "INTERNAL_ERROR",
+ "INVALID_INPUT",
+ "METAFIELD_DEFINITION_IN_USE",
+ "NOT_FOUND",
+ "OWNER_TYPE_LIMIT_EXCEEDED_FOR_AUTOMATED_COLLECTIONS",
+ "PINNED_LIMIT_REACHED",
+ "PRESENT",
+ "TOO_LONG",
+ "TYPE_NOT_ALLOWED_FOR_CONDITIONS",
+ )
class MetafieldDefinitionValidationStatus(sgqlc.types.Enum):
@@ -1647,14 +2135,19 @@ class MetafieldOwnerType(sgqlc.types.Enum):
"ARTICLE",
"BLOG",
"COLLECTION",
+ "COMPANY",
+ "COMPANY_LOCATION",
"CUSTOMER",
+ "DELIVERY_CUSTOMIZATION",
"DISCOUNT",
"DRAFTORDER",
"LOCATION",
+ "MARKET",
+ "MEDIA_IMAGE",
"ORDER",
"PAGE",
+ "PAYMENT_CUSTOMIZATION",
"PRODUCT",
- "PRODUCTIMAGE",
"PRODUCTVARIANT",
"SHOP",
)
@@ -1685,6 +2178,50 @@ class MetafieldsSetUserErrorCode(sgqlc.types.Enum):
)
+class MetaobjectAdminAccess(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("MERCHANT_READ", "MERCHANT_READ_WRITE", "PRIVATE", "PUBLIC_READ", "PUBLIC_READ_WRITE")
+
+
+class MetaobjectStatus(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ACTIVE", "DRAFT")
+
+
+class MetaobjectStorefrontAccess(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("NONE", "PUBLIC_READ")
+
+
+class MetaobjectUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "BLANK",
+ "CAPABILITY_NOT_ENABLED",
+ "DUPLICATE_FIELD_INPUT",
+ "IMMUTABLE",
+ "INCLUSION",
+ "INTERNAL_ERROR",
+ "INVALID",
+ "INVALID_OPTION",
+ "INVALID_TYPE",
+ "INVALID_VALUE",
+ "MAX_DEFINITIONS_EXCEEDED",
+ "MAX_OBJECTS_EXCEEDED",
+ "NOT_AUTHORIZED",
+ "OBJECT_FIELD_REQUIRED",
+ "OBJECT_FIELD_TAKEN",
+ "PRESENT",
+ "RECORD_NOT_FOUND",
+ "RESERVED_NAME",
+ "TAKEN",
+ "TOO_LONG",
+ "TOO_SHORT",
+ "UNDEFINED_OBJECT_FIELD",
+ "UNDEFINED_OBJECT_TYPE",
+ )
+
+
class MethodDefinitionSortKeys(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("ID", "RATE_PROVIDER_TYPE", "RELEVANCE")
@@ -1711,16 +2248,7 @@ class OrderCreateMandatePaymentUserErrorCode(sgqlc.types.Enum):
class OrderDisplayFinancialStatus(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "AUTHORIZED",
- "EXPIRED",
- "PAID",
- "PARTIALLY_PAID",
- "PARTIALLY_REFUNDED",
- "PENDING",
- "REFUNDED",
- "VOIDED",
- )
+ __choices__ = ("AUTHORIZED", "EXPIRED", "PAID", "PARTIALLY_PAID", "PARTIALLY_REFUNDED", "PENDING", "REFUNDED", "VOIDED")
class OrderDisplayFulfillmentStatus(sgqlc.types.Enum):
@@ -1760,6 +2288,11 @@ class OrderPaymentStatusResult(sgqlc.types.Enum):
)
+class OrderReturnStatus(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("INSPECTION_COMPLETE", "IN_PROGRESS", "NO_RETURN", "RETURNED", "RETURN_FAILED", "RETURN_REQUESTED")
+
+
class OrderRiskLevel(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("HIGH", "LOW", "MEDIUM")
@@ -1770,12 +2303,15 @@ class OrderSortKeys(sgqlc.types.Enum):
__choices__ = (
"CREATED_AT",
"CUSTOMER_NAME",
+ "DESTINATION",
"FINANCIAL_STATUS",
"FULFILLMENT_STATUS",
"ID",
"ORDER_NUMBER",
+ "PO_NUMBER",
"PROCESSED_AT",
"RELEVANCE",
+ "TOTAL_ITEMS_QUANTITY",
"TOTAL_PRICE",
"UPDATED_AT",
)
@@ -1816,16 +2352,7 @@ class OrderTransactionErrorCode(sgqlc.types.Enum):
class OrderTransactionKind(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "AUTHORIZATION",
- "CAPTURE",
- "CHANGE",
- "EMV_AUTHORIZATION",
- "REFUND",
- "SALE",
- "SUGGESTED_REFUND",
- "VOID",
- )
+ __choices__ = ("AUTHORIZATION", "CAPTURE", "CHANGE", "EMV_AUTHORIZATION", "REFUND", "SALE", "SUGGESTED_REFUND", "VOID")
class OrderTransactionStatus(sgqlc.types.Enum):
@@ -1833,6 +2360,76 @@ class OrderTransactionStatus(sgqlc.types.Enum):
__choices__ = ("AWAITING_RESPONSE", "ERROR", "FAILURE", "PENDING", "SUCCESS", "UNKNOWN")
+class ParseErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "BACKFILL_DATE_RANGE_NOT_FOUND",
+ "COLUMN_NOT_FOUND",
+ "COMPARE_TO_INCOMPATIBLE_PERIOD",
+ "COMPARE_TO_INVALID_PERIOD",
+ "COMPARE_TO_MISSING_PERIOD",
+ "COMPARISON_WITH_NON_AGGREGATE_FIELDS",
+ "DATE_INTERVAL_NOT_FOUND",
+ "DATE_NOT_PARSABLE",
+ "DATE_TIME_NOT_PARSABLE",
+ "EXCESS_BACKFILL_DIMENSIONS",
+ "EXCESS_DIMENSIONS",
+ "EXCESS_PERIODS",
+ "EXCESS_PRESENTMENTS",
+ "FROM_NOT_FOUND",
+ "FUNCTION_ARGUMENTS_NOT_FOUND",
+ "FUNCTION_EXCESS_ARGUMENTS",
+ "FUNCTION_INCOMPATIBLE_TYPES",
+ "FUNCTION_MODIFIER_NOT_FOUND",
+ "FUNCTION_NESTED_AGGREGATE",
+ "FUNCTION_NOT_FOUND",
+ "INVALID_DATE_RANGE",
+ "LIMIT_INVALID",
+ "LIST_MIXED_ARGUMENT_TYPES",
+ "MIXED_AGGREGATE_AND_NON_AGGREGATE",
+ "NAMED_DATE_NOT_FOUND",
+ "OPERATOR_INCOMPATIBLE_TYPES",
+ "PRESENTMENT_NOT_FOUND",
+ "REQUIRED_GROUP_BY_NOT_FOUND",
+ "SEMANTICALLY_INVALID",
+ "SORT_FIELD_NOT_FOUND",
+ "SYNTAX_FAILED_PREDICATE",
+ "SYNTAX_INPUT_MISMATCH",
+ "SYNTAX_INVALID_TOKEN",
+ "SYNTAX_MISSING_TOKEN",
+ "SYNTAX_NOT_RECOGNIZED",
+ "SYNTAX_NO_VIABLE_ALTERNATIVE",
+ "SYNTAX_UNWANTED_TOKEN",
+ "TABLE_NOT_FOUND",
+ "TIME_FUNCTION_NOT_FOUND",
+ "UNBACKFILLED_TIME_GROUP_BY_COMPARISON",
+ "UNKNOWN",
+ "VALUE_NOT_PARSABLE",
+ "VISUALIZE_CHART_TYPE_NOT_FOUND",
+ "VISUALIZE_EXCESS_PROJECTIONS",
+ "VISUALIZE_GROUP_BY_MIXED_BACKFILL",
+ "VISUALIZE_GROUP_BY_NOT_FOUND",
+ "VISUALIZE_INCOMPATIBLE_TYPES",
+ )
+
+
+class PaymentCustomizationErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "CUSTOM_APP_FUNCTION_NOT_ELIGIBLE",
+ "FUNCTION_DOES_NOT_IMPLEMENT",
+ "FUNCTION_ID_CANNOT_BE_CHANGED",
+ "FUNCTION_NOT_FOUND",
+ "FUNCTION_PENDING_DELETION",
+ "INVALID",
+ "INVALID_METAFIELDS",
+ "MAXIMUM_ACTIVE_PAYMENT_CUSTOMIZATIONS",
+ "PAYMENT_CUSTOMIZATION_FUNCTION_NOT_ELIGIBLE",
+ "PAYMENT_CUSTOMIZATION_NOT_FOUND",
+ "REQUIRED_INPUT_FIELD",
+ )
+
+
class PaymentMethods(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
@@ -1843,6 +2440,7 @@ class PaymentMethods(sgqlc.types.Enum):
"DINERS_CLUB",
"DISCOVER",
"DOGECOIN",
+ "EFTPOS",
"ELO",
"FORBRUGSFORENINGEN",
"INTERAC",
@@ -1856,6 +2454,11 @@ class PaymentMethods(sgqlc.types.Enum):
)
+class PaymentReminderSendUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("PAYMENT_REMINDER_SEND_UNSUCCESSFUL",)
+
+
class PaymentTermsCreateUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("PAYMENT_TERMS_CREATION_UNSUCCESSFUL",)
@@ -1868,7 +2471,7 @@ class PaymentTermsDeleteUserErrorCode(sgqlc.types.Enum):
class PaymentTermsType(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("FIXED", "NET", "RECEIPT", "UNKNOWN")
+ __choices__ = ("FIXED", "FULFILLMENT", "NET", "RECEIPT", "UNKNOWN")
class PaymentTermsUpdateUserErrorCode(sgqlc.types.Enum):
@@ -1881,11 +2484,34 @@ class PaypalExpressSubscriptionsGatewayStatus(sgqlc.types.Enum):
__choices__ = ("DISABLED", "ENABLED", "PENDING")
+class PriceCalculationType(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("COMPONENTS_SUM", "FIXED", "NONE")
+
+
class PriceListAdjustmentType(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("PERCENTAGE_DECREASE", "PERCENTAGE_INCREASE")
+class PriceListCompareAtMode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ADJUSTED", "NULLIFY")
+
+
+class PriceListFixedPricesByProductBulkUpdateUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "DUPLICATE_ID_IN_INPUT",
+ "ID_MUST_BE_MUTUALLY_EXCLUSIVE",
+ "NO_UPDATE_OPERATIONS_SPECIFIED",
+ "PRICES_TO_ADD_CURRENCY_MISMATCH",
+ "PRICE_LIMIT_EXCEEDED",
+ "PRICE_LIST_DOES_NOT_EXIST",
+ "PRODUCT_DOES_NOT_EXIST",
+ )
+
+
class PriceListPriceOriginType(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("FIXED", "RELATIVE")
@@ -1893,13 +2519,7 @@ class PriceListPriceOriginType(sgqlc.types.Enum):
class PriceListPriceUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "BLANK",
- "PRICE_LIST_CURRENCY_MISMATCH",
- "PRICE_LIST_NOT_FOUND",
- "PRICE_NOT_FIXED",
- "VARIANT_NOT_FOUND",
- )
+ __choices__ = ("BLANK", "PRICE_LIST_CURRENCY_MISMATCH", "PRICE_LIST_NOT_FOUND", "PRICE_NOT_FIXED", "VARIANT_NOT_FOUND")
class PriceListSortKeys(sgqlc.types.Enum):
@@ -1910,20 +2530,35 @@ class PriceListSortKeys(sgqlc.types.Enum):
class PriceListUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
+ "APP_CATALOG_PRICE_LIST_ASSIGNMENT",
+ "BLANK",
+ "CATALOG_ASSIGNMENT_NOT_ALLOWED",
+ "CATALOG_CANNOT_CHANGE_CONTEXT_TYPE",
+ "CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_RULES",
+ "CATALOG_DOES_NOT_EXIST",
+ "CATALOG_MARKET_AND_PRICE_LIST_CURRENCY_MISMATCH",
+ "CATALOG_TAKEN",
"CONTEXT_RULE_COUNTRIES_LIMIT",
"CONTEXT_RULE_COUNTRY_TAKEN",
"CONTEXT_RULE_LIMIT_ONE_OPTION",
"CONTEXT_RULE_MARKET_NOT_FOUND",
"CONTEXT_RULE_MARKET_TAKEN",
"COUNTRY_CURRENCY_MISMATCH",
+ "COUNTRY_PRICE_LIST_ASSIGNMENT",
"CURRENCY_COUNTRY_MISMATCH",
"CURRENCY_MARKET_MISMATCH",
"CURRENCY_NOT_SUPPORTED",
+ "GENERIC_ERROR",
+ "INCLUSION",
+ "INVALID_ADJUSTMENT_MAX_VALUE",
+ "INVALID_ADJUSTMENT_MIN_VALUE",
"INVALID_ADJUSTMENT_VALUE",
"MARKET_CURRENCY_MISMATCH",
+ "PRICE_LIST_LOCKED",
"PRICE_LIST_NOT_ALLOWED_FOR_PRIMARY_MARKET",
"PRICE_LIST_NOT_FOUND",
"TAKEN",
+ "TOO_LONG",
)
@@ -2015,13 +2650,7 @@ class PriceRuleErrorCode(sgqlc.types.Enum):
class PriceRuleFeature(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "BULK",
- "BUY_ONE_GET_ONE",
- "BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT",
- "QUANTITY_DISCOUNTS",
- "SPECIFIC_CUSTOMERS",
- )
+ __choices__ = ("BULK", "BUY_ONE_GET_ONE", "BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT", "QUANTITY_DISCOUNTS", "SPECIFIC_CUSTOMERS")
class PriceRuleShareableUrlTargetType(sgqlc.types.Enum):
@@ -2046,13 +2675,7 @@ class PriceRuleTarget(sgqlc.types.Enum):
class PriceRuleTrait(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "BULK",
- "BUY_ONE_GET_ONE",
- "BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT",
- "QUANTITY_DISCOUNTS",
- "SPECIFIC_CUSTOMERS",
- )
+ __choices__ = ("BULK", "BUY_ONE_GET_ONE", "BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT", "QUANTITY_DISCOUNTS", "SPECIFIC_CUSTOMERS")
class PrivateMetafieldValueType(sgqlc.types.Enum):
@@ -2070,6 +2693,36 @@ class ProductCollectionSortKeys(sgqlc.types.Enum):
__choices__ = ("BEST_SELLING", "COLLECTION_DEFAULT", "CREATED", "ID", "MANUAL", "PRICE", "RELEVANCE", "TITLE")
+class ProductDeleteUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("GENERIC_ERROR", "PRODUCT_DOES_NOT_EXIST")
+
+
+class ProductDuplicateUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("BUNDLES_ERROR", "EMPTY_TITLE", "EMPTY_VARIANT", "FAILED_TO_SAVE", "GENERIC_ERROR", "PRODUCT_DOES_NOT_EXIST")
+
+
+class ProductFeedCreateUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("INVALID", "TAKEN")
+
+
+class ProductFeedDeleteUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("INVALID",)
+
+
+class ProductFeedStatus(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ACTIVE", "INACTIVE")
+
+
+class ProductFullSyncUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("INVALID",)
+
+
class ProductImageSortKeys(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("CREATED_AT", "ID", "POSITION", "RELEVANCE")
@@ -2082,17 +2735,7 @@ class ProductMediaSortKeys(sgqlc.types.Enum):
class ProductSortKeys(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "CREATED_AT",
- "ID",
- "INVENTORY_TOTAL",
- "PRODUCT_TYPE",
- "PUBLISHED_AT",
- "RELEVANCE",
- "TITLE",
- "UPDATED_AT",
- "VENDOR",
- )
+ __choices__ = ("CREATED_AT", "ID", "INVENTORY_TOTAL", "PRODUCT_TYPE", "PUBLISHED_AT", "RELEVANCE", "TITLE", "UPDATED_AT", "VENDOR")
class ProductStatus(sgqlc.types.Enum):
@@ -2110,6 +2753,32 @@ class ProductVariantInventoryPolicy(sgqlc.types.Enum):
__choices__ = ("CONTINUE", "DENY")
+class ProductVariantRelationshipBulkUpdateUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "CIRCULAR_REFERENCE",
+ "DUPLICATE_PRODUCT_VARIANT_RELATIONSHIP",
+ "EXCEEDED_PRODUCT_VARIANT_RELATIONSHIP_LIMIT",
+ "FAILED_TO_CREATE",
+ "FAILED_TO_REMOVE",
+ "FAILED_TO_UPDATE",
+ "FAILED_TO_UPDATE_PARENT_PRODUCT_VARIANT_PRICE",
+ "INVALID_QUANTITY",
+ "MUST_SPECIFY_COMPONENTS",
+ "NESTED_PARENT_PRODUCT_VARIANT",
+ "PARENT_PRODUCT_VARIANT_CANNOT_BE_GIFT_CARD",
+ "PARENT_PRODUCT_VARIANT_CANNOT_REQUIRE_SELLING_PLAN",
+ "PARENT_REQUIRED",
+ "PRODUCT_EXPANDER_APP_OWNERSHIP_ALREADY_EXISTS",
+ "PRODUCT_VARIANTS_NOT_COMPONENTS",
+ "PRODUCT_VARIANTS_NOT_FOUND",
+ "PRODUCT_VARIANT_RELATIONSHIP_TYPE_CONFLICT",
+ "UNEXPECTED_ERROR",
+ "UNSUPPORTED_MULTIPACK_RELATIONSHIP",
+ "UPDATE_PARENT_VARIANT_PRICE_REQUIRED",
+ )
+
+
class ProductVariantSortKeys(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
@@ -2150,11 +2819,7 @@ class ProductVariantsBulkCreateUserErrorCode(sgqlc.types.Enum):
class ProductVariantsBulkDeleteUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "AT_LEAST_ONE_VARIANT_DOES_NOT_BELONG_TO_THE_PRODUCT",
- "CANNOT_DELETE_LAST_VARIANT",
- "PRODUCT_DOES_NOT_EXIST",
- )
+ __choices__ = ("AT_LEAST_ONE_VARIANT_DOES_NOT_BELONG_TO_THE_PRODUCT", "CANNOT_DELETE_LAST_VARIANT", "PRODUCT_DOES_NOT_EXIST")
class ProductVariantsBulkReorderUserErrorCode(sgqlc.types.Enum):
@@ -2181,17 +2846,7 @@ class ProductVariantsBulkUpdateUserErrorCode(sgqlc.types.Enum):
class ProfileItemSortKeys(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = (
- "CREATED_AT",
- "ID",
- "INVENTORY_TOTAL",
- "PRODUCT_TYPE",
- "PUBLISHED_AT",
- "RELEVANCE",
- "TITLE",
- "UPDATED_AT",
- "VENDOR",
- )
+ __choices__ = ("CREATED_AT", "ID", "INVENTORY_TOTAL", "PRODUCT_TYPE", "PUBLISHED_AT", "RELEVANCE", "TITLE", "UPDATED_AT", "VENDOR")
class PubSubWebhookSubscriptionCreateUserErrorCode(sgqlc.types.Enum):
@@ -2204,6 +2859,57 @@ class PubSubWebhookSubscriptionUpdateUserErrorCode(sgqlc.types.Enum):
__choices__ = ("INVALID_PARAMETERS",)
+class PublicationCreateInputPublicationDefaultState(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ALL_PRODUCTS", "EMPTY")
+
+
+class PublicationUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "BLANK",
+ "CANNOT_MODIFY_APP_CATALOG",
+ "CANNOT_MODIFY_APP_CATALOG_PUBLICATION",
+ "CANNOT_MODIFY_MARKET_CATALOG",
+ "CANNOT_MODIFY_MARKET_CATALOG_PUBLICATION",
+ "CATALOG_NOT_FOUND",
+ "INVALID",
+ "INVALID_PUBLISHABLE_ID",
+ "MARKET_NOT_FOUND",
+ "PRODUCT_TYPE_INCOMPATIBLE_WITH_CATALOG_TYPE",
+ "PUBLICATION_LOCKED",
+ "PUBLICATION_NOT_FOUND",
+ "PUBLICATION_UPDATE_LIMIT_EXCEEDED",
+ "TAKEN",
+ "TOO_LONG",
+ "TOO_SHORT",
+ "UNSUPPORTED_PUBLICATION_ACTION",
+ "UNSUPPORTED_PUBLISHABLE_TYPE",
+ )
+
+
+class QuantityRuleOriginType(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("FIXED", "RELATIVE")
+
+
+class QuantityRuleUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "BLANK",
+ "CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_RULES",
+ "GENERIC_ERROR",
+ "GREATER_THAN_OR_EQUAL_TO",
+ "INCREMENT_IS_GREATER_THAN_MINIMUM",
+ "MAXIMUM_NOT_MULTIPLE_OF_INCREMENT",
+ "MINIMUM_IS_GREATER_THAN_MAXIMUM",
+ "MINIMUM_NOT_MULTIPLE_OF_INCREMENT",
+ "PRICE_LIST_DOES_NOT_EXIST",
+ "PRODUCT_VARIANT_DOES_NOT_EXIST",
+ "VARIANT_QUANTITY_RULE_DOES_NOT_EXIST",
+ )
+
+
class RefundDutyRefundType(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("FULL", "PROPORTIONAL")
@@ -2229,6 +2935,82 @@ class ResourceFeedbackState(sgqlc.types.Enum):
__choices__ = ("ACCEPTED", "REQUIRES_ACTION")
+class ResourceOperationStatus(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ACTIVE", "COMPLETE", "CREATED")
+
+
+class ReturnDeclineReason(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("FINAL_SALE", "OTHER", "RETURN_PERIOD_ENDED")
+
+
+class ReturnErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "ALREADY_EXISTS",
+ "BLANK",
+ "CREATION_FAILED",
+ "EQUAL_TO",
+ "FEATURE_NOT_ENABLED",
+ "GREATER_THAN",
+ "GREATER_THAN_OR_EQUAL_TO",
+ "INCLUSION",
+ "INTERNAL_ERROR",
+ "INVALID",
+ "INVALID_STATE",
+ "LESS_THAN",
+ "LESS_THAN_OR_EQUAL_TO",
+ "NOTIFICATION_FAILED",
+ "NOT_A_NUMBER",
+ "NOT_EDITABLE",
+ "NOT_FOUND",
+ "PRESENT",
+ "TAKEN",
+ "TOO_BIG",
+ "TOO_LONG",
+ "TOO_MANY_ARGUMENTS",
+ "TOO_SHORT",
+ "WRONG_LENGTH",
+ )
+
+
+class ReturnReason(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = (
+ "COLOR",
+ "DEFECTIVE",
+ "NOT_AS_DESCRIBED",
+ "OTHER",
+ "SIZE_TOO_LARGE",
+ "SIZE_TOO_SMALL",
+ "STYLE",
+ "UNKNOWN",
+ "UNWANTED",
+ "WRONG_ITEM",
+ )
+
+
+class ReturnStatus(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("CANCELED", "CLOSED", "DECLINED", "OPEN", "REQUESTED")
+
+
+class ReverseFulfillmentOrderDispositionType(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("MISSING", "NOT_RESTOCKED", "PROCESSING_REQUIRED", "RESTOCKED")
+
+
+class ReverseFulfillmentOrderStatus(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("CANCELED", "CLOSED", "OPEN")
+
+
+class ReverseFulfillmentOrderThirdPartyConfirmationStatus(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ACCEPTED", "CANCEL_ACCEPTED", "CANCEL_REJECTED", "PENDING_ACCEPTANCE", "PENDING_CANCELATION", "REJECTED")
+
+
class SaleActionType(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("ORDER", "RETURN", "UNKNOWN", "UPDATE")
@@ -2236,7 +3018,7 @@ class SaleActionType(sgqlc.types.Enum):
class SaleLineType(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("ADJUSTMENT", "DUTY", "GIFT_CARD", "PRODUCT", "SHIPPING", "TIP", "UNKNOWN")
+ __choices__ = ("ADDITIONAL_FEE", "ADJUSTMENT", "DUTY", "GIFT_CARD", "PRODUCT", "SHIPPING", "TIP", "UNKNOWN")
class ScriptTagDisplayScope(sgqlc.types.Enum):
@@ -2398,11 +3180,21 @@ class SellingPlanReserve(sgqlc.types.Enum):
__choices__ = ("ON_FULFILLMENT", "ON_SALE")
+class ServerPixelStatus(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("CONNECTED", "DISCONNECTED_CONFIGURED", "DISCONNECTED_UNCONFIGURED")
+
+
class ShippingDiscountClass(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("SHIPPING",)
+class ShippingPackageType(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("BOX", "ENVELOPE", "FLAT_RATE", "SOFT_PACK")
+
+
class ShopBranding(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("ROGERS", "SHOPIFY", "SHOPIFY_GOLD", "SHOPIFY_PLUS")
@@ -2421,6 +3213,7 @@ class ShopPolicyErrorCode(sgqlc.types.Enum):
class ShopPolicyType(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
+ "CONTACT_INFORMATION",
"LEGAL_NOTICE",
"PRIVACY_POLICY",
"REFUND_POLICY",
@@ -2431,6 +3224,11 @@ class ShopPolicyType(sgqlc.types.Enum):
)
+class ShopResourceFeedbackCreateUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("BLANK", "INVALID", "OUTDATED_FEEDBACK", "PRESENT")
+
+
class ShopTagSort(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("ALPHABETICAL", "POPULAR")
@@ -2542,6 +3340,7 @@ class StagedUploadTargetGenerateUploadResource(sgqlc.types.Enum):
"IMAGE",
"MODEL_3D",
"PRODUCT_IMAGE",
+ "RETURN_LABEL",
"SHOP_IMAGE",
"URL_REDIRECT_IMPORT",
"VIDEO",
@@ -2550,7 +3349,14 @@ class StagedUploadTargetGenerateUploadResource(sgqlc.types.Enum):
class StandardMetafieldDefinitionEnableUserErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("INVALID", "LIMIT_EXCEEDED", "TAKEN", "TEMPLATE_NOT_FOUND", "UNSTRUCTURED_ALREADY_EXISTS")
+ __choices__ = (
+ "INVALID",
+ "LIMIT_EXCEEDED",
+ "TAKEN",
+ "TEMPLATE_NOT_FOUND",
+ "TYPE_NOT_ALLOWED_FOR_CONDITIONS",
+ "UNSTRUCTURED_ALREADY_EXISTS",
+ )
class StorefrontID(sgqlc.types.Scalar):
@@ -2572,16 +3378,23 @@ class SubscriptionBillingAttemptErrorCode(sgqlc.types.Enum):
"INVALID_CUSTOMER_BILLING_AGREEMENT",
"INVALID_PAYMENT_METHOD",
"INVALID_SHIPPING_ADDRESS",
+ "INVENTORY_ALLOCATIONS_NOT_FOUND",
"INVOICE_ALREADY_PAID",
"PAYMENT_METHOD_DECLINED",
"PAYMENT_METHOD_INCOMPATIBLE_WITH_GATEWAY_CONFIG",
"PAYMENT_METHOD_NOT_FOUND",
"PAYMENT_PROVIDER_IS_NOT_ENABLED",
"TEST_MODE",
+ "TRANSIENT_ERROR",
"UNEXPECTED_ERROR",
)
+class SubscriptionBillingAttemptsSortKeys(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("CREATED_AT", "ID", "RELEVANCE")
+
+
class SubscriptionBillingCycleBillingCycleStatus(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("BILLED", "UNBILLED")
@@ -2591,13 +3404,17 @@ class SubscriptionBillingCycleErrorCode(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
"BILLING_DATE_SET_ON_SKIPPED",
+ "CYCLE_INDEX_OUT_OF_RANGE",
"CYCLE_NOT_FOUND",
+ "CYCLE_START_DATE_OUT_OF_RANGE",
"EMPTY_BILLING_CYCLE_EDIT_SCHEDULE_INPUT",
+ "INCOMPLETE_BILLING_ATTEMPTS",
"INVALID",
"INVALID_CYCLE_INDEX",
"INVALID_DATE",
"NO_CYCLE_EDITS",
"OUT_OF_BOUNDS",
+ "UPCOMING_CYCLE_LIMIT_EXCEEDED",
)
@@ -2628,7 +3445,7 @@ class SubscriptionContractLastPaymentStatus(sgqlc.types.Enum):
class SubscriptionContractSubscriptionStatus(sgqlc.types.Enum):
__schema__ = shopify_schema
- __choices__ = ("ACTIVE", "CANCELLED", "EXPIRED", "FAILED", "PAUSED")
+ __choices__ = ("ACTIVE", "CANCELLED", "EXPIRED", "FAILED", "PAUSED", "STALE")
class SubscriptionDiscountRejectionReason(sgqlc.types.Enum):
@@ -2681,6 +3498,7 @@ class SubscriptionDraftErrorCode(sgqlc.types.Enum):
"INVALID_NOTE_LENGTH",
"LESS_THAN",
"LESS_THAN_OR_EQUAL_TO",
+ "MISSING_LOCAL_DELIVERY_OPTIONS",
"NOT_AN_INTEGER",
"NOT_IN_RANGE",
"NO_ENTITLED_LINES",
@@ -2698,6 +3516,11 @@ class SuggestedOrderTransactionKind(sgqlc.types.Enum):
__choices__ = ("SUGGESTED_REFUND",)
+class TaxAppConfigureUserErrorCode(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("TAX_PARTNER_ALREADY_ACTIVE", "TAX_PARTNER_NOT_FOUND", "TAX_PARTNER_STATE_UPDATE_FAILED")
+
+
class TaxExemption(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
@@ -2776,14 +3599,21 @@ class TaxExemption(sgqlc.types.Enum):
)
+class TaxPartnerState(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("ACTIVE", "PENDING", "READY")
+
+
class TranslatableResourceType(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = (
"COLLECTION",
"DELIVERY_METHOD_DEFINITION",
"EMAIL_TEMPLATE",
+ "FILTER",
"LINK",
"METAFIELD",
+ "METAOBJECT",
"ONLINE_STORE_ARTICLE",
"ONLINE_STORE_BLOG",
"ONLINE_STORE_MENU",
@@ -2814,11 +3644,13 @@ class TranslationErrorCode(sgqlc.types.Enum):
"INVALID_LOCALE_FOR_SHOP",
"INVALID_MARKET_LOCALIZABLE_CONTENT",
"INVALID_TRANSLATABLE_CONTENT",
+ "INVALID_VALUE_FOR_HANDLE_TRANSLATION",
"MARKET_CUSTOM_CONTENT_NOT_ALLOWED",
"MARKET_DOES_NOT_EXIST",
"MARKET_LOCALE_CREATION_FAILED",
"RESOURCE_NOT_FOUND",
"RESOURCE_NOT_MARKET_CUSTOMIZABLE",
+ "RESOURCE_NOT_TRANSLATABLE",
"TOO_MANY_KEYS_FOR_RESOURCE",
)
@@ -2870,6 +3702,11 @@ class UtcOffset(sgqlc.types.Scalar):
__schema__ = shopify_schema
+class VisualizationType(sgqlc.types.Enum):
+ __schema__ = shopify_schema
+ __choices__ = ("BAR", "LINE")
+
+
class WebhookSubscriptionFormat(sgqlc.types.Enum):
__schema__ = shopify_schema
__choices__ = ("JSON", "XML")
@@ -2889,6 +3726,7 @@ class WebhookSubscriptionTopic(sgqlc.types.Enum):
"APP_UNINSTALLED",
"ATTRIBUTED_SESSIONS_FIRST",
"ATTRIBUTED_SESSIONS_LAST",
+ "AUDIT_EVENTS_ADMIN_API_ACTIVITY",
"BULK_OPERATIONS_FINISH",
"CARTS_CREATE",
"CARTS_UPDATE",
@@ -2905,11 +3743,24 @@ class WebhookSubscriptionTopic(sgqlc.types.Enum):
"COLLECTION_PUBLICATIONS_CREATE",
"COLLECTION_PUBLICATIONS_DELETE",
"COLLECTION_PUBLICATIONS_UPDATE",
+ "COMPANIES_CREATE",
+ "COMPANIES_DELETE",
+ "COMPANIES_UPDATE",
+ "COMPANY_CONTACTS_CREATE",
+ "COMPANY_CONTACTS_DELETE",
+ "COMPANY_CONTACTS_UPDATE",
+ "COMPANY_CONTACT_ROLES_ASSIGN",
+ "COMPANY_CONTACT_ROLES_REVOKE",
+ "COMPANY_LOCATIONS_CREATE",
+ "COMPANY_LOCATIONS_DELETE",
+ "COMPANY_LOCATIONS_UPDATE",
"CUSTOMERS_CREATE",
"CUSTOMERS_DELETE",
"CUSTOMERS_DISABLE",
+ "CUSTOMERS_EMAIL_MARKETING_CONSENT_UPDATE",
"CUSTOMERS_ENABLE",
"CUSTOMERS_MARKETING_CONSENT_UPDATE",
+ "CUSTOMERS_MERGE",
"CUSTOMERS_UPDATE",
"CUSTOMER_GROUPS_CREATE",
"CUSTOMER_GROUPS_DELETE",
@@ -2917,6 +3768,8 @@ class WebhookSubscriptionTopic(sgqlc.types.Enum):
"CUSTOMER_PAYMENT_METHODS_CREATE",
"CUSTOMER_PAYMENT_METHODS_REVOKE",
"CUSTOMER_PAYMENT_METHODS_UPDATE",
+ "CUSTOMER_TAGS_ADDED",
+ "CUSTOMER_TAGS_REMOVED",
"DISPUTES_CREATE",
"DISPUTES_UPDATE",
"DOMAINS_CREATE",
@@ -2929,6 +3782,22 @@ class WebhookSubscriptionTopic(sgqlc.types.Enum):
"FULFILLMENTS_UPDATE",
"FULFILLMENT_EVENTS_CREATE",
"FULFILLMENT_EVENTS_DELETE",
+ "FULFILLMENT_ORDERS_CANCELLATION_REQUEST_ACCEPTED",
+ "FULFILLMENT_ORDERS_CANCELLATION_REQUEST_REJECTED",
+ "FULFILLMENT_ORDERS_CANCELLATION_REQUEST_SUBMITTED",
+ "FULFILLMENT_ORDERS_CANCELLED",
+ "FULFILLMENT_ORDERS_FULFILLMENT_REQUEST_ACCEPTED",
+ "FULFILLMENT_ORDERS_FULFILLMENT_REQUEST_REJECTED",
+ "FULFILLMENT_ORDERS_FULFILLMENT_REQUEST_SUBMITTED",
+ "FULFILLMENT_ORDERS_FULFILLMENT_SERVICE_FAILED_TO_COMPLETE",
+ "FULFILLMENT_ORDERS_HOLD_RELEASED",
+ "FULFILLMENT_ORDERS_LINE_ITEMS_PREPARED_FOR_LOCAL_DELIVERY",
+ "FULFILLMENT_ORDERS_LINE_ITEMS_PREPARED_FOR_PICKUP",
+ "FULFILLMENT_ORDERS_MOVED",
+ "FULFILLMENT_ORDERS_ORDER_ROUTING_COMPLETE",
+ "FULFILLMENT_ORDERS_PLACED_ON_HOLD",
+ "FULFILLMENT_ORDERS_RESCHEDULED",
+ "FULFILLMENT_ORDERS_SCHEDULED_FULFILLMENT_ORDER_READY",
"INVENTORY_ITEMS_CREATE",
"INVENTORY_ITEMS_DELETE",
"INVENTORY_ITEMS_UPDATE",
@@ -2937,7 +3806,9 @@ class WebhookSubscriptionTopic(sgqlc.types.Enum):
"INVENTORY_LEVELS_UPDATE",
"LOCALES_CREATE",
"LOCALES_UPDATE",
+ "LOCATIONS_ACTIVATE",
"LOCATIONS_CREATE",
+ "LOCATIONS_DEACTIVATE",
"LOCATIONS_DELETE",
"LOCATIONS_UPDATE",
"MARKETS_CREATE",
@@ -2952,12 +3823,17 @@ class WebhookSubscriptionTopic(sgqlc.types.Enum):
"ORDERS_PARTIALLY_FULFILLED",
"ORDERS_UPDATED",
"ORDER_TRANSACTIONS_CREATE",
+ "PAYMENT_SCHEDULES_DUE",
"PAYMENT_TERMS_CREATE",
"PAYMENT_TERMS_DELETE",
"PAYMENT_TERMS_UPDATE",
"PRODUCTS_CREATE",
"PRODUCTS_DELETE",
"PRODUCTS_UPDATE",
+ "PRODUCT_FEEDS_CREATE",
+ "PRODUCT_FEEDS_FULL_SYNC",
+ "PRODUCT_FEEDS_INCREMENTAL_SYNC",
+ "PRODUCT_FEEDS_UPDATE",
"PRODUCT_LISTINGS_ADD",
"PRODUCT_LISTINGS_REMOVE",
"PRODUCT_LISTINGS_UPDATE",
@@ -2968,6 +3844,14 @@ class WebhookSubscriptionTopic(sgqlc.types.Enum):
"PROFILES_DELETE",
"PROFILES_UPDATE",
"REFUNDS_CREATE",
+ "RETURNS_APPROVE",
+ "RETURNS_CANCEL",
+ "RETURNS_CLOSE",
+ "RETURNS_DECLINE",
+ "RETURNS_REOPEN",
+ "RETURNS_REQUEST",
+ "REVERSE_DELIVERIES_ATTACH_DELIVERABLE",
+ "REVERSE_FULFILLMENT_ORDERS_DISPOSE",
"SCHEDULED_PRODUCT_LISTINGS_ADD",
"SCHEDULED_PRODUCT_LISTINGS_REMOVE",
"SCHEDULED_PRODUCT_LISTINGS_UPDATE",
@@ -2983,8 +3867,12 @@ class WebhookSubscriptionTopic(sgqlc.types.Enum):
"SUBSCRIPTION_BILLING_ATTEMPTS_CHALLENGED",
"SUBSCRIPTION_BILLING_ATTEMPTS_FAILURE",
"SUBSCRIPTION_BILLING_ATTEMPTS_SUCCESS",
+ "SUBSCRIPTION_BILLING_CYCLE_EDITS_CREATE",
+ "SUBSCRIPTION_BILLING_CYCLE_EDITS_DELETE",
+ "SUBSCRIPTION_BILLING_CYCLE_EDITS_UPDATE",
"SUBSCRIPTION_CONTRACTS_CREATE",
"SUBSCRIPTION_CONTRACTS_UPDATE",
+ "TAX_PARTNERS_UPDATE",
"TAX_SERVICES_CREATE",
"TAX_SERVICES_UPDATE",
"TENDER_TRANSACTIONS_CREATE",
@@ -3066,26 +3954,52 @@ class AttributeInput(sgqlc.types.Input):
class BuyerExperienceConfigurationInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("checkout_to_draft", "payment_terms_template_id")
+ __field_names__ = ("checkout_to_draft", "payment_terms_template_id", "editable_shipping_address")
checkout_to_draft = sgqlc.types.Field(Boolean, graphql_name="checkoutToDraft")
payment_terms_template_id = sgqlc.types.Field(ID, graphql_name="paymentTermsTemplateId")
+ editable_shipping_address = sgqlc.types.Field(Boolean, graphql_name="editableShippingAddress")
-class CollectionDeleteInput(sgqlc.types.Input):
+class CatalogContextInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("id",)
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ __field_names__ = ("company_location_ids",)
+ company_location_ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="companyLocationIds")
-class CollectionInput(sgqlc.types.Input):
+class CatalogCreateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = (
- "description_html",
- "handle",
- "id",
- "image",
+ __field_names__ = ("title", "status", "context", "price_list_id", "publication_id")
+ title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+ status = sgqlc.types.Field(sgqlc.types.non_null(CatalogStatus), graphql_name="status")
+ context = sgqlc.types.Field(sgqlc.types.non_null(CatalogContextInput), graphql_name="context")
+ price_list_id = sgqlc.types.Field(ID, graphql_name="priceListId")
+ publication_id = sgqlc.types.Field(ID, graphql_name="publicationId")
+
+
+class CatalogUpdateInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("title", "status", "context", "price_list_id", "publication_id")
+ title = sgqlc.types.Field(String, graphql_name="title")
+ status = sgqlc.types.Field(CatalogStatus, graphql_name="status")
+ context = sgqlc.types.Field(CatalogContextInput, graphql_name="context")
+ price_list_id = sgqlc.types.Field(ID, graphql_name="priceListId")
+ publication_id = sgqlc.types.Field(ID, graphql_name="publicationId")
+
+
+class CollectionDeleteInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("id",)
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+
+
+class CollectionInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "description_html",
+ "handle",
+ "id",
+ "image",
"products",
- "private_metafields",
"rule_set",
"template_suffix",
"sort_order",
@@ -3099,9 +4013,6 @@ class CollectionInput(sgqlc.types.Input):
id = sgqlc.types.Field(ID, graphql_name="id")
image = sgqlc.types.Field("ImageInput", graphql_name="image")
products = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="products")
- private_metafields = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null("PrivateMetafieldInput")), graphql_name="privateMetafields"
- )
rule_set = sgqlc.types.Field("CollectionRuleSetInput", graphql_name="ruleSet")
template_suffix = sgqlc.types.Field(String, graphql_name="templateSuffix")
sort_order = sgqlc.types.Field(CollectionSortOrder, graphql_name="sortOrder")
@@ -3122,17 +4033,17 @@ class CollectionPublishInput(sgqlc.types.Input):
__field_names__ = ("id", "collection_publications")
id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
collection_publications = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CollectionPublicationInput))),
- graphql_name="collectionPublications",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CollectionPublicationInput))), graphql_name="collectionPublications"
)
class CollectionRuleInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("column", "relation", "condition")
+ __field_names__ = ("column", "relation", "condition", "condition_object_id")
column = sgqlc.types.Field(sgqlc.types.non_null(CollectionRuleColumn), graphql_name="column")
relation = sgqlc.types.Field(sgqlc.types.non_null(CollectionRuleRelation), graphql_name="relation")
condition = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="condition")
+ condition_object_id = sgqlc.types.Field(ID, graphql_name="conditionObjectId")
class CollectionRuleSetInput(sgqlc.types.Input):
@@ -3147,8 +4058,7 @@ class CollectionUnpublishInput(sgqlc.types.Input):
__field_names__ = ("id", "collection_publications")
id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
collection_publications = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CollectionPublicationInput))),
- graphql_name="collectionPublications",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CollectionPublicationInput))), graphql_name="collectionPublications"
)
@@ -3253,6 +4163,13 @@ class ContextualPricingContext(sgqlc.types.Input):
company_location_id = sgqlc.types.Field(ID, graphql_name="companyLocationId")
+class ContextualPublicationContext(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("country", "company_location_id")
+ country = sgqlc.types.Field(CountryCode, graphql_name="country")
+ company_location_id = sgqlc.types.Field(ID, graphql_name="companyLocationId")
+
+
class CountryHarmonizedSystemCodeInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("harmonized_system_code", "country_code")
@@ -3268,6 +4185,16 @@ class CreateMediaInput(sgqlc.types.Input):
media_content_type = sgqlc.types.Field(sgqlc.types.non_null(MediaContentType), graphql_name="mediaContentType")
+class CustomShippingPackageInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("weight", "dimensions", "default", "name", "type")
+ weight = sgqlc.types.Field("WeightInput", graphql_name="weight")
+ dimensions = sgqlc.types.Field("ObjectDimensionsInput", graphql_name="dimensions")
+ default = sgqlc.types.Field(Boolean, graphql_name="default")
+ name = sgqlc.types.Field(String, graphql_name="name")
+ type = sgqlc.types.Field(ShippingPackageType, graphql_name="type")
+
+
class CustomerDeleteInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("id",)
@@ -3303,7 +4230,6 @@ class CustomerInput(sgqlc.types.Input):
"metafields",
"note",
"phone",
- "private_metafields",
"tags",
"email_marketing_consent",
"sms_marketing_consent",
@@ -3319,9 +4245,6 @@ class CustomerInput(sgqlc.types.Input):
metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldInput")), graphql_name="metafields")
note = sgqlc.types.Field(String, graphql_name="note")
phone = sgqlc.types.Field(String, graphql_name="phone")
- private_metafields = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null("PrivateMetafieldInput")), graphql_name="privateMetafields"
- )
tags = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="tags")
email_marketing_consent = sgqlc.types.Field(CustomerEmailMarketingConsentInput, graphql_name="emailMarketingConsent")
sms_marketing_consent = sgqlc.types.Field("CustomerSmsMarketingConsentInput", graphql_name="smsMarketingConsent")
@@ -3329,6 +4252,26 @@ class CustomerInput(sgqlc.types.Input):
tax_exemptions = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(TaxExemption)), graphql_name="taxExemptions")
+class CustomerMergeOverrideFields(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "customer_id_of_first_name_to_keep",
+ "customer_id_of_last_name_to_keep",
+ "customer_id_of_email_to_keep",
+ "customer_id_of_phone_number_to_keep",
+ "customer_id_of_default_address_to_keep",
+ "note",
+ "tags",
+ )
+ customer_id_of_first_name_to_keep = sgqlc.types.Field(ID, graphql_name="customerIdOfFirstNameToKeep")
+ customer_id_of_last_name_to_keep = sgqlc.types.Field(ID, graphql_name="customerIdOfLastNameToKeep")
+ customer_id_of_email_to_keep = sgqlc.types.Field(ID, graphql_name="customerIdOfEmailToKeep")
+ customer_id_of_phone_number_to_keep = sgqlc.types.Field(ID, graphql_name="customerIdOfPhoneNumberToKeep")
+ customer_id_of_default_address_to_keep = sgqlc.types.Field(ID, graphql_name="customerIdOfDefaultAddressToKeep")
+ note = sgqlc.types.Field(String, graphql_name="note")
+ tags = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="tags")
+
+
class CustomerPaymentMethodRemoteInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("stripe_payment_method", "authorize_net_customer_payment_profile", "braintree_payment_method")
@@ -3339,6 +4282,15 @@ class CustomerPaymentMethodRemoteInput(sgqlc.types.Input):
braintree_payment_method = sgqlc.types.Field("RemoteBraintreePaymentMethodInput", graphql_name="braintreePaymentMethod")
+class CustomerSegmentMembersQueryInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("segment_id", "query", "reverse", "sort_key")
+ segment_id = sgqlc.types.Field(ID, graphql_name="segmentId")
+ query = sgqlc.types.Field(String, graphql_name="query")
+ reverse = sgqlc.types.Field(Boolean, graphql_name="reverse")
+ sort_key = sgqlc.types.Field(String, graphql_name="sortKey")
+
+
class CustomerSmsMarketingConsentInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("marketing_opt_in_level", "marketing_state", "consent_updated_at")
@@ -3372,6 +4324,15 @@ class DeliveryCountryInput(sgqlc.types.Input):
include_all_provinces = sgqlc.types.Field(Boolean, graphql_name="includeAllProvinces")
+class DeliveryCustomizationInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("function_id", "title", "enabled", "metafields")
+ function_id = sgqlc.types.Field(String, graphql_name="functionId")
+ title = sgqlc.types.Field(String, graphql_name="title")
+ enabled = sgqlc.types.Field(Boolean, graphql_name="enabled")
+ metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldInput")), graphql_name="metafields")
+
+
class DeliveryLocationGroupZoneInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("id", "name", "countries", "method_definitions_to_create", "method_definitions_to_update")
@@ -3379,15 +4340,21 @@ class DeliveryLocationGroupZoneInput(sgqlc.types.Input):
name = sgqlc.types.Field(String, graphql_name="name")
countries = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(DeliveryCountryInput)), graphql_name="countries")
method_definitions_to_create = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null("DeliveryMethodDefinitionInput")),
- graphql_name="methodDefinitionsToCreate",
+ sgqlc.types.list_of(sgqlc.types.non_null("DeliveryMethodDefinitionInput")), graphql_name="methodDefinitionsToCreate"
)
method_definitions_to_update = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null("DeliveryMethodDefinitionInput")),
- graphql_name="methodDefinitionsToUpdate",
+ sgqlc.types.list_of(sgqlc.types.non_null("DeliveryMethodDefinitionInput")), graphql_name="methodDefinitionsToUpdate"
)
+class DeliveryLocationLocalPickupEnableInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("location_id", "pickup_time", "instructions")
+ location_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="locationId")
+ pickup_time = sgqlc.types.Field(sgqlc.types.non_null(DeliveryLocalPickupTime), graphql_name="pickupTime")
+ instructions = sgqlc.types.Field(String, graphql_name="instructions")
+
+
class DeliveryMethodDefinitionInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = (
@@ -3408,8 +4375,7 @@ class DeliveryMethodDefinitionInput(sgqlc.types.Input):
rate_definition = sgqlc.types.Field("DeliveryRateDefinitionInput", graphql_name="rateDefinition")
participant = sgqlc.types.Field("DeliveryParticipantInput", graphql_name="participant")
weight_conditions_to_create = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null("DeliveryWeightConditionInput")),
- graphql_name="weightConditionsToCreate",
+ sgqlc.types.list_of(sgqlc.types.non_null("DeliveryWeightConditionInput")), graphql_name="weightConditionsToCreate"
)
price_conditions_to_create = sgqlc.types.Field(
sgqlc.types.list_of(sgqlc.types.non_null("DeliveryPriceConditionInput")), graphql_name="priceConditionsToCreate"
@@ -3421,14 +4387,7 @@ class DeliveryMethodDefinitionInput(sgqlc.types.Input):
class DeliveryParticipantInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = (
- "id",
- "carrier_service_id",
- "fixed_fee",
- "percentage_of_rate_fee",
- "participant_services",
- "adapt_to_new_services",
- )
+ __field_names__ = ("id", "carrier_service_id", "fixed_fee", "percentage_of_rate_fee", "participant_services", "adapt_to_new_services")
id = sgqlc.types.Field(ID, graphql_name="id")
carrier_service_id = sgqlc.types.Field(ID, graphql_name="carrierServiceId")
fixed_fee = sgqlc.types.Field("MoneyInput", graphql_name="fixedFee")
@@ -3471,16 +4430,13 @@ class DeliveryProfileInput(sgqlc.types.Input):
)
name = sgqlc.types.Field(String, graphql_name="name")
profile_location_groups = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null("DeliveryProfileLocationGroupInput")),
- graphql_name="profileLocationGroups",
+ sgqlc.types.list_of(sgqlc.types.non_null("DeliveryProfileLocationGroupInput")), graphql_name="profileLocationGroups"
)
location_groups_to_create = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null("DeliveryProfileLocationGroupInput")),
- graphql_name="locationGroupsToCreate",
+ sgqlc.types.list_of(sgqlc.types.non_null("DeliveryProfileLocationGroupInput")), graphql_name="locationGroupsToCreate"
)
location_groups_to_update = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null("DeliveryProfileLocationGroupInput")),
- graphql_name="locationGroupsToUpdate",
+ sgqlc.types.list_of(sgqlc.types.non_null("DeliveryProfileLocationGroupInput")), graphql_name="locationGroupsToUpdate"
)
location_groups_to_delete = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="locationGroupsToDelete")
variants_to_associate = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="variantsToAssociate")
@@ -3500,9 +4456,11 @@ class DeliveryProfileInput(sgqlc.types.Input):
class DeliveryProfileLocationGroupInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("id", "locations", "zones_to_create", "zones_to_update")
+ __field_names__ = ("id", "locations", "locations_to_add", "locations_to_remove", "zones_to_create", "zones_to_update")
id = sgqlc.types.Field(ID, graphql_name="id")
locations = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="locations")
+ locations_to_add = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="locationsToAdd")
+ locations_to_remove = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="locationsToRemove")
zones_to_create = sgqlc.types.Field(
sgqlc.types.list_of(sgqlc.types.non_null(DeliveryLocationGroupZoneInput)), graphql_name="zonesToCreate"
)
@@ -3578,15 +4536,7 @@ class DiscountAutomaticBasicInput(sgqlc.types.Input):
class DiscountAutomaticBxgyInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = (
- "combines_with",
- "starts_at",
- "ends_at",
- "title",
- "uses_per_order_limit",
- "customer_buys",
- "customer_gets",
- )
+ __field_names__ = ("combines_with", "starts_at", "ends_at", "title", "uses_per_order_limit", "customer_buys", "customer_gets")
combines_with = sgqlc.types.Field("DiscountCombinesWithInput", graphql_name="combinesWith")
starts_at = sgqlc.types.Field(DateTime, graphql_name="startsAt")
ends_at = sgqlc.types.Field(DateTime, graphql_name="endsAt")
@@ -3875,7 +4825,6 @@ class DraftOrderInput(sgqlc.types.Input):
"email",
"line_items",
"metafields",
- "private_metafields",
"localization_extensions",
"note",
"shipping_address",
@@ -3891,6 +4840,7 @@ class DraftOrderInput(sgqlc.types.Input):
"payment_terms",
"purchasing_entity",
"source_name",
+ "po_number",
)
applied_discount = sgqlc.types.Field(DraftOrderAppliedDiscountInput, graphql_name="appliedDiscount")
billing_address = sgqlc.types.Field("MailingAddressInput", graphql_name="billingAddress")
@@ -3898,9 +4848,6 @@ class DraftOrderInput(sgqlc.types.Input):
email = sgqlc.types.Field(String, graphql_name="email")
line_items = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("DraftOrderLineItemInput")), graphql_name="lineItems")
metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldInput")), graphql_name="metafields")
- private_metafields = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null("PrivateMetafieldInput")), graphql_name="privateMetafields"
- )
localization_extensions = sgqlc.types.Field(
sgqlc.types.list_of(sgqlc.types.non_null("LocalizationExtensionInput")), graphql_name="localizationExtensions"
)
@@ -3918,6 +4865,7 @@ class DraftOrderInput(sgqlc.types.Input):
payment_terms = sgqlc.types.Field("PaymentTermsInput", graphql_name="paymentTerms")
purchasing_entity = sgqlc.types.Field("PurchasingEntityInput", graphql_name="purchasingEntity")
source_name = sgqlc.types.Field(String, graphql_name="sourceName")
+ po_number = sgqlc.types.Field(String, graphql_name="poNumber")
class DraftOrderLineItemInput(sgqlc.types.Input):
@@ -3968,26 +4916,64 @@ class EventBridgeWebhookSubscriptionInput(sgqlc.types.Input):
class FileCreateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("original_source", "content_type", "alt")
+ __field_names__ = ("filename", "original_source", "content_type", "alt", "duplicate_resolution_mode")
+ filename = sgqlc.types.Field(String, graphql_name="filename")
original_source = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="originalSource")
content_type = sgqlc.types.Field(FileContentType, graphql_name="contentType")
alt = sgqlc.types.Field(String, graphql_name="alt")
+ duplicate_resolution_mode = sgqlc.types.Field(FileCreateInputDuplicateResolutionMode, graphql_name="duplicateResolutionMode")
class FileUpdateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("id", "alt", "preview_image_source")
+ __field_names__ = ("id", "alt", "original_source", "preview_image_source", "filename")
id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
alt = sgqlc.types.Field(String, graphql_name="alt")
+ original_source = sgqlc.types.Field(String, graphql_name="originalSource")
preview_image_source = sgqlc.types.Field(String, graphql_name="previewImageSource")
+ filename = sgqlc.types.Field(String, graphql_name="filename")
+
+
+class FulfillmentEventInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "address1",
+ "city",
+ "country",
+ "estimated_delivery_at",
+ "happened_at",
+ "fulfillment_id",
+ "latitude",
+ "longitude",
+ "message",
+ "province",
+ "status",
+ "zip",
+ )
+ address1 = sgqlc.types.Field(String, graphql_name="address1")
+ city = sgqlc.types.Field(String, graphql_name="city")
+ country = sgqlc.types.Field(String, graphql_name="country")
+ estimated_delivery_at = sgqlc.types.Field(DateTime, graphql_name="estimatedDeliveryAt")
+ happened_at = sgqlc.types.Field(DateTime, graphql_name="happenedAt")
+ fulfillment_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="fulfillmentId")
+ latitude = sgqlc.types.Field(Float, graphql_name="latitude")
+ longitude = sgqlc.types.Field(Float, graphql_name="longitude")
+ message = sgqlc.types.Field(String, graphql_name="message")
+ province = sgqlc.types.Field(String, graphql_name="province")
+ status = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentEventStatus), graphql_name="status")
+ zip = sgqlc.types.Field(String, graphql_name="zip")
class FulfillmentOrderHoldInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("reason", "reason_notes", "notify_merchant")
+ __field_names__ = ("reason", "reason_notes", "notify_merchant", "external_id", "fulfillment_order_line_items")
reason = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentHoldReason), graphql_name="reason")
reason_notes = sgqlc.types.Field(String, graphql_name="reasonNotes")
notify_merchant = sgqlc.types.Field(Boolean, graphql_name="notifyMerchant")
+ external_id = sgqlc.types.Field(String, graphql_name="externalId")
+ fulfillment_order_line_items = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderLineItemInput")), graphql_name="fulfillmentOrderLineItems"
+ )
class FulfillmentOrderLineItemInput(sgqlc.types.Input):
@@ -4002,9 +4988,45 @@ class FulfillmentOrderLineItemsInput(sgqlc.types.Input):
__field_names__ = ("fulfillment_order_id", "fulfillment_order_line_items")
fulfillment_order_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="fulfillmentOrderId")
fulfillment_order_line_items = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderLineItemInput)),
+ sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderLineItemInput)), graphql_name="fulfillmentOrderLineItems"
+ )
+
+
+class FulfillmentOrderLineItemsPreparedForPickupInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("line_items_by_fulfillment_order",)
+ line_items_by_fulfillment_order = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PreparedFulfillmentOrderLineItemsInput"))),
+ graphql_name="lineItemsByFulfillmentOrder",
+ )
+
+
+class FulfillmentOrderMergeInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("merge_intents",)
+ merge_intents = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderMergeInputMergeIntent"))),
+ graphql_name="mergeIntents",
+ )
+
+
+class FulfillmentOrderMergeInputMergeIntent(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("fulfillment_order_line_items", "fulfillment_order_id")
+ fulfillment_order_line_items = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderLineItemInput)), graphql_name="fulfillmentOrderLineItems"
+ )
+ fulfillment_order_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="fulfillmentOrderId")
+
+
+class FulfillmentOrderSplitInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("fulfillment_order_line_items", "fulfillment_order_id")
+ fulfillment_order_line_items = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderLineItemInput))),
graphql_name="fulfillmentOrderLineItems",
)
+ fulfillment_order_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="fulfillmentOrderId")
class FulfillmentOriginAddressInput(sgqlc.types.Input):
@@ -4092,6 +5114,17 @@ class InventoryAdjustItemInput(sgqlc.types.Input):
available_delta = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="availableDelta")
+class InventoryAdjustQuantitiesInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("reason", "name", "reference_document_uri", "changes")
+ reason = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="reason")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ reference_document_uri = sgqlc.types.Field(String, graphql_name="referenceDocumentUri")
+ changes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("InventoryChangeInput"))), graphql_name="changes"
+ )
+
+
class InventoryAdjustQuantityInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("inventory_level_id", "available_delta")
@@ -4106,6 +5139,15 @@ class InventoryBulkToggleActivationInput(sgqlc.types.Input):
activate = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="activate")
+class InventoryChangeInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("delta", "inventory_item_id", "location_id", "ledger_document_uri")
+ delta = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="delta")
+ inventory_item_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="inventoryItemId")
+ location_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="locationId")
+ ledger_document_uri = sgqlc.types.Field(String, graphql_name="ledgerDocumentUri")
+
+
class InventoryItemInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("cost", "tracked")
@@ -4129,8 +5171,7 @@ class InventoryItemUpdateInput(sgqlc.types.Input):
province_code_of_origin = sgqlc.types.Field(String, graphql_name="provinceCodeOfOrigin")
harmonized_system_code = sgqlc.types.Field(String, graphql_name="harmonizedSystemCode")
country_harmonized_system_codes = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null(CountryHarmonizedSystemCodeInput)),
- graphql_name="countryHarmonizedSystemCodes",
+ sgqlc.types.list_of(sgqlc.types.non_null(CountryHarmonizedSystemCodeInput)), graphql_name="countryHarmonizedSystemCodes"
)
@@ -4141,6 +5182,51 @@ class InventoryLevelInput(sgqlc.types.Input):
location_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="locationId")
+class InventoryMoveQuantitiesInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("reason", "reference_document_uri", "changes")
+ reason = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="reason")
+ reference_document_uri = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="referenceDocumentUri")
+ changes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("InventoryMoveQuantityChange"))), graphql_name="changes"
+ )
+
+
+class InventoryMoveQuantityChange(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("inventory_item_id", "quantity", "from_", "to")
+ inventory_item_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="inventoryItemId")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ from_ = sgqlc.types.Field(sgqlc.types.non_null("InventoryMoveQuantityTerminalInput"), graphql_name="from")
+ to = sgqlc.types.Field(sgqlc.types.non_null("InventoryMoveQuantityTerminalInput"), graphql_name="to")
+
+
+class InventoryMoveQuantityTerminalInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("location_id", "name", "ledger_document_uri")
+ location_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="locationId")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ ledger_document_uri = sgqlc.types.Field(String, graphql_name="ledgerDocumentUri")
+
+
+class InventorySetOnHandQuantitiesInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("reason", "reference_document_uri", "set_quantities")
+ reason = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="reason")
+ reference_document_uri = sgqlc.types.Field(String, graphql_name="referenceDocumentUri")
+ set_quantities = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("InventorySetQuantityInput"))), graphql_name="setQuantities"
+ )
+
+
+class InventorySetQuantityInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("inventory_item_id", "location_id", "quantity")
+ inventory_item_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="inventoryItemId")
+ location_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="locationId")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+
+
class LocalizationExtensionInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("key", "value")
@@ -4162,10 +5248,11 @@ class LocationAddAddressInput(sgqlc.types.Input):
class LocationAddInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("name", "address", "fulfills_online_orders")
+ __field_names__ = ("name", "address", "fulfills_online_orders", "metafields")
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
address = sgqlc.types.Field(sgqlc.types.non_null(LocationAddAddressInput), graphql_name="address")
fulfills_online_orders = sgqlc.types.Field(Boolean, graphql_name="fulfillsOnlineOrders")
+ metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldInput")), graphql_name="metafields")
class LocationEditAddressInput(sgqlc.types.Input):
@@ -4182,10 +5269,11 @@ class LocationEditAddressInput(sgqlc.types.Input):
class LocationEditInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("name", "address", "fulfills_online_orders")
+ __field_names__ = ("name", "address", "fulfills_online_orders", "metafields")
name = sgqlc.types.Field(String, graphql_name="name")
address = sgqlc.types.Field(LocationEditAddressInput, graphql_name="address")
fulfills_online_orders = sgqlc.types.Field(Boolean, graphql_name="fulfillsOnlineOrders")
+ metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldInput")), graphql_name="metafields")
class MailingAddressInput(sgqlc.types.Input):
@@ -4216,12 +5304,12 @@ class MailingAddressInput(sgqlc.types.Input):
class MarketCreateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("name", "enabled", "regions")
+ __field_names__ = ("name", "handle", "enabled", "regions")
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ handle = sgqlc.types.Field(String, graphql_name="handle")
enabled = sgqlc.types.Field(Boolean, graphql_name="enabled")
regions = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketRegionCreateInput"))),
- graphql_name="regions",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketRegionCreateInput"))), graphql_name="regions"
)
@@ -4249,8 +5337,9 @@ class MarketRegionCreateInput(sgqlc.types.Input):
class MarketUpdateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("name", "enabled")
+ __field_names__ = ("name", "handle", "enabled")
name = sgqlc.types.Field(String, graphql_name="name")
+ handle = sgqlc.types.Field(String, graphql_name="handle")
enabled = sgqlc.types.Field(Boolean, graphql_name="enabled")
@@ -4315,15 +5404,7 @@ class MarketingActivityCreateExternalInput(sgqlc.types.Input):
class MarketingActivityCreateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = (
- "marketing_activity_title",
- "form_data",
- "marketing_activity_extension_id",
- "context",
- "utm",
- "status",
- "budget",
- )
+ __field_names__ = ("marketing_activity_title", "form_data", "marketing_activity_extension_id", "context", "utm", "status", "budget")
marketing_activity_title = sgqlc.types.Field(String, graphql_name="marketingActivityTitle")
form_data = sgqlc.types.Field(String, graphql_name="formData")
marketing_activity_extension_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="marketingActivityExtensionId")
@@ -4431,6 +5512,12 @@ class MarketingEngagementInput(sgqlc.types.Input):
fetched_at = sgqlc.types.Field(DateTime, graphql_name="fetchedAt")
+class MetafieldAccessInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("admin",)
+ admin = sgqlc.types.Field(sgqlc.types.non_null(MetafieldAdminAccess), graphql_name="admin")
+
+
class MetafieldDefinitionInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = (
@@ -4442,7 +5529,9 @@ class MetafieldDefinitionInput(sgqlc.types.Input):
"type",
"validations",
"visible_to_storefront_api",
+ "use_as_collection_condition",
"pin",
+ "access",
)
namespace = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="namespace")
key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
@@ -4454,19 +5543,37 @@ class MetafieldDefinitionInput(sgqlc.types.Input):
sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionValidationInput")), graphql_name="validations"
)
visible_to_storefront_api = sgqlc.types.Field(Boolean, graphql_name="visibleToStorefrontApi")
+ use_as_collection_condition = sgqlc.types.Field(Boolean, graphql_name="useAsCollectionCondition")
pin = sgqlc.types.Field(Boolean, graphql_name="pin")
+ access = sgqlc.types.Field(MetafieldAccessInput, graphql_name="access")
class MetafieldDefinitionUpdateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("namespace", "key", "name", "description", "owner_type", "pin", "visible_to_storefront_api")
+ __field_names__ = (
+ "namespace",
+ "key",
+ "name",
+ "description",
+ "owner_type",
+ "validations",
+ "pin",
+ "visible_to_storefront_api",
+ "use_as_collection_condition",
+ "access",
+ )
namespace = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="namespace")
key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
name = sgqlc.types.Field(String, graphql_name="name")
description = sgqlc.types.Field(String, graphql_name="description")
owner_type = sgqlc.types.Field(sgqlc.types.non_null(MetafieldOwnerType), graphql_name="ownerType")
+ validations = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionValidationInput")), graphql_name="validations"
+ )
pin = sgqlc.types.Field(Boolean, graphql_name="pin")
visible_to_storefront_api = sgqlc.types.Field(Boolean, graphql_name="visibleToStorefrontApi")
+ use_as_collection_condition = sgqlc.types.Field(Boolean, graphql_name="useAsCollectionCondition")
+ access = sgqlc.types.Field(MetafieldAccessInput, graphql_name="access")
class MetafieldDefinitionValidationInput(sgqlc.types.Input):
@@ -4484,8 +5591,7 @@ class MetafieldDeleteInput(sgqlc.types.Input):
class MetafieldInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("description", "id", "namespace", "key", "value", "type")
- description = sgqlc.types.Field(String, graphql_name="description")
+ __field_names__ = ("id", "namespace", "key", "value", "type")
id = sgqlc.types.Field(ID, graphql_name="id")
namespace = sgqlc.types.Field(String, graphql_name="namespace")
key = sgqlc.types.Field(String, graphql_name="key")
@@ -4508,97 +5614,276 @@ class MetafieldsSetInput(sgqlc.types.Input):
namespace = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="namespace")
key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
value = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="value")
- type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
+ type = sgqlc.types.Field(String, graphql_name="type")
-class MoneyInput(sgqlc.types.Input):
+class MetaobjectAccessInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("amount", "currency_code")
- amount = sgqlc.types.Field(sgqlc.types.non_null(Decimal), graphql_name="amount")
- currency_code = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="currencyCode")
+ __field_names__ = ("admin", "storefront")
+ admin = sgqlc.types.Field(MetaobjectAdminAccess, graphql_name="admin")
+ storefront = sgqlc.types.Field(MetaobjectStorefrontAccess, graphql_name="storefront")
-class MoveInput(sgqlc.types.Input):
+class MetaobjectBulkDeleteWhereCondition(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("id", "new_position")
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
- new_position = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="newPosition")
+ __field_names__ = ("type", "ids")
+ type = sgqlc.types.Field(String, graphql_name="type")
+ ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids")
-class OrderCaptureInput(sgqlc.types.Input):
+class MetaobjectCapabilityCreateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("id", "parent_transaction_id", "amount", "currency")
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
- parent_transaction_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="parentTransactionId")
- amount = sgqlc.types.Field(sgqlc.types.non_null(Money), graphql_name="amount")
- currency = sgqlc.types.Field(CurrencyCode, graphql_name="currency")
+ __field_names__ = ("publishable", "translatable")
+ publishable = sgqlc.types.Field("MetaobjectCapabilityPublishableInput", graphql_name="publishable")
+ translatable = sgqlc.types.Field("MetaobjectCapabilityTranslatableInput", graphql_name="translatable")
-class OrderCloseInput(sgqlc.types.Input):
+class MetaobjectCapabilityDataInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("id",)
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ __field_names__ = ("publishable",)
+ publishable = sgqlc.types.Field("MetaobjectCapabilityDataPublishableInput", graphql_name="publishable")
-class OrderEditAppliedDiscountInput(sgqlc.types.Input):
+class MetaobjectCapabilityDataPublishableInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("description", "fixed_value", "percent_value")
- description = sgqlc.types.Field(String, graphql_name="description")
- fixed_value = sgqlc.types.Field(MoneyInput, graphql_name="fixedValue")
- percent_value = sgqlc.types.Field(Float, graphql_name="percentValue")
+ __field_names__ = ("status",)
+ status = sgqlc.types.Field(sgqlc.types.non_null(MetaobjectStatus), graphql_name="status")
-class OrderInput(sgqlc.types.Input):
+class MetaobjectCapabilityPublishableInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = (
- "id",
- "email",
- "note",
- "tags",
- "shipping_address",
- "custom_attributes",
- "metafields",
- "localization_extensions",
- )
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
- email = sgqlc.types.Field(String, graphql_name="email")
- note = sgqlc.types.Field(String, graphql_name="note")
- tags = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="tags")
- shipping_address = sgqlc.types.Field(MailingAddressInput, graphql_name="shippingAddress")
- custom_attributes = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(AttributeInput)), graphql_name="customAttributes")
- metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldInput)), graphql_name="metafields")
- localization_extensions = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null(LocalizationExtensionInput)), graphql_name="localizationExtensions"
- )
+ __field_names__ = ("enabled",)
+ enabled = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="enabled")
-class OrderMarkAsPaidInput(sgqlc.types.Input):
+class MetaobjectCapabilityTranslatableInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("id",)
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ __field_names__ = ("enabled",)
+ enabled = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="enabled")
-class OrderOpenInput(sgqlc.types.Input):
+class MetaobjectCapabilityUpdateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("id",)
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ __field_names__ = ("publishable", "translatable")
+ publishable = sgqlc.types.Field(MetaobjectCapabilityPublishableInput, graphql_name="publishable")
+ translatable = sgqlc.types.Field(MetaobjectCapabilityTranslatableInput, graphql_name="translatable")
-class OrderTransactionInput(sgqlc.types.Input):
+class MetaobjectCreateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("amount", "gateway", "kind", "order_id", "parent_id")
- amount = sgqlc.types.Field(sgqlc.types.non_null(Money), graphql_name="amount")
- gateway = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="gateway")
- kind = sgqlc.types.Field(sgqlc.types.non_null(OrderTransactionKind), graphql_name="kind")
- order_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="orderId")
- parent_id = sgqlc.types.Field(ID, graphql_name="parentId")
+ __field_names__ = ("type", "handle", "fields", "capabilities")
+ type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
+ handle = sgqlc.types.Field(String, graphql_name="handle")
+ fields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectFieldInput")), graphql_name="fields")
+ capabilities = sgqlc.types.Field(MetaobjectCapabilityDataInput, graphql_name="capabilities")
-class PaymentScheduleInput(sgqlc.types.Input):
+class MetaobjectDefinitionCreateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("issued_at", "due_at")
- issued_at = sgqlc.types.Field(DateTime, graphql_name="issuedAt")
- due_at = sgqlc.types.Field(DateTime, graphql_name="dueAt")
+ __field_names__ = ("name", "description", "type", "field_definitions", "access", "display_name_key", "capabilities")
+ name = sgqlc.types.Field(String, graphql_name="name")
+ description = sgqlc.types.Field(String, graphql_name="description")
+ type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
+ field_definitions = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectFieldDefinitionCreateInput"))),
+ graphql_name="fieldDefinitions",
+ )
+ access = sgqlc.types.Field(MetaobjectAccessInput, graphql_name="access")
+ display_name_key = sgqlc.types.Field(String, graphql_name="displayNameKey")
+ capabilities = sgqlc.types.Field(MetaobjectCapabilityCreateInput, graphql_name="capabilities")
+
+
+class MetaobjectDefinitionUpdateInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("name", "description", "field_definitions", "access", "display_name_key", "reset_field_order", "capabilities")
+ name = sgqlc.types.Field(String, graphql_name="name")
+ description = sgqlc.types.Field(String, graphql_name="description")
+ field_definitions = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectFieldDefinitionOperationInput")), graphql_name="fieldDefinitions"
+ )
+ access = sgqlc.types.Field(MetaobjectAccessInput, graphql_name="access")
+ display_name_key = sgqlc.types.Field(String, graphql_name="displayNameKey")
+ reset_field_order = sgqlc.types.Field(Boolean, graphql_name="resetFieldOrder")
+ capabilities = sgqlc.types.Field(MetaobjectCapabilityUpdateInput, graphql_name="capabilities")
+
+
+class MetaobjectFieldDefinitionCreateInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("key", "type", "name", "description", "required", "validations")
+ key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
+ type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
+ name = sgqlc.types.Field(String, graphql_name="name")
+ description = sgqlc.types.Field(String, graphql_name="description")
+ required = sgqlc.types.Field(Boolean, graphql_name="required")
+ validations = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null(MetafieldDefinitionValidationInput)), graphql_name="validations"
+ )
+
+
+class MetaobjectFieldDefinitionDeleteInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("key",)
+ key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
+
+
+class MetaobjectFieldDefinitionOperationInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("create", "update", "delete")
+ create = sgqlc.types.Field(MetaobjectFieldDefinitionCreateInput, graphql_name="create")
+ update = sgqlc.types.Field("MetaobjectFieldDefinitionUpdateInput", graphql_name="update")
+ delete = sgqlc.types.Field(MetaobjectFieldDefinitionDeleteInput, graphql_name="delete")
+
+
+class MetaobjectFieldDefinitionUpdateInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("key", "name", "description", "required", "validations")
+ key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
+ name = sgqlc.types.Field(String, graphql_name="name")
+ description = sgqlc.types.Field(String, graphql_name="description")
+ required = sgqlc.types.Field(Boolean, graphql_name="required")
+ validations = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null(MetafieldDefinitionValidationInput)), graphql_name="validations"
+ )
+
+
+class MetaobjectFieldInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("key", "value")
+ key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
+ value = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="value")
+
+
+class MetaobjectHandleInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("type", "handle")
+ type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
+ handle = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="handle")
+
+
+class MetaobjectUpdateInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("handle", "fields", "capabilities")
+ handle = sgqlc.types.Field(String, graphql_name="handle")
+ fields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(MetaobjectFieldInput)), graphql_name="fields")
+ capabilities = sgqlc.types.Field(MetaobjectCapabilityDataInput, graphql_name="capabilities")
+
+
+class MetaobjectUpsertInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("handle", "fields", "capabilities")
+ handle = sgqlc.types.Field(String, graphql_name="handle")
+ fields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(MetaobjectFieldInput)), graphql_name="fields")
+ capabilities = sgqlc.types.Field(MetaobjectCapabilityDataInput, graphql_name="capabilities")
+
+
+class MoneyInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("amount", "currency_code")
+ amount = sgqlc.types.Field(sgqlc.types.non_null(Decimal), graphql_name="amount")
+ currency_code = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="currencyCode")
+
+
+class MoveInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("id", "new_position")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ new_position = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="newPosition")
+
+
+class ObjectDimensionsInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("length", "width", "height", "unit")
+ length = sgqlc.types.Field(sgqlc.types.non_null(Float), graphql_name="length")
+ width = sgqlc.types.Field(sgqlc.types.non_null(Float), graphql_name="width")
+ height = sgqlc.types.Field(sgqlc.types.non_null(Float), graphql_name="height")
+ unit = sgqlc.types.Field(sgqlc.types.non_null(LengthUnit), graphql_name="unit")
+
+
+class OrderCaptureInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("id", "parent_transaction_id", "amount", "currency")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ parent_transaction_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="parentTransactionId")
+ amount = sgqlc.types.Field(sgqlc.types.non_null(Money), graphql_name="amount")
+ currency = sgqlc.types.Field(CurrencyCode, graphql_name="currency")
+
+
+class OrderCloseInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("id",)
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+
+
+class OrderEditAppliedDiscountInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("description", "fixed_value", "percent_value")
+ description = sgqlc.types.Field(String, graphql_name="description")
+ fixed_value = sgqlc.types.Field(MoneyInput, graphql_name="fixedValue")
+ percent_value = sgqlc.types.Field(Float, graphql_name="percentValue")
+
+
+class OrderInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "id",
+ "email",
+ "note",
+ "tags",
+ "shipping_address",
+ "custom_attributes",
+ "metafields",
+ "localization_extensions",
+ "po_number",
+ )
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ email = sgqlc.types.Field(String, graphql_name="email")
+ note = sgqlc.types.Field(String, graphql_name="note")
+ tags = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="tags")
+ shipping_address = sgqlc.types.Field(MailingAddressInput, graphql_name="shippingAddress")
+ custom_attributes = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(AttributeInput)), graphql_name="customAttributes")
+ metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldInput)), graphql_name="metafields")
+ localization_extensions = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null(LocalizationExtensionInput)), graphql_name="localizationExtensions"
+ )
+ po_number = sgqlc.types.Field(String, graphql_name="poNumber")
+
+
+class OrderMarkAsPaidInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("id",)
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+
+
+class OrderOpenInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("id",)
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+
+
+class OrderTransactionInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("amount", "gateway", "kind", "order_id", "parent_id")
+ amount = sgqlc.types.Field(sgqlc.types.non_null(Money), graphql_name="amount")
+ gateway = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="gateway")
+ kind = sgqlc.types.Field(sgqlc.types.non_null(OrderTransactionKind), graphql_name="kind")
+ order_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="orderId")
+ parent_id = sgqlc.types.Field(ID, graphql_name="parentId")
+
+
+class PaymentCustomizationInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("function_id", "title", "enabled", "metafields")
+ function_id = sgqlc.types.Field(String, graphql_name="functionId")
+ title = sgqlc.types.Field(String, graphql_name="title")
+ enabled = sgqlc.types.Field(Boolean, graphql_name="enabled")
+ metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldInput)), graphql_name="metafields")
+
+
+class PaymentScheduleInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("issued_at", "due_at")
+ issued_at = sgqlc.types.Field(DateTime, graphql_name="issuedAt")
+ due_at = sgqlc.types.Field(DateTime, graphql_name="dueAt")
class PaymentTermsCreateInput(sgqlc.types.Input):
@@ -4628,6 +5913,19 @@ class PaymentTermsUpdateInput(sgqlc.types.Input):
payment_terms_attributes = sgqlc.types.Field(sgqlc.types.non_null(PaymentTermsInput), graphql_name="paymentTermsAttributes")
+class PreparedFulfillmentOrderLineItemsInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("fulfillment_order_id",)
+ fulfillment_order_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="fulfillmentOrderId")
+
+
+class PriceInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("calculation", "price")
+ calculation = sgqlc.types.Field(PriceCalculationType, graphql_name="calculation")
+ price = sgqlc.types.Field(Money, graphql_name="price")
+
+
class PriceListAdjustmentInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("value", "type")
@@ -4635,37 +5933,33 @@ class PriceListAdjustmentInput(sgqlc.types.Input):
type = sgqlc.types.Field(sgqlc.types.non_null(PriceListAdjustmentType), graphql_name="type")
-class PriceListContext(sgqlc.types.Input):
- __schema__ = shopify_schema
- __field_names__ = ("country",)
- country = sgqlc.types.Field(CountryCode, graphql_name="country")
-
-
-class PriceListContextRuleInput(sgqlc.types.Input):
+class PriceListAdjustmentSettingsInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("market_id",)
- market_id = sgqlc.types.Field(ID, graphql_name="marketId")
+ __field_names__ = ("compare_at_mode",)
+ compare_at_mode = sgqlc.types.Field(sgqlc.types.non_null(PriceListCompareAtMode), graphql_name="compareAtMode")
class PriceListCreateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("name", "currency", "parent", "context_rule")
+ __field_names__ = ("name", "currency", "parent", "catalog_id")
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
currency = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="currency")
parent = sgqlc.types.Field(sgqlc.types.non_null("PriceListParentCreateInput"), graphql_name="parent")
- context_rule = sgqlc.types.Field(PriceListContextRuleInput, graphql_name="contextRule")
+ catalog_id = sgqlc.types.Field(ID, graphql_name="catalogId")
class PriceListParentCreateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("adjustment",)
+ __field_names__ = ("adjustment", "settings")
adjustment = sgqlc.types.Field(sgqlc.types.non_null(PriceListAdjustmentInput), graphql_name="adjustment")
+ settings = sgqlc.types.Field(PriceListAdjustmentSettingsInput, graphql_name="settings")
class PriceListParentUpdateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("adjustment",)
+ __field_names__ = ("adjustment", "settings")
adjustment = sgqlc.types.Field(sgqlc.types.non_null(PriceListAdjustmentInput), graphql_name="adjustment")
+ settings = sgqlc.types.Field(PriceListAdjustmentSettingsInput, graphql_name="settings")
class PriceListPriceInput(sgqlc.types.Input):
@@ -4676,13 +5970,20 @@ class PriceListPriceInput(sgqlc.types.Input):
compare_at_price = sgqlc.types.Field(MoneyInput, graphql_name="compareAtPrice")
+class PriceListProductPriceInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("product_id", "price")
+ product_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="productId")
+ price = sgqlc.types.Field(sgqlc.types.non_null(MoneyInput), graphql_name="price")
+
+
class PriceListUpdateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("name", "currency", "context_rule", "parent")
+ __field_names__ = ("name", "currency", "parent", "catalog_id")
name = sgqlc.types.Field(String, graphql_name="name")
currency = sgqlc.types.Field(CurrencyCode, graphql_name="currency")
- context_rule = sgqlc.types.Field(PriceListContextRuleInput, graphql_name="contextRule")
parent = sgqlc.types.Field(PriceListParentUpdateInput, graphql_name="parent")
+ catalog_id = sgqlc.types.Field(ID, graphql_name="catalogId")
class PriceRuleCustomerSelectionInput(sgqlc.types.Input):
@@ -4856,6 +6157,22 @@ class ProductDeleteInput(sgqlc.types.Input):
id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+class ProductDuplicateAsyncInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("product_id", "new_title", "new_status", "include_images")
+ product_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="productId")
+ new_title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="newTitle")
+ new_status = sgqlc.types.Field(ProductStatus, graphql_name="newStatus")
+ include_images = sgqlc.types.Field(Boolean, graphql_name="includeImages")
+
+
+class ProductFeedInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("language", "country")
+ language = sgqlc.types.Field(sgqlc.types.non_null(LanguageCode), graphql_name="language")
+ country = sgqlc.types.Field(sgqlc.types.non_null(CountryCode), graphql_name="country")
+
+
class ProductInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = (
@@ -4876,9 +6193,7 @@ class ProductInput(sgqlc.types.Input):
"collections_to_join",
"collections_to_leave",
"id",
- "images",
"metafields",
- "private_metafields",
"options",
"variants",
"status",
@@ -4901,11 +6216,7 @@ class ProductInput(sgqlc.types.Input):
collections_to_join = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="collectionsToJoin")
collections_to_leave = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="collectionsToLeave")
id = sgqlc.types.Field(ID, graphql_name="id")
- images = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ImageInput)), graphql_name="images")
metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldInput)), graphql_name="metafields")
- private_metafields = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null(PrivateMetafieldInput)), graphql_name="privateMetafields"
- )
options = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="options")
variants = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantInput")), graphql_name="variants")
status = sgqlc.types.Field(ProductStatus, graphql_name="status")
@@ -4924,8 +6235,7 @@ class ProductPublishInput(sgqlc.types.Input):
__field_names__ = ("id", "product_publications")
id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
product_publications = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ProductPublicationInput))),
- graphql_name="productPublications",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ProductPublicationInput))), graphql_name="productPublications"
)
@@ -4944,8 +6254,7 @@ class ProductUnpublishInput(sgqlc.types.Input):
__field_names__ = ("id", "product_publications")
id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
product_publications = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ProductPublicationInput))),
- graphql_name="productPublications",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ProductPublicationInput))), graphql_name="productPublications"
)
@@ -4963,21 +6272,27 @@ class ProductVariantDetachMediaInput(sgqlc.types.Input):
media_ids = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="mediaIds")
+class ProductVariantGroupRelationshipInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("id", "quantity")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+
+
class ProductVariantInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = (
+ "requires_components",
"barcode",
"compare_at_price",
"harmonized_system_code",
"id",
- "image_id",
- "image_src",
+ "media_id",
"media_src",
"inventory_policy",
"inventory_quantities",
"inventory_item",
"metafields",
- "private_metafields",
"options",
"position",
"price",
@@ -4989,12 +6304,12 @@ class ProductVariantInput(sgqlc.types.Input):
"weight",
"weight_unit",
)
+ requires_components = sgqlc.types.Field(Boolean, graphql_name="requiresComponents")
barcode = sgqlc.types.Field(String, graphql_name="barcode")
compare_at_price = sgqlc.types.Field(Money, graphql_name="compareAtPrice")
harmonized_system_code = sgqlc.types.Field(String, graphql_name="harmonizedSystemCode")
id = sgqlc.types.Field(ID, graphql_name="id")
- image_id = sgqlc.types.Field(ID, graphql_name="imageId")
- image_src = sgqlc.types.Field(String, graphql_name="imageSrc")
+ media_id = sgqlc.types.Field(ID, graphql_name="mediaId")
media_src = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="mediaSrc")
inventory_policy = sgqlc.types.Field(ProductVariantInventoryPolicy, graphql_name="inventoryPolicy")
inventory_quantities = sgqlc.types.Field(
@@ -5002,9 +6317,6 @@ class ProductVariantInput(sgqlc.types.Input):
)
inventory_item = sgqlc.types.Field(InventoryItemInput, graphql_name="inventoryItem")
metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldInput)), graphql_name="metafields")
- private_metafields = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null(PrivateMetafieldInput)), graphql_name="privateMetafields"
- )
options = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="options")
position = sgqlc.types.Field(Int, graphql_name="position")
price = sgqlc.types.Field(Money, graphql_name="price")
@@ -5024,6 +6336,32 @@ class ProductVariantPositionInput(sgqlc.types.Input):
position = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="position")
+class ProductVariantRelationshipUpdateInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "parent_product_variant_id",
+ "parent_product_id",
+ "product_variant_relationships_to_create",
+ "product_variant_relationships_to_update",
+ "product_variant_relationships_to_remove",
+ "remove_all_product_variant_relationships",
+ "price_input",
+ )
+ parent_product_variant_id = sgqlc.types.Field(ID, graphql_name="parentProductVariantId")
+ parent_product_id = sgqlc.types.Field(ID, graphql_name="parentProductId")
+ product_variant_relationships_to_create = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null(ProductVariantGroupRelationshipInput)), graphql_name="productVariantRelationshipsToCreate"
+ )
+ product_variant_relationships_to_update = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null(ProductVariantGroupRelationshipInput)), graphql_name="productVariantRelationshipsToUpdate"
+ )
+ product_variant_relationships_to_remove = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="productVariantRelationshipsToRemove"
+ )
+ remove_all_product_variant_relationships = sgqlc.types.Field(Boolean, graphql_name="removeAllProductVariantRelationships")
+ price_input = sgqlc.types.Field(PriceInput, graphql_name="priceInput")
+
+
class ProductVariantsBulkInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = (
@@ -5031,14 +6369,12 @@ class ProductVariantsBulkInput(sgqlc.types.Input):
"compare_at_price",
"harmonized_system_code",
"id",
- "image_id",
- "image_src",
"media_src",
"inventory_policy",
"inventory_quantities",
"inventory_item",
+ "media_id",
"metafields",
- "private_metafields",
"options",
"price",
"requires_shipping",
@@ -5052,18 +6388,14 @@ class ProductVariantsBulkInput(sgqlc.types.Input):
compare_at_price = sgqlc.types.Field(Money, graphql_name="compareAtPrice")
harmonized_system_code = sgqlc.types.Field(String, graphql_name="harmonizedSystemCode")
id = sgqlc.types.Field(ID, graphql_name="id")
- image_id = sgqlc.types.Field(ID, graphql_name="imageId")
- image_src = sgqlc.types.Field(String, graphql_name="imageSrc")
media_src = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="mediaSrc")
inventory_policy = sgqlc.types.Field(ProductVariantInventoryPolicy, graphql_name="inventoryPolicy")
inventory_quantities = sgqlc.types.Field(
sgqlc.types.list_of(sgqlc.types.non_null(InventoryLevelInput)), graphql_name="inventoryQuantities"
)
inventory_item = sgqlc.types.Field(InventoryItemInput, graphql_name="inventoryItem")
+ media_id = sgqlc.types.Field(ID, graphql_name="mediaId")
metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldInput)), graphql_name="metafields")
- private_metafields = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null(PrivateMetafieldInput)), graphql_name="privateMetafields"
- )
options = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="options")
price = sgqlc.types.Field(Money, graphql_name="price")
requires_shipping = sgqlc.types.Field(Boolean, graphql_name="requiresShipping")
@@ -5084,6 +6416,14 @@ class PubSubWebhookSubscriptionInput(sgqlc.types.Input):
metafield_namespaces = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="metafieldNamespaces")
+class PublicationCreateInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("catalog_id", "default_state", "auto_publish")
+ catalog_id = sgqlc.types.Field(ID, graphql_name="catalogId")
+ default_state = sgqlc.types.Field(PublicationCreateInputPublicationDefaultState, graphql_name="defaultState")
+ auto_publish = sgqlc.types.Field(Boolean, graphql_name="autoPublish")
+
+
class PublicationInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("publication_id", "publish_date")
@@ -5091,6 +6431,14 @@ class PublicationInput(sgqlc.types.Input):
publish_date = sgqlc.types.Field(DateTime, graphql_name="publishDate")
+class PublicationUpdateInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("publishables_to_add", "publishables_to_remove", "auto_publish")
+ publishables_to_add = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="publishablesToAdd")
+ publishables_to_remove = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="publishablesToRemove")
+ auto_publish = sgqlc.types.Field(Boolean, graphql_name="autoPublish")
+
+
class PurchasingCompanyInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("company_id", "company_contact_id", "company_location_id")
@@ -5106,6 +6454,15 @@ class PurchasingEntityInput(sgqlc.types.Input):
purchasing_company = sgqlc.types.Field(PurchasingCompanyInput, graphql_name="purchasingCompany")
+class QuantityRuleInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("increment", "maximum", "minimum", "variant_id")
+ increment = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="increment")
+ maximum = sgqlc.types.Field(Int, graphql_name="maximum")
+ minimum = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="minimum")
+ variant_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="variantId")
+
+
class RefundDutyInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("duty_id", "refund_type")
@@ -5115,16 +6472,7 @@ class RefundDutyInput(sgqlc.types.Input):
class RefundInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = (
- "currency",
- "order_id",
- "note",
- "notify",
- "shipping",
- "refund_line_items",
- "refund_duties",
- "transactions",
- )
+ __field_names__ = ("currency", "order_id", "note", "notify", "shipping", "refund_line_items", "refund_duties", "transactions")
currency = sgqlc.types.Field(CurrencyCode, graphql_name="currency")
order_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="orderId")
note = sgqlc.types.Field(String, graphql_name="note")
@@ -5144,6 +6492,13 @@ class RefundLineItemInput(sgqlc.types.Input):
location_id = sgqlc.types.Field(ID, graphql_name="locationId")
+class RefundShippingInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("shipping_refund_amount", "full_refund")
+ shipping_refund_amount = sgqlc.types.Field(MoneyInput, graphql_name="shippingRefundAmount")
+ full_refund = sgqlc.types.Field(Boolean, graphql_name="fullRefund")
+
+
class RemoteAuthorizeNetCustomerPaymentProfileInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("customer_profile_id", "customer_payment_profile_id")
@@ -5165,55 +6520,181 @@ class RemoteStripePaymentMethodInput(sgqlc.types.Input):
payment_method_id = sgqlc.types.Field(String, graphql_name="paymentMethodId")
-class SEOInput(sgqlc.types.Input):
- __schema__ = shopify_schema
- __field_names__ = ("title", "description")
- title = sgqlc.types.Field(String, graphql_name="title")
- description = sgqlc.types.Field(String, graphql_name="description")
-
-
-class SavedSearchCreateInput(sgqlc.types.Input):
+class ResourceFeedbackCreateInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("resource_type", "name", "query")
- resource_type = sgqlc.types.Field(sgqlc.types.non_null(SearchResultType), graphql_name="resourceType")
- name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
- query = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="query")
+ __field_names__ = ("feedback_generated_at", "messages", "state")
+ feedback_generated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="feedbackGeneratedAt")
+ messages = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="messages")
+ state = sgqlc.types.Field(sgqlc.types.non_null(ResourceFeedbackState), graphql_name="state")
-class SavedSearchDeleteInput(sgqlc.types.Input):
+class ReturnApproveRequestInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("id",)
id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
-class SavedSearchUpdateInput(sgqlc.types.Input):
+class ReturnDeclineRequestInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("id", "name", "query")
+ __field_names__ = ("id", "decline_reason")
id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
- name = sgqlc.types.Field(String, graphql_name="name")
- query = sgqlc.types.Field(String, graphql_name="query")
+ decline_reason = sgqlc.types.Field(sgqlc.types.non_null(ReturnDeclineReason), graphql_name="declineReason")
-class ScriptTagInput(sgqlc.types.Input):
+class ReturnInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("src", "display_scope", "cache")
- src = sgqlc.types.Field(URL, graphql_name="src")
- display_scope = sgqlc.types.Field(ScriptTagDisplayScope, graphql_name="displayScope")
- cache = sgqlc.types.Field(Boolean, graphql_name="cache")
+ __field_names__ = ("order_id", "return_line_items", "notify_customer", "requested_at")
+ order_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="orderId")
+ return_line_items = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnLineItemInput"))), graphql_name="returnLineItems"
+ )
+ notify_customer = sgqlc.types.Field(Boolean, graphql_name="notifyCustomer")
+ requested_at = sgqlc.types.Field(DateTime, graphql_name="requestedAt")
-class SellingPlanAnchorInput(sgqlc.types.Input):
+class ReturnLineItemInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("type", "day", "month", "cutoff_day")
- type = sgqlc.types.Field(SellingPlanAnchorType, graphql_name="type")
- day = sgqlc.types.Field(Int, graphql_name="day")
- month = sgqlc.types.Field(Int, graphql_name="month")
- cutoff_day = sgqlc.types.Field(Int, graphql_name="cutoffDay")
+ __field_names__ = ("fulfillment_line_item_id", "quantity", "return_reason", "return_reason_note")
+ fulfillment_line_item_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="fulfillmentLineItemId")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ return_reason = sgqlc.types.Field(sgqlc.types.non_null(ReturnReason), graphql_name="returnReason")
+ return_reason_note = sgqlc.types.Field(String, graphql_name="returnReasonNote")
-class SellingPlanBillingPolicyInput(sgqlc.types.Input):
+class ReturnRefundInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = ("fixed", "recurring")
+ __field_names__ = ("return_id", "return_refund_line_items", "refund_shipping", "refund_duties", "order_transactions", "notify_customer")
+ return_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="returnId")
+ return_refund_line_items = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnRefundLineItemInput"))), graphql_name="returnRefundLineItems"
+ )
+ refund_shipping = sgqlc.types.Field(RefundShippingInput, graphql_name="refundShipping")
+ refund_duties = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(RefundDutyInput)), graphql_name="refundDuties")
+ order_transactions = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null("ReturnRefundOrderTransactionInput")), graphql_name="orderTransactions"
+ )
+ notify_customer = sgqlc.types.Field(Boolean, graphql_name="notifyCustomer")
+
+
+class ReturnRefundLineItemInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("return_line_item_id", "quantity")
+ return_line_item_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="returnLineItemId")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+
+
+class ReturnRefundOrderTransactionInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("transaction_amount", "parent_id")
+ transaction_amount = sgqlc.types.Field(sgqlc.types.non_null(MoneyInput), graphql_name="transactionAmount")
+ parent_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="parentId")
+
+
+class ReturnRequestInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("order_id", "return_line_items")
+ order_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="orderId")
+ return_line_items = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnRequestLineItemInput"))), graphql_name="returnLineItems"
+ )
+
+
+class ReturnRequestLineItemInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("fulfillment_line_item_id", "quantity", "return_reason", "customer_note")
+ fulfillment_line_item_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="fulfillmentLineItemId")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ return_reason = sgqlc.types.Field(sgqlc.types.non_null(ReturnReason), graphql_name="returnReason")
+ customer_note = sgqlc.types.Field(String, graphql_name="customerNote")
+
+
+class ReverseDeliveryDisposeInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("reverse_delivery_line_item_id", "quantity", "disposition_type", "location_id")
+ reverse_delivery_line_item_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="reverseDeliveryLineItemId")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ disposition_type = sgqlc.types.Field(sgqlc.types.non_null(ReverseFulfillmentOrderDispositionType), graphql_name="dispositionType")
+ location_id = sgqlc.types.Field(ID, graphql_name="locationId")
+
+
+class ReverseDeliveryLabelInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("file_url",)
+ file_url = sgqlc.types.Field(sgqlc.types.non_null(URL), graphql_name="fileUrl")
+
+
+class ReverseDeliveryLineItemInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("reverse_fulfillment_order_line_item_id", "quantity")
+ reverse_fulfillment_order_line_item_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="reverseFulfillmentOrderLineItemId")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+
+
+class ReverseDeliveryTrackingInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("number", "url")
+ number = sgqlc.types.Field(String, graphql_name="number")
+ url = sgqlc.types.Field(URL, graphql_name="url")
+
+
+class ReverseFulfillmentOrderDisposeInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("reverse_fulfillment_order_line_item_id", "quantity", "location_id", "disposition_type")
+ reverse_fulfillment_order_line_item_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="reverseFulfillmentOrderLineItemId")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ location_id = sgqlc.types.Field(ID, graphql_name="locationId")
+ disposition_type = sgqlc.types.Field(sgqlc.types.non_null(ReverseFulfillmentOrderDispositionType), graphql_name="dispositionType")
+
+
+class SEOInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("title", "description")
+ title = sgqlc.types.Field(String, graphql_name="title")
+ description = sgqlc.types.Field(String, graphql_name="description")
+
+
+class SavedSearchCreateInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("resource_type", "name", "query")
+ resource_type = sgqlc.types.Field(sgqlc.types.non_null(SearchResultType), graphql_name="resourceType")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ query = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="query")
+
+
+class SavedSearchDeleteInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("id",)
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+
+
+class SavedSearchUpdateInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("id", "name", "query")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ name = sgqlc.types.Field(String, graphql_name="name")
+ query = sgqlc.types.Field(String, graphql_name="query")
+
+
+class ScriptTagInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("src", "display_scope", "cache")
+ src = sgqlc.types.Field(URL, graphql_name="src")
+ display_scope = sgqlc.types.Field(ScriptTagDisplayScope, graphql_name="displayScope")
+ cache = sgqlc.types.Field(Boolean, graphql_name="cache")
+
+
+class SellingPlanAnchorInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("type", "day", "month", "cutoff_day")
+ type = sgqlc.types.Field(SellingPlanAnchorType, graphql_name="type")
+ day = sgqlc.types.Field(Int, graphql_name="day")
+ month = sgqlc.types.Field(Int, graphql_name="month")
+ cutoff_day = sgqlc.types.Field(Int, graphql_name="cutoffDay")
+
+
+class SellingPlanBillingPolicyInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("fixed", "recurring")
fixed = sgqlc.types.Field("SellingPlanFixedBillingPolicyInput", graphql_name="fixed")
recurring = sgqlc.types.Field("SellingPlanRecurringBillingPolicyInput", graphql_name="recurring")
@@ -5257,14 +6738,7 @@ class SellingPlanFixedBillingPolicyInput(sgqlc.types.Input):
class SellingPlanFixedDeliveryPolicyInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = (
- "anchors",
- "fulfillment_trigger",
- "fulfillment_exact_time",
- "cutoff",
- "intent",
- "pre_anchor_behavior",
- )
+ __field_names__ = ("anchors", "fulfillment_trigger", "fulfillment_exact_time", "cutoff", "intent", "pre_anchor_behavior")
anchors = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(SellingPlanAnchorInput)), graphql_name="anchors")
fulfillment_trigger = sgqlc.types.Field(SellingPlanFulfillmentTrigger, graphql_name="fulfillmentTrigger")
fulfillment_exact_time = sgqlc.types.Field(DateTime, graphql_name="fulfillmentExactTime")
@@ -5517,6 +6991,23 @@ class StorefrontAccessTokenInput(sgqlc.types.Input):
title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+class SubscriptionAtomicLineInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("line", "discounts")
+ line = sgqlc.types.Field(sgqlc.types.non_null("SubscriptionLineInput"), graphql_name="line")
+ discounts = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionAtomicManualDiscountInput")), graphql_name="discounts"
+ )
+
+
+class SubscriptionAtomicManualDiscountInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("title", "value", "recurring_cycle_limit")
+ title = sgqlc.types.Field(String, graphql_name="title")
+ value = sgqlc.types.Field("SubscriptionManualDiscountValueInput", graphql_name="value")
+ recurring_cycle_limit = sgqlc.types.Field(Int, graphql_name="recurringCycleLimit")
+
+
class SubscriptionBillingAttemptInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("idempotency_key", "origin_time", "billing_cycle_selector")
@@ -5571,6 +7062,19 @@ class SubscriptionBillingPolicyInput(sgqlc.types.Input):
anchors = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(SellingPlanAnchorInput)), graphql_name="anchors")
+class SubscriptionContractAtomicCreateInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("customer_id", "next_billing_date", "currency_code", "contract", "lines", "discount_codes")
+ customer_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="customerId")
+ next_billing_date = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="nextBillingDate")
+ currency_code = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="currencyCode")
+ contract = sgqlc.types.Field(sgqlc.types.non_null("SubscriptionDraftInput"), graphql_name="contract")
+ lines = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionAtomicLineInput))), graphql_name="lines"
+ )
+ discount_codes = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="discountCodes")
+
+
class SubscriptionContractCreateInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("customer_id", "next_billing_date", "currency_code", "contract")
@@ -5580,6 +7084,13 @@ class SubscriptionContractCreateInput(sgqlc.types.Input):
contract = sgqlc.types.Field(sgqlc.types.non_null("SubscriptionDraftInput"), graphql_name="contract")
+class SubscriptionContractProductChangeInput(sgqlc.types.Input):
+ __schema__ = shopify_schema
+ __field_names__ = ("product_variant_id", "current_price")
+ product_variant_id = sgqlc.types.Field(ID, graphql_name="productVariantId")
+ current_price = sgqlc.types.Field(Decimal, graphql_name="currentPrice")
+
+
class SubscriptionDeliveryMethodInput(sgqlc.types.Input):
__schema__ = shopify_schema
__field_names__ = ("shipping", "local_delivery", "pickup")
@@ -5815,20 +7326,11 @@ class WebPixelInput(sgqlc.types.Input):
class WebhookSubscriptionInput(sgqlc.types.Input):
__schema__ = shopify_schema
- __field_names__ = (
- "callback_url",
- "format",
- "include_fields",
- "metafield_namespaces",
- "private_metafield_namespaces",
- )
+ __field_names__ = ("callback_url", "format", "include_fields", "metafield_namespaces")
callback_url = sgqlc.types.Field(URL, graphql_name="callbackUrl")
format = sgqlc.types.Field(WebhookSubscriptionFormat, graphql_name="format")
include_fields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="includeFields")
metafield_namespaces = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="metafieldNamespaces")
- private_metafield_namespaces = sgqlc.types.Field(
- sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="privateMetafieldNamespaces"
- )
class WeightInput(sgqlc.types.Input):
@@ -5841,103 +7343,594 @@ class WeightInput(sgqlc.types.Input):
########################################################################
# Output Objects and Interfaces
########################################################################
-class AccessScope(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("description", "handle")
- description = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="description")
- handle = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="handle")
-
-
-class AllDiscountItems(sgqlc.types.Type):
+class AppPurchase(sgqlc.types.Interface):
__schema__ = shopify_schema
- __field_names__ = ("all_items",)
- all_items = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="allItems")
+ __field_names__ = ("created_at", "name", "price", "status", "test")
+ created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ price = sgqlc.types.Field(sgqlc.types.non_null("MoneyV2"), graphql_name="price")
+ status = sgqlc.types.Field(sgqlc.types.non_null(AppPurchaseStatus), graphql_name="status")
+ test = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="test")
-class ApiVersion(sgqlc.types.Type):
+class CalculatedDiscountApplication(sgqlc.types.Interface):
__schema__ = shopify_schema
- __field_names__ = ("display_name", "handle", "supported")
- display_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="displayName")
- handle = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="handle")
- supported = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="supported")
+ __field_names__ = ("allocation_method", "applied_to", "description", "id", "target_selection", "target_type", "value")
+ allocation_method = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationAllocationMethod), graphql_name="allocationMethod")
+ applied_to = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationLevel), graphql_name="appliedTo")
+ description = sgqlc.types.Field(String, graphql_name="description")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ target_selection = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationTargetSelection), graphql_name="targetSelection")
+ target_type = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationTargetType), graphql_name="targetType")
+ value = sgqlc.types.Field(sgqlc.types.non_null("PricingValue"), graphql_name="value")
-class AppConnection(sgqlc.types.relay.Connection):
+class CommentEventSubject(sgqlc.types.Interface):
__schema__ = shopify_schema
- __field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppEdge"))), graphql_name="edges")
- nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("App"))), graphql_name="nodes")
- page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+ __field_names__ = ("has_timeline_comment", "id")
+ has_timeline_comment = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="hasTimelineComment")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
-class AppCreditConnection(sgqlc.types.relay.Connection):
+class CustomerMoment(sgqlc.types.Interface):
__schema__ = shopify_schema
- __field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppCreditEdge"))), graphql_name="edges")
- nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppCredit"))), graphql_name="nodes")
- page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+ __field_names__ = ("occurred_at",)
+ occurred_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="occurredAt")
-class AppCreditCreatePayload(sgqlc.types.Type):
+class DiscountApplication(sgqlc.types.Interface):
__schema__ = shopify_schema
- __field_names__ = ("app_credit", "user_errors")
- app_credit = sgqlc.types.Field("AppCredit", graphql_name="appCredit")
- user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+ __field_names__ = ("allocation_method", "index", "target_selection", "target_type", "value")
+ allocation_method = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationAllocationMethod), graphql_name="allocationMethod")
+ index = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="index")
+ target_selection = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationTargetSelection), graphql_name="targetSelection")
+ target_type = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationTargetType), graphql_name="targetType")
+ value = sgqlc.types.Field(sgqlc.types.non_null("PricingValue"), graphql_name="value")
-class AppCreditEdge(sgqlc.types.Type):
+class DisplayableError(sgqlc.types.Interface):
__schema__ = shopify_schema
- __field_names__ = ("cursor", "node")
- cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null("AppCredit"), graphql_name="node")
+ __field_names__ = ("field", "message")
+ field = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="field")
+ message = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="message")
-class AppDiscountType(sgqlc.types.Type):
+class Event(sgqlc.types.Interface):
__schema__ = shopify_schema
- __field_names__ = (
- "app",
- "app_bridge",
- "app_key",
- "description",
- "discount_class",
- "function_id",
- "target_type",
- "title",
- )
- app = sgqlc.types.Field(sgqlc.types.non_null("App"), graphql_name="app")
- app_bridge = sgqlc.types.Field(sgqlc.types.non_null("FunctionsAppBridge"), graphql_name="appBridge")
- app_key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="appKey")
- description = sgqlc.types.Field(String, graphql_name="description")
- discount_class = sgqlc.types.Field(sgqlc.types.non_null(DiscountClass), graphql_name="discountClass")
- function_id = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="functionId")
- target_type = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationTargetType), graphql_name="targetType")
- title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+ __field_names__ = ("app_title", "attribute_to_app", "attribute_to_user", "created_at", "critical_alert", "id", "message")
+ app_title = sgqlc.types.Field(String, graphql_name="appTitle")
+ attribute_to_app = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="attributeToApp")
+ attribute_to_user = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="attributeToUser")
+ created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
+ critical_alert = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="criticalAlert")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ message = sgqlc.types.Field(sgqlc.types.non_null(FormattedString), graphql_name="message")
-class AppEdge(sgqlc.types.Type):
+class File(sgqlc.types.Interface):
__schema__ = shopify_schema
- __field_names__ = ("cursor", "node")
- cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null("App"), graphql_name="node")
+ __field_names__ = ("alt", "created_at", "file_errors", "file_status", "id", "preview", "updated_at")
+ alt = sgqlc.types.Field(String, graphql_name="alt")
+ created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
+ file_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FileError"))), graphql_name="fileErrors")
+ file_status = sgqlc.types.Field(sgqlc.types.non_null(FileStatus), graphql_name="fileStatus")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ preview = sgqlc.types.Field("MediaPreviewImage", graphql_name="preview")
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
-class AppFeedback(sgqlc.types.Type):
+class HasEvents(sgqlc.types.Interface):
__schema__ = shopify_schema
- __field_names__ = ("app", "link", "messages")
- app = sgqlc.types.Field(sgqlc.types.non_null("App"), graphql_name="app")
- link = sgqlc.types.Field("Link", graphql_name="link")
- messages = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="messages")
+ __field_names__ = ("events",)
+ events = sgqlc.types.Field(
+ sgqlc.types.non_null("EventConnection"),
+ graphql_name="events",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("sort_key", sgqlc.types.Arg(EventSortKeys, graphql_name="sortKey", default="ID")),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ )
+ ),
+ )
-class AppInstallationConnection(sgqlc.types.relay.Connection):
+class HasLocalizationExtensions(sgqlc.types.Interface):
__schema__ = shopify_schema
- __field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppInstallationEdge"))), graphql_name="edges")
- nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppInstallation"))), graphql_name="nodes")
- page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
-
-
-class AppInstallationEdge(sgqlc.types.Type):
+ __field_names__ = ("localization_extensions",)
+ localization_extensions = sgqlc.types.Field(
+ sgqlc.types.non_null("LocalizationExtensionConnection"),
+ graphql_name="localizationExtensions",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "country_codes",
+ sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(CountryCode)), graphql_name="countryCodes", default=None),
+ ),
+ (
+ "purposes",
+ sgqlc.types.Arg(
+ sgqlc.types.list_of(sgqlc.types.non_null(LocalizationExtensionPurpose)), graphql_name="purposes", default=None
+ ),
+ ),
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+
+
+class HasMetafieldDefinitions(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("metafield_definitions",)
+ metafield_definitions = sgqlc.types.Field(
+ sgqlc.types.non_null("MetafieldDefinitionConnection"),
+ graphql_name="metafieldDefinitions",
+ args=sgqlc.types.ArgDict(
+ (
+ ("namespace", sgqlc.types.Arg(String, graphql_name="namespace", default=None)),
+ ("pinned_status", sgqlc.types.Arg(MetafieldDefinitionPinnedStatus, graphql_name="pinnedStatus", default="ANY")),
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("sort_key", sgqlc.types.Arg(MetafieldDefinitionSortKeys, graphql_name="sortKey", default="ID")),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ )
+ ),
+ )
+
+
+class HasMetafields(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("metafield", "metafields")
+ metafield = sgqlc.types.Field(
+ "Metafield",
+ graphql_name="metafield",
+ args=sgqlc.types.ArgDict(
+ (
+ ("namespace", sgqlc.types.Arg(String, graphql_name="namespace", default=None)),
+ ("key", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="key", default=None)),
+ )
+ ),
+ )
+ metafields = sgqlc.types.Field(
+ sgqlc.types.non_null("MetafieldConnection"),
+ graphql_name="metafields",
+ args=sgqlc.types.ArgDict(
+ (
+ ("namespace", sgqlc.types.Arg(String, graphql_name="namespace", default=None)),
+ ("keys", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="keys", default=None)),
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+
+
+class HasPublishedTranslations(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("translations",)
+ translations = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Translation"))),
+ graphql_name="translations",
+ args=sgqlc.types.ArgDict(
+ (
+ ("locale", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="locale", default=None)),
+ ("market_id", sgqlc.types.Arg(ID, graphql_name="marketId", default=None)),
+ )
+ ),
+ )
+
+
+class JobResult(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("done", "id")
+ done = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="done")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+
+
+class LegacyInteroperability(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("legacy_resource_id",)
+ legacy_resource_id = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="legacyResourceId")
+
+
+class MarketRegion(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("id", "name")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+
+
+class Media(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("alt", "id", "media_content_type", "media_errors", "media_warnings", "preview", "status")
+ alt = sgqlc.types.Field(String, graphql_name="alt")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ media_content_type = sgqlc.types.Field(sgqlc.types.non_null(MediaContentType), graphql_name="mediaContentType")
+ media_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaError"))), graphql_name="mediaErrors"
+ )
+ media_warnings = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaWarning"))), graphql_name="mediaWarnings"
+ )
+ preview = sgqlc.types.Field("MediaPreviewImage", graphql_name="preview")
+ status = sgqlc.types.Field(sgqlc.types.non_null(MediaStatus), graphql_name="status")
+
+
+class Navigable(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("default_cursor",)
+ default_cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="defaultCursor")
+
+
+class Node(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("id",)
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+
+
+class OnlineStorePreviewable(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("online_store_preview_url",)
+ online_store_preview_url = sgqlc.types.Field(URL, graphql_name="onlineStorePreviewUrl")
+
+
+class Publishable(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "available_publication_count",
+ "publication_count",
+ "published_on_current_publication",
+ "published_on_publication",
+ "resource_publications",
+ "resource_publications_v2",
+ "unpublished_publications",
+ )
+ available_publication_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="availablePublicationCount")
+ publication_count = sgqlc.types.Field(
+ sgqlc.types.non_null(Int),
+ graphql_name="publicationCount",
+ args=sgqlc.types.ArgDict((("only_published", sgqlc.types.Arg(Boolean, graphql_name="onlyPublished", default=True)),)),
+ )
+ published_on_current_publication = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="publishedOnCurrentPublication")
+ published_on_publication = sgqlc.types.Field(
+ sgqlc.types.non_null(Boolean),
+ graphql_name="publishedOnPublication",
+ args=sgqlc.types.ArgDict(
+ (("publication_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="publicationId", default=None)),)
+ ),
+ )
+ resource_publications = sgqlc.types.Field(
+ sgqlc.types.non_null("ResourcePublicationConnection"),
+ graphql_name="resourcePublications",
+ args=sgqlc.types.ArgDict(
+ (
+ ("only_published", sgqlc.types.Arg(Boolean, graphql_name="onlyPublished", default=True)),
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ resource_publications_v2 = sgqlc.types.Field(
+ sgqlc.types.non_null("ResourcePublicationV2Connection"),
+ graphql_name="resourcePublicationsV2",
+ args=sgqlc.types.ArgDict(
+ (
+ ("only_published", sgqlc.types.Arg(Boolean, graphql_name="onlyPublished", default=True)),
+ ("catalog_type", sgqlc.types.Arg(CatalogType, graphql_name="catalogType", default=None)),
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ unpublished_publications = sgqlc.types.Field(
+ sgqlc.types.non_null("PublicationConnection"),
+ graphql_name="unpublishedPublications",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+
+
+class ResourceOperation(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("id", "processed_row_count", "row_count", "status")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ processed_row_count = sgqlc.types.Field(Int, graphql_name="processedRowCount")
+ row_count = sgqlc.types.Field("RowCount", graphql_name="rowCount")
+ status = sgqlc.types.Field(sgqlc.types.non_null(ResourceOperationStatus), graphql_name="status")
+
+
+class Sale(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "action_type",
+ "id",
+ "line_type",
+ "quantity",
+ "taxes",
+ "total_amount",
+ "total_discount_amount_after_taxes",
+ "total_discount_amount_before_taxes",
+ "total_tax_amount",
+ )
+ action_type = sgqlc.types.Field(sgqlc.types.non_null(SaleActionType), graphql_name="actionType")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ line_type = sgqlc.types.Field(sgqlc.types.non_null(SaleLineType), graphql_name="lineType")
+ quantity = sgqlc.types.Field(Int, graphql_name="quantity")
+ taxes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SaleTax"))), graphql_name="taxes")
+ total_amount = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="totalAmount")
+ total_discount_amount_after_taxes = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="totalDiscountAmountAfterTaxes")
+ total_discount_amount_before_taxes = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="totalDiscountAmountBeforeTaxes")
+ total_tax_amount = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="totalTaxAmount")
+
+
+class SalesAgreement(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("app", "happened_at", "id", "reason", "sales", "user")
+ app = sgqlc.types.Field("App", graphql_name="app")
+ happened_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="happenedAt")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ reason = sgqlc.types.Field(sgqlc.types.non_null(OrderActionType), graphql_name="reason")
+ sales = sgqlc.types.Field(
+ sgqlc.types.non_null("SaleConnection"),
+ graphql_name="sales",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ user = sgqlc.types.Field("StaffMember", graphql_name="user")
+
+
+class SegmentFilter(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("localized_name", "multi_value", "query_name")
+ localized_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="localizedName")
+ multi_value = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="multiValue")
+ query_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="queryName")
+
+
+class SellingPlanPricingPolicyBase(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("adjustment_type", "adjustment_value")
+ adjustment_type = sgqlc.types.Field(sgqlc.types.non_null(SellingPlanPricingPolicyAdjustmentType), graphql_name="adjustmentType")
+ adjustment_value = sgqlc.types.Field(sgqlc.types.non_null("SellingPlanPricingPolicyAdjustmentValue"), graphql_name="adjustmentValue")
+
+
+class ShopifyPaymentsChargeStatementDescriptor(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("default", "prefix")
+ default = sgqlc.types.Field(String, graphql_name="default")
+ prefix = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="prefix")
+
+
+class ShopifyqlResponse(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("parse_errors", "table_data")
+ parse_errors = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("ParseError")), graphql_name="parseErrors")
+ table_data = sgqlc.types.Field("TableData", graphql_name="tableData")
+
+
+class SubscriptionContractBase(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "app",
+ "app_admin_url",
+ "currency_code",
+ "custom_attributes",
+ "customer",
+ "customer_payment_method",
+ "delivery_method",
+ "delivery_price",
+ "discounts",
+ "line_count",
+ "lines",
+ "note",
+ "orders",
+ "updated_at",
+ )
+ app = sgqlc.types.Field("App", graphql_name="app")
+ app_admin_url = sgqlc.types.Field(URL, graphql_name="appAdminUrl")
+ currency_code = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="currencyCode")
+ custom_attributes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Attribute"))), graphql_name="customAttributes"
+ )
+ customer = sgqlc.types.Field("Customer", graphql_name="customer")
+ customer_payment_method = sgqlc.types.Field(
+ "CustomerPaymentMethod",
+ graphql_name="customerPaymentMethod",
+ args=sgqlc.types.ArgDict((("show_revoked", sgqlc.types.Arg(Boolean, graphql_name="showRevoked", default=False)),)),
+ )
+ delivery_method = sgqlc.types.Field("SubscriptionDeliveryMethod", graphql_name="deliveryMethod")
+ delivery_price = sgqlc.types.Field(sgqlc.types.non_null("MoneyV2"), graphql_name="deliveryPrice")
+ discounts = sgqlc.types.Field(
+ sgqlc.types.non_null("SubscriptionManualDiscountConnection"),
+ graphql_name="discounts",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ line_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="lineCount")
+ lines = sgqlc.types.Field(
+ sgqlc.types.non_null("SubscriptionLineConnection"),
+ graphql_name="lines",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ note = sgqlc.types.Field(String, graphql_name="note")
+ orders = sgqlc.types.Field(
+ sgqlc.types.non_null("OrderConnection"),
+ graphql_name="orders",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
+
+
+class Catalog(sgqlc.types.Interface):
+ __schema__ = shopify_schema
+ __field_names__ = ("id", "operations", "price_list", "publication", "status", "title")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ operations = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ResourceOperation))), graphql_name="operations"
+ )
+ price_list = sgqlc.types.Field("PriceList", graphql_name="priceList")
+ publication = sgqlc.types.Field("Publication", graphql_name="publication")
+ status = sgqlc.types.Field(sgqlc.types.non_null(CatalogStatus), graphql_name="status")
+ title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+
+
+class AbandonmentEmailStateUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("abandonment", "user_errors")
+ abandonment = sgqlc.types.Field("Abandonment", graphql_name="abandonment")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AbandonmentEmailStateUpdateUserError"))), graphql_name="userErrors"
+ )
+
+
+class AbandonmentUpdateActivitiesDeliveryStatusesPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("abandonment", "user_errors")
+ abandonment = sgqlc.types.Field("Abandonment", graphql_name="abandonment")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AbandonmentUpdateActivitiesDeliveryStatusesUserError"))),
+ graphql_name="userErrors",
+ )
+
+
+class AccessScope(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("description", "handle")
+ description = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="description")
+ handle = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="handle")
+
+
+class AllDiscountItems(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("all_items",)
+ all_items = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="allItems")
+
+
+class ApiVersion(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("display_name", "handle", "supported")
+ display_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="displayName")
+ handle = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="handle")
+ supported = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="supported")
+
+
+class AppConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("App"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class AppCreditConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppCreditEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppCredit"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class AppCreditEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("AppCredit"), graphql_name="node")
+
+
+class AppDiscountType(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("app", "app_bridge", "app_key", "description", "discount_class", "function_id", "target_type", "title")
+ app = sgqlc.types.Field(sgqlc.types.non_null("App"), graphql_name="app")
+ app_bridge = sgqlc.types.Field(sgqlc.types.non_null("FunctionsAppBridge"), graphql_name="appBridge")
+ app_key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="appKey")
+ description = sgqlc.types.Field(String, graphql_name="description")
+ discount_class = sgqlc.types.Field(sgqlc.types.non_null(DiscountClass), graphql_name="discountClass")
+ function_id = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="functionId")
+ target_type = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationTargetType), graphql_name="targetType")
+ title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+
+
+class AppEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("App"), graphql_name="node")
+
+
+class AppFeedback(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("app", "link", "messages")
+ app = sgqlc.types.Field(sgqlc.types.non_null("App"), graphql_name="app")
+ link = sgqlc.types.Field("Link", graphql_name="link")
+ messages = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="messages")
+
+
+class AppInstallationConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppInstallationEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppInstallation"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class AppInstallationEdge(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("cursor", "node")
cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
@@ -5950,16 +7943,6 @@ class AppPlanV2(sgqlc.types.Type):
pricing_details = sgqlc.types.Field(sgqlc.types.non_null("AppPricingDetails"), graphql_name="pricingDetails")
-class AppPurchase(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("created_at", "name", "price", "status", "test")
- created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
- name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
- price = sgqlc.types.Field(sgqlc.types.non_null("MoneyV2"), graphql_name="price")
- status = sgqlc.types.Field(sgqlc.types.non_null(AppPurchaseStatus), graphql_name="status")
- test = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="test")
-
-
class AppPurchaseOneTimeConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -5997,12 +7980,10 @@ class AppRevenueAttributionRecordConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppRevenueAttributionRecordEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppRevenueAttributionRecordEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppRevenueAttributionRecord"))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppRevenueAttributionRecord"))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
@@ -6059,12 +8040,7 @@ class AppSubscriptionCreatePayload(sgqlc.types.Type):
class AppSubscriptionDiscount(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "duration_limit_in_intervals",
- "price_after_discount",
- "remaining_duration_in_intervals",
- "value",
- )
+ __field_names__ = ("duration_limit_in_intervals", "price_after_discount", "remaining_duration_in_intervals", "value")
duration_limit_in_intervals = sgqlc.types.Field(Int, graphql_name="durationLimitInIntervals")
price_after_discount = sgqlc.types.Field(sgqlc.types.non_null("MoneyV2"), graphql_name="priceAfterDiscount")
remaining_duration_in_intervals = sgqlc.types.Field(Int, graphql_name="remainingDurationInIntervals")
@@ -6124,8 +8100,7 @@ class AppSubscriptionTrialExtendPayload(sgqlc.types.Type):
__field_names__ = ("app_subscription", "user_errors")
app_subscription = sgqlc.types.Field("AppSubscription", graphql_name="appSubscription")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppSubscriptionTrialExtendUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppSubscriptionTrialExtendUserError"))), graphql_name="userErrors"
)
@@ -6171,8 +8146,7 @@ class AvailableChannelDefinitionsByChannel(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("channel_definitions", "channel_name")
channel_definitions = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ChannelDefinition"))),
- graphql_name="channelDefinitions",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ChannelDefinition"))), graphql_name="channelDefinitions"
)
channel_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="channelName")
@@ -6189,8 +8163,7 @@ class BulkOperationRunMutationPayload(sgqlc.types.Type):
__field_names__ = ("bulk_operation", "user_errors")
bulk_operation = sgqlc.types.Field("BulkOperation", graphql_name="bulkOperation")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BulkMutationUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BulkMutationUserError"))), graphql_name="userErrors"
)
@@ -6211,10 +8184,19 @@ class BulkProductResourceFeedbackCreatePayload(sgqlc.types.Type):
)
+class BundlesFeature(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("eligible_for_bundles", "ineligibility_reason", "sells_bundles")
+ eligible_for_bundles = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="eligibleForBundles")
+ ineligibility_reason = sgqlc.types.Field(String, graphql_name="ineligibilityReason")
+ sells_bundles = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="sellsBundles")
+
+
class BuyerExperienceConfiguration(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("checkout_to_draft", "pay_now_only", "payment_terms_template")
+ __field_names__ = ("checkout_to_draft", "editable_shipping_address", "pay_now_only", "payment_terms_template")
checkout_to_draft = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="checkoutToDraft")
+ editable_shipping_address = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="editableShippingAddress")
pay_now_only = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="payNowOnly")
payment_terms_template = sgqlc.types.Field("PaymentTermsTemplate", graphql_name="paymentTermsTemplate")
@@ -6223,39 +8205,17 @@ class CalculatedDiscountAllocation(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("allocated_amount_set", "discount_application")
allocated_amount_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="allocatedAmountSet")
- discount_application = sgqlc.types.Field(sgqlc.types.non_null("CalculatedDiscountApplication"), graphql_name="discountApplication")
-
-
-class CalculatedDiscountApplication(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = (
- "allocation_method",
- "applied_to",
- "description",
- "id",
- "target_selection",
- "target_type",
- "value",
- )
- allocation_method = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationAllocationMethod), graphql_name="allocationMethod")
- applied_to = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationLevel), graphql_name="appliedTo")
- description = sgqlc.types.Field(String, graphql_name="description")
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
- target_selection = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationTargetSelection), graphql_name="targetSelection")
- target_type = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationTargetType), graphql_name="targetType")
- value = sgqlc.types.Field(sgqlc.types.non_null("PricingValue"), graphql_name="value")
+ discount_application = sgqlc.types.Field(sgqlc.types.non_null(CalculatedDiscountApplication), graphql_name="discountApplication")
class CalculatedDiscountApplicationConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CalculatedDiscountApplicationEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CalculatedDiscountApplicationEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CalculatedDiscountApplication))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CalculatedDiscountApplication))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
@@ -6297,8 +8257,7 @@ class CalculatedDraftOrder(sgqlc.types.Type):
)
applied_discount = sgqlc.types.Field("DraftOrderAppliedDiscount", graphql_name="appliedDiscount")
available_shipping_rates = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShippingRate"))),
- graphql_name="availableShippingRates",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShippingRate"))), graphql_name="availableShippingRates"
)
billing_address_matches_shipping_address = sgqlc.types.Field(
sgqlc.types.non_null(Boolean), graphql_name="billingAddressMatchesShippingAddress"
@@ -6306,8 +8265,7 @@ class CalculatedDraftOrder(sgqlc.types.Type):
currency_code = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="currencyCode")
customer = sgqlc.types.Field("Customer", graphql_name="customer")
line_items = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CalculatedDraftOrderLineItem"))),
- graphql_name="lineItems",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CalculatedDraftOrderLineItem"))), graphql_name="lineItems"
)
line_items_subtotal_price = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="lineItemsSubtotalPrice")
market_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="marketName")
@@ -6367,8 +8325,7 @@ class CalculatedDraftOrderLineItem(sgqlc.types.Type):
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(Attribute))), graphql_name="customAttributes"
)
custom_attributes_v2 = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TypedAttribute"))),
- graphql_name="customAttributesV2",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TypedAttribute"))), graphql_name="customAttributesV2"
)
discounted_total = sgqlc.types.Field(sgqlc.types.non_null("MoneyV2"), graphql_name="discountedTotal")
discounted_total_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="discountedTotalSet")
@@ -6439,8 +8396,7 @@ class CalculatedLineItem(sgqlc.types.Type):
restocking = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="restocking")
sku = sgqlc.types.Field(String, graphql_name="sku")
staged_changes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("OrderStagedChange"))),
- graphql_name="stagedChanges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("OrderStagedChange"))), graphql_name="stagedChanges"
)
title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
uneditable_subtotal_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="uneditableSubtotalSet")
@@ -6465,6 +8421,115 @@ class CalculatedLineItemEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null(CalculatedLineItem), graphql_name="node")
+class CardPaymentDetails(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "avs_result_code",
+ "bin",
+ "company",
+ "cvv_result_code",
+ "expiration_month",
+ "expiration_year",
+ "name",
+ "number",
+ "wallet",
+ )
+ avs_result_code = sgqlc.types.Field(String, graphql_name="avsResultCode")
+ bin = sgqlc.types.Field(String, graphql_name="bin")
+ company = sgqlc.types.Field(String, graphql_name="company")
+ cvv_result_code = sgqlc.types.Field(String, graphql_name="cvvResultCode")
+ expiration_month = sgqlc.types.Field(Int, graphql_name="expirationMonth")
+ expiration_year = sgqlc.types.Field(Int, graphql_name="expirationYear")
+ name = sgqlc.types.Field(String, graphql_name="name")
+ number = sgqlc.types.Field(String, graphql_name="number")
+ wallet = sgqlc.types.Field(DigitalWallet, graphql_name="wallet")
+
+
+class CartTransformConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CartTransformEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CartTransform"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class CartTransformCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cart_transform", "user_errors")
+ cart_transform = sgqlc.types.Field("CartTransform", graphql_name="cartTransform")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CartTransformCreateUserError"))), graphql_name="userErrors"
+ )
+
+
+class CartTransformDeletePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("deleted_id", "user_errors")
+ deleted_id = sgqlc.types.Field(ID, graphql_name="deletedId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CartTransformDeleteUserError"))), graphql_name="userErrors"
+ )
+
+
+class CartTransformEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("CartTransform"), graphql_name="node")
+
+
+class CatalogConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info", "total_count")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CatalogEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(Catalog))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+ total_count = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="totalCount")
+
+
+class CatalogContextUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("catalog", "user_errors")
+ catalog = sgqlc.types.Field(Catalog, graphql_name="catalog")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CatalogUserError"))), graphql_name="userErrors"
+ )
+
+
+class CatalogCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("catalog", "user_errors")
+ catalog = sgqlc.types.Field(Catalog, graphql_name="catalog")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CatalogUserError"))), graphql_name="userErrors"
+ )
+
+
+class CatalogDeletePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("deleted_id", "user_errors")
+ deleted_id = sgqlc.types.Field(ID, graphql_name="deletedId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CatalogUserError"))), graphql_name="userErrors"
+ )
+
+
+class CatalogEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null(Catalog), graphql_name="node")
+
+
+class CatalogUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("catalog", "user_errors")
+ catalog = sgqlc.types.Field(Catalog, graphql_name="catalog")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CatalogUserError"))), graphql_name="userErrors"
+ )
+
+
class ChannelConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -6507,8 +8572,7 @@ class CollectionAddProductsV2Payload(sgqlc.types.Type):
__field_names__ = ("job", "user_errors")
job = sgqlc.types.Field("Job", graphql_name="job")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CollectionAddProductsV2UserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CollectionAddProductsV2UserError"))), graphql_name="userErrors"
)
@@ -6555,8 +8619,7 @@ class CollectionPublicationConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CollectionPublicationEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CollectionPublicationEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CollectionPublication))), graphql_name="nodes")
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
@@ -6605,15 +8668,21 @@ class CollectionRule(sgqlc.types.Type):
class CollectionRuleConditions(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("allowed_relations", "default_relation", "rule_type")
+ __field_names__ = ("allowed_relations", "default_relation", "rule_object", "rule_type")
allowed_relations = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CollectionRuleRelation))),
- graphql_name="allowedRelations",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CollectionRuleRelation))), graphql_name="allowedRelations"
)
default_relation = sgqlc.types.Field(sgqlc.types.non_null(CollectionRuleRelation), graphql_name="defaultRelation")
+ rule_object = sgqlc.types.Field("CollectionRuleConditionsRuleObject", graphql_name="ruleObject")
rule_type = sgqlc.types.Field(sgqlc.types.non_null(CollectionRuleColumn), graphql_name="ruleType")
+class CollectionRuleMetafieldCondition(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("metafield_definition",)
+ metafield_definition = sgqlc.types.Field(sgqlc.types.non_null("MetafieldDefinition"), graphql_name="metafieldDefinition")
+
+
class CollectionRuleProductCategoryCondition(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("value",)
@@ -6660,20 +8729,12 @@ class CommentEventAttachment(sgqlc.types.Type):
url = sgqlc.types.Field(sgqlc.types.non_null(URL), graphql_name="url")
-class CommentEventSubject(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("has_timeline_comment", "id")
- has_timeline_comment = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="hasTimelineComment")
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
-
-
class CompaniesDeletePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("deleted_company_ids", "user_errors")
deleted_company_ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="deletedCompanyIds")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6682,8 +8743,7 @@ class CompanyAddressDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_address_id", "user_errors")
deleted_address_id = sgqlc.types.Field(ID, graphql_name="deletedAddressId")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6692,8 +8752,7 @@ class CompanyAssignCustomerAsContactPayload(sgqlc.types.Type):
__field_names__ = ("company_contact", "user_errors")
company_contact = sgqlc.types.Field("CompanyContact", graphql_name="companyContact")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6702,8 +8761,7 @@ class CompanyAssignMainContactPayload(sgqlc.types.Type):
__field_names__ = ("company", "user_errors")
company = sgqlc.types.Field("Company", graphql_name="company")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6720,8 +8778,7 @@ class CompanyContactAssignRolePayload(sgqlc.types.Type):
__field_names__ = ("company_contact_role_assignment", "user_errors")
company_contact_role_assignment = sgqlc.types.Field("CompanyContactRoleAssignment", graphql_name="companyContactRoleAssignment")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6732,8 +8789,7 @@ class CompanyContactAssignRolesPayload(sgqlc.types.Type):
sgqlc.types.list_of(sgqlc.types.non_null("CompanyContactRoleAssignment")), graphql_name="roleAssignments"
)
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6750,8 +8806,7 @@ class CompanyContactCreatePayload(sgqlc.types.Type):
__field_names__ = ("company_contact", "user_errors")
company_contact = sgqlc.types.Field("CompanyContact", graphql_name="companyContact")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6760,8 +8815,7 @@ class CompanyContactDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_company_contact_id", "user_errors")
deleted_company_contact_id = sgqlc.types.Field(ID, graphql_name="deletedCompanyContactId")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6772,13 +8826,21 @@ class CompanyContactEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null("CompanyContact"), graphql_name="node")
+class CompanyContactRemoveFromCompanyPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("removed_company_contact_id", "user_errors")
+ removed_company_contact_id = sgqlc.types.Field(ID, graphql_name="removedCompanyContactId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
+ )
+
+
class CompanyContactRevokeRolePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("revoked_company_contact_role_assignment_id", "user_errors")
revoked_company_contact_role_assignment_id = sgqlc.types.Field(ID, graphql_name="revokedCompanyContactRoleAssignmentId")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6787,8 +8849,7 @@ class CompanyContactRevokeRolesPayload(sgqlc.types.Type):
__field_names__ = ("revoked_role_assignment_ids", "user_errors")
revoked_role_assignment_ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="revokedRoleAssignmentIds")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6796,12 +8857,10 @@ class CompanyContactRoleAssignmentConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CompanyContactRoleAssignmentEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CompanyContactRoleAssignmentEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CompanyContactRoleAssignment"))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CompanyContactRoleAssignment"))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
@@ -6830,13 +8889,21 @@ class CompanyContactRoleEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null("CompanyContactRole"), graphql_name="node")
+class CompanyContactSendWelcomeEmailPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("company_contact", "user_errors")
+ company_contact = sgqlc.types.Field("CompanyContact", graphql_name="companyContact")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
+ )
+
+
class CompanyContactUpdatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("company_contact", "user_errors")
company_contact = sgqlc.types.Field("CompanyContact", graphql_name="companyContact")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6845,8 +8912,7 @@ class CompanyContactsDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_company_contact_ids", "user_errors")
deleted_company_contact_ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="deletedCompanyContactIds")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6855,8 +8921,7 @@ class CompanyCreatePayload(sgqlc.types.Type):
__field_names__ = ("company", "user_errors")
company = sgqlc.types.Field("Company", graphql_name="company")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6865,8 +8930,7 @@ class CompanyDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_company_id", "user_errors")
deleted_company_id = sgqlc.types.Field(ID, graphql_name="deletedCompanyId")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6882,8 +8946,7 @@ class CompanyLocationAssignAddressPayload(sgqlc.types.Type):
__field_names__ = ("addresses", "user_errors")
addresses = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("CompanyAddress")), graphql_name="addresses")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6894,8 +8957,7 @@ class CompanyLocationAssignRolesPayload(sgqlc.types.Type):
sgqlc.types.list_of(sgqlc.types.non_null("CompanyContactRoleAssignment")), graphql_name="roleAssignments"
)
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6904,8 +8966,7 @@ class CompanyLocationAssignTaxExemptionsPayload(sgqlc.types.Type):
__field_names__ = ("company_location", "user_errors")
company_location = sgqlc.types.Field("CompanyLocation", graphql_name="companyLocation")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6922,8 +8983,7 @@ class CompanyLocationCreatePayload(sgqlc.types.Type):
__field_names__ = ("company_location", "user_errors")
company_location = sgqlc.types.Field("CompanyLocation", graphql_name="companyLocation")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6932,8 +8992,7 @@ class CompanyLocationCreateTaxRegistrationPayload(sgqlc.types.Type):
__field_names__ = ("company_location", "user_errors")
company_location = sgqlc.types.Field("CompanyLocation", graphql_name="companyLocation")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6942,8 +9001,7 @@ class CompanyLocationDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_company_location_id", "user_errors")
deleted_company_location_id = sgqlc.types.Field(ID, graphql_name="deletedCompanyLocationId")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6959,8 +9017,7 @@ class CompanyLocationRevokeRolesPayload(sgqlc.types.Type):
__field_names__ = ("revoked_role_assignment_ids", "user_errors")
revoked_role_assignment_ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="revokedRoleAssignmentIds")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6969,8 +9026,7 @@ class CompanyLocationRevokeTaxExemptionsPayload(sgqlc.types.Type):
__field_names__ = ("company_location", "user_errors")
company_location = sgqlc.types.Field("CompanyLocation", graphql_name="companyLocation")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6979,8 +9035,7 @@ class CompanyLocationRevokeTaxRegistrationPayload(sgqlc.types.Type):
__field_names__ = ("company_location", "user_errors")
company_location = sgqlc.types.Field("CompanyLocation", graphql_name="companyLocation")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -6989,8 +9044,7 @@ class CompanyLocationUpdatePayload(sgqlc.types.Type):
__field_names__ = ("company_location", "user_errors")
company_location = sgqlc.types.Field("CompanyLocation", graphql_name="companyLocation")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -7001,8 +9055,7 @@ class CompanyLocationsDeletePayload(sgqlc.types.Type):
sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="deletedCompanyLocationIds"
)
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -7011,8 +9064,7 @@ class CompanyRevokeMainContactPayload(sgqlc.types.Type):
__field_names__ = ("company", "user_errors")
company = sgqlc.types.Field("Company", graphql_name="company")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -7021,8 +9073,7 @@ class CompanyUpdatePayload(sgqlc.types.Type):
__field_names__ = ("company", "user_errors")
company = sgqlc.types.Field("Company", graphql_name="company")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BusinessCustomerUserError"))), graphql_name="userErrors"
)
@@ -7046,12 +9097,10 @@ class CountryHarmonizedSystemCodeConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CountryHarmonizedSystemCodeEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CountryHarmonizedSystemCodeEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CountryHarmonizedSystemCode))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CountryHarmonizedSystemCode))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
@@ -7065,12 +9114,7 @@ class CountryHarmonizedSystemCodeEdge(sgqlc.types.Type):
class CurrencyFormats(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "money_format",
- "money_in_emails_format",
- "money_with_currency_format",
- "money_with_currency_in_emails_format",
- )
+ __field_names__ = ("money_format", "money_in_emails_format", "money_with_currency_format", "money_with_currency_in_emails_format")
money_format = sgqlc.types.Field(sgqlc.types.non_null(FormattedString), graphql_name="moneyFormat")
money_in_emails_format = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="moneyInEmailsFormat")
money_with_currency_format = sgqlc.types.Field(sgqlc.types.non_null(FormattedString), graphql_name="moneyWithCurrencyFormat")
@@ -7155,11 +9199,13 @@ class CustomerCreditCard(sgqlc.types.Type):
class CustomerCreditCardBillingAddress(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("address1", "city", "country", "country_code", "province", "province_code", "zip")
+ __field_names__ = ("address1", "city", "country", "country_code", "first_name", "last_name", "province", "province_code", "zip")
address1 = sgqlc.types.Field(String, graphql_name="address1")
city = sgqlc.types.Field(String, graphql_name="city")
country = sgqlc.types.Field(String, graphql_name="country")
country_code = sgqlc.types.Field(CountryCode, graphql_name="countryCode")
+ first_name = sgqlc.types.Field(String, graphql_name="firstName")
+ last_name = sgqlc.types.Field(String, graphql_name="lastName")
province = sgqlc.types.Field(String, graphql_name="province")
province_code = sgqlc.types.Field(String, graphql_name="provinceCode")
zip = sgqlc.types.Field(String, graphql_name="zip")
@@ -7182,13 +9228,7 @@ class CustomerEdge(sgqlc.types.Type):
class CustomerEmailAddress(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "email_address",
- "marketing_state",
- "marketing_unsubscribe_url",
- "open_tracking_level",
- "open_tracking_url",
- )
+ __field_names__ = ("email_address", "marketing_state", "marketing_unsubscribe_url", "open_tracking_level", "open_tracking_url")
email_address = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="emailAddress")
marketing_state = sgqlc.types.Field(sgqlc.types.non_null(CustomerEmailAddressMarketingState), graphql_name="marketingState")
marketing_unsubscribe_url = sgqlc.types.Field(sgqlc.types.non_null(URL), graphql_name="marketingUnsubscribeUrl")
@@ -7228,27 +9268,172 @@ class CustomerJourney(sgqlc.types.Type):
days_to_conversion = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="daysToConversion")
first_visit = sgqlc.types.Field(sgqlc.types.non_null("CustomerVisit"), graphql_name="firstVisit")
last_visit = sgqlc.types.Field("CustomerVisit", graphql_name="lastVisit")
- moments = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerMoment"))), graphql_name="moments")
+ moments = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CustomerMoment))), graphql_name="moments")
class CustomerJourneySummary(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("customer_order_index", "days_to_conversion", "first_visit", "last_visit", "moments", "moments_count", "ready")
+ customer_order_index = sgqlc.types.Field(Int, graphql_name="customerOrderIndex")
+ days_to_conversion = sgqlc.types.Field(Int, graphql_name="daysToConversion")
+ first_visit = sgqlc.types.Field("CustomerVisit", graphql_name="firstVisit")
+ last_visit = sgqlc.types.Field("CustomerVisit", graphql_name="lastVisit")
+ moments = sgqlc.types.Field(
+ "CustomerMomentConnection",
+ graphql_name="moments",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ moments_count = sgqlc.types.Field(Int, graphql_name="momentsCount")
+ ready = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="ready")
+
+
+class CustomerMergeError(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("error_fields", "message")
+ error_fields = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CustomerMergeErrorFieldType))), graphql_name="errorFields"
+ )
+ message = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="message")
+
+
+class CustomerMergePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("job", "resulting_customer_id", "user_errors")
+ job = sgqlc.types.Field("Job", graphql_name="job")
+ resulting_customer_id = sgqlc.types.Field(ID, graphql_name="resultingCustomerId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerMergeUserError"))), graphql_name="userErrors"
+ )
+
+
+class CustomerMergePreview(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("alternate_fields", "blocking_fields", "customer_merge_errors", "default_fields", "resulting_customer_id")
+ alternate_fields = sgqlc.types.Field("CustomerMergePreviewAlternateFields", graphql_name="alternateFields")
+ blocking_fields = sgqlc.types.Field("CustomerMergePreviewBlockingFields", graphql_name="blockingFields")
+ customer_merge_errors = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null(CustomerMergeError)), graphql_name="customerMergeErrors"
+ )
+ default_fields = sgqlc.types.Field("CustomerMergePreviewDefaultFields", graphql_name="defaultFields")
+ resulting_customer_id = sgqlc.types.Field(ID, graphql_name="resultingCustomerId")
+
+
+class CustomerMergePreviewAlternateFields(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("default_address", "email", "first_name", "last_name", "phone_number")
+ default_address = sgqlc.types.Field("MailingAddress", graphql_name="defaultAddress")
+ email = sgqlc.types.Field(CustomerEmailAddress, graphql_name="email")
+ first_name = sgqlc.types.Field(String, graphql_name="firstName")
+ last_name = sgqlc.types.Field(String, graphql_name="lastName")
+ phone_number = sgqlc.types.Field("CustomerPhoneNumber", graphql_name="phoneNumber")
+
+
+class CustomerMergePreviewBlockingFields(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("note", "tags")
+ note = sgqlc.types.Field(String, graphql_name="note")
+ tags = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="tags")
+
+
+class CustomerMergePreviewDefaultFields(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = (
- "customer_order_index",
- "days_to_conversion",
- "first_visit",
- "last_visit",
- "moments",
- "moments_count",
- "ready",
+ "addresses",
+ "default_address",
+ "discount_node_count",
+ "discount_nodes",
+ "display_name",
+ "draft_order_count",
+ "draft_orders",
+ "email",
+ "first_name",
+ "gift_card_count",
+ "gift_cards",
+ "last_name",
+ "metafield_count",
+ "note",
+ "order_count",
+ "orders",
+ "phone_number",
+ "tags",
+ )
+ addresses = sgqlc.types.Field(
+ sgqlc.types.non_null("MailingAddressConnection"),
+ graphql_name="addresses",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ default_address = sgqlc.types.Field("MailingAddress", graphql_name="defaultAddress")
+ discount_node_count = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="discountNodeCount")
+ discount_nodes = sgqlc.types.Field(
+ sgqlc.types.non_null("DiscountNodeConnection"),
+ graphql_name="discountNodes",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("sort_key", sgqlc.types.Arg(DiscountSortKeys, graphql_name="sortKey", default="CREATED_AT")),
+ )
+ ),
+ )
+ display_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="displayName")
+ draft_order_count = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="draftOrderCount")
+ draft_orders = sgqlc.types.Field(
+ sgqlc.types.non_null("DraftOrderConnection"),
+ graphql_name="draftOrders",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("sort_key", sgqlc.types.Arg(DraftOrderSortKeys, graphql_name="sortKey", default="UPDATED_AT")),
+ )
+ ),
+ )
+ email = sgqlc.types.Field(CustomerEmailAddress, graphql_name="email")
+ first_name = sgqlc.types.Field(String, graphql_name="firstName")
+ gift_card_count = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="giftCardCount")
+ gift_cards = sgqlc.types.Field(
+ sgqlc.types.non_null("GiftCardConnection"),
+ graphql_name="giftCards",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("sort_key", sgqlc.types.Arg(GiftCardSortKeys, graphql_name="sortKey", default="CREATED_AT")),
+ )
+ ),
)
- customer_order_index = sgqlc.types.Field(Int, graphql_name="customerOrderIndex")
- days_to_conversion = sgqlc.types.Field(Int, graphql_name="daysToConversion")
- first_visit = sgqlc.types.Field("CustomerVisit", graphql_name="firstVisit")
- last_visit = sgqlc.types.Field("CustomerVisit", graphql_name="lastVisit")
- moments = sgqlc.types.Field(
- "CustomerMomentConnection",
- graphql_name="moments",
+ last_name = sgqlc.types.Field(String, graphql_name="lastName")
+ metafield_count = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="metafieldCount")
+ note = sgqlc.types.Field(String, graphql_name="note")
+ order_count = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="orderCount")
+ orders = sgqlc.types.Field(
+ sgqlc.types.non_null("OrderConnection"),
+ graphql_name="orders",
args=sgqlc.types.ArgDict(
(
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
@@ -7256,17 +9441,34 @@ class CustomerJourneySummary(sgqlc.types.Type):
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("sort_key", sgqlc.types.Arg(OrderSortKeys, graphql_name="sortKey", default="PROCESSED_AT")),
)
),
)
- moments_count = sgqlc.types.Field(Int, graphql_name="momentsCount")
- ready = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="ready")
+ phone_number = sgqlc.types.Field("CustomerPhoneNumber", graphql_name="phoneNumber")
+ tags = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="tags")
-class CustomerMoment(sgqlc.types.Interface):
+class CustomerMergeRequest(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("occurred_at",)
- occurred_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="occurredAt")
+ __field_names__ = ("customer_merge_errors", "job_id", "resulting_customer_id", "status")
+ customer_merge_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CustomerMergeError))), graphql_name="customerMergeErrors"
+ )
+ job_id = sgqlc.types.Field(ID, graphql_name="jobId")
+ resulting_customer_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="resultingCustomerId")
+ status = sgqlc.types.Field(sgqlc.types.non_null(CustomerMergeRequestStatus), graphql_name="status")
+
+
+class CustomerMergeable(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("error_fields", "is_mergeable", "merge_in_progress", "reason")
+ error_fields = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CustomerMergeErrorFieldType))), graphql_name="errorFields"
+ )
+ is_mergeable = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isMergeable")
+ merge_in_progress = sgqlc.types.Field(CustomerMergeRequest, graphql_name="mergeInProgress")
+ reason = sgqlc.types.Field(String, graphql_name="reason")
class CustomerMomentConnection(sgqlc.types.relay.Connection):
@@ -7301,8 +9503,7 @@ class CustomerPaymentMethodConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethod"))), graphql_name="nodes"
@@ -7310,6 +9511,16 @@ class CustomerPaymentMethodConnection(sgqlc.types.relay.Connection):
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+class CustomerPaymentMethodCreateFromDuplicationDataPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("customer_payment_method", "user_errors")
+ customer_payment_method = sgqlc.types.Field("CustomerPaymentMethod", graphql_name="customerPaymentMethod")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodCreateFromDuplicationDataUserError"))),
+ graphql_name="userErrors",
+ )
+
+
class CustomerPaymentMethodCreditCardCreatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("customer_payment_method", "user_errors")
@@ -7331,6 +9542,16 @@ class CustomerPaymentMethodEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null("CustomerPaymentMethod"), graphql_name="node")
+class CustomerPaymentMethodGetDuplicationDataPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("encrypted_duplication_data", "user_errors")
+ encrypted_duplication_data = sgqlc.types.Field(String, graphql_name="encryptedDuplicationData")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodGetDuplicationDataUserError"))),
+ graphql_name="userErrors",
+ )
+
+
class CustomerPaymentMethodGetUpdateUrlPayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("update_payment_method_url", "user_errors")
@@ -7346,8 +9567,7 @@ class CustomerPaymentMethodPaypalBillingAgreementCreatePayload(sgqlc.types.Type)
__field_names__ = ("customer_payment_method", "user_errors")
customer_payment_method = sgqlc.types.Field("CustomerPaymentMethod", graphql_name="customerPaymentMethod")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodUserError"))), graphql_name="userErrors"
)
@@ -7356,8 +9576,7 @@ class CustomerPaymentMethodPaypalBillingAgreementUpdatePayload(sgqlc.types.Type)
__field_names__ = ("customer_payment_method", "user_errors")
customer_payment_method = sgqlc.types.Field("CustomerPaymentMethod", graphql_name="customerPaymentMethod")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodUserError"))), graphql_name="userErrors"
)
@@ -7366,8 +9585,7 @@ class CustomerPaymentMethodRemoteCreatePayload(sgqlc.types.Type):
__field_names__ = ("customer_payment_method", "user_errors")
customer_payment_method = sgqlc.types.Field("CustomerPaymentMethod", graphql_name="customerPaymentMethod")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodRemoteUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodRemoteUserError"))), graphql_name="userErrors"
)
@@ -7376,8 +9594,7 @@ class CustomerPaymentMethodRemoteCreditCardCreatePayload(sgqlc.types.Type):
__field_names__ = ("customer_payment_method", "user_errors")
customer_payment_method = sgqlc.types.Field("CustomerPaymentMethod", graphql_name="customerPaymentMethod")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerPaymentMethodUserError"))), graphql_name="userErrors"
)
@@ -7425,55 +9642,37 @@ class CustomerReplaceTaxExemptionsPayload(sgqlc.types.Type):
user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
-class CustomerSegmentMember(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = (
- "amount_spent",
- "default_address",
- "default_email_address",
- "default_phone_number",
- "display_name",
- "first_name",
- "id",
- "last_name",
- "last_order_id",
- "note",
- "number_of_orders",
- )
- amount_spent = sgqlc.types.Field("MoneyV2", graphql_name="amountSpent")
- default_address = sgqlc.types.Field("MailingAddress", graphql_name="defaultAddress")
- default_email_address = sgqlc.types.Field(CustomerEmailAddress, graphql_name="defaultEmailAddress")
- default_phone_number = sgqlc.types.Field(CustomerPhoneNumber, graphql_name="defaultPhoneNumber")
- display_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="displayName")
- first_name = sgqlc.types.Field(String, graphql_name="firstName")
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
- last_name = sgqlc.types.Field(String, graphql_name="lastName")
- last_order_id = sgqlc.types.Field(ID, graphql_name="lastOrderId")
- note = sgqlc.types.Field(String, graphql_name="note")
- number_of_orders = sgqlc.types.Field(UnsignedInt64, graphql_name="numberOfOrders")
-
-
class CustomerSegmentMemberConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
- __field_names__ = ("edges", "page_info", "statistics")
+ __field_names__ = ("edges", "page_info", "statistics", "total_count")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerSegmentMemberEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerSegmentMemberEdge"))), graphql_name="edges"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
statistics = sgqlc.types.Field(sgqlc.types.non_null("SegmentStatistics"), graphql_name="statistics")
+ total_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="totalCount")
class CustomerSegmentMemberEdge(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("cursor", "node")
cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null(CustomerSegmentMember), graphql_name="node")
+ node = sgqlc.types.Field(sgqlc.types.non_null("CustomerSegmentMember"), graphql_name="node")
+
+
+class CustomerSegmentMembersQueryCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("customer_segment_members_query", "user_errors")
+ customer_segment_members_query = sgqlc.types.Field("CustomerSegmentMembersQuery", graphql_name="customerSegmentMembersQuery")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerSegmentMembersQueryUserError"))), graphql_name="userErrors"
+ )
class CustomerShopPayAgreement(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = (
+ "billing_address",
"expires_soon",
"expiry_month",
"expiry_year",
@@ -7483,6 +9682,7 @@ class CustomerShopPayAgreement(sgqlc.types.Type):
"masked_number",
"name",
)
+ billing_address = sgqlc.types.Field(CustomerCreditCardBillingAddress, graphql_name="billingAddress")
expires_soon = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="expiresSoon")
expiry_month = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="expiryMonth")
expiry_year = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="expiryYear")
@@ -7507,8 +9707,7 @@ class CustomerSmsMarketingConsentUpdatePayload(sgqlc.types.Type):
__field_names__ = ("customer", "user_errors")
customer = sgqlc.types.Field("Customer", graphql_name="customer")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerSmsMarketingConsentError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerSmsMarketingConsentError"))), graphql_name="userErrors"
)
@@ -7532,6 +9731,33 @@ class CustomerUpdatePayload(sgqlc.types.Type):
user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+class CustomerVisitProductInfo(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("product", "quantity", "variant")
+ product = sgqlc.types.Field("Product", graphql_name="product")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ variant = sgqlc.types.Field("ProductVariant", graphql_name="variant")
+
+
+class CustomerVisitProductInfoConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("CustomerVisitProductInfoEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CustomerVisitProductInfo))), graphql_name="nodes"
+ )
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class CustomerVisitProductInfoEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null(CustomerVisitProductInfo), graphql_name="node")
+
+
class DelegateAccessToken(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("access_scopes", "access_token", "created_at")
@@ -7546,8 +9772,17 @@ class DelegateAccessTokenCreatePayload(sgqlc.types.Type):
delegate_access_token = sgqlc.types.Field(DelegateAccessToken, graphql_name="delegateAccessToken")
shop = sgqlc.types.Field(sgqlc.types.non_null("Shop"), graphql_name="shop")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DelegateAccessTokenCreateUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DelegateAccessTokenCreateUserError"))), graphql_name="userErrors"
+ )
+
+
+class DelegateAccessTokenDestroyPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("shop", "status", "user_errors")
+ shop = sgqlc.types.Field(sgqlc.types.non_null("Shop"), graphql_name="shop")
+ status = sgqlc.types.Field(Boolean, graphql_name="status")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DelegateAccessTokenDestroyUserError"))), graphql_name="userErrors"
)
@@ -7581,6 +9816,13 @@ class DeliveryAvailableService(sgqlc.types.Type):
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+class DeliveryBrandedPromise(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("handle", "name")
+ handle = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="handle")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+
+
class DeliveryCarrierServiceAndLocations(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("carrier_service", "locations")
@@ -7611,6 +9853,61 @@ class DeliveryCountryCodesOrRestOfWorld(sgqlc.types.Type):
rest_of_world = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="restOfWorld")
+class DeliveryCustomizationActivationPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("ids", "user_errors")
+ ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="ids")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryCustomizationError"))), graphql_name="userErrors"
+ )
+
+
+class DeliveryCustomizationConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryCustomizationEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryCustomization"))), graphql_name="nodes"
+ )
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class DeliveryCustomizationCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("delivery_customization", "user_errors")
+ delivery_customization = sgqlc.types.Field("DeliveryCustomization", graphql_name="deliveryCustomization")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryCustomizationError"))), graphql_name="userErrors"
+ )
+
+
+class DeliveryCustomizationDeletePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("deleted_id", "user_errors")
+ deleted_id = sgqlc.types.Field(ID, graphql_name="deletedId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryCustomizationError"))), graphql_name="userErrors"
+ )
+
+
+class DeliveryCustomizationEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("DeliveryCustomization"), graphql_name="node")
+
+
+class DeliveryCustomizationUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("delivery_customization", "user_errors")
+ delivery_customization = sgqlc.types.Field("DeliveryCustomization", graphql_name="deliveryCustomization")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryCustomizationError"))), graphql_name="userErrors"
+ )
+
+
class DeliveryLegacyModeBlocked(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("blocked", "reasons")
@@ -7618,6 +9915,13 @@ class DeliveryLegacyModeBlocked(sgqlc.types.Type):
reasons = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(DeliveryLegacyModeBlockedReason)), graphql_name="reasons")
+class DeliveryLocalPickupSettings(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("instructions", "pickup_time")
+ instructions = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="instructions")
+ pickup_time = sgqlc.types.Field(sgqlc.types.non_null(DeliveryLocalPickupTime), graphql_name="pickupTime")
+
+
class DeliveryLocationGroupZone(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("method_definition_counts", "method_definitions", "zone")
@@ -7647,8 +9951,7 @@ class DeliveryLocationGroupZoneConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryLocationGroupZoneEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryLocationGroupZoneEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DeliveryLocationGroupZone))), graphql_name="nodes"
@@ -7667,12 +9970,10 @@ class DeliveryMethodDefinitionConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryMethodDefinitionEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryMethodDefinitionEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryMethodDefinition"))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryMethodDefinition"))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
@@ -7741,8 +10042,7 @@ class DeliveryProfileLocationGroup(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("countries_in_any_zone", "location_group", "location_group_zones")
countries_in_any_zone = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DeliveryCountryAndZone))),
- graphql_name="countriesInAnyZone",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DeliveryCountryAndZone))), graphql_name="countriesInAnyZone"
)
location_group = sgqlc.types.Field(sgqlc.types.non_null("DeliveryLocationGroup"), graphql_name="locationGroup")
location_group_zones = sgqlc.types.Field(
@@ -7784,7 +10084,7 @@ class DiscountAllocation(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("allocated_amount_set", "discount_application")
allocated_amount_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="allocatedAmountSet")
- discount_application = sgqlc.types.Field(sgqlc.types.non_null("DiscountApplication"), graphql_name="discountApplication")
+ discount_application = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplication), graphql_name="discountApplication")
class DiscountAmount(sgqlc.types.Type):
@@ -7794,16 +10094,6 @@ class DiscountAmount(sgqlc.types.Type):
applies_on_each_item = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="appliesOnEachItem")
-class DiscountApplication(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("allocation_method", "index", "target_selection", "target_type", "value")
- allocation_method = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationAllocationMethod), graphql_name="allocationMethod")
- index = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="index")
- target_selection = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationTargetSelection), graphql_name="targetSelection")
- target_type = sgqlc.types.Field(sgqlc.types.non_null(DiscountApplicationTargetType), graphql_name="targetType")
- value = sgqlc.types.Field(sgqlc.types.non_null("PricingValue"), graphql_name="value")
-
-
class DiscountApplicationConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -7834,7 +10124,9 @@ class DiscountAutomaticApp(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = (
"app_discount_type",
+ "async_usage_count",
"combines_with",
+ "created_at",
"discount_class",
"discount_id",
"ends_at",
@@ -7842,9 +10134,12 @@ class DiscountAutomaticApp(sgqlc.types.Type):
"starts_at",
"status",
"title",
+ "updated_at",
)
app_discount_type = sgqlc.types.Field(sgqlc.types.non_null(AppDiscountType), graphql_name="appDiscountType")
+ async_usage_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="asyncUsageCount")
combines_with = sgqlc.types.Field(sgqlc.types.non_null("DiscountCombinesWith"), graphql_name="combinesWith")
+ created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
discount_class = sgqlc.types.Field(sgqlc.types.non_null(DiscountClass), graphql_name="discountClass")
discount_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="discountId")
ends_at = sgqlc.types.Field(DateTime, graphql_name="endsAt")
@@ -7852,6 +10147,7 @@ class DiscountAutomaticApp(sgqlc.types.Type):
starts_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="startsAt")
status = sgqlc.types.Field(sgqlc.types.non_null(DiscountStatus), graphql_name="status")
title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
class DiscountAutomaticAppCreatePayload(sgqlc.types.Type):
@@ -7887,6 +10183,7 @@ class DiscountAutomaticBasic(sgqlc.types.Type):
"status",
"summary",
"title",
+ "updated_at",
)
async_usage_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="asyncUsageCount")
combines_with = sgqlc.types.Field(sgqlc.types.non_null("DiscountCombinesWith"), graphql_name="combinesWith")
@@ -7900,6 +10197,7 @@ class DiscountAutomaticBasic(sgqlc.types.Type):
status = sgqlc.types.Field(sgqlc.types.non_null(DiscountStatus), graphql_name="status")
summary = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="summary")
title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
class DiscountAutomaticBasicCreatePayload(sgqlc.types.Type):
@@ -7986,8 +10284,7 @@ class DiscountAutomaticNodeConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountAutomaticNodeEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountAutomaticNodeEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountAutomaticNode"))), graphql_name="nodes"
@@ -8033,6 +10330,7 @@ class DiscountCodeApp(sgqlc.types.Type):
"status",
"title",
"total_sales",
+ "updated_at",
"usage_limit",
)
app_discount_type = sgqlc.types.Field(sgqlc.types.non_null(AppDiscountType), graphql_name="appDiscountType")
@@ -8065,13 +10363,13 @@ class DiscountCodeApp(sgqlc.types.Type):
has_timeline_comment = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="hasTimelineComment")
recurring_cycle_limit = sgqlc.types.Field(Int, graphql_name="recurringCycleLimit")
shareable_urls = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountShareableUrl"))),
- graphql_name="shareableUrls",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountShareableUrl"))), graphql_name="shareableUrls"
)
starts_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="startsAt")
status = sgqlc.types.Field(sgqlc.types.non_null(DiscountStatus), graphql_name="status")
title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
total_sales = sgqlc.types.Field("MoneyV2", graphql_name="totalSales")
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
usage_limit = sgqlc.types.Field(Int, graphql_name="usageLimit")
@@ -8116,6 +10414,7 @@ class DiscountCodeBasic(sgqlc.types.Type):
"summary",
"title",
"total_sales",
+ "updated_at",
"usage_limit",
)
applies_once_per_customer = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="appliesOncePerCustomer")
@@ -8147,8 +10446,7 @@ class DiscountCodeBasic(sgqlc.types.Type):
minimum_requirement = sgqlc.types.Field("DiscountMinimumRequirement", graphql_name="minimumRequirement")
recurring_cycle_limit = sgqlc.types.Field(Int, graphql_name="recurringCycleLimit")
shareable_urls = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountShareableUrl"))),
- graphql_name="shareableUrls",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountShareableUrl"))), graphql_name="shareableUrls"
)
short_summary = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="shortSummary")
starts_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="startsAt")
@@ -8156,6 +10454,7 @@ class DiscountCodeBasic(sgqlc.types.Type):
summary = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="summary")
title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
total_sales = sgqlc.types.Field("MoneyV2", graphql_name="totalSales")
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
usage_limit = sgqlc.types.Field(Int, graphql_name="usageLimit")
@@ -8225,6 +10524,7 @@ class DiscountCodeBxgy(sgqlc.types.Type):
"summary",
"title",
"total_sales",
+ "updated_at",
"usage_limit",
"uses_per_order_limit",
)
@@ -8256,14 +10556,14 @@ class DiscountCodeBxgy(sgqlc.types.Type):
ends_at = sgqlc.types.Field(DateTime, graphql_name="endsAt")
has_timeline_comment = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="hasTimelineComment")
shareable_urls = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountShareableUrl"))),
- graphql_name="shareableUrls",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountShareableUrl"))), graphql_name="shareableUrls"
)
starts_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="startsAt")
status = sgqlc.types.Field(sgqlc.types.non_null(DiscountStatus), graphql_name="status")
summary = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="summary")
title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
total_sales = sgqlc.types.Field("MoneyV2", graphql_name="totalSales")
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
usage_limit = sgqlc.types.Field(Int, graphql_name="usageLimit")
uses_per_order_limit = sgqlc.types.Field(Int, graphql_name="usesPerOrderLimit")
@@ -8330,6 +10630,7 @@ class DiscountCodeFreeShipping(sgqlc.types.Type):
"summary",
"title",
"total_sales",
+ "updated_at",
"usage_limit",
)
applies_on_one_time_purchase = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="appliesOnOneTimePurchase")
@@ -8366,8 +10667,7 @@ class DiscountCodeFreeShipping(sgqlc.types.Type):
minimum_requirement = sgqlc.types.Field("DiscountMinimumRequirement", graphql_name="minimumRequirement")
recurring_cycle_limit = sgqlc.types.Field(Int, graphql_name="recurringCycleLimit")
shareable_urls = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountShareableUrl"))),
- graphql_name="shareableUrls",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountShareableUrl"))), graphql_name="shareableUrls"
)
short_summary = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="shortSummary")
starts_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="startsAt")
@@ -8375,6 +10675,7 @@ class DiscountCodeFreeShipping(sgqlc.types.Type):
summary = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="summary")
title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
total_sales = sgqlc.types.Field("MoneyV2", graphql_name="totalSales")
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
usage_limit = sgqlc.types.Field(Int, graphql_name="usageLimit")
@@ -8606,12 +10907,10 @@ class DiscountRedeemCodeBulkCreationCodeConnection(sgqlc.types.relay.Connection)
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountRedeemCodeBulkCreationCodeEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DiscountRedeemCodeBulkCreationCodeEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DiscountRedeemCodeBulkCreationCode))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DiscountRedeemCodeBulkCreationCode))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
@@ -8649,20 +10948,12 @@ class DiscountShareableUrl(sgqlc.types.Type):
url = sgqlc.types.Field(sgqlc.types.non_null(URL), graphql_name="url")
-class DisplayableError(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("field", "message")
- field = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="field")
- message = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="message")
-
-
class DisputeEvidenceUpdatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("dispute_evidence", "user_errors")
dispute_evidence = sgqlc.types.Field("ShopifyPaymentsDisputeEvidence", graphql_name="disputeEvidence")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DisputeEvidenceUpdateUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DisputeEvidenceUpdateUserError"))), graphql_name="userErrors"
)
@@ -8817,24 +11108,20 @@ class EditableProperty(sgqlc.types.Type):
reason = sgqlc.types.Field(FormattedString, graphql_name="reason")
-class Event(sgqlc.types.Interface):
+class ErrorPosition(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "app_title",
- "attribute_to_app",
- "attribute_to_user",
- "created_at",
- "critical_alert",
- "id",
- "message",
+ __field_names__ = ("character", "line")
+ character = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="character")
+ line = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="line")
+
+
+class EventBridgeServerPixelUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("server_pixel", "user_errors")
+ server_pixel = sgqlc.types.Field("ServerPixel", graphql_name="serverPixel")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ErrorsServerPixelUserError"))), graphql_name="userErrors"
)
- app_title = sgqlc.types.Field(String, graphql_name="appTitle")
- attribute_to_app = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="attributeToApp")
- attribute_to_user = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="attributeToUser")
- created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
- critical_alert = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="criticalAlert")
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
- message = sgqlc.types.Field(sgqlc.types.non_null(FormattedString), graphql_name="message")
class EventBridgeWebhookSubscriptionCreatePayload(sgqlc.types.Type):
@@ -8859,11 +11146,105 @@ class EventConnection(sgqlc.types.relay.Connection):
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
-class EventEdge(sgqlc.types.Type):
+class EventEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null(Event), graphql_name="node")
+
+
+class ExchangeV2Additions(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("line_items", "subtotal_price_set", "tax_lines", "total_price_set")
+ line_items = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ExchangeV2LineItem"))), graphql_name="lineItems"
+ )
+ subtotal_price_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="subtotalPriceSet")
+ tax_lines = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TaxLine"))), graphql_name="taxLines")
+ total_price_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="totalPriceSet")
+
+
+class ExchangeV2Connection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ExchangeV2Edge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ExchangeV2"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class ExchangeV2Edge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("ExchangeV2"), graphql_name="node")
+
+
+class ExchangeV2LineItem(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "custom_attributes",
+ "discounted_total_set",
+ "discounted_unit_price_set",
+ "fulfillment_service",
+ "gift_card",
+ "gift_cards",
+ "line_item",
+ "name",
+ "original_total_set",
+ "original_unit_price_set",
+ "quantity",
+ "requires_shipping",
+ "sku",
+ "tax_lines",
+ "taxable",
+ "title",
+ "variant",
+ "variant_title",
+ "vendor",
+ )
+ custom_attributes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(Attribute))), graphql_name="customAttributes"
+ )
+ discounted_total_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="discountedTotalSet")
+ discounted_unit_price_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="discountedUnitPriceSet")
+ fulfillment_service = sgqlc.types.Field("FulfillmentService", graphql_name="fulfillmentService")
+ gift_card = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="giftCard")
+ gift_cards = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("GiftCard"))), graphql_name="giftCards")
+ line_item = sgqlc.types.Field("LineItem", graphql_name="lineItem")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ original_total_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="originalTotalSet")
+ original_unit_price_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="originalUnitPriceSet")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ requires_shipping = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="requiresShipping")
+ sku = sgqlc.types.Field(String, graphql_name="sku")
+ tax_lines = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TaxLine"))), graphql_name="taxLines")
+ taxable = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="taxable")
+ title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+ variant = sgqlc.types.Field("ProductVariant", graphql_name="variant")
+ variant_title = sgqlc.types.Field(String, graphql_name="variantTitle")
+ vendor = sgqlc.types.Field(String, graphql_name="vendor")
+
+
+class ExchangeV2Returns(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("cursor", "node")
- cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null(Event), graphql_name="node")
+ __field_names__ = (
+ "line_items",
+ "order_discount_amount_set",
+ "shipping_refund_amount_set",
+ "subtotal_price_set",
+ "tax_lines",
+ "tip_refund_amount_set",
+ "total_price_set",
+ )
+ line_items = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ExchangeV2LineItem))), graphql_name="lineItems"
+ )
+ order_discount_amount_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="orderDiscountAmountSet")
+ shipping_refund_amount_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="shippingRefundAmountSet")
+ subtotal_price_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="subtotalPriceSet")
+ tax_lines = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TaxLine"))), graphql_name="taxLines")
+ tip_refund_amount_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="tipRefundAmountSet")
+ total_price_set = sgqlc.types.Field(sgqlc.types.non_null("MoneyBag"), graphql_name="totalPriceSet")
class FailedRequirement(sgqlc.types.Type):
@@ -8873,14 +11254,13 @@ class FailedRequirement(sgqlc.types.Type):
message = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="message")
-class File(sgqlc.types.Interface):
+class FileAcknowledgeUpdateFailedPayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("alt", "created_at", "file_errors", "file_status", "preview")
- alt = sgqlc.types.Field(String, graphql_name="alt")
- created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
- file_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FileError"))), graphql_name="fileErrors")
- file_status = sgqlc.types.Field(sgqlc.types.non_null(FileStatus), graphql_name="fileStatus")
- preview = sgqlc.types.Field("MediaPreviewImage", graphql_name="preview")
+ __field_names__ = ("files", "user_errors")
+ files = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(File)), graphql_name="files")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FilesUserError"))), graphql_name="userErrors"
+ )
class FileConnection(sgqlc.types.relay.Connection):
@@ -8983,6 +11363,13 @@ class FulfillmentEventConnection(sgqlc.types.relay.Connection):
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+class FulfillmentEventCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("fulfillment_event", "user_errors")
+ fulfillment_event = sgqlc.types.Field("FulfillmentEvent", graphql_name="fulfillmentEvent")
+ user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+
+
class FulfillmentEventEdge(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("cursor", "node")
@@ -8992,7 +11379,8 @@ class FulfillmentEventEdge(sgqlc.types.Type):
class FulfillmentHold(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("reason", "reason_notes")
+ __field_names__ = ("held_by", "reason", "reason_notes")
+ held_by = sgqlc.types.Field(String, graphql_name="heldBy")
reason = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentHoldReason), graphql_name="reason")
reason_notes = sgqlc.types.Field(String, graphql_name="reasonNotes")
@@ -9074,11 +11462,11 @@ class FulfillmentOrderEdge(sgqlc.types.Type):
class FulfillmentOrderHoldPayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("fulfillment_order", "user_errors")
+ __field_names__ = ("fulfillment_order", "remaining_fulfillment_order", "user_errors")
fulfillment_order = sgqlc.types.Field("FulfillmentOrder", graphql_name="fulfillmentOrder")
+ remaining_fulfillment_order = sgqlc.types.Field("FulfillmentOrder", graphql_name="remainingFulfillmentOrder")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderHoldUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderHoldUserError"))), graphql_name="userErrors"
)
@@ -9092,12 +11480,10 @@ class FulfillmentOrderLineItemConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderLineItemEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderLineItemEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderLineItem"))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderLineItem"))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
@@ -9116,6 +11502,15 @@ class FulfillmentOrderLineItemWarning(sgqlc.types.Type):
title = sgqlc.types.Field(String, graphql_name="title")
+class FulfillmentOrderLineItemsPreparedForPickupPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("user_errors",)
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderLineItemsPreparedForPickupUserError"))),
+ graphql_name="userErrors",
+ )
+
+
class FulfillmentOrderLocationForMove(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("location", "message", "movable")
@@ -9128,12 +11523,10 @@ class FulfillmentOrderLocationForMoveConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderLocationForMoveEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderLocationForMoveEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderLocationForMove))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderLocationForMove))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
@@ -9149,12 +11542,10 @@ class FulfillmentOrderMerchantRequestConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderMerchantRequestEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderMerchantRequestEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderMerchantRequest"))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderMerchantRequest"))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
@@ -9166,14 +11557,26 @@ class FulfillmentOrderMerchantRequestEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null("FulfillmentOrderMerchantRequest"), graphql_name="node")
-class FulfillmentOrderMovePayload(sgqlc.types.Type):
+class FulfillmentOrderMergePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "moved_fulfillment_order",
- "original_fulfillment_order",
- "remaining_fulfillment_order",
- "user_errors",
+ __field_names__ = ("fulfillment_order_merges", "user_errors")
+ fulfillment_order_merges = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderMergeResult")), graphql_name="fulfillmentOrderMerges"
)
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderMergeUserError"))), graphql_name="userErrors"
+ )
+
+
+class FulfillmentOrderMergeResult(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("fulfillment_order",)
+ fulfillment_order = sgqlc.types.Field(sgqlc.types.non_null("FulfillmentOrder"), graphql_name="fulfillmentOrder")
+
+
+class FulfillmentOrderMovePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("moved_fulfillment_order", "original_fulfillment_order", "remaining_fulfillment_order", "user_errors")
moved_fulfillment_order = sgqlc.types.Field("FulfillmentOrder", graphql_name="movedFulfillmentOrder")
original_fulfillment_order = sgqlc.types.Field("FulfillmentOrder", graphql_name="originalFulfillmentOrder")
remaining_fulfillment_order = sgqlc.types.Field("FulfillmentOrder", graphql_name="remainingFulfillmentOrder")
@@ -9206,8 +11609,7 @@ class FulfillmentOrderReleaseHoldPayload(sgqlc.types.Type):
__field_names__ = ("fulfillment_order", "user_errors")
fulfillment_order = sgqlc.types.Field("FulfillmentOrder", graphql_name="fulfillmentOrder")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderReleaseHoldUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderReleaseHoldUserError"))), graphql_name="userErrors"
)
@@ -9216,11 +11618,29 @@ class FulfillmentOrderReschedulePayload(sgqlc.types.Type):
__field_names__ = ("fulfillment_order", "user_errors")
fulfillment_order = sgqlc.types.Field("FulfillmentOrder", graphql_name="fulfillmentOrder")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderRescheduleUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderRescheduleUserError"))), graphql_name="userErrors"
+ )
+
+
+class FulfillmentOrderSplitPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("fulfillment_order_splits", "user_errors")
+ fulfillment_order_splits = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderSplitResult")), graphql_name="fulfillmentOrderSplits"
+ )
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrderSplitUserError"))), graphql_name="userErrors"
)
+class FulfillmentOrderSplitResult(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("fulfillment_order", "remaining_fulfillment_order", "replacement_fulfillment_order")
+ fulfillment_order = sgqlc.types.Field(sgqlc.types.non_null("FulfillmentOrder"), graphql_name="fulfillmentOrder")
+ remaining_fulfillment_order = sgqlc.types.Field(sgqlc.types.non_null("FulfillmentOrder"), graphql_name="remainingFulfillmentOrder")
+ replacement_fulfillment_order = sgqlc.types.Field("FulfillmentOrder", graphql_name="replacementFulfillmentOrder")
+
+
class FulfillmentOrderSubmitCancellationRequestPayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("fulfillment_order", "user_errors")
@@ -9230,12 +11650,7 @@ class FulfillmentOrderSubmitCancellationRequestPayload(sgqlc.types.Type):
class FulfillmentOrderSubmitFulfillmentRequestPayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "original_fulfillment_order",
- "submitted_fulfillment_order",
- "unsubmitted_fulfillment_order",
- "user_errors",
- )
+ __field_names__ = ("original_fulfillment_order", "submitted_fulfillment_order", "unsubmitted_fulfillment_order", "user_errors")
original_fulfillment_order = sgqlc.types.Field("FulfillmentOrder", graphql_name="originalFulfillmentOrder")
submitted_fulfillment_order = sgqlc.types.Field("FulfillmentOrder", graphql_name="submittedFulfillmentOrder")
unsubmitted_fulfillment_order = sgqlc.types.Field("FulfillmentOrder", graphql_name="unsubmittedFulfillmentOrder")
@@ -9249,6 +11664,15 @@ class FulfillmentOrderSupportedAction(sgqlc.types.Type):
external_url = sgqlc.types.Field(URL, graphql_name="externalUrl")
+class FulfillmentOrdersReleaseHoldsPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("job", "user_errors")
+ job = sgqlc.types.Field("Job", graphql_name="job")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("FulfillmentOrdersReleaseHoldsUserError"))), graphql_name="userErrors"
+ )
+
+
class FulfillmentOrdersSetFulfillmentDeadlinePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("success", "user_errors")
@@ -9282,7 +11706,6 @@ class FulfillmentService(sgqlc.types.Type):
"permits_sku_sharing",
"product_based",
"service_name",
- "shipping_methods",
"type",
)
callback_url = sgqlc.types.Field(URL, graphql_name="callbackUrl")
@@ -9294,10 +11717,6 @@ class FulfillmentService(sgqlc.types.Type):
permits_sku_sharing = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="permitsSkuSharing")
product_based = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="productBased")
service_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="serviceName")
- shipping_methods = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShippingMethod"))),
- graphql_name="shippingMethods",
- )
type = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentServiceType), graphql_name="type")
@@ -9346,12 +11765,7 @@ class FunctionsAppBridge(sgqlc.types.Type):
class FunctionsErrorHistory(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "errors_first_occurred_at",
- "first_occurred_at",
- "has_been_shared_since_last_error",
- "has_shared_recent_errors",
- )
+ __field_names__ = ("errors_first_occurred_at", "first_occurred_at", "has_been_shared_since_last_error", "has_shared_recent_errors")
errors_first_occurred_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="errorsFirstOccurredAt")
first_occurred_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="firstOccurredAt")
has_been_shared_since_last_error = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="hasBeenSharedSinceLastError")
@@ -9397,153 +11811,6 @@ class GiftCardUpdatePayload(sgqlc.types.Type):
user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
-class HasEvents(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("events",)
- events = sgqlc.types.Field(
- sgqlc.types.non_null(EventConnection),
- graphql_name="events",
- args=sgqlc.types.ArgDict(
- (
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- ("sort_key", sgqlc.types.Arg(EventSortKeys, graphql_name="sortKey", default="ID")),
- ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
- )
- ),
- )
-
-
-class HasLocalizationExtensions(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("localization_extensions",)
- localization_extensions = sgqlc.types.Field(
- sgqlc.types.non_null("LocalizationExtensionConnection"),
- graphql_name="localizationExtensions",
- args=sgqlc.types.ArgDict(
- (
- (
- "country_codes",
- sgqlc.types.Arg(
- sgqlc.types.list_of(sgqlc.types.non_null(CountryCode)),
- graphql_name="countryCodes",
- default=None,
- ),
- ),
- (
- "purposes",
- sgqlc.types.Arg(
- sgqlc.types.list_of(sgqlc.types.non_null(LocalizationExtensionPurpose)),
- graphql_name="purposes",
- default=None,
- ),
- ),
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- )
- ),
- )
-
-
-class HasMetafieldDefinitions(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("metafield_definitions",)
- metafield_definitions = sgqlc.types.Field(
- sgqlc.types.non_null("MetafieldDefinitionConnection"),
- graphql_name="metafieldDefinitions",
- args=sgqlc.types.ArgDict(
- (
- ("namespace", sgqlc.types.Arg(String, graphql_name="namespace", default=None)),
- (
- "pinned_status",
- sgqlc.types.Arg(MetafieldDefinitionPinnedStatus, graphql_name="pinnedStatus", default="ANY"),
- ),
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- ("sort_key", sgqlc.types.Arg(MetafieldDefinitionSortKeys, graphql_name="sortKey", default="ID")),
- ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
- )
- ),
- )
-
-
-class HasMetafields(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("metafield", "metafields", "private_metafield", "private_metafields")
- metafield = sgqlc.types.Field(
- "Metafield",
- graphql_name="metafield",
- args=sgqlc.types.ArgDict(
- (
- ("namespace", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="namespace", default=None)),
- ("key", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="key", default=None)),
- )
- ),
- )
- metafields = sgqlc.types.Field(
- sgqlc.types.non_null("MetafieldConnection"),
- graphql_name="metafields",
- args=sgqlc.types.ArgDict(
- (
- ("namespace", sgqlc.types.Arg(String, graphql_name="namespace", default=None)),
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- )
- ),
- )
- private_metafield = sgqlc.types.Field(
- "PrivateMetafield",
- graphql_name="privateMetafield",
- args=sgqlc.types.ArgDict(
- (
- ("namespace", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="namespace", default=None)),
- ("key", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="key", default=None)),
- )
- ),
- )
- private_metafields = sgqlc.types.Field(
- sgqlc.types.non_null("PrivateMetafieldConnection"),
- graphql_name="privateMetafields",
- args=sgqlc.types.ArgDict(
- (
- ("namespace", sgqlc.types.Arg(String, graphql_name="namespace", default=None)),
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- )
- ),
- )
-
-
-class HasPublishedTranslations(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("translations",)
- translations = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PublishedTranslation"))),
- graphql_name="translations",
- args=sgqlc.types.ArgDict(
- (
- ("locale", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="locale", default=None)),
- ("market_id", sgqlc.types.Arg(ID, graphql_name="marketId", default=None)),
- )
- ),
- )
-
-
class ImageConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -9573,6 +11840,15 @@ class InventoryActivatePayload(sgqlc.types.Type):
user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+class InventoryAdjustQuantitiesPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("inventory_adjustment_group", "user_errors")
+ inventory_adjustment_group = sgqlc.types.Field("InventoryAdjustmentGroup", graphql_name="inventoryAdjustmentGroup")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("InventoryAdjustQuantitiesUserError"))), graphql_name="userErrors"
+ )
+
+
class InventoryAdjustQuantityPayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("inventory_level", "user_errors")
@@ -9593,11 +11869,21 @@ class InventoryBulkToggleActivationPayload(sgqlc.types.Type):
inventory_item = sgqlc.types.Field("InventoryItem", graphql_name="inventoryItem")
inventory_levels = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("InventoryLevel")), graphql_name="inventoryLevels")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("InventoryBulkToggleActivationUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("InventoryBulkToggleActivationUserError"))), graphql_name="userErrors"
)
+class InventoryChange(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("delta", "item", "ledger_document_uri", "location", "name", "quantity_after_change")
+ delta = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="delta")
+ item = sgqlc.types.Field("InventoryItem", graphql_name="item")
+ ledger_document_uri = sgqlc.types.Field(String, graphql_name="ledgerDocumentUri")
+ location = sgqlc.types.Field("Location", graphql_name="location")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ quantity_after_change = sgqlc.types.Field(Int, graphql_name="quantityAfterChange")
+
+
class InventoryDeactivatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("user_errors",)
@@ -9634,11 +11920,55 @@ class InventoryLevelConnection(sgqlc.types.relay.Connection):
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
-class InventoryLevelEdge(sgqlc.types.Type):
+class InventoryLevelEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("InventoryLevel"), graphql_name="node")
+
+
+class InventoryMoveQuantitiesPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("inventory_adjustment_group", "user_errors")
+ inventory_adjustment_group = sgqlc.types.Field("InventoryAdjustmentGroup", graphql_name="inventoryAdjustmentGroup")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("InventoryMoveQuantitiesUserError"))), graphql_name="userErrors"
+ )
+
+
+class InventoryProperties(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("quantity_names",)
+ quantity_names = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("InventoryQuantityName"))), graphql_name="quantityNames"
+ )
+
+
+class InventoryQuantity(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("name", "quantity", "updated_at")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ updated_at = sgqlc.types.Field(DateTime, graphql_name="updatedAt")
+
+
+class InventoryQuantityName(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("cursor", "node")
- cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null("InventoryLevel"), graphql_name="node")
+ __field_names__ = ("belongs_to", "comprises", "display_name", "is_in_use", "name")
+ belongs_to = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="belongsTo")
+ comprises = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="comprises")
+ display_name = sgqlc.types.Field(String, graphql_name="displayName")
+ is_in_use = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isInUse")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+
+
+class InventorySetOnHandQuantitiesPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("inventory_adjustment_group", "user_errors")
+ inventory_adjustment_group = sgqlc.types.Field("InventoryAdjustmentGroup", graphql_name="inventoryAdjustmentGroup")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("InventorySetOnHandQuantitiesUserError"))), graphql_name="userErrors"
+ )
class Job(sgqlc.types.Type):
@@ -9649,12 +11979,6 @@ class Job(sgqlc.types.Type):
query = sgqlc.types.Field("QueryRoot", graphql_name="query")
-class LegacyInteroperability(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("legacy_resource_id",)
- legacy_resource_id = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="legacyResourceId")
-
-
class LimitedPendingOrderCount(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("at_max", "count")
@@ -9677,6 +12001,14 @@ class LineItemEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null("LineItem"), graphql_name="node")
+class LineItemGroup(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("id", "quantity", "title")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+
+
class LineItemMutableConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -9720,8 +12052,7 @@ class LocalizationExtensionConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("LocalizationExtensionEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("LocalizationExtensionEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(LocalizationExtension))), graphql_name="nodes")
page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
@@ -9749,8 +12080,7 @@ class LocationAddPayload(sgqlc.types.Type):
__field_names__ = ("location", "user_errors")
location = sgqlc.types.Field("Location", graphql_name="location")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("LocationAddUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("LocationAddUserError"))), graphql_name="userErrors"
)
@@ -9807,8 +12137,7 @@ class LocationDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_location_id", "location_delete_user_errors")
deleted_location_id = sgqlc.types.Field(ID, graphql_name="deletedLocationId")
location_delete_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("LocationDeleteUserError"))),
- graphql_name="locationDeleteUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("LocationDeleteUserError"))), graphql_name="locationDeleteUserErrors"
)
@@ -9824,24 +12153,33 @@ class LocationEditPayload(sgqlc.types.Type):
__field_names__ = ("location", "user_errors")
location = sgqlc.types.Field("Location", graphql_name="location")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("LocationEditUserError"))),
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("LocationEditUserError"))), graphql_name="userErrors"
+ )
+
+
+class LocationLocalPickupDisablePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("location_id", "user_errors")
+ location_id = sgqlc.types.Field(ID, graphql_name="locationId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryLocationLocalPickupSettingsError"))),
graphql_name="userErrors",
)
-class LocationSuggestedAddress(sgqlc.types.Type):
+class LocationLocalPickupEnablePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "address1",
- "address2",
- "city",
- "country",
- "country_code",
- "formatted",
- "province",
- "province_code",
- "zip",
+ __field_names__ = ("local_pickup_settings", "user_errors")
+ local_pickup_settings = sgqlc.types.Field(DeliveryLocalPickupSettings, graphql_name="localPickupSettings")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("DeliveryLocationLocalPickupSettingsError"))),
+ graphql_name="userErrors",
)
+
+
+class LocationSuggestedAddress(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("address1", "address2", "city", "country", "country_code", "formatted", "province", "province_code", "zip")
address1 = sgqlc.types.Field(String, graphql_name="address1")
address2 = sgqlc.types.Field(String, graphql_name="address2")
city = sgqlc.types.Field(String, graphql_name="city")
@@ -9853,6 +12191,36 @@ class LocationSuggestedAddress(sgqlc.types.Type):
zip = sgqlc.types.Field(String, graphql_name="zip")
+class MailingAddressConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MailingAddressEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MailingAddress"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class MailingAddressEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("MailingAddress"), graphql_name="node")
+
+
+class MarketCatalogConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketCatalogEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketCatalog"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class MarketCatalogEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("MarketCatalog"), graphql_name="node")
+
+
class MarketConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -9882,8 +12250,7 @@ class MarketCurrencySettingsUpdatePayload(sgqlc.types.Type):
__field_names__ = ("market", "user_errors")
market = sgqlc.types.Field("Market", graphql_name="market")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketCurrencySettingsUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketCurrencySettingsUserError"))), graphql_name="userErrors"
)
@@ -9915,8 +12282,7 @@ class MarketLocalizableResource(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("market_localizable_content", "market_localizations", "resource_id")
market_localizable_content = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MarketLocalizableContent))),
- graphql_name="marketLocalizableContent",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MarketLocalizableContent))), graphql_name="marketLocalizableContent"
)
market_localizations = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketLocalization"))),
@@ -9930,8 +12296,7 @@ class MarketLocalizableResourceConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketLocalizableResourceEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketLocalizableResourceEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MarketLocalizableResource))), graphql_name="nodes"
@@ -9948,10 +12313,11 @@ class MarketLocalizableResourceEdge(sgqlc.types.Type):
class MarketLocalization(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("key", "market", "outdated", "value")
+ __field_names__ = ("key", "market", "outdated", "updated_at", "value")
key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
market = sgqlc.types.Field(sgqlc.types.non_null("Market"), graphql_name="market")
outdated = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="outdated")
+ updated_at = sgqlc.types.Field(DateTime, graphql_name="updatedAt")
value = sgqlc.types.Field(String, graphql_name="value")
@@ -9962,8 +12328,7 @@ class MarketLocalizationsRegisterPayload(sgqlc.types.Type):
sgqlc.types.list_of(sgqlc.types.non_null(MarketLocalization)), graphql_name="marketLocalizations"
)
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TranslationUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TranslationUserError"))), graphql_name="userErrors"
)
@@ -9974,18 +12339,10 @@ class MarketLocalizationsRemovePayload(sgqlc.types.Type):
sgqlc.types.list_of(sgqlc.types.non_null(MarketLocalization)), graphql_name="marketLocalizations"
)
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TranslationUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TranslationUserError"))), graphql_name="userErrors"
)
-class MarketRegion(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("id", "name")
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
- name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
-
-
class MarketRegionConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -10079,8 +12436,7 @@ class MarketingActivityCreateExternalPayload(sgqlc.types.Type):
__field_names__ = ("marketing_activity", "user_errors")
marketing_activity = sgqlc.types.Field("MarketingActivity", graphql_name="marketingActivity")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketingActivityUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketingActivityUserError"))), graphql_name="userErrors"
)
@@ -10111,8 +12467,7 @@ class MarketingActivityUpdateExternalPayload(sgqlc.types.Type):
__field_names__ = ("marketing_activity", "user_errors")
marketing_activity = sgqlc.types.Field("MarketingActivity", graphql_name="marketingActivity")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketingActivityUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketingActivityUserError"))), graphql_name="userErrors"
)
@@ -10195,21 +12550,6 @@ class MarketingEventEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null("MarketingEvent"), graphql_name="node")
-class Media(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("alt", "media_content_type", "media_errors", "media_warnings", "preview", "status")
- alt = sgqlc.types.Field(String, graphql_name="alt")
- media_content_type = sgqlc.types.Field(sgqlc.types.non_null(MediaContentType), graphql_name="mediaContentType")
- media_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaError"))), graphql_name="mediaErrors"
- )
- media_warnings = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaWarning"))), graphql_name="mediaWarnings"
- )
- preview = sgqlc.types.Field("MediaPreviewImage", graphql_name="preview")
- status = sgqlc.types.Field(sgqlc.types.non_null(MediaStatus), graphql_name="status")
-
-
class MediaConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -10255,9 +12595,16 @@ class MediaWarning(sgqlc.types.Type):
class MerchantApprovalSignals(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("identity_verified", "verified_by_shopify")
+ __field_names__ = ("identity_verified", "verified_by_shopify", "verified_by_shopify_tier")
identity_verified = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="identityVerified")
verified_by_shopify = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="verifiedByShopify")
+ verified_by_shopify_tier = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="verifiedByShopifyTier")
+
+
+class MetafieldAccess(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("admin",)
+ admin = sgqlc.types.Field(MetafieldAdminAccess, graphql_name="admin")
class MetafieldConnection(sgqlc.types.relay.Connection):
@@ -10283,8 +12630,7 @@ class MetafieldDefinitionCreatePayload(sgqlc.types.Type):
__field_names__ = ("created_definition", "user_errors")
created_definition = sgqlc.types.Field("MetafieldDefinition", graphql_name="createdDefinition")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionCreateUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionCreateUserError"))), graphql_name="userErrors"
)
@@ -10293,8 +12639,7 @@ class MetafieldDefinitionDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_definition_id", "user_errors")
deleted_definition_id = sgqlc.types.Field(ID, graphql_name="deletedDefinitionId")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionDeleteUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionDeleteUserError"))), graphql_name="userErrors"
)
@@ -10305,136 +12650,335 @@ class MetafieldDefinitionEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null("MetafieldDefinition"), graphql_name="node")
-class MetafieldDefinitionPinPayload(sgqlc.types.Type):
+class MetafieldDefinitionPinPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("pinned_definition", "user_errors")
+ pinned_definition = sgqlc.types.Field("MetafieldDefinition", graphql_name="pinnedDefinition")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionPinUserError"))), graphql_name="userErrors"
+ )
+
+
+class MetafieldDefinitionSupportedValidation(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("name", "type")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
+
+
+class MetafieldDefinitionType(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("category", "name", "supported_validations", "supports_definition_migrations")
+ category = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="category")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ supported_validations = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldDefinitionSupportedValidation))),
+ graphql_name="supportedValidations",
+ )
+ supports_definition_migrations = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="supportsDefinitionMigrations")
+
+
+class MetafieldDefinitionUnpinPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("unpinned_definition", "user_errors")
+ unpinned_definition = sgqlc.types.Field("MetafieldDefinition", graphql_name="unpinnedDefinition")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionUnpinUserError"))), graphql_name="userErrors"
+ )
+
+
+class MetafieldDefinitionUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("updated_definition", "user_errors", "validation_job")
+ updated_definition = sgqlc.types.Field("MetafieldDefinition", graphql_name="updatedDefinition")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionUpdateUserError"))), graphql_name="userErrors"
+ )
+ validation_job = sgqlc.types.Field(Job, graphql_name="validationJob")
+
+
+class MetafieldDefinitionValidation(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("name", "type", "value")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
+ value = sgqlc.types.Field(String, graphql_name="value")
+
+
+class MetafieldDeletePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("deleted_id", "user_errors")
+ deleted_id = sgqlc.types.Field(ID, graphql_name="deletedId")
+ user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+
+
+class MetafieldEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("Metafield"), graphql_name="node")
+
+
+class MetafieldReferenceConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldReferenceEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of("MetafieldReference")), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class MetafieldReferenceEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field("MetafieldReference", graphql_name="node")
+
+
+class MetafieldRelation(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("key", "name", "namespace", "referencer", "target")
+ key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ namespace = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="namespace")
+ referencer = sgqlc.types.Field(sgqlc.types.non_null("MetafieldReferencer"), graphql_name="referencer")
+ target = sgqlc.types.Field(sgqlc.types.non_null("MetafieldReference"), graphql_name="target")
+
+
+class MetafieldRelationConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldRelationEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldRelation))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class MetafieldRelationEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null(MetafieldRelation), graphql_name="node")
+
+
+class MetafieldStorefrontVisibilityConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldStorefrontVisibilityEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldStorefrontVisibility"))), graphql_name="nodes"
+ )
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+
+
+class MetafieldStorefrontVisibilityCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("metafield_storefront_visibility", "user_errors")
+ metafield_storefront_visibility = sgqlc.types.Field("MetafieldStorefrontVisibility", graphql_name="metafieldStorefrontVisibility")
+ user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+
+
+class MetafieldStorefrontVisibilityDeletePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("deleted_metafield_storefront_visibility_id", "user_errors")
+ deleted_metafield_storefront_visibility_id = sgqlc.types.Field(ID, graphql_name="deletedMetafieldStorefrontVisibilityId")
+ user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+
+
+class MetafieldStorefrontVisibilityEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("MetafieldStorefrontVisibility"), graphql_name="node")
+
+
+class MetafieldsSetPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("metafields", "user_errors")
+ metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("Metafield")), graphql_name="metafields")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldsSetUserError"))), graphql_name="userErrors"
+ )
+
+
+class MetaobjectAccess(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("admin", "storefront")
+ admin = sgqlc.types.Field(sgqlc.types.non_null(MetaobjectAdminAccess), graphql_name="admin")
+ storefront = sgqlc.types.Field(sgqlc.types.non_null(MetaobjectStorefrontAccess), graphql_name="storefront")
+
+
+class MetaobjectBulkDeletePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("job", "user_errors")
+ job = sgqlc.types.Field(Job, graphql_name="job")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectUserError"))), graphql_name="userErrors"
+ )
+
+
+class MetaobjectCapabilities(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("publishable", "translatable")
+ publishable = sgqlc.types.Field(sgqlc.types.non_null("MetaobjectCapabilitiesPublishable"), graphql_name="publishable")
+ translatable = sgqlc.types.Field(sgqlc.types.non_null("MetaobjectCapabilitiesTranslatable"), graphql_name="translatable")
+
+
+class MetaobjectCapabilitiesPublishable(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("enabled",)
+ enabled = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="enabled")
+
+
+class MetaobjectCapabilitiesTranslatable(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("enabled",)
+ enabled = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="enabled")
+
+
+class MetaobjectCapabilityData(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("pinned_definition", "user_errors")
- pinned_definition = sgqlc.types.Field("MetafieldDefinition", graphql_name="pinnedDefinition")
- user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionPinUserError"))),
- graphql_name="userErrors",
- )
+ __field_names__ = ("publishable",)
+ publishable = sgqlc.types.Field("MetaobjectCapabilityDataPublishable", graphql_name="publishable")
-class MetafieldDefinitionSupportedValidation(sgqlc.types.Type):
+class MetaobjectCapabilityDataPublishable(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("name", "type")
- name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
- type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
+ __field_names__ = ("status",)
+ status = sgqlc.types.Field(sgqlc.types.non_null(MetaobjectStatus), graphql_name="status")
-class MetafieldDefinitionType(sgqlc.types.Type):
+class MetaobjectConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
- __field_names__ = ("category", "name", "supported_validations", "supports_definition_migrations")
- category = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="category")
- name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
- supported_validations = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldDefinitionSupportedValidation))),
- graphql_name="supportedValidations",
- )
- supports_definition_migrations = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="supportsDefinitionMigrations")
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Metaobject"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
-class MetafieldDefinitionUnpinPayload(sgqlc.types.Type):
+class MetaobjectCreatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("unpinned_definition", "user_errors")
- unpinned_definition = sgqlc.types.Field("MetafieldDefinition", graphql_name="unpinnedDefinition")
+ __field_names__ = ("metaobject", "user_errors")
+ metaobject = sgqlc.types.Field("Metaobject", graphql_name="metaobject")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionUnpinUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectUserError"))), graphql_name="userErrors"
)
-class MetafieldDefinitionUpdatePayload(sgqlc.types.Type):
+class MetaobjectDefinitionConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
- __field_names__ = ("updated_definition", "user_errors")
- updated_definition = sgqlc.types.Field("MetafieldDefinition", graphql_name="updatedDefinition")
- user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldDefinitionUpdateUserError"))),
- graphql_name="userErrors",
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectDefinitionEdge"))), graphql_name="edges"
)
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectDefinition"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
-class MetafieldDefinitionValidation(sgqlc.types.Type):
+class MetaobjectDefinitionCreatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("name", "type", "value")
- name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
- type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
- value = sgqlc.types.Field(String, graphql_name="value")
+ __field_names__ = ("metaobject_definition", "user_errors")
+ metaobject_definition = sgqlc.types.Field("MetaobjectDefinition", graphql_name="metaobjectDefinition")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectUserError"))), graphql_name="userErrors"
+ )
-class MetafieldDeletePayload(sgqlc.types.Type):
+class MetaobjectDefinitionDeletePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("deleted_id", "user_errors")
deleted_id = sgqlc.types.Field(ID, graphql_name="deletedId")
- user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectUserError"))), graphql_name="userErrors"
+ )
-class MetafieldEdge(sgqlc.types.Type):
+class MetaobjectDefinitionEdge(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("cursor", "node")
cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null("Metafield"), graphql_name="node")
+ node = sgqlc.types.Field(sgqlc.types.non_null("MetaobjectDefinition"), graphql_name="node")
-class MetafieldReferenceConnection(sgqlc.types.relay.Connection):
+class MetaobjectDefinitionUpdatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldReferenceEdge"))), graphql_name="edges"
+ __field_names__ = ("metaobject_definition", "user_errors")
+ metaobject_definition = sgqlc.types.Field("MetaobjectDefinition", graphql_name="metaobjectDefinition")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectUserError"))), graphql_name="userErrors"
)
- nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of("MetafieldReference")), graphql_name="nodes")
- page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
-class MetafieldReferenceEdge(sgqlc.types.Type):
+class MetaobjectDeletePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("cursor", "node")
- cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field("MetafieldReference", graphql_name="node")
+ __field_names__ = ("deleted_id", "user_errors")
+ deleted_id = sgqlc.types.Field(ID, graphql_name="deletedId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectUserError"))), graphql_name="userErrors"
+ )
-class MetafieldStorefrontVisibilityConnection(sgqlc.types.relay.Connection):
+class MetaobjectEdge(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldStorefrontVisibilityEdge"))),
- graphql_name="edges",
- )
- nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldStorefrontVisibility"))),
- graphql_name="nodes",
- )
- page_info = sgqlc.types.Field(sgqlc.types.non_null("PageInfo"), graphql_name="pageInfo")
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("Metaobject"), graphql_name="node")
-class MetafieldStorefrontVisibilityCreatePayload(sgqlc.types.Type):
+class MetaobjectField(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("metafield_storefront_visibility", "user_errors")
- metafield_storefront_visibility = sgqlc.types.Field("MetafieldStorefrontVisibility", graphql_name="metafieldStorefrontVisibility")
- user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+ __field_names__ = ("definition", "key", "reference", "references", "type", "value")
+ definition = sgqlc.types.Field(sgqlc.types.non_null("MetaobjectFieldDefinition"), graphql_name="definition")
+ key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
+ reference = sgqlc.types.Field("MetafieldReference", graphql_name="reference")
+ references = sgqlc.types.Field(
+ MetafieldReferenceConnection,
+ graphql_name="references",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ )
+ ),
+ )
+ type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
+ value = sgqlc.types.Field(String, graphql_name="value")
-class MetafieldStorefrontVisibilityDeletePayload(sgqlc.types.Type):
+class MetaobjectFieldDefinition(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("deleted_metafield_storefront_visibility_id", "user_errors")
- deleted_metafield_storefront_visibility_id = sgqlc.types.Field(ID, graphql_name="deletedMetafieldStorefrontVisibilityId")
- user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+ __field_names__ = ("description", "key", "name", "required", "type", "validations")
+ description = sgqlc.types.Field(String, graphql_name="description")
+ key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ required = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="required")
+ type = sgqlc.types.Field(sgqlc.types.non_null(MetafieldDefinitionType), graphql_name="type")
+ validations = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldDefinitionValidation))), graphql_name="validations"
+ )
-class MetafieldStorefrontVisibilityEdge(sgqlc.types.Type):
+class MetaobjectUpdatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("cursor", "node")
- cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null("MetafieldStorefrontVisibility"), graphql_name="node")
+ __field_names__ = ("metaobject", "user_errors")
+ metaobject = sgqlc.types.Field("Metaobject", graphql_name="metaobject")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectUserError"))), graphql_name="userErrors"
+ )
-class MetafieldsSetPayload(sgqlc.types.Type):
+class MetaobjectUpsertPayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("metafields", "user_errors")
- metafields = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("Metafield")), graphql_name="metafields")
+ __field_names__ = ("metaobject", "user_errors")
+ metaobject = sgqlc.types.Field("Metaobject", graphql_name="metaobject")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetafieldsSetUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectUserError"))), graphql_name="userErrors"
)
@@ -10470,10 +13014,8 @@ class MoneyV2(sgqlc.types.Type):
class Mutation(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = (
- "app_credit_create",
+ "abandonment_update_activities_delivery_statuses",
"app_purchase_one_time_create",
- "app_revenue_attribution_record_create",
- "app_revenue_attribution_record_delete",
"app_subscription_cancel",
"app_subscription_create",
"app_subscription_line_item_update",
@@ -10483,6 +13025,12 @@ class Mutation(sgqlc.types.Type):
"bulk_operation_run_mutation",
"bulk_operation_run_query",
"bulk_product_resource_feedback_create",
+ "cart_transform_create",
+ "cart_transform_delete",
+ "catalog_context_update",
+ "catalog_create",
+ "catalog_delete",
+ "catalog_update",
"collection_add_products",
"collection_add_products_v2",
"collection_create",
@@ -10498,8 +13046,10 @@ class Mutation(sgqlc.types.Type):
"company_contact_assign_roles",
"company_contact_create",
"company_contact_delete",
+ "company_contact_remove_from_company",
"company_contact_revoke_role",
"company_contact_revoke_roles",
+ "company_contact_send_welcome_email",
"company_contact_update",
"company_contacts_delete",
"company_create",
@@ -10522,8 +13072,11 @@ class Mutation(sgqlc.types.Type):
"customer_delete",
"customer_email_marketing_consent_update",
"customer_generate_account_activation_url",
+ "customer_merge",
+ "customer_payment_method_create_from_duplication_data",
"customer_payment_method_credit_card_create",
"customer_payment_method_credit_card_update",
+ "customer_payment_method_get_duplication_data",
"customer_payment_method_get_update_url",
"customer_payment_method_paypal_billing_agreement_create",
"customer_payment_method_paypal_billing_agreement_update",
@@ -10532,10 +13085,16 @@ class Mutation(sgqlc.types.Type):
"customer_payment_method_send_update_email",
"customer_remove_tax_exemptions",
"customer_replace_tax_exemptions",
+ "customer_segment_members_query_create",
"customer_sms_marketing_consent_update",
"customer_update",
"customer_update_default_address",
"delegate_access_token_create",
+ "delegate_access_token_destroy",
+ "delivery_customization_activation",
+ "delivery_customization_create",
+ "delivery_customization_delete",
+ "delivery_customization_update",
"delivery_profile_create",
"delivery_profile_remove",
"delivery_profile_update",
@@ -10581,27 +13140,34 @@ class Mutation(sgqlc.types.Type):
"draft_order_invoice_preview",
"draft_order_invoice_send",
"draft_order_update",
+ "event_bridge_server_pixel_update",
"event_bridge_webhook_subscription_create",
"event_bridge_webhook_subscription_update",
+ "file_acknowledge_update_failed",
"file_create",
"file_delete",
"file_update",
"flow_trigger_receive",
"fulfillment_cancel",
"fulfillment_create_v2",
+ "fulfillment_event_create",
"fulfillment_order_accept_cancellation_request",
"fulfillment_order_accept_fulfillment_request",
"fulfillment_order_cancel",
"fulfillment_order_close",
"fulfillment_order_hold",
+ "fulfillment_order_line_items_prepared_for_pickup",
+ "fulfillment_order_merge",
"fulfillment_order_move",
"fulfillment_order_open",
"fulfillment_order_reject_cancellation_request",
"fulfillment_order_reject_fulfillment_request",
"fulfillment_order_release_hold",
"fulfillment_order_reschedule",
+ "fulfillment_order_split",
"fulfillment_order_submit_cancellation_request",
"fulfillment_order_submit_fulfillment_request",
+ "fulfillment_orders_release_holds",
"fulfillment_orders_set_fulfillment_deadline",
"fulfillment_service_create",
"fulfillment_service_delete",
@@ -10611,16 +13177,19 @@ class Mutation(sgqlc.types.Type):
"gift_card_disable",
"gift_card_update",
"inventory_activate",
- "inventory_adjust_quantity",
- "inventory_bulk_adjust_quantity_at_location",
+ "inventory_adjust_quantities",
"inventory_bulk_toggle_activation",
"inventory_deactivate",
"inventory_item_update",
+ "inventory_move_quantities",
+ "inventory_set_on_hand_quantities",
"location_activate",
"location_add",
"location_deactivate",
"location_delete",
"location_edit",
+ "location_local_pickup_disable",
+ "location_local_pickup_enable",
"market_create",
"market_currency_settings_update",
"market_delete",
@@ -10643,9 +13212,15 @@ class Mutation(sgqlc.types.Type):
"metafield_definition_unpin",
"metafield_definition_update",
"metafield_delete",
- "metafield_storefront_visibility_create",
- "metafield_storefront_visibility_delete",
"metafields_set",
+ "metaobject_bulk_delete",
+ "metaobject_create",
+ "metaobject_definition_create",
+ "metaobject_definition_delete",
+ "metaobject_definition_update",
+ "metaobject_delete",
+ "metaobject_update",
+ "metaobject_upsert",
"order_capture",
"order_close",
"order_create_mandate_payment",
@@ -10660,35 +13235,34 @@ class Mutation(sgqlc.types.Type):
"order_mark_as_paid",
"order_open",
"order_update",
+ "payment_customization_activation",
+ "payment_customization_create",
+ "payment_customization_delete",
+ "payment_customization_update",
+ "payment_reminder_send",
"payment_terms_create",
"payment_terms_delete",
"payment_terms_update",
"price_list_create",
"price_list_delete",
"price_list_fixed_prices_add",
+ "price_list_fixed_prices_by_product_update",
"price_list_fixed_prices_delete",
+ "price_list_fixed_prices_update",
"price_list_update",
- "price_rule_activate",
- "price_rule_create",
- "price_rule_deactivate",
- "price_rule_delete",
- "price_rule_discount_code_create",
- "price_rule_discount_code_update",
- "price_rule_update",
- "private_metafield_delete",
- "private_metafield_upsert",
- "product_append_images",
"product_change_status",
"product_create",
"product_create_media",
"product_delete",
- "product_delete_images",
+ "product_delete_async",
"product_delete_media",
"product_duplicate",
- "product_image_update",
+ "product_duplicate_async_v2",
+ "product_feed_create",
+ "product_feed_delete",
+ "product_full_sync",
"product_join_selling_plan_groups",
"product_leave_selling_plan_groups",
- "product_reorder_images",
"product_reorder_media",
"product_update",
"product_update_media",
@@ -10698,18 +13272,36 @@ class Mutation(sgqlc.types.Type):
"product_variant_detach_media",
"product_variant_join_selling_plan_groups",
"product_variant_leave_selling_plan_groups",
+ "product_variant_relationship_bulk_update",
"product_variant_update",
"product_variants_bulk_create",
"product_variants_bulk_delete",
"product_variants_bulk_reorder",
"product_variants_bulk_update",
+ "pub_sub_server_pixel_update",
"pub_sub_webhook_subscription_create",
"pub_sub_webhook_subscription_update",
+ "publication_create",
+ "publication_delete",
+ "publication_update",
"publishable_publish",
"publishable_publish_to_current_channel",
"publishable_unpublish",
"publishable_unpublish_to_current_channel",
+ "quantity_rules_add",
+ "quantity_rules_delete",
"refund_create",
+ "return_approve_request",
+ "return_cancel",
+ "return_close",
+ "return_create",
+ "return_decline_request",
+ "return_refund",
+ "return_reopen",
+ "return_request",
+ "reverse_delivery_create_with_shipping",
+ "reverse_delivery_shipping_update",
+ "reverse_fulfillment_order_dispose",
"saved_search_create",
"saved_search_delete",
"saved_search_update",
@@ -10726,6 +13318,8 @@ class Mutation(sgqlc.types.Type):
"selling_plan_group_remove_product_variants",
"selling_plan_group_remove_products",
"selling_plan_group_update",
+ "server_pixel_create",
+ "server_pixel_delete",
"shipping_package_delete",
"shipping_package_make_default",
"shipping_package_update",
@@ -10733,8 +13327,10 @@ class Mutation(sgqlc.types.Type):
"shop_locale_enable",
"shop_locale_update",
"shop_policy_update",
+ "shop_resource_feedback_create",
"staged_uploads_create",
"standard_metafield_definition_enable",
+ "standard_metaobject_definition_enable",
"storefront_access_token_create",
"storefront_access_token_delete",
"subscription_billing_attempt_create",
@@ -10744,7 +13340,9 @@ class Mutation(sgqlc.types.Type):
"subscription_billing_cycle_edit_delete",
"subscription_billing_cycle_edits_delete",
"subscription_billing_cycle_schedule_edit",
+ "subscription_contract_atomic_create",
"subscription_contract_create",
+ "subscription_contract_product_change",
"subscription_contract_set_next_billing_date",
"subscription_contract_update",
"subscription_draft_commit",
@@ -10760,6 +13358,7 @@ class Mutation(sgqlc.types.Type):
"subscription_draft_update",
"tags_add",
"tags_remove",
+ "tax_app_configure",
"translations_register",
"translations_remove",
"url_redirect_bulk_delete_all",
@@ -10778,17 +13377,19 @@ class Mutation(sgqlc.types.Type):
"webhook_subscription_delete",
"webhook_subscription_update",
)
- app_credit_create = sgqlc.types.Field(
- AppCreditCreatePayload,
- graphql_name="appCreditCreate",
+ abandonment_update_activities_delivery_statuses = sgqlc.types.Field(
+ AbandonmentUpdateActivitiesDeliveryStatusesPayload,
+ graphql_name="abandonmentUpdateActivitiesDeliveryStatuses",
args=sgqlc.types.ArgDict(
(
+ ("abandonment_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="abandonmentId", default=None)),
+ ("marketing_activity_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="marketingActivityId", default=None)),
(
- "description",
- sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="description", default=None),
+ "delivery_status",
+ sgqlc.types.Arg(sgqlc.types.non_null(AbandonmentDeliveryState), graphql_name="deliveryStatus", default=None),
),
- ("amount", sgqlc.types.Arg(sgqlc.types.non_null(MoneyInput), graphql_name="amount", default=None)),
- ("test", sgqlc.types.Arg(Boolean, graphql_name="test", default=False)),
+ ("delivered_at", sgqlc.types.Arg(DateTime, graphql_name="deliveredAt", default=None)),
+ ("delivery_status_change_reason", sgqlc.types.Arg(String, graphql_name="deliveryStatusChangeReason", default=None)),
)
),
)
@@ -10804,27 +13405,6 @@ class Mutation(sgqlc.types.Type):
)
),
)
- app_revenue_attribution_record_create = sgqlc.types.Field(
- AppRevenueAttributionRecordCreatePayload,
- graphql_name="appRevenueAttributionRecordCreate",
- args=sgqlc.types.ArgDict(
- (
- (
- "app_revenue_attribution_record",
- sgqlc.types.Arg(
- sgqlc.types.non_null(AppRevenueAttributionRecordInput),
- graphql_name="appRevenueAttributionRecord",
- default=None,
- ),
- ),
- )
- ),
- )
- app_revenue_attribution_record_delete = sgqlc.types.Field(
- AppRevenueAttributionRecordDeletePayload,
- graphql_name="appRevenueAttributionRecordDelete",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
- )
app_subscription_cancel = sgqlc.types.Field(
AppSubscriptionCancelPayload,
graphql_name="appSubscriptionCancel",
@@ -10865,10 +13445,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "capped_amount",
- sgqlc.types.Arg(sgqlc.types.non_null(MoneyInput), graphql_name="cappedAmount", default=None),
- ),
+ ("capped_amount", sgqlc.types.Arg(sgqlc.types.non_null(MoneyInput), graphql_name="cappedAmount", default=None)),
)
),
)
@@ -10892,10 +13469,8 @@ class Mutation(sgqlc.types.Type):
sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="subscriptionLineItemId", default=None),
),
("price", sgqlc.types.Arg(sgqlc.types.non_null(MoneyInput), graphql_name="price", default=None)),
- (
- "description",
- sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="description", default=None),
- ),
+ ("description", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="description", default=None)),
+ ("idempotency_key", sgqlc.types.Arg(String, graphql_name="idempotencyKey", default=None)),
)
),
)
@@ -10910,10 +13485,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("mutation", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="mutation", default=None)),
- (
- "staged_upload_path",
- sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="stagedUploadPath", default=None),
- ),
+ ("staged_upload_path", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="stagedUploadPath", default=None)),
("client_identifier", sgqlc.types.Arg(String, graphql_name="clientIdentifier", default=None)),
)
),
@@ -10939,6 +13511,56 @@ class Mutation(sgqlc.types.Type):
)
),
)
+ cart_transform_create = sgqlc.types.Field(
+ CartTransformCreatePayload,
+ graphql_name="cartTransformCreate",
+ args=sgqlc.types.ArgDict(
+ (("function_id", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="functionId", default=None)),)
+ ),
+ )
+ cart_transform_delete = sgqlc.types.Field(
+ CartTransformDeletePayload,
+ graphql_name="cartTransformDelete",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ catalog_context_update = sgqlc.types.Field(
+ CatalogContextUpdatePayload,
+ graphql_name="catalogContextUpdate",
+ args=sgqlc.types.ArgDict(
+ (
+ ("catalog_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="catalogId", default=None)),
+ ("contexts_to_add", sgqlc.types.Arg(CatalogContextInput, graphql_name="contextsToAdd", default=None)),
+ ("contexts_to_remove", sgqlc.types.Arg(CatalogContextInput, graphql_name="contextsToRemove", default=None)),
+ )
+ ),
+ )
+ catalog_create = sgqlc.types.Field(
+ CatalogCreatePayload,
+ graphql_name="catalogCreate",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(CatalogCreateInput), graphql_name="input", default=None)),)
+ ),
+ )
+ catalog_delete = sgqlc.types.Field(
+ CatalogDeletePayload,
+ graphql_name="catalogDelete",
+ args=sgqlc.types.ArgDict(
+ (
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
+ ("delete_dependent_resources", sgqlc.types.Arg(Boolean, graphql_name="deleteDependentResources", default=False)),
+ )
+ ),
+ )
+ catalog_update = sgqlc.types.Field(
+ CatalogUpdatePayload,
+ graphql_name="catalogUpdate",
+ args=sgqlc.types.ArgDict(
+ (
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(CatalogUpdateInput), graphql_name="input", default=None)),
+ )
+ ),
+ )
collection_add_products = sgqlc.types.Field(
CollectionAddProductsPayload,
graphql_name="collectionAddProducts",
@@ -10948,9 +13570,7 @@ class Mutation(sgqlc.types.Type):
(
"product_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="productIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="productIds", default=None
),
),
)
@@ -10965,9 +13585,7 @@ class Mutation(sgqlc.types.Type):
(
"product_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="productIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="productIds", default=None
),
),
)
@@ -10982,12 +13600,7 @@ class Mutation(sgqlc.types.Type):
CollectionDeletePayload,
graphql_name="collectionDelete",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(CollectionDeleteInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(CollectionDeleteInput), graphql_name="input", default=None)),)
),
)
collection_remove_products = sgqlc.types.Field(
@@ -10999,9 +13612,7 @@ class Mutation(sgqlc.types.Type):
(
"product_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="productIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="productIds", default=None
),
),
)
@@ -11016,9 +13627,7 @@ class Mutation(sgqlc.types.Type):
(
"moves",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MoveInput))),
- graphql_name="moves",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MoveInput))), graphql_name="moves", default=None
),
),
)
@@ -11037,9 +13646,7 @@ class Mutation(sgqlc.types.Type):
(
"company_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="companyIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="companyIds", default=None
),
),
)
@@ -11066,10 +13673,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("company_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyId", default=None)),
- (
- "company_contact_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None),
- ),
+ ("company_contact_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None)),
)
),
)
@@ -11078,18 +13682,9 @@ class Mutation(sgqlc.types.Type):
graphql_name="companyContactAssignRole",
args=sgqlc.types.ArgDict(
(
- (
- "company_contact_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None),
- ),
- (
- "company_contact_role_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactRoleId", default=None),
- ),
- (
- "company_location_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None),
- ),
+ ("company_contact_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None)),
+ ("company_contact_role_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactRoleId", default=None)),
+ ("company_location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None)),
)
),
)
@@ -11098,10 +13693,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="companyContactAssignRoles",
args=sgqlc.types.ArgDict(
(
- (
- "company_contact_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None),
- ),
+ ("company_contact_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None)),
(
"roles_to_assign",
sgqlc.types.Arg(
@@ -11119,10 +13711,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("company_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyId", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(CompanyContactInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(CompanyContactInput), graphql_name="input", default=None)),
)
),
)
@@ -11130,12 +13719,14 @@ class Mutation(sgqlc.types.Type):
CompanyContactDeletePayload,
graphql_name="companyContactDelete",
args=sgqlc.types.ArgDict(
- (
- (
- "company_contact_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None),
- ),
- )
+ (("company_contact_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None)),)
+ ),
+ )
+ company_contact_remove_from_company = sgqlc.types.Field(
+ CompanyContactRemoveFromCompanyPayload,
+ graphql_name="companyContactRemoveFromCompany",
+ args=sgqlc.types.ArgDict(
+ (("company_contact_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None)),)
),
)
company_contact_revoke_role = sgqlc.types.Field(
@@ -11143,10 +13734,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="companyContactRevokeRole",
args=sgqlc.types.ArgDict(
(
- (
- "company_contact_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None),
- ),
+ ("company_contact_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None)),
(
"company_contact_role_assignment_id",
sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactRoleAssignmentId", default=None),
@@ -11159,10 +13747,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="companyContactRevokeRoles",
args=sgqlc.types.ArgDict(
(
- (
- "company_contact_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None),
- ),
+ ("company_contact_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None)),
(
"role_assignment_ids",
sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="roleAssignmentIds", default=None),
@@ -11171,19 +13756,23 @@ class Mutation(sgqlc.types.Type):
)
),
)
+ company_contact_send_welcome_email = sgqlc.types.Field(
+ CompanyContactSendWelcomeEmailPayload,
+ graphql_name="companyContactSendWelcomeEmail",
+ args=sgqlc.types.ArgDict(
+ (
+ ("company_contact_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None)),
+ ("email", sgqlc.types.Arg(EmailInput, graphql_name="email", default=None)),
+ )
+ ),
+ )
company_contact_update = sgqlc.types.Field(
CompanyContactUpdatePayload,
graphql_name="companyContactUpdate",
args=sgqlc.types.ArgDict(
(
- (
- "company_contact_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None),
- ),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(CompanyContactInput), graphql_name="input", default=None),
- ),
+ ("company_contact_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyContactId", default=None)),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(CompanyContactInput), graphql_name="input", default=None)),
)
),
)
@@ -11195,9 +13784,7 @@ class Mutation(sgqlc.types.Type):
(
"company_contact_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="companyContactIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="companyContactIds", default=None
),
),
)
@@ -11221,10 +13808,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="locationId", default=None)),
- (
- "address",
- sgqlc.types.Arg(sgqlc.types.non_null(CompanyAddressInput), graphql_name="address", default=None),
- ),
+ ("address", sgqlc.types.Arg(sgqlc.types.non_null(CompanyAddressInput), graphql_name="address", default=None)),
(
"address_types",
sgqlc.types.Arg(
@@ -11241,10 +13825,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="companyLocationAssignRoles",
args=sgqlc.types.ArgDict(
(
- (
- "company_location_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None),
- ),
+ ("company_location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None)),
(
"roles_to_assign",
sgqlc.types.Arg(
@@ -11261,10 +13842,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="companyLocationAssignTaxExemptions",
args=sgqlc.types.ArgDict(
(
- (
- "company_location_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None),
- ),
+ ("company_location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None)),
(
"tax_exemptions",
sgqlc.types.Arg(
@@ -11282,10 +13860,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("company_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyId", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(CompanyLocationInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(CompanyLocationInput), graphql_name="input", default=None)),
)
),
)
@@ -11303,12 +13878,7 @@ class Mutation(sgqlc.types.Type):
CompanyLocationDeletePayload,
graphql_name="companyLocationDelete",
args=sgqlc.types.ArgDict(
- (
- (
- "company_location_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None),
- ),
- )
+ (("company_location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None)),)
),
)
company_location_revoke_roles = sgqlc.types.Field(
@@ -11316,16 +13886,11 @@ class Mutation(sgqlc.types.Type):
graphql_name="companyLocationRevokeRoles",
args=sgqlc.types.ArgDict(
(
- (
- "company_location_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None),
- ),
+ ("company_location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None)),
(
"roles_to_revoke",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="rolesToRevoke",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="rolesToRevoke", default=None
),
),
)
@@ -11336,10 +13901,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="companyLocationRevokeTaxExemptions",
args=sgqlc.types.ArgDict(
(
- (
- "company_location_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None),
- ),
+ ("company_location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None)),
(
"tax_exemptions",
sgqlc.types.Arg(
@@ -11355,12 +13917,7 @@ class Mutation(sgqlc.types.Type):
CompanyLocationRevokeTaxRegistrationPayload,
graphql_name="companyLocationRevokeTaxRegistration",
args=sgqlc.types.ArgDict(
- (
- (
- "company_location_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None),
- ),
- )
+ (("company_location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None)),)
),
)
company_location_update = sgqlc.types.Field(
@@ -11368,14 +13925,8 @@ class Mutation(sgqlc.types.Type):
graphql_name="companyLocationUpdate",
args=sgqlc.types.ArgDict(
(
- (
- "company_location_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None),
- ),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(CompanyLocationUpdateInput), graphql_name="input", default=None),
- ),
+ ("company_location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="companyLocationId", default=None)),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(CompanyLocationUpdateInput), graphql_name="input", default=None)),
)
),
)
@@ -11387,9 +13938,7 @@ class Mutation(sgqlc.types.Type):
(
"company_location_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="companyLocationIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="companyLocationIds", default=None
),
),
)
@@ -11445,21 +13994,45 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
(
- "input",
- sgqlc.types.Arg(
- sgqlc.types.non_null(CustomerEmailMarketingConsentUpdateInput),
- graphql_name="input",
- default=None,
- ),
+ "input",
+ sgqlc.types.Arg(sgqlc.types.non_null(CustomerEmailMarketingConsentUpdateInput), graphql_name="input", default=None),
+ ),
+ )
+ ),
+ )
+ customer_generate_account_activation_url = sgqlc.types.Field(
+ CustomerGenerateAccountActivationUrlPayload,
+ graphql_name="customerGenerateAccountActivationUrl",
+ args=sgqlc.types.ArgDict((("customer_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="customerId", default=None)),)),
+ )
+ customer_merge = sgqlc.types.Field(
+ CustomerMergePayload,
+ graphql_name="customerMerge",
+ args=sgqlc.types.ArgDict(
+ (
+ ("customer_one_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="customerOneId", default=None)),
+ ("customer_two_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="customerTwoId", default=None)),
+ ("override_fields", sgqlc.types.Arg(CustomerMergeOverrideFields, graphql_name="overrideFields", default=None)),
+ )
+ ),
+ )
+ customer_payment_method_create_from_duplication_data = sgqlc.types.Field(
+ CustomerPaymentMethodCreateFromDuplicationDataPayload,
+ graphql_name="customerPaymentMethodCreateFromDuplicationData",
+ args=sgqlc.types.ArgDict(
+ (
+ ("customer_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="customerId", default=None)),
+ (
+ "billing_address",
+ sgqlc.types.Arg(sgqlc.types.non_null(MailingAddressInput), graphql_name="billingAddress", default=None),
+ ),
+ (
+ "encrypted_duplication_data",
+ sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="encryptedDuplicationData", default=None),
),
)
),
)
- customer_generate_account_activation_url = sgqlc.types.Field(
- CustomerGenerateAccountActivationUrlPayload,
- graphql_name="customerGenerateAccountActivationUrl",
- args=sgqlc.types.ArgDict((("customer_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="customerId", default=None)),)),
- )
customer_payment_method_credit_card_create = sgqlc.types.Field(
CustomerPaymentMethodCreditCardCreatePayload,
graphql_name="customerPaymentMethodCreditCardCreate",
@@ -11488,6 +14061,20 @@ class Mutation(sgqlc.types.Type):
)
),
)
+ customer_payment_method_get_duplication_data = sgqlc.types.Field(
+ CustomerPaymentMethodGetDuplicationDataPayload,
+ graphql_name="customerPaymentMethodGetDuplicationData",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "customer_payment_method_id",
+ sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="customerPaymentMethodId", default=None),
+ ),
+ ("target_shop_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="targetShopId", default=None)),
+ ("target_customer_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="targetCustomerId", default=None)),
+ )
+ ),
+ )
customer_payment_method_get_update_url = sgqlc.types.Field(
CustomerPaymentMethodGetUpdateUrlPayload,
graphql_name="customerPaymentMethodGetUpdateUrl",
@@ -11507,10 +14094,7 @@ class Mutation(sgqlc.types.Type):
(
("customer_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="customerId", default=None)),
("billing_address", sgqlc.types.Arg(MailingAddressInput, graphql_name="billingAddress", default=None)),
- (
- "billing_agreement_id",
- sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="billingAgreementId", default=None),
- ),
+ ("billing_agreement_id", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="billingAgreementId", default=None)),
("inactive", sgqlc.types.Arg(Boolean, graphql_name="inactive", default=False)),
)
),
@@ -11536,11 +14120,7 @@ class Mutation(sgqlc.types.Type):
("customer_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="customerId", default=None)),
(
"remote_reference",
- sgqlc.types.Arg(
- sgqlc.types.non_null(CustomerPaymentMethodRemoteInput),
- graphql_name="remoteReference",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(CustomerPaymentMethodRemoteInput), graphql_name="remoteReference", default=None),
),
)
),
@@ -11604,16 +14184,18 @@ class Mutation(sgqlc.types.Type):
)
),
)
+ customer_segment_members_query_create = sgqlc.types.Field(
+ CustomerSegmentMembersQueryCreatePayload,
+ graphql_name="customerSegmentMembersQueryCreate",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(CustomerSegmentMembersQueryInput), graphql_name="input", default=None)),)
+ ),
+ )
customer_sms_marketing_consent_update = sgqlc.types.Field(
CustomerSmsMarketingConsentUpdatePayload,
graphql_name="customerSmsMarketingConsentUpdate",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(CustomerSmsMarketingConsentUpdateInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(CustomerSmsMarketingConsentUpdateInput), graphql_name="input", default=None)),)
),
)
customer_update = sgqlc.types.Field(
@@ -11634,27 +14216,67 @@ class Mutation(sgqlc.types.Type):
delegate_access_token_create = sgqlc.types.Field(
DelegateAccessTokenCreatePayload,
graphql_name="delegateAccessTokenCreate",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(DelegateAccessTokenInput), graphql_name="input", default=None)),)
+ ),
+ )
+ delegate_access_token_destroy = sgqlc.types.Field(
+ DelegateAccessTokenDestroyPayload,
+ graphql_name="delegateAccessTokenDestroy",
+ args=sgqlc.types.ArgDict(
+ (("access_token", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="accessToken", default=None)),)
+ ),
+ )
+ delivery_customization_activation = sgqlc.types.Field(
+ DeliveryCustomizationActivationPayload,
+ graphql_name="deliveryCustomizationActivation",
args=sgqlc.types.ArgDict(
(
(
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(DelegateAccessTokenInput), graphql_name="input", default=None),
+ "ids",
+ sgqlc.types.Arg(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="ids", default=None),
),
+ ("enabled", sgqlc.types.Arg(sgqlc.types.non_null(Boolean), graphql_name="enabled", default=None)),
)
),
)
- delivery_profile_create = sgqlc.types.Field(
- "deliveryProfileCreatePayload",
- graphql_name="deliveryProfileCreate",
+ delivery_customization_create = sgqlc.types.Field(
+ DeliveryCustomizationCreatePayload,
+ graphql_name="deliveryCustomizationCreate",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "delivery_customization",
+ sgqlc.types.Arg(sgqlc.types.non_null(DeliveryCustomizationInput), graphql_name="deliveryCustomization", default=None),
+ ),
+ )
+ ),
+ )
+ delivery_customization_delete = sgqlc.types.Field(
+ DeliveryCustomizationDeletePayload,
+ graphql_name="deliveryCustomizationDelete",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ delivery_customization_update = sgqlc.types.Field(
+ DeliveryCustomizationUpdatePayload,
+ graphql_name="deliveryCustomizationUpdate",
args=sgqlc.types.ArgDict(
(
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
(
- "profile",
- sgqlc.types.Arg(sgqlc.types.non_null(DeliveryProfileInput), graphql_name="profile", default=None),
+ "delivery_customization",
+ sgqlc.types.Arg(sgqlc.types.non_null(DeliveryCustomizationInput), graphql_name="deliveryCustomization", default=None),
),
)
),
)
+ delivery_profile_create = sgqlc.types.Field(
+ "deliveryProfileCreatePayload",
+ graphql_name="deliveryProfileCreate",
+ args=sgqlc.types.ArgDict(
+ (("profile", sgqlc.types.Arg(sgqlc.types.non_null(DeliveryProfileInput), graphql_name="profile", default=None)),)
+ ),
+ )
delivery_profile_remove = sgqlc.types.Field(
"deliveryProfileRemovePayload",
graphql_name="deliveryProfileRemove",
@@ -11666,14 +14288,8 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "profile",
- sgqlc.types.Arg(sgqlc.types.non_null(DeliveryProfileInput), graphql_name="profile", default=None),
- ),
- (
- "leave_legacy_mode_profiles",
- sgqlc.types.Arg(Boolean, graphql_name="leaveLegacyModeProfiles", default=None),
- ),
+ ("profile", sgqlc.types.Arg(sgqlc.types.non_null(DeliveryProfileInput), graphql_name="profile", default=None)),
+ ("leave_legacy_mode_profiles", sgqlc.types.Arg(Boolean, graphql_name="leaveLegacyModeProfiles", default=None)),
)
),
)
@@ -11681,12 +14297,7 @@ class Mutation(sgqlc.types.Type):
DeliverySettingUpdatePayload,
graphql_name="deliverySettingUpdate",
args=sgqlc.types.ArgDict(
- (
- (
- "setting",
- sgqlc.types.Arg(sgqlc.types.non_null(DeliverySettingInput), graphql_name="setting", default=None),
- ),
- )
+ (("setting", sgqlc.types.Arg(sgqlc.types.non_null(DeliverySettingInput), graphql_name="setting", default=None)),)
),
)
delivery_shipping_origin_assign = sgqlc.types.Field(
@@ -11706,11 +14317,7 @@ class Mutation(sgqlc.types.Type):
(
(
"automatic_app_discount",
- sgqlc.types.Arg(
- sgqlc.types.non_null(DiscountAutomaticAppInput),
- graphql_name="automaticAppDiscount",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(DiscountAutomaticAppInput), graphql_name="automaticAppDiscount", default=None),
),
)
),
@@ -11723,11 +14330,7 @@ class Mutation(sgqlc.types.Type):
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
(
"automatic_app_discount",
- sgqlc.types.Arg(
- sgqlc.types.non_null(DiscountAutomaticAppInput),
- graphql_name="automaticAppDiscount",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(DiscountAutomaticAppInput), graphql_name="automaticAppDiscount", default=None),
),
)
),
@@ -11739,11 +14342,7 @@ class Mutation(sgqlc.types.Type):
(
(
"automatic_basic_discount",
- sgqlc.types.Arg(
- sgqlc.types.non_null(DiscountAutomaticBasicInput),
- graphql_name="automaticBasicDiscount",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(DiscountAutomaticBasicInput), graphql_name="automaticBasicDiscount", default=None),
),
)
),
@@ -11756,11 +14355,7 @@ class Mutation(sgqlc.types.Type):
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
(
"automatic_basic_discount",
- sgqlc.types.Arg(
- sgqlc.types.non_null(DiscountAutomaticBasicInput),
- graphql_name="automaticBasicDiscount",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(DiscountAutomaticBasicInput), graphql_name="automaticBasicDiscount", default=None),
),
)
),
@@ -11772,10 +14367,7 @@ class Mutation(sgqlc.types.Type):
(
("search", sgqlc.types.Arg(String, graphql_name="search", default=None)),
("saved_search_id", sgqlc.types.Arg(ID, graphql_name="savedSearchId", default=None)),
- (
- "ids",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None),
- ),
+ ("ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None)),
)
),
)
@@ -11786,11 +14378,7 @@ class Mutation(sgqlc.types.Type):
(
(
"automatic_bxgy_discount",
- sgqlc.types.Arg(
- sgqlc.types.non_null(DiscountAutomaticBxgyInput),
- graphql_name="automaticBxgyDiscount",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(DiscountAutomaticBxgyInput), graphql_name="automaticBxgyDiscount", default=None),
),
)
),
@@ -11803,11 +14391,7 @@ class Mutation(sgqlc.types.Type):
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
(
"automatic_bxgy_discount",
- sgqlc.types.Arg(
- sgqlc.types.non_null(DiscountAutomaticBxgyInput),
- graphql_name="automaticBxgyDiscount",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(DiscountAutomaticBxgyInput), graphql_name="automaticBxgyDiscount", default=None),
),
)
),
@@ -11884,10 +14468,7 @@ class Mutation(sgqlc.types.Type):
(
("search", sgqlc.types.Arg(String, graphql_name="search", default=None)),
("saved_search_id", sgqlc.types.Arg(ID, graphql_name="savedSearchId", default=None)),
- (
- "ids",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None),
- ),
+ ("ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None)),
)
),
)
@@ -11898,10 +14479,7 @@ class Mutation(sgqlc.types.Type):
(
("search", sgqlc.types.Arg(String, graphql_name="search", default=None)),
("saved_search_id", sgqlc.types.Arg(ID, graphql_name="savedSearchId", default=None)),
- (
- "ids",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None),
- ),
+ ("ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None)),
)
),
)
@@ -11912,10 +14490,7 @@ class Mutation(sgqlc.types.Type):
(
("search", sgqlc.types.Arg(String, graphql_name="search", default=None)),
("saved_search_id", sgqlc.types.Arg(ID, graphql_name="savedSearchId", default=None)),
- (
- "ids",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None),
- ),
+ ("ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None)),
)
),
)
@@ -11962,9 +14537,7 @@ class Mutation(sgqlc.types.Type):
(
"free_shipping_code_discount",
sgqlc.types.Arg(
- sgqlc.types.non_null(DiscountCodeFreeShippingInput),
- graphql_name="freeShippingCodeDiscount",
- default=None,
+ sgqlc.types.non_null(DiscountCodeFreeShippingInput), graphql_name="freeShippingCodeDiscount", default=None
),
),
)
@@ -11979,9 +14552,7 @@ class Mutation(sgqlc.types.Type):
(
"free_shipping_code_discount",
sgqlc.types.Arg(
- sgqlc.types.non_null(DiscountCodeFreeShippingInput),
- graphql_name="freeShippingCodeDiscount",
- default=None,
+ sgqlc.types.non_null(DiscountCodeFreeShippingInput), graphql_name="freeShippingCodeDiscount", default=None
),
),
)
@@ -11995,10 +14566,7 @@ class Mutation(sgqlc.types.Type):
("discount_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="discountId", default=None)),
("search", sgqlc.types.Arg(String, graphql_name="search", default=None)),
("saved_search_id", sgqlc.types.Arg(ID, graphql_name="savedSearchId", default=None)),
- (
- "ids",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None),
- ),
+ ("ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None)),
)
),
)
@@ -12027,11 +14595,7 @@ class Mutation(sgqlc.types.Type):
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
(
"input",
- sgqlc.types.Arg(
- sgqlc.types.non_null(ShopifyPaymentsDisputeEvidenceUpdateInput),
- graphql_name="input",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(ShopifyPaymentsDisputeEvidenceUpdateInput), graphql_name="input", default=None),
),
)
),
@@ -12043,16 +14607,11 @@ class Mutation(sgqlc.types.Type):
(
("search", sgqlc.types.Arg(String, graphql_name="search", default=None)),
("saved_search_id", sgqlc.types.Arg(ID, graphql_name="savedSearchId", default=None)),
- (
- "ids",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None),
- ),
+ ("ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None)),
(
"tags",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))),
- graphql_name="tags",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="tags", default=None
),
),
)
@@ -12065,10 +14624,7 @@ class Mutation(sgqlc.types.Type):
(
("search", sgqlc.types.Arg(String, graphql_name="search", default=None)),
("saved_search_id", sgqlc.types.Arg(ID, graphql_name="savedSearchId", default=None)),
- (
- "ids",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None),
- ),
+ ("ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None)),
)
),
)
@@ -12079,16 +14635,11 @@ class Mutation(sgqlc.types.Type):
(
("search", sgqlc.types.Arg(String, graphql_name="search", default=None)),
("saved_search_id", sgqlc.types.Arg(ID, graphql_name="savedSearchId", default=None)),
- (
- "ids",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None),
- ),
+ ("ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="ids", default=None)),
(
"tags",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))),
- graphql_name="tags",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="tags", default=None
),
),
)
@@ -12130,12 +14681,7 @@ class Mutation(sgqlc.types.Type):
DraftOrderDeletePayload,
graphql_name="draftOrderDelete",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(DraftOrderDeleteInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(DraftOrderDeleteInput), graphql_name="input", default=None)),)
),
)
draft_order_duplicate = sgqlc.types.Field(
@@ -12173,21 +14719,21 @@ class Mutation(sgqlc.types.Type):
)
),
)
+ event_bridge_server_pixel_update = sgqlc.types.Field(
+ EventBridgeServerPixelUpdatePayload,
+ graphql_name="eventBridgeServerPixelUpdate",
+ args=sgqlc.types.ArgDict((("arn", sgqlc.types.Arg(sgqlc.types.non_null(ARN), graphql_name="arn", default=None)),)),
+ )
event_bridge_webhook_subscription_create = sgqlc.types.Field(
EventBridgeWebhookSubscriptionCreatePayload,
graphql_name="eventBridgeWebhookSubscriptionCreate",
args=sgqlc.types.ArgDict(
(
- (
- "topic",
- sgqlc.types.Arg(sgqlc.types.non_null(WebhookSubscriptionTopic), graphql_name="topic", default=None),
- ),
+ ("topic", sgqlc.types.Arg(sgqlc.types.non_null(WebhookSubscriptionTopic), graphql_name="topic", default=None)),
(
"webhook_subscription",
sgqlc.types.Arg(
- sgqlc.types.non_null(EventBridgeWebhookSubscriptionInput),
- graphql_name="webhookSubscription",
- default=None,
+ sgqlc.types.non_null(EventBridgeWebhookSubscriptionInput), graphql_name="webhookSubscription", default=None
),
),
)
@@ -12202,9 +14748,21 @@ class Mutation(sgqlc.types.Type):
(
"webhook_subscription",
sgqlc.types.Arg(
- sgqlc.types.non_null(EventBridgeWebhookSubscriptionInput),
- graphql_name="webhookSubscription",
- default=None,
+ sgqlc.types.non_null(EventBridgeWebhookSubscriptionInput), graphql_name="webhookSubscription", default=None
+ ),
+ ),
+ )
+ ),
+ )
+ file_acknowledge_update_failed = sgqlc.types.Field(
+ FileAcknowledgeUpdateFailedPayload,
+ graphql_name="fileAcknowledgeUpdateFailed",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "file_ids",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="fileIds", default=None
),
),
)
@@ -12218,9 +14776,7 @@ class Mutation(sgqlc.types.Type):
(
"files",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FileCreateInput))),
- graphql_name="files",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FileCreateInput))), graphql_name="files", default=None
),
),
)
@@ -12234,9 +14790,7 @@ class Mutation(sgqlc.types.Type):
(
"file_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="fileIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="fileIds", default=None
),
),
)
@@ -12250,9 +14804,7 @@ class Mutation(sgqlc.types.Type):
(
"files",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FileUpdateInput))),
- graphql_name="files",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FileUpdateInput))), graphql_name="files", default=None
),
),
)
@@ -12271,13 +14823,22 @@ class Mutation(sgqlc.types.Type):
fulfillment_create_v2 = sgqlc.types.Field(
FulfillmentCreateV2Payload,
graphql_name="fulfillmentCreateV2",
+ args=sgqlc.types.ArgDict(
+ (
+ ("fulfillment", sgqlc.types.Arg(sgqlc.types.non_null(FulfillmentV2Input), graphql_name="fulfillment", default=None)),
+ ("message", sgqlc.types.Arg(String, graphql_name="message", default=None)),
+ )
+ ),
+ )
+ fulfillment_event_create = sgqlc.types.Field(
+ FulfillmentEventCreatePayload,
+ graphql_name="fulfillmentEventCreate",
args=sgqlc.types.ArgDict(
(
(
- "fulfillment",
- sgqlc.types.Arg(sgqlc.types.non_null(FulfillmentV2Input), graphql_name="fulfillment", default=None),
+ "fulfillment_event",
+ sgqlc.types.Arg(sgqlc.types.non_null(FulfillmentEventInput), graphql_name="fulfillmentEvent", default=None),
),
- ("message", sgqlc.types.Arg(String, graphql_name="message", default=None)),
)
),
)
@@ -12329,15 +14890,50 @@ class Mutation(sgqlc.types.Type):
)
),
)
+ fulfillment_order_line_items_prepared_for_pickup = sgqlc.types.Field(
+ FulfillmentOrderLineItemsPreparedForPickupPayload,
+ graphql_name="fulfillmentOrderLineItemsPreparedForPickup",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "input",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(FulfillmentOrderLineItemsPreparedForPickupInput), graphql_name="input", default=None
+ ),
+ ),
+ )
+ ),
+ )
+ fulfillment_order_merge = sgqlc.types.Field(
+ FulfillmentOrderMergePayload,
+ graphql_name="fulfillmentOrderMerge",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "fulfillment_order_merge_inputs",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderMergeInput))),
+ graphql_name="fulfillmentOrderMergeInputs",
+ default=None,
+ ),
+ ),
+ )
+ ),
+ )
fulfillment_order_move = sgqlc.types.Field(
FulfillmentOrderMovePayload,
graphql_name="fulfillmentOrderMove",
args=sgqlc.types.ArgDict(
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
+ ("new_location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="newLocationId", default=None)),
(
- "new_location_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="newLocationId", default=None),
+ "fulfillment_order_line_items",
+ sgqlc.types.Arg(
+ sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderLineItemInput)),
+ graphql_name="fulfillmentOrderLineItems",
+ default=None,
+ ),
),
)
),
@@ -12368,9 +14964,7 @@ class Mutation(sgqlc.types.Type):
(
"line_items",
sgqlc.types.Arg(
- sgqlc.types.list_of(sgqlc.types.non_null(IncomingRequestLineItemInput)),
- graphql_name="lineItems",
- default=None,
+ sgqlc.types.list_of(sgqlc.types.non_null(IncomingRequestLineItemInput)), graphql_name="lineItems", default=None
),
),
)
@@ -12379,7 +14973,12 @@ class Mutation(sgqlc.types.Type):
fulfillment_order_release_hold = sgqlc.types.Field(
FulfillmentOrderReleaseHoldPayload,
graphql_name="fulfillmentOrderReleaseHold",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ args=sgqlc.types.ArgDict(
+ (
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
+ ("external_id", sgqlc.types.Arg(String, graphql_name="externalId", default=None)),
+ )
+ ),
)
fulfillment_order_reschedule = sgqlc.types.Field(
FulfillmentOrderReschedulePayload,
@@ -12391,6 +14990,22 @@ class Mutation(sgqlc.types.Type):
)
),
)
+ fulfillment_order_split = sgqlc.types.Field(
+ FulfillmentOrderSplitPayload,
+ graphql_name="fulfillmentOrderSplit",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "fulfillment_order_splits",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderSplitInput))),
+ graphql_name="fulfillmentOrderSplits",
+ default=None,
+ ),
+ ),
+ )
+ ),
+ )
fulfillment_order_submit_cancellation_request = sgqlc.types.Field(
FulfillmentOrderSubmitCancellationRequestPayload,
graphql_name="fulfillmentOrderSubmitCancellationRequest",
@@ -12421,6 +15036,19 @@ class Mutation(sgqlc.types.Type):
)
),
)
+ fulfillment_orders_release_holds = sgqlc.types.Field(
+ FulfillmentOrdersReleaseHoldsPayload,
+ graphql_name="fulfillmentOrdersReleaseHolds",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "ids",
+ sgqlc.types.Arg(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="ids", default=None),
+ ),
+ ("external_id", sgqlc.types.Arg(String, graphql_name="externalId", default=None)),
+ )
+ ),
+ )
fulfillment_orders_set_fulfillment_deadline = sgqlc.types.Field(
FulfillmentOrdersSetFulfillmentDeadlinePayload,
graphql_name="fulfillmentOrdersSetFulfillmentDeadline",
@@ -12434,10 +15062,7 @@ class Mutation(sgqlc.types.Type):
default=None,
),
),
- (
- "fulfillment_deadline",
- sgqlc.types.Arg(sgqlc.types.non_null(DateTime), graphql_name="fulfillmentDeadline", default=None),
- ),
+ ("fulfillment_deadline", sgqlc.types.Arg(sgqlc.types.non_null(DateTime), graphql_name="fulfillmentDeadline", default=None)),
)
),
)
@@ -12447,11 +15072,11 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("name", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="name", default=None)),
- ("callback_url", sgqlc.types.Arg(URL, graphql_name="callbackUrl", default=None)),
+ ("callback_url", sgqlc.types.Arg(sgqlc.types.non_null(URL), graphql_name="callbackUrl", default=None)),
("tracking_support", sgqlc.types.Arg(Boolean, graphql_name="trackingSupport", default=False)),
(
"fulfillment_orders_opt_in",
- sgqlc.types.Arg(Boolean, graphql_name="fulfillmentOrdersOptIn", default=False),
+ sgqlc.types.Arg(sgqlc.types.non_null(Boolean), graphql_name="fulfillmentOrdersOptIn", default=None),
),
("permits_sku_sharing", sgqlc.types.Arg(Boolean, graphql_name="permitsSkuSharing", default=False)),
("inventory_management", sgqlc.types.Arg(Boolean, graphql_name="inventoryManagement", default=False)),
@@ -12477,10 +15102,7 @@ class Mutation(sgqlc.types.Type):
("name", sgqlc.types.Arg(String, graphql_name="name", default=None)),
("callback_url", sgqlc.types.Arg(URL, graphql_name="callbackUrl", default=None)),
("tracking_support", sgqlc.types.Arg(Boolean, graphql_name="trackingSupport", default=None)),
- (
- "fulfillment_orders_opt_in",
- sgqlc.types.Arg(Boolean, graphql_name="fulfillmentOrdersOptIn", default=None),
- ),
+ ("fulfillment_orders_opt_in", sgqlc.types.Arg(Boolean, graphql_name="fulfillmentOrdersOptIn", default=None)),
("permits_sku_sharing", sgqlc.types.Arg(Boolean, graphql_name="permitsSkuSharing", default=None)),
)
),
@@ -12490,10 +15112,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="fulfillmentTrackingInfoUpdateV2",
args=sgqlc.types.ArgDict(
(
- (
- "fulfillment_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="fulfillmentId", default=None),
- ),
+ ("fulfillment_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="fulfillmentId", default=None)),
(
"tracking_info_input",
sgqlc.types.Arg(sgqlc.types.non_null(FulfillmentTrackingInput), graphql_name="trackingInfoInput", default=None),
@@ -12520,10 +15139,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(GiftCardUpdateInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(GiftCardUpdateInput), graphql_name="input", default=None)),
)
),
)
@@ -12532,42 +15148,18 @@ class Mutation(sgqlc.types.Type):
graphql_name="inventoryActivate",
args=sgqlc.types.ArgDict(
(
- (
- "inventory_item_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="inventoryItemId", default=None),
- ),
+ ("inventory_item_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="inventoryItemId", default=None)),
("location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="locationId", default=None)),
("available", sgqlc.types.Arg(Int, graphql_name="available", default=None)),
+ ("on_hand", sgqlc.types.Arg(Int, graphql_name="onHand", default=None)),
)
),
)
- inventory_adjust_quantity = sgqlc.types.Field(
- InventoryAdjustQuantityPayload,
- graphql_name="inventoryAdjustQuantity",
- args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(InventoryAdjustQuantityInput), graphql_name="input", default=None),
- ),
- )
- ),
- )
- inventory_bulk_adjust_quantity_at_location = sgqlc.types.Field(
- InventoryBulkAdjustQuantityAtLocationPayload,
- graphql_name="inventoryBulkAdjustQuantityAtLocation",
+ inventory_adjust_quantities = sgqlc.types.Field(
+ InventoryAdjustQuantitiesPayload,
+ graphql_name="inventoryAdjustQuantities",
args=sgqlc.types.ArgDict(
- (
- (
- "inventory_item_adjustments",
- sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(InventoryAdjustItemInput))),
- graphql_name="inventoryItemAdjustments",
- default=None,
- ),
- ),
- ("location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="locationId", default=None)),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(InventoryAdjustQuantitiesInput), graphql_name="input", default=None)),)
),
)
inventory_bulk_toggle_activation = sgqlc.types.Field(
@@ -12575,10 +15167,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="inventoryBulkToggleActivation",
args=sgqlc.types.ArgDict(
(
- (
- "inventory_item_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="inventoryItemId", default=None),
- ),
+ ("inventory_item_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="inventoryItemId", default=None)),
(
"inventory_item_updates",
sgqlc.types.Arg(
@@ -12594,12 +15183,7 @@ class Mutation(sgqlc.types.Type):
InventoryDeactivatePayload,
graphql_name="inventoryDeactivate",
args=sgqlc.types.ArgDict(
- (
- (
- "inventory_level_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="inventoryLevelId", default=None),
- ),
- )
+ (("inventory_level_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="inventoryLevelId", default=None)),)
),
)
inventory_item_update = sgqlc.types.Field(
@@ -12608,13 +15192,24 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(InventoryItemUpdateInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(InventoryItemUpdateInput), graphql_name="input", default=None)),
)
),
)
+ inventory_move_quantities = sgqlc.types.Field(
+ InventoryMoveQuantitiesPayload,
+ graphql_name="inventoryMoveQuantities",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(InventoryMoveQuantitiesInput), graphql_name="input", default=None)),)
+ ),
+ )
+ inventory_set_on_hand_quantities = sgqlc.types.Field(
+ InventorySetOnHandQuantitiesPayload,
+ graphql_name="inventorySetOnHandQuantities",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(InventorySetOnHandQuantitiesInput), graphql_name="input", default=None)),)
+ ),
+ )
location_activate = sgqlc.types.Field(
LocationActivatePayload,
graphql_name="locationActivate",
@@ -12650,6 +15245,25 @@ class Mutation(sgqlc.types.Type):
)
),
)
+ location_local_pickup_disable = sgqlc.types.Field(
+ LocationLocalPickupDisablePayload,
+ graphql_name="locationLocalPickupDisable",
+ args=sgqlc.types.ArgDict((("location_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="locationId", default=None)),)),
+ )
+ location_local_pickup_enable = sgqlc.types.Field(
+ LocationLocalPickupEnablePayload,
+ graphql_name="locationLocalPickupEnable",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "local_pickup_settings",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(DeliveryLocationLocalPickupEnableInput), graphql_name="localPickupSettings", default=None
+ ),
+ ),
+ )
+ ),
+ )
market_create = sgqlc.types.Field(
MarketCreatePayload,
graphql_name="marketCreate",
@@ -12663,10 +15277,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("market_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="marketId", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(MarketCurrencySettingsUpdateInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(MarketCurrencySettingsUpdateInput), graphql_name="input", default=None)),
)
),
)
@@ -12709,9 +15320,7 @@ class Mutation(sgqlc.types.Type):
(
"market_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="marketIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="marketIds", default=None
),
),
)
@@ -12784,36 +15393,21 @@ class Mutation(sgqlc.types.Type):
MarketingActivityCreatePayload,
graphql_name="marketingActivityCreate",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(MarketingActivityCreateInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(MarketingActivityCreateInput), graphql_name="input", default=None)),)
),
)
marketing_activity_create_external = sgqlc.types.Field(
MarketingActivityCreateExternalPayload,
graphql_name="marketingActivityCreateExternal",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(MarketingActivityCreateExternalInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(MarketingActivityCreateExternalInput), graphql_name="input", default=None)),)
),
)
marketing_activity_update = sgqlc.types.Field(
MarketingActivityUpdatePayload,
graphql_name="marketingActivityUpdate",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(MarketingActivityUpdateInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(MarketingActivityUpdateInput), graphql_name="input", default=None)),)
),
)
marketing_activity_update_external = sgqlc.types.Field(
@@ -12821,10 +15415,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="marketingActivityUpdateExternal",
args=sgqlc.types.ArgDict(
(
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(MarketingActivityUpdateExternalInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(MarketingActivityUpdateExternalInput), graphql_name="input", default=None)),
("marketing_activity_id", sgqlc.types.Arg(ID, graphql_name="marketingActivityId", default=None)),
("remote_id", sgqlc.types.Arg(String, graphql_name="remoteId", default=None)),
("utm", sgqlc.types.Arg(UTMInput, graphql_name="utm", default=None)),
@@ -12836,10 +15427,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="marketingEngagementCreate",
args=sgqlc.types.ArgDict(
(
- (
- "marketing_activity_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="marketingActivityId", default=None),
- ),
+ ("marketing_activity_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="marketingActivityId", default=None)),
(
"marketing_engagement",
sgqlc.types.Arg(sgqlc.types.non_null(MarketingEngagementInput), graphql_name="marketingEngagement", default=None),
@@ -12851,12 +15439,7 @@ class Mutation(sgqlc.types.Type):
MetafieldDefinitionCreatePayload,
graphql_name="metafieldDefinitionCreate",
args=sgqlc.types.ArgDict(
- (
- (
- "definition",
- sgqlc.types.Arg(sgqlc.types.non_null(MetafieldDefinitionInput), graphql_name="definition", default=None),
- ),
- )
+ (("definition", sgqlc.types.Arg(sgqlc.types.non_null(MetafieldDefinitionInput), graphql_name="definition", default=None)),)
),
)
metafield_definition_delete = sgqlc.types.Field(
@@ -12865,10 +15448,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "delete_all_associated_metafields",
- sgqlc.types.Arg(Boolean, graphql_name="deleteAllAssociatedMetafields", default=False),
- ),
+ ("delete_all_associated_metafields", sgqlc.types.Arg(Boolean, graphql_name="deleteAllAssociatedMetafields", default=False)),
)
),
)
@@ -12901,48 +15481,95 @@ class Mutation(sgqlc.types.Type):
metafield_delete = sgqlc.types.Field(
MetafieldDeletePayload,
graphql_name="metafieldDelete",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(MetafieldDeleteInput), graphql_name="input", default=None)),)
+ ),
+ )
+ metafields_set = sgqlc.types.Field(
+ MetafieldsSetPayload,
+ graphql_name="metafieldsSet",
args=sgqlc.types.ArgDict(
(
(
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(MetafieldDeleteInput), graphql_name="input", default=None),
+ "metafields",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldsSetInput))),
+ graphql_name="metafields",
+ default=None,
+ ),
),
)
),
)
- metafield_storefront_visibility_create = sgqlc.types.Field(
- MetafieldStorefrontVisibilityCreatePayload,
- graphql_name="metafieldStorefrontVisibilityCreate",
+ metaobject_bulk_delete = sgqlc.types.Field(
+ MetaobjectBulkDeletePayload,
+ graphql_name="metaobjectBulkDelete",
+ args=sgqlc.types.ArgDict(
+ (("where", sgqlc.types.Arg(sgqlc.types.non_null(MetaobjectBulkDeleteWhereCondition), graphql_name="where", default=None)),)
+ ),
+ )
+ metaobject_create = sgqlc.types.Field(
+ MetaobjectCreatePayload,
+ graphql_name="metaobjectCreate",
+ args=sgqlc.types.ArgDict(
+ (("metaobject", sgqlc.types.Arg(sgqlc.types.non_null(MetaobjectCreateInput), graphql_name="metaobject", default=None)),)
+ ),
+ )
+ metaobject_definition_create = sgqlc.types.Field(
+ MetaobjectDefinitionCreatePayload,
+ graphql_name="metaobjectDefinitionCreate",
args=sgqlc.types.ArgDict(
(
(
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(MetafieldStorefrontVisibilityInput), graphql_name="input", default=None),
+ "definition",
+ sgqlc.types.Arg(sgqlc.types.non_null(MetaobjectDefinitionCreateInput), graphql_name="definition", default=None),
),
)
),
)
- metafield_storefront_visibility_delete = sgqlc.types.Field(
- MetafieldStorefrontVisibilityDeletePayload,
- graphql_name="metafieldStorefrontVisibilityDelete",
+ metaobject_definition_delete = sgqlc.types.Field(
+ MetaobjectDefinitionDeletePayload,
+ graphql_name="metaobjectDefinitionDelete",
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
- metafields_set = sgqlc.types.Field(
- MetafieldsSetPayload,
- graphql_name="metafieldsSet",
+ metaobject_definition_update = sgqlc.types.Field(
+ MetaobjectDefinitionUpdatePayload,
+ graphql_name="metaobjectDefinitionUpdate",
args=sgqlc.types.ArgDict(
(
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
(
- "metafields",
- sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldsSetInput))),
- graphql_name="metafields",
- default=None,
- ),
+ "definition",
+ sgqlc.types.Arg(sgqlc.types.non_null(MetaobjectDefinitionUpdateInput), graphql_name="definition", default=None),
),
)
),
)
+ metaobject_delete = sgqlc.types.Field(
+ MetaobjectDeletePayload,
+ graphql_name="metaobjectDelete",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ metaobject_update = sgqlc.types.Field(
+ MetaobjectUpdatePayload,
+ graphql_name="metaobjectUpdate",
+ args=sgqlc.types.ArgDict(
+ (
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
+ ("metaobject", sgqlc.types.Arg(sgqlc.types.non_null(MetaobjectUpdateInput), graphql_name="metaobject", default=None)),
+ )
+ ),
+ )
+ metaobject_upsert = sgqlc.types.Field(
+ MetaobjectUpsertPayload,
+ graphql_name="metaobjectUpsert",
+ args=sgqlc.types.ArgDict(
+ (
+ ("handle", sgqlc.types.Arg(sgqlc.types.non_null(MetaobjectHandleInput), graphql_name="handle", default=None)),
+ ("metaobject", sgqlc.types.Arg(sgqlc.types.non_null(MetaobjectUpsertInput), graphql_name="metaobject", default=None)),
+ )
+ ),
+ )
order_capture = sgqlc.types.Field(
"OrderCapturePayload",
graphql_name="orderCapture",
@@ -12962,10 +15589,7 @@ class Mutation(sgqlc.types.Type):
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
("payment_schedule_id", sgqlc.types.Arg(ID, graphql_name="paymentScheduleId", default=None)),
- (
- "idempotency_key",
- sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="idempotencyKey", default=None),
- ),
+ ("idempotency_key", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="idempotencyKey", default=None)),
("mandate_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="mandateId", default=None)),
("auto_capture", sgqlc.types.Arg(Boolean, graphql_name="autoCapture", default=True)),
)
@@ -12993,10 +15617,7 @@ class Mutation(sgqlc.types.Type):
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
("line_item_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="lineItemId", default=None)),
- (
- "discount",
- sgqlc.types.Arg(sgqlc.types.non_null(OrderEditAppliedDiscountInput), graphql_name="discount", default=None),
- ),
+ ("discount", sgqlc.types.Arg(sgqlc.types.non_null(OrderEditAppliedDiscountInput), graphql_name="discount", default=None)),
)
),
)
@@ -13035,10 +15656,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "discount_application_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="discountApplicationId", default=None),
- ),
+ ("discount_application_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="discountApplicationId", default=None)),
)
),
)
@@ -13068,12 +15686,7 @@ class Mutation(sgqlc.types.Type):
"OrderMarkAsPaidPayload",
graphql_name="orderMarkAsPaid",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(OrderMarkAsPaidInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(OrderMarkAsPaidInput), graphql_name="input", default=None)),)
),
)
order_open = sgqlc.types.Field(
@@ -13086,6 +15699,56 @@ class Mutation(sgqlc.types.Type):
graphql_name="orderUpdate",
args=sgqlc.types.ArgDict((("input", sgqlc.types.Arg(sgqlc.types.non_null(OrderInput), graphql_name="input", default=None)),)),
)
+ payment_customization_activation = sgqlc.types.Field(
+ "PaymentCustomizationActivationPayload",
+ graphql_name="paymentCustomizationActivation",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "ids",
+ sgqlc.types.Arg(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="ids", default=None),
+ ),
+ ("enabled", sgqlc.types.Arg(sgqlc.types.non_null(Boolean), graphql_name="enabled", default=None)),
+ )
+ ),
+ )
+ payment_customization_create = sgqlc.types.Field(
+ "PaymentCustomizationCreatePayload",
+ graphql_name="paymentCustomizationCreate",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "payment_customization",
+ sgqlc.types.Arg(sgqlc.types.non_null(PaymentCustomizationInput), graphql_name="paymentCustomization", default=None),
+ ),
+ )
+ ),
+ )
+ payment_customization_delete = sgqlc.types.Field(
+ "PaymentCustomizationDeletePayload",
+ graphql_name="paymentCustomizationDelete",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ payment_customization_update = sgqlc.types.Field(
+ "PaymentCustomizationUpdatePayload",
+ graphql_name="paymentCustomizationUpdate",
+ args=sgqlc.types.ArgDict(
+ (
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
+ (
+ "payment_customization",
+ sgqlc.types.Arg(sgqlc.types.non_null(PaymentCustomizationInput), graphql_name="paymentCustomization", default=None),
+ ),
+ )
+ ),
+ )
+ payment_reminder_send = sgqlc.types.Field(
+ "PaymentReminderSendPayload",
+ graphql_name="paymentReminderSend",
+ args=sgqlc.types.ArgDict(
+ (("payment_schedule_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="paymentScheduleId", default=None)),)
+ ),
+ )
payment_terms_create = sgqlc.types.Field(
"PaymentTermsCreatePayload",
graphql_name="paymentTermsCreate",
@@ -13094,11 +15757,7 @@ class Mutation(sgqlc.types.Type):
("reference_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="referenceId", default=None)),
(
"payment_terms_attributes",
- sgqlc.types.Arg(
- sgqlc.types.non_null(PaymentTermsCreateInput),
- graphql_name="paymentTermsAttributes",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(PaymentTermsCreateInput), graphql_name="paymentTermsAttributes", default=None),
),
)
),
@@ -13107,36 +15766,21 @@ class Mutation(sgqlc.types.Type):
"PaymentTermsDeletePayload",
graphql_name="paymentTermsDelete",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(PaymentTermsDeleteInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(PaymentTermsDeleteInput), graphql_name="input", default=None)),)
),
)
payment_terms_update = sgqlc.types.Field(
"PaymentTermsUpdatePayload",
graphql_name="paymentTermsUpdate",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(PaymentTermsUpdateInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(PaymentTermsUpdateInput), graphql_name="input", default=None)),)
),
)
price_list_create = sgqlc.types.Field(
"PriceListCreatePayload",
graphql_name="priceListCreate",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(PriceListCreateInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(PriceListCreateInput), graphql_name="input", default=None)),)
),
)
price_list_delete = sgqlc.types.Field(
@@ -13161,137 +15805,70 @@ class Mutation(sgqlc.types.Type):
)
),
)
- price_list_fixed_prices_delete = sgqlc.types.Field(
- "PriceListFixedPricesDeletePayload",
- graphql_name="priceListFixedPricesDelete",
+ price_list_fixed_prices_by_product_update = sgqlc.types.Field(
+ "PriceListFixedPricesByProductUpdatePayload",
+ graphql_name="priceListFixedPricesByProductUpdate",
args=sgqlc.types.ArgDict(
(
- ("price_list_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="priceListId", default=None)),
(
- "variant_ids",
+ "prices_to_add",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="variantIds",
- default=None,
+ sgqlc.types.list_of(sgqlc.types.non_null(PriceListProductPriceInput)), graphql_name="pricesToAdd", default=None
),
),
- )
- ),
- )
- price_list_update = sgqlc.types.Field(
- "PriceListUpdatePayload",
- graphql_name="priceListUpdate",
- args=sgqlc.types.ArgDict(
- (
- ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(PriceListUpdateInput), graphql_name="input", default=None),
- ),
- )
- ),
- )
- price_rule_activate = sgqlc.types.Field(
- "PriceRuleActivatePayload",
- graphql_name="priceRuleActivate",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
- )
- price_rule_create = sgqlc.types.Field(
- "PriceRuleCreatePayload",
- graphql_name="priceRuleCreate",
- args=sgqlc.types.ArgDict(
- (
- (
- "price_rule",
- sgqlc.types.Arg(sgqlc.types.non_null(PriceRuleInput), graphql_name="priceRule", default=None),
- ),
(
- "price_rule_discount_code",
- sgqlc.types.Arg(PriceRuleDiscountCodeInput, graphql_name="priceRuleDiscountCode", default=None),
+ "prices_to_delete_by_product_ids",
+ sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="pricesToDeleteByProductIds", default=None),
),
+ ("price_list_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="priceListId", default=None)),
)
),
)
- price_rule_deactivate = sgqlc.types.Field(
- "PriceRuleDeactivatePayload",
- graphql_name="priceRuleDeactivate",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
- )
- price_rule_delete = sgqlc.types.Field(
- "PriceRuleDeletePayload",
- graphql_name="priceRuleDelete",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
- )
- price_rule_discount_code_create = sgqlc.types.Field(
- "PriceRuleDiscountCodeCreatePayload",
- graphql_name="priceRuleDiscountCodeCreate",
- args=sgqlc.types.ArgDict(
- (
- ("price_rule_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="priceRuleId", default=None)),
- ("code", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="code", default=None)),
- )
- ),
- )
- price_rule_discount_code_update = sgqlc.types.Field(
- "PriceRuleDiscountCodeUpdatePayload",
- graphql_name="priceRuleDiscountCodeUpdate",
- args=sgqlc.types.ArgDict(
- (
- ("price_rule_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="priceRuleId", default=None)),
- ("code", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="code", default=None)),
- )
- ),
- )
- price_rule_update = sgqlc.types.Field(
- "PriceRuleUpdatePayload",
- graphql_name="priceRuleUpdate",
+ price_list_fixed_prices_delete = sgqlc.types.Field(
+ "PriceListFixedPricesDeletePayload",
+ graphql_name="priceListFixedPricesDelete",
args=sgqlc.types.ArgDict(
(
- ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "price_rule",
- sgqlc.types.Arg(sgqlc.types.non_null(PriceRuleInput), graphql_name="priceRule", default=None),
- ),
+ ("price_list_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="priceListId", default=None)),
(
- "price_rule_discount_code",
- sgqlc.types.Arg(PriceRuleDiscountCodeInput, graphql_name="priceRuleDiscountCode", default=None),
+ "variant_ids",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="variantIds", default=None
+ ),
),
)
),
)
- private_metafield_delete = sgqlc.types.Field(
- "PrivateMetafieldDeletePayload",
- graphql_name="privateMetafieldDelete",
+ price_list_fixed_prices_update = sgqlc.types.Field(
+ "PriceListFixedPricesUpdatePayload",
+ graphql_name="priceListFixedPricesUpdate",
args=sgqlc.types.ArgDict(
(
+ ("price_list_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="priceListId", default=None)),
(
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(PrivateMetafieldDeleteInput), graphql_name="input", default=None),
+ "prices_to_add",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(PriceListPriceInput))),
+ graphql_name="pricesToAdd",
+ default=None,
+ ),
),
- )
- ),
- )
- private_metafield_upsert = sgqlc.types.Field(
- "PrivateMetafieldUpsertPayload",
- graphql_name="privateMetafieldUpsert",
- args=sgqlc.types.ArgDict(
- (
(
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(PrivateMetafieldInput), graphql_name="input", default=None),
+ "variant_ids_to_delete",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="variantIdsToDelete", default=None
+ ),
),
)
),
)
- product_append_images = sgqlc.types.Field(
- "ProductAppendImagesPayload",
- graphql_name="productAppendImages",
+ price_list_update = sgqlc.types.Field(
+ "PriceListUpdatePayload",
+ graphql_name="priceListUpdate",
args=sgqlc.types.ArgDict(
(
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(ProductAppendImagesInput), graphql_name="input", default=None),
- ),
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(PriceListUpdateInput), graphql_name="input", default=None)),
)
),
)
@@ -13311,10 +15888,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("input", sgqlc.types.Arg(sgqlc.types.non_null(ProductInput), graphql_name="input", default=None)),
- (
- "media",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(CreateMediaInput)), graphql_name="media", default=None),
- ),
+ ("media", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(CreateMediaInput)), graphql_name="media", default=None)),
)
),
)
@@ -13342,22 +15916,10 @@ class Mutation(sgqlc.types.Type):
(("input", sgqlc.types.Arg(sgqlc.types.non_null(ProductDeleteInput), graphql_name="input", default=None)),)
),
)
- product_delete_images = sgqlc.types.Field(
- "ProductDeleteImagesPayload",
- graphql_name="productDeleteImages",
- args=sgqlc.types.ArgDict(
- (
- ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "image_ids",
- sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="imageIds",
- default=None,
- ),
- ),
- )
- ),
+ product_delete_async = sgqlc.types.Field(
+ "ProductDeleteAsyncPayload",
+ graphql_name="productDeleteAsync",
+ args=sgqlc.types.ArgDict((("product_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="productId", default=None)),)),
)
product_delete_media = sgqlc.types.Field(
"ProductDeleteMediaPayload",
@@ -13368,9 +15930,7 @@ class Mutation(sgqlc.types.Type):
(
"media_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="mediaIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="mediaIds", default=None
),
),
)
@@ -13388,13 +15948,31 @@ class Mutation(sgqlc.types.Type):
)
),
)
- product_image_update = sgqlc.types.Field(
- "ProductImageUpdatePayload",
- graphql_name="productImageUpdate",
+ product_duplicate_async_v2 = sgqlc.types.Field(
+ "ProductDuplicateAsyncV2Payload",
+ graphql_name="productDuplicateAsyncV2",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(ProductDuplicateAsyncInput), graphql_name="input", default=None)),)
+ ),
+ )
+ product_feed_create = sgqlc.types.Field(
+ "ProductFeedCreatePayload",
+ graphql_name="productFeedCreate",
+ args=sgqlc.types.ArgDict((("input", sgqlc.types.Arg(ProductFeedInput, graphql_name="input", default=None)),)),
+ )
+ product_feed_delete = sgqlc.types.Field(
+ "ProductFeedDeletePayload",
+ graphql_name="productFeedDelete",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ product_full_sync = sgqlc.types.Field(
+ "ProductFullSyncPayload",
+ graphql_name="productFullSync",
args=sgqlc.types.ArgDict(
(
- ("product_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="productId", default=None)),
- ("image", sgqlc.types.Arg(sgqlc.types.non_null(ImageInput), graphql_name="image", default=None)),
+ ("before_updated_at", sgqlc.types.Arg(DateTime, graphql_name="beforeUpdatedAt", default=None)),
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
+ ("updated_at_since", sgqlc.types.Arg(DateTime, graphql_name="updatedAtSince", default=None)),
)
),
)
@@ -13432,23 +16010,6 @@ class Mutation(sgqlc.types.Type):
)
),
)
- product_reorder_images = sgqlc.types.Field(
- "ProductReorderImagesPayload",
- graphql_name="productReorderImages",
- args=sgqlc.types.ArgDict(
- (
- ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "moves",
- sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MoveInput))),
- graphql_name="moves",
- default=None,
- ),
- ),
- )
- ),
- )
product_reorder_media = sgqlc.types.Field(
"ProductReorderMediaPayload",
graphql_name="productReorderMedia",
@@ -13458,9 +16019,7 @@ class Mutation(sgqlc.types.Type):
(
"moves",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MoveInput))),
- graphql_name="moves",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MoveInput))), graphql_name="moves", default=None
),
),
)
@@ -13469,7 +16028,12 @@ class Mutation(sgqlc.types.Type):
product_update = sgqlc.types.Field(
"ProductUpdatePayload",
graphql_name="productUpdate",
- args=sgqlc.types.ArgDict((("input", sgqlc.types.Arg(sgqlc.types.non_null(ProductInput), graphql_name="input", default=None)),)),
+ args=sgqlc.types.ArgDict(
+ (
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(ProductInput), graphql_name="input", default=None)),
+ ("media", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(CreateMediaInput)), graphql_name="media", default=None)),
+ )
+ ),
)
product_update_media = sgqlc.types.Field(
"ProductUpdateMediaPayload",
@@ -13568,6 +16132,22 @@ class Mutation(sgqlc.types.Type):
)
),
)
+ product_variant_relationship_bulk_update = sgqlc.types.Field(
+ "ProductVariantRelationshipBulkUpdatePayload",
+ graphql_name="productVariantRelationshipBulkUpdate",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "input",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ProductVariantRelationshipUpdateInput))),
+ graphql_name="input",
+ default=None,
+ ),
+ ),
+ )
+ ),
+ )
product_variant_update = sgqlc.types.Field(
"ProductVariantUpdatePayload",
graphql_name="productVariantUpdate",
@@ -13589,6 +16169,7 @@ class Mutation(sgqlc.types.Type):
),
),
("product_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="productId", default=None)),
+ ("media", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(CreateMediaInput)), graphql_name="media", default=None)),
)
),
)
@@ -13600,9 +16181,7 @@ class Mutation(sgqlc.types.Type):
(
"variants_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="variantsIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="variantsIds", default=None
),
),
("product_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="productId", default=None)),
@@ -13640,6 +16219,18 @@ class Mutation(sgqlc.types.Type):
),
),
("product_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="productId", default=None)),
+ ("media", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(CreateMediaInput)), graphql_name="media", default=None)),
+ ("allow_partial_updates", sgqlc.types.Arg(Boolean, graphql_name="allowPartialUpdates", default=False)),
+ )
+ ),
+ )
+ pub_sub_server_pixel_update = sgqlc.types.Field(
+ "PubSubServerPixelUpdatePayload",
+ graphql_name="pubSubServerPixelUpdate",
+ args=sgqlc.types.ArgDict(
+ (
+ ("pub_sub_project", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="pubSubProject", default=None)),
+ ("pub_sub_topic", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="pubSubTopic", default=None)),
)
),
)
@@ -13648,17 +16239,10 @@ class Mutation(sgqlc.types.Type):
graphql_name="pubSubWebhookSubscriptionCreate",
args=sgqlc.types.ArgDict(
(
- (
- "topic",
- sgqlc.types.Arg(sgqlc.types.non_null(WebhookSubscriptionTopic), graphql_name="topic", default=None),
- ),
+ ("topic", sgqlc.types.Arg(sgqlc.types.non_null(WebhookSubscriptionTopic), graphql_name="topic", default=None)),
(
"webhook_subscription",
- sgqlc.types.Arg(
- sgqlc.types.non_null(PubSubWebhookSubscriptionInput),
- graphql_name="webhookSubscription",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(PubSubWebhookSubscriptionInput), graphql_name="webhookSubscription", default=None),
),
)
),
@@ -13669,10 +16253,29 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "webhook_subscription",
- sgqlc.types.Arg(PubSubWebhookSubscriptionInput, graphql_name="webhookSubscription", default=None),
- ),
+ ("webhook_subscription", sgqlc.types.Arg(PubSubWebhookSubscriptionInput, graphql_name="webhookSubscription", default=None)),
+ )
+ ),
+ )
+ publication_create = sgqlc.types.Field(
+ "PublicationCreatePayload",
+ graphql_name="publicationCreate",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(PublicationCreateInput), graphql_name="input", default=None)),)
+ ),
+ )
+ publication_delete = sgqlc.types.Field(
+ "PublicationDeletePayload",
+ graphql_name="publicationDelete",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ publication_update = sgqlc.types.Field(
+ "PublicationUpdatePayload",
+ graphql_name="publicationUpdate",
+ args=sgqlc.types.ArgDict(
+ (
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(PublicationUpdateInput), graphql_name="input", default=None)),
)
),
)
@@ -13720,47 +16323,175 @@ class Mutation(sgqlc.types.Type):
graphql_name="publishableUnpublishToCurrentChannel",
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
+ quantity_rules_add = sgqlc.types.Field(
+ "QuantityRulesAddPayload",
+ graphql_name="quantityRulesAdd",
+ args=sgqlc.types.ArgDict(
+ (
+ ("price_list_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="priceListId", default=None)),
+ (
+ "quantity_rules",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(QuantityRuleInput))),
+ graphql_name="quantityRules",
+ default=None,
+ ),
+ ),
+ )
+ ),
+ )
+ quantity_rules_delete = sgqlc.types.Field(
+ "QuantityRulesDeletePayload",
+ graphql_name="quantityRulesDelete",
+ args=sgqlc.types.ArgDict(
+ (
+ ("price_list_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="priceListId", default=None)),
+ (
+ "variant_ids",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="variantIds", default=None
+ ),
+ ),
+ )
+ ),
+ )
refund_create = sgqlc.types.Field(
"RefundCreatePayload",
graphql_name="refundCreate",
args=sgqlc.types.ArgDict((("input", sgqlc.types.Arg(sgqlc.types.non_null(RefundInput), graphql_name="input", default=None)),)),
)
- saved_search_create = sgqlc.types.Field(
- "SavedSearchCreatePayload",
- graphql_name="savedSearchCreate",
+ return_approve_request = sgqlc.types.Field(
+ "ReturnApproveRequestPayload",
+ graphql_name="returnApproveRequest",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(ReturnApproveRequestInput), graphql_name="input", default=None)),)
+ ),
+ )
+ return_cancel = sgqlc.types.Field(
+ "ReturnCancelPayload",
+ graphql_name="returnCancel",
+ args=sgqlc.types.ArgDict(
+ (
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
+ ("notify_customer", sgqlc.types.Arg(Boolean, graphql_name="notifyCustomer", default=False)),
+ )
+ ),
+ )
+ return_close = sgqlc.types.Field(
+ "ReturnClosePayload",
+ graphql_name="returnClose",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ return_create = sgqlc.types.Field(
+ "ReturnCreatePayload",
+ graphql_name="returnCreate",
+ args=sgqlc.types.ArgDict(
+ (("return_input", sgqlc.types.Arg(sgqlc.types.non_null(ReturnInput), graphql_name="returnInput", default=None)),)
+ ),
+ )
+ return_decline_request = sgqlc.types.Field(
+ "ReturnDeclineRequestPayload",
+ graphql_name="returnDeclineRequest",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(ReturnDeclineRequestInput), graphql_name="input", default=None)),)
+ ),
+ )
+ return_refund = sgqlc.types.Field(
+ "ReturnRefundPayload",
+ graphql_name="returnRefund",
args=sgqlc.types.ArgDict(
(
(
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(SavedSearchCreateInput), graphql_name="input", default=None),
+ "return_refund_input",
+ sgqlc.types.Arg(sgqlc.types.non_null(ReturnRefundInput), graphql_name="returnRefundInput", default=None),
),
)
),
)
- saved_search_delete = sgqlc.types.Field(
- "SavedSearchDeletePayload",
- graphql_name="savedSearchDelete",
+ return_reopen = sgqlc.types.Field(
+ "ReturnReopenPayload",
+ graphql_name="returnReopen",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ return_request = sgqlc.types.Field(
+ "ReturnRequestPayload",
+ graphql_name="returnRequest",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(ReturnRequestInput), graphql_name="input", default=None)),)
+ ),
+ )
+ reverse_delivery_create_with_shipping = sgqlc.types.Field(
+ "ReverseDeliveryCreateWithShippingPayload",
+ graphql_name="reverseDeliveryCreateWithShipping",
args=sgqlc.types.ArgDict(
(
(
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(SavedSearchDeleteInput), graphql_name="input", default=None),
+ "reverse_fulfillment_order_id",
+ sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="reverseFulfillmentOrderId", default=None),
+ ),
+ (
+ "reverse_delivery_line_items",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ReverseDeliveryLineItemInput))),
+ graphql_name="reverseDeliveryLineItems",
+ default=None,
+ ),
),
+ ("tracking_input", sgqlc.types.Arg(ReverseDeliveryTrackingInput, graphql_name="trackingInput", default=None)),
+ ("label_input", sgqlc.types.Arg(ReverseDeliveryLabelInput, graphql_name="labelInput", default=None)),
+ ("notify_customer", sgqlc.types.Arg(Boolean, graphql_name="notifyCustomer", default=True)),
)
),
)
- saved_search_update = sgqlc.types.Field(
- "SavedSearchUpdatePayload",
- graphql_name="savedSearchUpdate",
+ reverse_delivery_shipping_update = sgqlc.types.Field(
+ "ReverseDeliveryShippingUpdatePayload",
+ graphql_name="reverseDeliveryShippingUpdate",
+ args=sgqlc.types.ArgDict(
+ (
+ ("reverse_delivery_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="reverseDeliveryId", default=None)),
+ ("tracking_input", sgqlc.types.Arg(ReverseDeliveryTrackingInput, graphql_name="trackingInput", default=None)),
+ ("label_input", sgqlc.types.Arg(ReverseDeliveryLabelInput, graphql_name="labelInput", default=None)),
+ ("notify_customer", sgqlc.types.Arg(Boolean, graphql_name="notifyCustomer", default=True)),
+ )
+ ),
+ )
+ reverse_fulfillment_order_dispose = sgqlc.types.Field(
+ "ReverseFulfillmentOrderDisposePayload",
+ graphql_name="reverseFulfillmentOrderDispose",
args=sgqlc.types.ArgDict(
(
(
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(SavedSearchUpdateInput), graphql_name="input", default=None),
+ "disposition_inputs",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ReverseFulfillmentOrderDisposeInput))),
+ graphql_name="dispositionInputs",
+ default=None,
+ ),
),
)
),
)
+ saved_search_create = sgqlc.types.Field(
+ "SavedSearchCreatePayload",
+ graphql_name="savedSearchCreate",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(SavedSearchCreateInput), graphql_name="input", default=None)),)
+ ),
+ )
+ saved_search_delete = sgqlc.types.Field(
+ "SavedSearchDeletePayload",
+ graphql_name="savedSearchDelete",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(SavedSearchDeleteInput), graphql_name="input", default=None)),)
+ ),
+ )
+ saved_search_update = sgqlc.types.Field(
+ "SavedSearchUpdatePayload",
+ graphql_name="savedSearchUpdate",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(SavedSearchUpdateInput), graphql_name="input", default=None)),)
+ ),
+ )
script_tag_create = sgqlc.types.Field(
"ScriptTagCreatePayload",
graphql_name="scriptTagCreate",
@@ -13816,9 +16547,7 @@ class Mutation(sgqlc.types.Type):
(
"product_variant_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="productVariantIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="productVariantIds", default=None
),
),
)
@@ -13833,9 +16562,7 @@ class Mutation(sgqlc.types.Type):
(
"product_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="productIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="productIds", default=None
),
),
)
@@ -13846,10 +16573,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="sellingPlanGroupCreate",
args=sgqlc.types.ArgDict(
(
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(SellingPlanGroupInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(SellingPlanGroupInput), graphql_name="input", default=None)),
("resources", sgqlc.types.Arg(SellingPlanGroupResourceInput, graphql_name="resources", default=None)),
)
),
@@ -13868,9 +16592,7 @@ class Mutation(sgqlc.types.Type):
(
"product_variant_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="productVariantIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="productVariantIds", default=None
),
),
)
@@ -13885,9 +16607,7 @@ class Mutation(sgqlc.types.Type):
(
"product_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="productIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="productIds", default=None
),
),
)
@@ -13899,10 +16619,12 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- ("input", sgqlc.types.Arg(SellingPlanGroupInput, graphql_name="input", default=None)),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(SellingPlanGroupInput), graphql_name="input", default=None)),
)
),
)
+ server_pixel_create = sgqlc.types.Field("ServerPixelCreatePayload", graphql_name="serverPixelCreate")
+ server_pixel_delete = sgqlc.types.Field("ServerPixelDeletePayload", graphql_name="serverPixelDelete")
shipping_package_delete = sgqlc.types.Field(
"ShippingPackageDeletePayload",
graphql_name="shippingPackageDelete",
@@ -13916,7 +16638,15 @@ class Mutation(sgqlc.types.Type):
shipping_package_update = sgqlc.types.Field(
"ShippingPackageUpdatePayload",
graphql_name="shippingPackageUpdate",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ args=sgqlc.types.ArgDict(
+ (
+ ("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
+ (
+ "shipping_package",
+ sgqlc.types.Arg(sgqlc.types.non_null(CustomShippingPackageInput), graphql_name="shippingPackage", default=None),
+ ),
+ )
+ ),
)
shop_locale_disable = sgqlc.types.Field(
"ShopLocaleDisablePayload",
@@ -13942,10 +16672,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("locale", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="locale", default=None)),
- (
- "shop_locale",
- sgqlc.types.Arg(sgqlc.types.non_null(ShopLocaleInput), graphql_name="shopLocale", default=None),
- ),
+ ("shop_locale", sgqlc.types.Arg(sgqlc.types.non_null(ShopLocaleInput), graphql_name="shopLocale", default=None)),
)
),
)
@@ -13953,12 +16680,14 @@ class Mutation(sgqlc.types.Type):
"ShopPolicyUpdatePayload",
graphql_name="shopPolicyUpdate",
args=sgqlc.types.ArgDict(
- (
- (
- "shop_policy",
- sgqlc.types.Arg(sgqlc.types.non_null(ShopPolicyInput), graphql_name="shopPolicy", default=None),
- ),
- )
+ (("shop_policy", sgqlc.types.Arg(sgqlc.types.non_null(ShopPolicyInput), graphql_name="shopPolicy", default=None)),)
+ ),
+ )
+ shop_resource_feedback_create = sgqlc.types.Field(
+ "ShopResourceFeedbackCreatePayload",
+ graphql_name="shopResourceFeedbackCreate",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(ResourceFeedbackCreateInput), graphql_name="input", default=None)),)
),
)
staged_uploads_create = sgqlc.types.Field(
@@ -13982,43 +16711,33 @@ class Mutation(sgqlc.types.Type):
graphql_name="standardMetafieldDefinitionEnable",
args=sgqlc.types.ArgDict(
(
- (
- "owner_type",
- sgqlc.types.Arg(sgqlc.types.non_null(MetafieldOwnerType), graphql_name="ownerType", default=None),
- ),
+ ("owner_type", sgqlc.types.Arg(sgqlc.types.non_null(MetafieldOwnerType), graphql_name="ownerType", default=None)),
("id", sgqlc.types.Arg(ID, graphql_name="id", default=None)),
("namespace", sgqlc.types.Arg(String, graphql_name="namespace", default=None)),
("key", sgqlc.types.Arg(String, graphql_name="key", default=None)),
("pin", sgqlc.types.Arg(sgqlc.types.non_null(Boolean), graphql_name="pin", default=False)),
- (
- "visible_to_storefront_api",
- sgqlc.types.Arg(Boolean, graphql_name="visibleToStorefrontApi", default=None),
- ),
+ ("visible_to_storefront_api", sgqlc.types.Arg(Boolean, graphql_name="visibleToStorefrontApi", default=None)),
+ ("use_as_collection_condition", sgqlc.types.Arg(Boolean, graphql_name="useAsCollectionCondition", default=False)),
)
),
)
+ standard_metaobject_definition_enable = sgqlc.types.Field(
+ "StandardMetaobjectDefinitionEnablePayload",
+ graphql_name="standardMetaobjectDefinitionEnable",
+ args=sgqlc.types.ArgDict((("type", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="type", default=None)),)),
+ )
storefront_access_token_create = sgqlc.types.Field(
"StorefrontAccessTokenCreatePayload",
graphql_name="storefrontAccessTokenCreate",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(StorefrontAccessTokenInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(StorefrontAccessTokenInput), graphql_name="input", default=None)),)
),
)
storefront_access_token_delete = sgqlc.types.Field(
"StorefrontAccessTokenDeletePayload",
graphql_name="storefrontAccessTokenDelete",
args=sgqlc.types.ArgDict(
- (
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(StorefrontAccessTokenDeleteInput), graphql_name="input", default=None),
- ),
- )
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(StorefrontAccessTokenDeleteInput), graphql_name="input", default=None)),)
),
)
subscription_billing_attempt_create = sgqlc.types.Field(
@@ -14033,9 +16752,7 @@ class Mutation(sgqlc.types.Type):
(
"subscription_billing_attempt_input",
sgqlc.types.Arg(
- sgqlc.types.non_null(SubscriptionBillingAttemptInput),
- graphql_name="subscriptionBillingAttemptInput",
- default=None,
+ sgqlc.types.non_null(SubscriptionBillingAttemptInput), graphql_name="subscriptionBillingAttemptInput", default=None
),
),
)
@@ -14070,11 +16787,7 @@ class Mutation(sgqlc.types.Type):
(
(
"billing_cycle_input",
- sgqlc.types.Arg(
- sgqlc.types.non_null(SubscriptionBillingCycleInput),
- graphql_name="billingCycleInput",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionBillingCycleInput), graphql_name="billingCycleInput", default=None),
),
)
),
@@ -14086,11 +16799,7 @@ class Mutation(sgqlc.types.Type):
(
(
"billing_cycle_input",
- sgqlc.types.Arg(
- sgqlc.types.non_null(SubscriptionBillingCycleInput),
- graphql_name="billingCycleInput",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionBillingCycleInput), graphql_name="billingCycleInput", default=None),
),
)
),
@@ -14104,9 +16813,7 @@ class Mutation(sgqlc.types.Type):
(
"target_selection",
sgqlc.types.Arg(
- sgqlc.types.non_null(SubscriptionBillingCyclesTargetSelection),
- graphql_name="targetSelection",
- default=None,
+ sgqlc.types.non_null(SubscriptionBillingCyclesTargetSelection), graphql_name="targetSelection", default=None
),
),
)
@@ -14119,31 +16826,42 @@ class Mutation(sgqlc.types.Type):
(
(
"billing_cycle_input",
- sgqlc.types.Arg(
- sgqlc.types.non_null(SubscriptionBillingCycleInput),
- graphql_name="billingCycleInput",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionBillingCycleInput), graphql_name="billingCycleInput", default=None),
),
(
"input",
- sgqlc.types.Arg(
- sgqlc.types.non_null(SubscriptionBillingCycleScheduleEditInput),
- graphql_name="input",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionBillingCycleScheduleEditInput), graphql_name="input", default=None),
),
)
),
)
+ subscription_contract_atomic_create = sgqlc.types.Field(
+ "SubscriptionContractAtomicCreatePayload",
+ graphql_name="subscriptionContractAtomicCreate",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionContractAtomicCreateInput), graphql_name="input", default=None)),)
+ ),
+ )
subscription_contract_create = sgqlc.types.Field(
"SubscriptionContractCreatePayload",
graphql_name="subscriptionContractCreate",
+ args=sgqlc.types.ArgDict(
+ (("input", sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionContractCreateInput), graphql_name="input", default=None)),)
+ ),
+ )
+ subscription_contract_product_change = sgqlc.types.Field(
+ "SubscriptionContractProductChangePayload",
+ graphql_name="subscriptionContractProductChange",
args=sgqlc.types.ArgDict(
(
+ (
+ "subscription_contract_id",
+ sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="subscriptionContractId", default=None),
+ ),
+ ("line_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="lineId", default=None)),
(
"input",
- sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionContractCreateInput), graphql_name="input", default=None),
+ sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionContractProductChangeInput), graphql_name="input", default=None),
),
)
),
@@ -14174,10 +16892,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("draft_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="draftId", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionManualDiscountInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionManualDiscountInput), graphql_name="input", default=None)),
)
),
)
@@ -14208,10 +16923,7 @@ class Mutation(sgqlc.types.Type):
(
("draft_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="draftId", default=None)),
("discount_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="discountId", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionManualDiscountInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionManualDiscountInput), graphql_name="input", default=None)),
)
),
)
@@ -14221,10 +16933,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("draft_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="draftId", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionFreeShippingDiscountInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionFreeShippingDiscountInput), graphql_name="input", default=None)),
)
),
)
@@ -14235,10 +16944,7 @@ class Mutation(sgqlc.types.Type):
(
("draft_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="draftId", default=None)),
("discount_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="discountId", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionFreeShippingDiscountInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionFreeShippingDiscountInput), graphql_name="input", default=None)),
)
),
)
@@ -14248,10 +16954,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("draft_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="draftId", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionLineInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionLineInput), graphql_name="input", default=None)),
)
),
)
@@ -14272,10 +16975,7 @@ class Mutation(sgqlc.types.Type):
(
("draft_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="draftId", default=None)),
("line_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="lineId", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionLineUpdateInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionLineUpdateInput), graphql_name="input", default=None)),
)
),
)
@@ -14285,10 +16985,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("draft_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="draftId", default=None)),
- (
- "input",
- sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionDraftInput), graphql_name="input", default=None),
- ),
+ ("input", sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionDraftInput), graphql_name="input", default=None)),
)
),
)
@@ -14301,9 +16998,7 @@ class Mutation(sgqlc.types.Type):
(
"tags",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))),
- graphql_name="tags",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="tags", default=None
),
),
)
@@ -14318,14 +17013,17 @@ class Mutation(sgqlc.types.Type):
(
"tags",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))),
- graphql_name="tags",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="tags", default=None
),
),
)
),
)
+ tax_app_configure = sgqlc.types.Field(
+ "TaxAppConfigurePayload",
+ graphql_name="taxAppConfigure",
+ args=sgqlc.types.ArgDict((("ready", sgqlc.types.Arg(sgqlc.types.non_null(Boolean), graphql_name="ready", default=None)),)),
+ )
translations_register = sgqlc.types.Field(
"TranslationsRegisterPayload",
graphql_name="translationsRegister",
@@ -14360,15 +17058,10 @@ class Mutation(sgqlc.types.Type):
(
"locales",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))),
- graphql_name="locales",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="locales", default=None
),
),
- (
- "market_ids",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="marketIds", default=None),
- ),
+ ("market_ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="marketIds", default=None)),
)
),
)
@@ -14380,11 +17073,7 @@ class Mutation(sgqlc.types.Type):
(
(
"ids",
- sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="ids",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="ids", default=None),
),
)
),
@@ -14393,12 +17082,7 @@ class Mutation(sgqlc.types.Type):
"UrlRedirectBulkDeleteBySavedSearchPayload",
graphql_name="urlRedirectBulkDeleteBySavedSearch",
args=sgqlc.types.ArgDict(
- (
- (
- "saved_search_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="savedSearchId", default=None),
- ),
- )
+ (("saved_search_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="savedSearchId", default=None)),)
),
)
url_redirect_bulk_delete_by_search = sgqlc.types.Field(
@@ -14410,12 +17094,7 @@ class Mutation(sgqlc.types.Type):
"UrlRedirectCreatePayload",
graphql_name="urlRedirectCreate",
args=sgqlc.types.ArgDict(
- (
- (
- "url_redirect",
- sgqlc.types.Arg(sgqlc.types.non_null(UrlRedirectInput), graphql_name="urlRedirect", default=None),
- ),
- )
+ (("url_redirect", sgqlc.types.Arg(sgqlc.types.non_null(UrlRedirectInput), graphql_name="urlRedirect", default=None)),)
),
)
url_redirect_delete = sgqlc.types.Field(
@@ -14439,10 +17118,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "url_redirect",
- sgqlc.types.Arg(sgqlc.types.non_null(UrlRedirectInput), graphql_name="urlRedirect", default=None),
- ),
+ ("url_redirect", sgqlc.types.Arg(sgqlc.types.non_null(UrlRedirectInput), graphql_name="urlRedirect", default=None)),
)
),
)
@@ -14450,12 +17126,7 @@ class Mutation(sgqlc.types.Type):
"WebPixelCreatePayload",
graphql_name="webPixelCreate",
args=sgqlc.types.ArgDict(
- (
- (
- "web_pixel",
- sgqlc.types.Arg(sgqlc.types.non_null(WebPixelInput), graphql_name="webPixel", default=None),
- ),
- )
+ (("web_pixel", sgqlc.types.Arg(sgqlc.types.non_null(WebPixelInput), graphql_name="webPixel", default=None)),)
),
)
web_pixel_delete = sgqlc.types.Field(
@@ -14469,10 +17140,7 @@ class Mutation(sgqlc.types.Type):
args=sgqlc.types.ArgDict(
(
("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),
- (
- "web_pixel",
- sgqlc.types.Arg(sgqlc.types.non_null(WebPixelInput), graphql_name="webPixel", default=None),
- ),
+ ("web_pixel", sgqlc.types.Arg(sgqlc.types.non_null(WebPixelInput), graphql_name="webPixel", default=None)),
)
),
)
@@ -14481,10 +17149,7 @@ class Mutation(sgqlc.types.Type):
graphql_name="webhookSubscriptionCreate",
args=sgqlc.types.ArgDict(
(
- (
- "topic",
- sgqlc.types.Arg(sgqlc.types.non_null(WebhookSubscriptionTopic), graphql_name="topic", default=None),
- ),
+ ("topic", sgqlc.types.Arg(sgqlc.types.non_null(WebhookSubscriptionTopic), graphql_name="topic", default=None)),
(
"webhook_subscription",
sgqlc.types.Arg(sgqlc.types.non_null(WebhookSubscriptionInput), graphql_name="webhookSubscription", default=None),
@@ -14514,15 +17179,9 @@ class Mutation(sgqlc.types.Type):
class MutationsStagedUploadTargetGenerateUploadParameter(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("name", "value")
- name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
- value = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="value")
-
-
-class Navigable(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("default_cursor",)
- default_cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="defaultCursor")
+ __field_names__ = ("name", "value")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ value = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="value")
class NavigationItem(sgqlc.types.Type):
@@ -14533,18 +17192,6 @@ class NavigationItem(sgqlc.types.Type):
url = sgqlc.types.Field(sgqlc.types.non_null(URL), graphql_name="url")
-class Node(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("id",)
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
-
-
-class OnlineStorePreviewable(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("online_store_preview_url",)
- online_store_preview_url = sgqlc.types.Field(URL, graphql_name="onlineStorePreviewUrl")
-
-
class OrderApp(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("icon", "id", "name")
@@ -14581,8 +17228,7 @@ class OrderCreateMandatePaymentPayload(sgqlc.types.Type):
job = sgqlc.types.Field(Job, graphql_name="job")
payment_reference_id = sgqlc.types.Field(String, graphql_name="paymentReferenceId")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("OrderCreateMandatePaymentUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("OrderCreateMandatePaymentUserError"))), graphql_name="userErrors"
)
@@ -14653,8 +17299,7 @@ class OrderInvoiceSendPayload(sgqlc.types.Type):
__field_names__ = ("order", "user_errors")
order = sgqlc.types.Field("Order", graphql_name="order")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("OrderInvoiceSendUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("OrderInvoiceSendUserError"))), graphql_name="userErrors"
)
@@ -14793,6 +17438,83 @@ class PageInfo(sgqlc.types.Type):
start_cursor = sgqlc.types.Field(String, graphql_name="startCursor")
+class ParseError(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("code", "message", "range")
+ code = sgqlc.types.Field(sgqlc.types.non_null(ParseErrorCode), graphql_name="code")
+ message = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="message")
+ range = sgqlc.types.Field("ParseErrorRange", graphql_name="range")
+
+
+class ParseErrorRange(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("end", "start")
+ end = sgqlc.types.Field(sgqlc.types.non_null(ErrorPosition), graphql_name="end")
+ start = sgqlc.types.Field(sgqlc.types.non_null(ErrorPosition), graphql_name="start")
+
+
+class PaymentCustomizationActivationPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("ids", "user_errors")
+ ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="ids")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentCustomizationError"))), graphql_name="userErrors"
+ )
+
+
+class PaymentCustomizationConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentCustomizationEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentCustomization"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class PaymentCustomizationCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("payment_customization", "user_errors")
+ payment_customization = sgqlc.types.Field("PaymentCustomization", graphql_name="paymentCustomization")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentCustomizationError"))), graphql_name="userErrors"
+ )
+
+
+class PaymentCustomizationDeletePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("deleted_id", "user_errors")
+ deleted_id = sgqlc.types.Field(ID, graphql_name="deletedId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentCustomizationError"))), graphql_name="userErrors"
+ )
+
+
+class PaymentCustomizationEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("PaymentCustomization"), graphql_name="node")
+
+
+class PaymentCustomizationUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("payment_customization", "user_errors")
+ payment_customization = sgqlc.types.Field("PaymentCustomization", graphql_name="paymentCustomization")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentCustomizationError"))), graphql_name="userErrors"
+ )
+
+
+class PaymentReminderSendPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("success", "user_errors")
+ success = sgqlc.types.Field(Boolean, graphql_name="success")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentReminderSendUserError"))), graphql_name="userErrors"
+ )
+
+
class PaymentScheduleConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -14812,8 +17534,7 @@ class PaymentSettings(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("supported_digital_wallets",)
supported_digital_wallets = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DigitalWallet))),
- graphql_name="supportedDigitalWallets",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DigitalWallet))), graphql_name="supportedDigitalWallets"
)
@@ -14822,8 +17543,7 @@ class PaymentTermsCreatePayload(sgqlc.types.Type):
__field_names__ = ("payment_terms", "user_errors")
payment_terms = sgqlc.types.Field("PaymentTerms", graphql_name="paymentTerms")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentTermsCreateUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentTermsCreateUserError"))), graphql_name="userErrors"
)
@@ -14832,8 +17552,7 @@ class PaymentTermsDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_id", "user_errors")
deleted_id = sgqlc.types.Field(ID, graphql_name="deletedId")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentTermsDeleteUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentTermsDeleteUserError"))), graphql_name="userErrors"
)
@@ -14842,11 +17561,25 @@ class PaymentTermsUpdatePayload(sgqlc.types.Type):
__field_names__ = ("payment_terms", "user_errors")
payment_terms = sgqlc.types.Field("PaymentTerms", graphql_name="paymentTerms")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentTermsUpdateUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentTermsUpdateUserError"))), graphql_name="userErrors"
)
+class PolarisVizDataPoint(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("key", "value")
+ key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
+ value = sgqlc.types.Field(String, graphql_name="value")
+
+
+class PolarisVizDataSeries(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("data", "is_comparison", "name")
+ data = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(PolarisVizDataPoint))), graphql_name="data")
+ is_comparison = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isComparison")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+
+
class PriceListAdjustment(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("type", "value")
@@ -14854,6 +17587,12 @@ class PriceListAdjustment(sgqlc.types.Type):
value = sgqlc.types.Field(sgqlc.types.non_null(Float), graphql_name="value")
+class PriceListAdjustmentSettings(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("compare_at_mode",)
+ compare_at_mode = sgqlc.types.Field(sgqlc.types.non_null(PriceListCompareAtMode), graphql_name="compareAtMode")
+
+
class PriceListConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -14862,13 +17601,6 @@ class PriceListConnection(sgqlc.types.relay.Connection):
page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-class PriceListContextRule(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("countries", "market")
- countries = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CountryCode))), graphql_name="countries")
- market = sgqlc.types.Field("Market", graphql_name="market")
-
-
class PriceListCreatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("price_list", "user_errors")
@@ -14899,7 +17631,20 @@ class PriceListFixedPricesAddPayload(sgqlc.types.Type):
__field_names__ = ("prices", "user_errors")
prices = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("PriceListPrice")), graphql_name="prices")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceListPriceUserError"))),
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceListPriceUserError"))), graphql_name="userErrors"
+ )
+
+
+class PriceListFixedPricesByProductUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("price_list", "prices_to_add_products", "prices_to_delete_products", "user_errors")
+ price_list = sgqlc.types.Field("PriceList", graphql_name="priceList")
+ prices_to_add_products = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("Product")), graphql_name="pricesToAddProducts")
+ prices_to_delete_products = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null("Product")), graphql_name="pricesToDeleteProducts"
+ )
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceListFixedPricesByProductBulkUpdateUserError"))),
graphql_name="userErrors",
)
@@ -14911,15 +17656,28 @@ class PriceListFixedPricesDeletePayload(sgqlc.types.Type):
sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="deletedFixedPriceVariantIds"
)
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceListPriceUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceListPriceUserError"))), graphql_name="userErrors"
+ )
+
+
+class PriceListFixedPricesUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("deleted_fixed_price_variant_ids", "price_list", "prices_added", "user_errors")
+ deleted_fixed_price_variant_ids = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="deletedFixedPriceVariantIds"
+ )
+ price_list = sgqlc.types.Field("PriceList", graphql_name="priceList")
+ prices_added = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("PriceListPrice")), graphql_name="pricesAdded")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceListPriceUserError"))), graphql_name="userErrors"
)
class PriceListParent(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("adjustment",)
+ __field_names__ = ("adjustment", "settings")
adjustment = sgqlc.types.Field(sgqlc.types.non_null(PriceListAdjustment), graphql_name="adjustment")
+ settings = sgqlc.types.Field(sgqlc.types.non_null(PriceListAdjustmentSettings), graphql_name="settings")
class PriceListPrice(sgqlc.types.Type):
@@ -14960,8 +17718,7 @@ class PriceRuleActivatePayload(sgqlc.types.Type):
__field_names__ = ("price_rule", "price_rule_user_errors")
price_rule = sgqlc.types.Field("PriceRule", graphql_name="priceRule")
price_rule_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))),
- graphql_name="priceRuleUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))), graphql_name="priceRuleUserErrors"
)
@@ -14979,8 +17736,7 @@ class PriceRuleCreatePayload(sgqlc.types.Type):
price_rule = sgqlc.types.Field("PriceRule", graphql_name="priceRule")
price_rule_discount_code = sgqlc.types.Field("PriceRuleDiscountCode", graphql_name="priceRuleDiscountCode")
price_rule_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))),
- graphql_name="priceRuleUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))), graphql_name="priceRuleUserErrors"
)
@@ -15012,8 +17768,7 @@ class PriceRuleDeactivatePayload(sgqlc.types.Type):
__field_names__ = ("price_rule", "price_rule_user_errors")
price_rule = sgqlc.types.Field("PriceRule", graphql_name="priceRule")
price_rule_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))),
- graphql_name="priceRuleUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))), graphql_name="priceRuleUserErrors"
)
@@ -15022,8 +17777,7 @@ class PriceRuleDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_price_rule_id", "price_rule_user_errors", "shop")
deleted_price_rule_id = sgqlc.types.Field(ID, graphql_name="deletedPriceRuleId")
price_rule_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))),
- graphql_name="priceRuleUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))), graphql_name="priceRuleUserErrors"
)
shop = sgqlc.types.Field(sgqlc.types.non_null("Shop"), graphql_name="shop")
@@ -15032,8 +17786,7 @@ class PriceRuleDiscountCodeConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleDiscountCodeEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleDiscountCodeEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleDiscountCode"))), graphql_name="nodes"
@@ -15047,8 +17800,7 @@ class PriceRuleDiscountCodeCreatePayload(sgqlc.types.Type):
price_rule = sgqlc.types.Field("PriceRule", graphql_name="priceRule")
price_rule_discount_code = sgqlc.types.Field("PriceRuleDiscountCode", graphql_name="priceRuleDiscountCode")
price_rule_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))),
- graphql_name="priceRuleUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))), graphql_name="priceRuleUserErrors"
)
@@ -15065,8 +17817,7 @@ class PriceRuleDiscountCodeUpdatePayload(sgqlc.types.Type):
price_rule = sgqlc.types.Field("PriceRule", graphql_name="priceRule")
price_rule_discount_code = sgqlc.types.Field("PriceRuleDiscountCode", graphql_name="priceRuleDiscountCode")
price_rule_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))),
- graphql_name="priceRuleUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))), graphql_name="priceRuleUserErrors"
)
@@ -15235,8 +17986,7 @@ class PriceRuleUpdatePayload(sgqlc.types.Type):
price_rule = sgqlc.types.Field("PriceRule", graphql_name="priceRule")
price_rule_discount_code = sgqlc.types.Field("PriceRuleDiscountCode", graphql_name="priceRuleDiscountCode")
price_rule_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))),
- graphql_name="priceRuleUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PriceRuleUserError"))), graphql_name="priceRuleUserErrors"
)
@@ -15301,8 +18051,7 @@ class ProductChangeStatusPayload(sgqlc.types.Type):
__field_names__ = ("product", "user_errors")
product = sgqlc.types.Field("Product", graphql_name="product")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductChangeStatusUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductChangeStatusUserError"))), graphql_name="userErrors"
)
@@ -15316,7 +18065,8 @@ class ProductConnection(sgqlc.types.relay.Connection):
class ProductContextualPricing(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("max_variant_pricing", "min_variant_pricing", "price_range")
+ __field_names__ = ("fixed_quantity_rules_count", "max_variant_pricing", "min_variant_pricing", "price_range")
+ fixed_quantity_rules_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="fixedQuantityRulesCount")
max_variant_pricing = sgqlc.types.Field("ProductVariantContextualPricing", graphql_name="maxVariantPricing")
min_variant_pricing = sgqlc.types.Field("ProductVariantContextualPricing", graphql_name="minVariantPricing")
price_range = sgqlc.types.Field(sgqlc.types.non_null("ProductPriceRangeV2"), graphql_name="priceRange")
@@ -15327,8 +18077,7 @@ class ProductCreateMediaPayload(sgqlc.types.Type):
__field_names__ = ("media", "media_user_errors", "product")
media = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(Media)), graphql_name="media")
media_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaUserError"))),
- graphql_name="mediaUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaUserError"))), graphql_name="mediaUserErrors"
)
product = sgqlc.types.Field("Product", graphql_name="product")
@@ -15341,6 +18090,16 @@ class ProductCreatePayload(sgqlc.types.Type):
user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+class ProductDeleteAsyncPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("delete_product_id", "job", "user_errors")
+ delete_product_id = sgqlc.types.Field(ID, graphql_name="deleteProductId")
+ job = sgqlc.types.Field(Job, graphql_name="job")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductDeleteUserError"))), graphql_name="userErrors"
+ )
+
+
class ProductDeleteImagesPayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("deleted_image_ids", "product", "user_errors")
@@ -15357,8 +18116,7 @@ class ProductDeleteMediaPayload(sgqlc.types.Type):
deleted_media_ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="deletedMediaIds")
deleted_product_image_ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="deletedProductImageIds")
media_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaUserError"))),
- graphql_name="mediaUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaUserError"))), graphql_name="mediaUserErrors"
)
product = sgqlc.types.Field("Product", graphql_name="product")
@@ -15371,6 +18129,33 @@ class ProductDeletePayload(sgqlc.types.Type):
user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+class ProductDuplicateAsyncPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("duplicated_product_id", "job", "user_errors")
+ duplicated_product_id = sgqlc.types.Field(ID, graphql_name="duplicatedProductId")
+ job = sgqlc.types.Field(Job, graphql_name="job")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductDuplicateUserError"))), graphql_name="userErrors"
+ )
+
+
+class ProductDuplicateAsyncV2Payload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("duplicated_product_id", "product_duplicate_job_id", "user_errors")
+ duplicated_product_id = sgqlc.types.Field(ID, graphql_name="duplicatedProductId")
+ product_duplicate_job_id = sgqlc.types.Field(ID, graphql_name="productDuplicateJobId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductDuplicateUserError"))), graphql_name="userErrors"
+ )
+
+
+class ProductDuplicateJob(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("done", "id")
+ done = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="done")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+
+
class ProductDuplicatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("image_job", "new_product", "shop", "user_errors")
@@ -15387,6 +18172,47 @@ class ProductEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null("Product"), graphql_name="node")
+class ProductFeedConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductFeedEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductFeed"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class ProductFeedCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("product_feed", "user_errors")
+ product_feed = sgqlc.types.Field("ProductFeed", graphql_name="productFeed")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductFeedCreateUserError"))), graphql_name="userErrors"
+ )
+
+
+class ProductFeedDeletePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("deleted_id", "user_errors")
+ deleted_id = sgqlc.types.Field(ID, graphql_name="deletedId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductFeedDeleteUserError"))), graphql_name="userErrors"
+ )
+
+
+class ProductFeedEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("ProductFeed"), graphql_name="node")
+
+
+class ProductFullSyncPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("user_errors",)
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductFullSyncUserError"))), graphql_name="userErrors"
+ )
+
+
class ProductImageUpdatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("image", "user_errors")
@@ -15399,8 +18225,7 @@ class ProductJoinSellingPlanGroupsPayload(sgqlc.types.Type):
__field_names__ = ("product", "user_errors")
product = sgqlc.types.Field("Product", graphql_name="product")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))), graphql_name="userErrors"
)
@@ -15409,8 +18234,7 @@ class ProductLeaveSellingPlanGroupsPayload(sgqlc.types.Type):
__field_names__ = ("product", "user_errors")
product = sgqlc.types.Field("Product", graphql_name="product")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))), graphql_name="userErrors"
)
@@ -15474,8 +18298,7 @@ class ProductReorderMediaPayload(sgqlc.types.Type):
__field_names__ = ("job", "media_user_errors")
job = sgqlc.types.Field(Job, graphql_name="job")
media_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaUserError"))),
- graphql_name="mediaUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaUserError"))), graphql_name="mediaUserErrors"
)
@@ -15502,8 +18325,7 @@ class ProductUpdateMediaPayload(sgqlc.types.Type):
__field_names__ = ("media", "media_user_errors", "product")
media = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(Media)), graphql_name="media")
media_user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaUserError"))),
- graphql_name="mediaUserErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MediaUserError"))), graphql_name="mediaUserErrors"
)
product = sgqlc.types.Field("Product", graphql_name="product")
@@ -15525,6 +18347,25 @@ class ProductVariantAppendMediaPayload(sgqlc.types.Type):
)
+class ProductVariantComponentConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantComponentEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantComponent"))), graphql_name="nodes"
+ )
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class ProductVariantComponentEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("ProductVariantComponent"), graphql_name="node")
+
+
class ProductVariantConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -15535,9 +18376,10 @@ class ProductVariantConnection(sgqlc.types.relay.Connection):
class ProductVariantContextualPricing(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("compare_at_price", "price")
+ __field_names__ = ("compare_at_price", "price", "quantity_rule")
compare_at_price = sgqlc.types.Field(MoneyV2, graphql_name="compareAtPrice")
price = sgqlc.types.Field(sgqlc.types.non_null(MoneyV2), graphql_name="price")
+ quantity_rule = sgqlc.types.Field(sgqlc.types.non_null("QuantityRule"), graphql_name="quantityRule")
class ProductVariantCreatePayload(sgqlc.types.Type):
@@ -15578,8 +18420,7 @@ class ProductVariantJoinSellingPlanGroupsPayload(sgqlc.types.Type):
__field_names__ = ("product_variant", "user_errors")
product_variant = sgqlc.types.Field("ProductVariant", graphql_name="productVariant")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))), graphql_name="userErrors"
)
@@ -15588,8 +18429,7 @@ class ProductVariantLeaveSellingPlanGroupsPayload(sgqlc.types.Type):
__field_names__ = ("product_variant", "user_errors")
product_variant = sgqlc.types.Field("ProductVariant", graphql_name="productVariant")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))), graphql_name="userErrors"
)
@@ -15604,8 +18444,7 @@ class ProductVariantPricePairConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantPricePairEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantPricePairEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ProductVariantPricePair))), graphql_name="nodes"
@@ -15620,6 +18459,18 @@ class ProductVariantPricePairEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null(ProductVariantPricePair), graphql_name="node")
+class ProductVariantRelationshipBulkUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("parent_product_variants", "user_errors")
+ parent_product_variants = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null("ProductVariant")), graphql_name="parentProductVariants"
+ )
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantRelationshipBulkUpdateUserError"))),
+ graphql_name="userErrors",
+ )
+
+
class ProductVariantUpdatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("product", "product_variant", "user_errors")
@@ -15634,8 +18485,7 @@ class ProductVariantsBulkCreatePayload(sgqlc.types.Type):
product = sgqlc.types.Field("Product", graphql_name="product")
product_variants = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariant")), graphql_name="productVariants")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantsBulkCreateUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantsBulkCreateUserError"))), graphql_name="userErrors"
)
@@ -15644,8 +18494,7 @@ class ProductVariantsBulkDeletePayload(sgqlc.types.Type):
__field_names__ = ("product", "user_errors")
product = sgqlc.types.Field("Product", graphql_name="product")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantsBulkDeleteUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantsBulkDeleteUserError"))), graphql_name="userErrors"
)
@@ -15654,8 +18503,7 @@ class ProductVariantsBulkReorderPayload(sgqlc.types.Type):
__field_names__ = ("product", "user_errors")
product = sgqlc.types.Field("Product", graphql_name="product")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantsBulkReorderUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantsBulkReorderUserError"))), graphql_name="userErrors"
)
@@ -15665,8 +18513,16 @@ class ProductVariantsBulkUpdatePayload(sgqlc.types.Type):
product = sgqlc.types.Field("Product", graphql_name="product")
product_variants = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariant")), graphql_name="productVariants")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantsBulkUpdateUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ProductVariantsBulkUpdateUserError"))), graphql_name="userErrors"
+ )
+
+
+class PubSubServerPixelUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("server_pixel", "user_errors")
+ server_pixel = sgqlc.types.Field("ServerPixel", graphql_name="serverPixel")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ErrorsServerPixelUserError"))), graphql_name="userErrors"
)
@@ -15691,85 +18547,44 @@ class PubSubWebhookSubscriptionUpdatePayload(sgqlc.types.Type):
class PublicationConnection(sgqlc.types.relay.Connection):
- __schema__ = shopify_schema
- __field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PublicationEdge"))), graphql_name="edges")
- nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Publication"))), graphql_name="nodes")
- page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-
-
-class PublicationEdge(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("cursor", "node")
- cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null("Publication"), graphql_name="node")
-
-
-class Publishable(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = (
- "available_publication_count",
- "publication_count",
- "published_on_current_publication",
- "published_on_publication",
- "resource_publications",
- "resource_publications_v2",
- "unpublished_publications",
- )
- available_publication_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="availablePublicationCount")
- publication_count = sgqlc.types.Field(
- sgqlc.types.non_null(Int),
- graphql_name="publicationCount",
- args=sgqlc.types.ArgDict((("only_published", sgqlc.types.Arg(Boolean, graphql_name="onlyPublished", default=True)),)),
- )
- published_on_current_publication = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="publishedOnCurrentPublication")
- published_on_publication = sgqlc.types.Field(
- sgqlc.types.non_null(Boolean),
- graphql_name="publishedOnPublication",
- args=sgqlc.types.ArgDict(
- (("publication_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="publicationId", default=None)),)
- ),
- )
- resource_publications = sgqlc.types.Field(
- sgqlc.types.non_null("ResourcePublicationConnection"),
- graphql_name="resourcePublications",
- args=sgqlc.types.ArgDict(
- (
- ("only_published", sgqlc.types.Arg(Boolean, graphql_name="onlyPublished", default=True)),
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- )
- ),
- )
- resource_publications_v2 = sgqlc.types.Field(
- sgqlc.types.non_null("ResourcePublicationV2Connection"),
- graphql_name="resourcePublicationsV2",
- args=sgqlc.types.ArgDict(
- (
- ("only_published", sgqlc.types.Arg(Boolean, graphql_name="onlyPublished", default=True)),
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- )
- ),
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PublicationEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Publication"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class PublicationCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("publication", "user_errors")
+ publication = sgqlc.types.Field("Publication", graphql_name="publication")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PublicationUserError"))), graphql_name="userErrors"
)
- unpublished_publications = sgqlc.types.Field(
- sgqlc.types.non_null(PublicationConnection),
- graphql_name="unpublishedPublications",
- args=sgqlc.types.ArgDict(
- (
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- )
- ),
+
+
+class PublicationDeletePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("deleted_id", "user_errors")
+ deleted_id = sgqlc.types.Field(ID, graphql_name="deletedId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PublicationUserError"))), graphql_name="userErrors"
+ )
+
+
+class PublicationEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("Publication"), graphql_name="node")
+
+
+class PublicationUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("publication", "user_errors")
+ publication = sgqlc.types.Field("Publication", graphql_name="publication")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PublicationUserError"))), graphql_name="userErrors"
)
@@ -15805,15 +18620,6 @@ class PublishableUnpublishToCurrentChannelPayload(sgqlc.types.Type):
user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
-class PublishedTranslation(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("key", "locale", "market_id", "value")
- key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
- locale = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="locale")
- market_id = sgqlc.types.Field(ID, graphql_name="marketId")
- value = sgqlc.types.Field(String, graphql_name="value")
-
-
class PurchasingCompany(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("company", "contact", "location")
@@ -15822,9 +18628,58 @@ class PurchasingCompany(sgqlc.types.Type):
location = sgqlc.types.Field(sgqlc.types.non_null("CompanyLocation"), graphql_name="location")
+class QuantityRule(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("increment", "is_default", "maximum", "minimum", "origin_type", "product_variant")
+ increment = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="increment")
+ is_default = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isDefault")
+ maximum = sgqlc.types.Field(Int, graphql_name="maximum")
+ minimum = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="minimum")
+ origin_type = sgqlc.types.Field(sgqlc.types.non_null(QuantityRuleOriginType), graphql_name="originType")
+ product_variant = sgqlc.types.Field(sgqlc.types.non_null("ProductVariant"), graphql_name="productVariant")
+
+
+class QuantityRuleConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info", "total_count")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("QuantityRuleEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(QuantityRule))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+ total_count = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="totalCount")
+
+
+class QuantityRuleEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null(QuantityRule), graphql_name="node")
+
+
+class QuantityRulesAddPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("quantity_rules", "user_errors")
+ quantity_rules = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(QuantityRule)), graphql_name="quantityRules")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("QuantityRuleUserError"))), graphql_name="userErrors"
+ )
+
+
+class QuantityRulesDeletePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("deleted_quantity_rules_variant_ids", "user_errors")
+ deleted_quantity_rules_variant_ids = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="deletedQuantityRulesVariantIds"
+ )
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("QuantityRuleUserError"))), graphql_name="userErrors"
+ )
+
+
class QueryRoot(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = (
+ "abandonment",
+ "abandonment_by_abandoned_checkout_id",
"app",
"app_by_handle",
"app_by_key",
@@ -15838,6 +18693,10 @@ class QueryRoot(sgqlc.types.Type):
"available_carrier_services",
"available_locales",
"carrier_service",
+ "cart_transforms",
+ "catalog",
+ "catalog_operations",
+ "catalogs",
"checkout_profile",
"checkout_profiles",
"code_discount_node",
@@ -15859,11 +18718,16 @@ class QueryRoot(sgqlc.types.Type):
"current_app_installation",
"current_bulk_operation",
"customer",
+ "customer_merge_job_status",
+ "customer_merge_preview",
"customer_payment_method",
"customer_segment_members",
+ "customer_segment_members_query",
"customer_segment_membership",
"customers",
"deletion_events",
+ "delivery_customization",
+ "delivery_customizations",
"delivery_profile",
"delivery_profiles",
"delivery_settings",
@@ -15883,6 +18747,7 @@ class QueryRoot(sgqlc.types.Type):
"files",
"fulfillment",
"fulfillment_order",
+ "fulfillment_orders",
"fulfillment_service",
"gift_card",
"gift_cards",
@@ -15890,6 +18755,7 @@ class QueryRoot(sgqlc.types.Type):
"inventory_item",
"inventory_items",
"inventory_level",
+ "inventory_properties",
"job",
"location",
"locations",
@@ -15909,25 +18775,30 @@ class QueryRoot(sgqlc.types.Type):
"metafield_definition",
"metafield_definition_types",
"metafield_definitions",
- "metafield_storefront_visibilities",
- "metafield_storefront_visibility",
+ "metaobject",
+ "metaobject_by_handle",
+ "metaobject_definition",
+ "metaobject_definition_by_type",
+ "metaobject_definitions",
+ "metaobjects",
"node",
"nodes",
"order",
"order_payment_status",
"order_saved_searches",
"orders",
+ "payment_customization",
+ "payment_customizations",
"payment_terms_templates",
"price_list",
"price_lists",
- "price_rule",
"price_rule_saved_searches",
- "price_rules",
"primary_market",
- "private_metafield",
- "private_metafields",
"product",
"product_by_handle",
+ "product_duplicate_job",
+ "product_feed",
+ "product_feeds",
"product_resource_feedback",
"product_saved_searches",
"product_variant",
@@ -15937,6 +18808,11 @@ class QueryRoot(sgqlc.types.Type):
"publication",
"publications",
"refund",
+ "return_",
+ "returnable_fulfillment",
+ "returnable_fulfillments",
+ "reverse_delivery",
+ "reverse_fulfillment_order",
"script_tag",
"script_tags",
"segment",
@@ -15948,12 +18824,18 @@ class QueryRoot(sgqlc.types.Type):
"segments",
"selling_plan_group",
"selling_plan_groups",
+ "server_pixel",
"shop",
+ "shop_billing_preferences",
"shop_locales",
+ "shopify_function",
+ "shopify_functions",
"shopify_payments_account",
+ "shopifyql_query",
"staff_member",
"standard_metafield_definition_templates",
"subscription_billing_attempt",
+ "subscription_billing_attempts",
"subscription_billing_cycle",
"subscription_billing_cycles",
"subscription_contract",
@@ -15971,10 +18853,20 @@ class QueryRoot(sgqlc.types.Type):
"webhook_subscription",
"webhook_subscriptions",
)
+ abandonment = sgqlc.types.Field(
+ "Abandonment",
+ graphql_name="abandonment",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ abandonment_by_abandoned_checkout_id = sgqlc.types.Field(
+ "Abandonment",
+ graphql_name="abandonmentByAbandonedCheckoutId",
+ args=sgqlc.types.ArgDict(
+ (("abandoned_checkout_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="abandonedCheckoutId", default=None)),)
+ ),
+ )
app = sgqlc.types.Field(
- "App",
- graphql_name="app",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(ID, graphql_name="id", default=None)),)),
+ "App", graphql_name="app", args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(ID, graphql_name="id", default=None)),))
)
app_by_handle = sgqlc.types.Field(
"App",
@@ -15994,8 +18886,7 @@ class QueryRoot(sgqlc.types.Type):
),
)
app_discount_types = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AppDiscountType))),
- graphql_name="appDiscountTypes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AppDiscountType))), graphql_name="appDiscountTypes"
)
app_installation = sgqlc.types.Field(
"AppInstallation",
@@ -16064,6 +18955,43 @@ class QueryRoot(sgqlc.types.Type):
graphql_name="carrierService",
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
+ cart_transforms = sgqlc.types.Field(
+ sgqlc.types.non_null(CartTransformConnection),
+ graphql_name="cartTransforms",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ catalog = sgqlc.types.Field(
+ Catalog,
+ graphql_name="catalog",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ catalog_operations = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ResourceOperation))), graphql_name="catalogOperations"
+ )
+ catalogs = sgqlc.types.Field(
+ sgqlc.types.non_null(CatalogConnection),
+ graphql_name="catalogs",
+ args=sgqlc.types.ArgDict(
+ (
+ ("type", sgqlc.types.Arg(CatalogType, graphql_name="type", default=None)),
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("sort_key", sgqlc.types.Arg(CatalogSortKeys, graphql_name="sortKey", default="ID")),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ )
+ ),
+ )
checkout_profile = sgqlc.types.Field(
"CheckoutProfile",
graphql_name="checkoutProfile",
@@ -16134,8 +19062,7 @@ class QueryRoot(sgqlc.types.Type):
args=sgqlc.types.ArgDict((("handle", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="handle", default=None)),)),
)
collection_rules_conditions = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CollectionRuleConditions))),
- graphql_name="collectionRulesConditions",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CollectionRuleConditions))), graphql_name="collectionRulesConditions"
)
collection_saved_searches = sgqlc.types.Field(
sgqlc.types.non_null("SavedSearchConnection"),
@@ -16228,6 +19155,22 @@ class QueryRoot(sgqlc.types.Type):
graphql_name="customer",
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
+ customer_merge_job_status = sgqlc.types.Field(
+ CustomerMergeRequest,
+ graphql_name="customerMergeJobStatus",
+ args=sgqlc.types.ArgDict((("job_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="jobId", default=None)),)),
+ )
+ customer_merge_preview = sgqlc.types.Field(
+ sgqlc.types.non_null(CustomerMergePreview),
+ graphql_name="customerMergePreview",
+ args=sgqlc.types.ArgDict(
+ (
+ ("customer_one_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="customerOneId", default=None)),
+ ("customer_two_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="customerTwoId", default=None)),
+ ("override_fields", sgqlc.types.Arg(CustomerMergeOverrideFields, graphql_name="overrideFields", default=None)),
+ )
+ ),
+ )
customer_payment_method = sgqlc.types.Field(
"CustomerPaymentMethod",
graphql_name="customerPaymentMethod",
@@ -16245,6 +19188,7 @@ class QueryRoot(sgqlc.types.Type):
(
("segment_id", sgqlc.types.Arg(ID, graphql_name="segmentId", default=None)),
("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ ("query_id", sgqlc.types.Arg(ID, graphql_name="queryId", default=None)),
("timezone", sgqlc.types.Arg(String, graphql_name="timezone", default=None)),
("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
("sort_key", sgqlc.types.Arg(String, graphql_name="sortKey", default=None)),
@@ -16255,6 +19199,11 @@ class QueryRoot(sgqlc.types.Type):
)
),
)
+ customer_segment_members_query = sgqlc.types.Field(
+ "CustomerSegmentMembersQuery",
+ graphql_name="customerSegmentMembersQuery",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
customer_segment_membership = sgqlc.types.Field(
sgqlc.types.non_null("SegmentMembershipResponse"),
graphql_name="customerSegmentMembership",
@@ -16263,9 +19212,7 @@ class QueryRoot(sgqlc.types.Type):
(
"segment_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="segmentIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="segmentIds", default=None
),
),
("customer_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="customerId", default=None)),
@@ -16295,9 +19242,7 @@ class QueryRoot(sgqlc.types.Type):
(
"subject_types",
sgqlc.types.Arg(
- sgqlc.types.list_of(sgqlc.types.non_null(DeletionEventSubjectType)),
- graphql_name="subjectTypes",
- default=None,
+ sgqlc.types.list_of(sgqlc.types.non_null(DeletionEventSubjectType)), graphql_name="subjectTypes", default=None
),
),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
@@ -16310,6 +19255,25 @@ class QueryRoot(sgqlc.types.Type):
)
),
)
+ delivery_customization = sgqlc.types.Field(
+ "DeliveryCustomization",
+ graphql_name="deliveryCustomization",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ delivery_customizations = sgqlc.types.Field(
+ sgqlc.types.non_null(DeliveryCustomizationConnection),
+ graphql_name="deliveryCustomizations",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ )
+ ),
+ )
delivery_profile = sgqlc.types.Field(
"DeliveryProfile",
graphql_name="deliveryProfile",
@@ -16469,6 +19433,22 @@ class QueryRoot(sgqlc.types.Type):
graphql_name="fulfillmentOrder",
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
+ fulfillment_orders = sgqlc.types.Field(
+ sgqlc.types.non_null(FulfillmentOrderConnection),
+ graphql_name="fulfillmentOrders",
+ args=sgqlc.types.ArgDict(
+ (
+ ("include_closed", sgqlc.types.Arg(Boolean, graphql_name="includeClosed", default=False)),
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("sort_key", sgqlc.types.Arg(FulfillmentOrderSortKeys, graphql_name="sortKey", default="ID")),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ )
+ ),
+ )
fulfillment_service = sgqlc.types.Field(
FulfillmentService,
graphql_name="fulfillmentService",
@@ -16524,15 +19504,14 @@ class QueryRoot(sgqlc.types.Type):
graphql_name="inventoryLevel",
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
+ inventory_properties = sgqlc.types.Field(sgqlc.types.non_null(InventoryProperties), graphql_name="inventoryProperties")
job = sgqlc.types.Field(
Job,
graphql_name="job",
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
location = sgqlc.types.Field(
- "Location",
- graphql_name="location",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(ID, graphql_name="id", default=None)),)),
+ "Location", graphql_name="location", args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(ID, graphql_name="id", default=None)),))
)
locations = sgqlc.types.Field(
sgqlc.types.non_null(LocationConnection),
@@ -16587,12 +19566,7 @@ class QueryRoot(sgqlc.types.Type):
"Market",
graphql_name="marketByGeography",
args=sgqlc.types.ArgDict(
- (
- (
- "country_code",
- sgqlc.types.Arg(sgqlc.types.non_null(CountryCode), graphql_name="countryCode", default=None),
- ),
- )
+ (("country_code", sgqlc.types.Arg(sgqlc.types.non_null(CountryCode), graphql_name="countryCode", default=None)),)
),
)
market_localizable_resource = sgqlc.types.Field(
@@ -16625,9 +19599,7 @@ class QueryRoot(sgqlc.types.Type):
(
"resource_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="resourceIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="resourceIds", default=None
),
),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
@@ -16647,10 +19619,7 @@ class QueryRoot(sgqlc.types.Type):
"marketing_activity_ids",
sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="marketingActivityIds", default=()),
),
- (
- "remote_ids",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="remoteIds", default=()),
- ),
+ ("remote_ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="remoteIds", default=())),
("utm", sgqlc.types.Arg(UTMInput, graphql_name="utm", default=None)),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
@@ -16712,8 +19681,7 @@ class QueryRoot(sgqlc.types.Type):
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
metafield_definition_types = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldDefinitionType))),
- graphql_name="metafieldDefinitionTypes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldDefinitionType))), graphql_name="metafieldDefinitionTypes"
)
metafield_definitions = sgqlc.types.Field(
sgqlc.types.non_null(MetafieldDefinitionConnection),
@@ -16722,14 +19690,8 @@ class QueryRoot(sgqlc.types.Type):
(
("key", sgqlc.types.Arg(String, graphql_name="key", default=None)),
("namespace", sgqlc.types.Arg(String, graphql_name="namespace", default=None)),
- (
- "owner_type",
- sgqlc.types.Arg(sgqlc.types.non_null(MetafieldOwnerType), graphql_name="ownerType", default=None),
- ),
- (
- "pinned_status",
- sgqlc.types.Arg(MetafieldDefinitionPinnedStatus, graphql_name="pinnedStatus", default="ANY"),
- ),
+ ("owner_type", sgqlc.types.Arg(sgqlc.types.non_null(MetafieldOwnerType), graphql_name="ownerType", default=None)),
+ ("pinned_status", sgqlc.types.Arg(MetafieldDefinitionPinnedStatus, graphql_name="pinnedStatus", default="ANY")),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
@@ -16740,12 +19702,33 @@ class QueryRoot(sgqlc.types.Type):
)
),
)
- metafield_storefront_visibilities = sgqlc.types.Field(
- sgqlc.types.non_null(MetafieldStorefrontVisibilityConnection),
- graphql_name="metafieldStorefrontVisibilities",
+ metaobject = sgqlc.types.Field(
+ "Metaobject",
+ graphql_name="metaobject",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ metaobject_by_handle = sgqlc.types.Field(
+ "Metaobject",
+ graphql_name="metaobjectByHandle",
+ args=sgqlc.types.ArgDict(
+ (("handle", sgqlc.types.Arg(sgqlc.types.non_null(MetaobjectHandleInput), graphql_name="handle", default=None)),)
+ ),
+ )
+ metaobject_definition = sgqlc.types.Field(
+ "MetaobjectDefinition",
+ graphql_name="metaobjectDefinition",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ metaobject_definition_by_type = sgqlc.types.Field(
+ "MetaobjectDefinition",
+ graphql_name="metaobjectDefinitionByType",
+ args=sgqlc.types.ArgDict((("type", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="type", default=None)),)),
+ )
+ metaobject_definitions = sgqlc.types.Field(
+ sgqlc.types.non_null(MetaobjectDefinitionConnection),
+ graphql_name="metaobjectDefinitions",
args=sgqlc.types.ArgDict(
(
- ("namespace", sgqlc.types.Arg(String, graphql_name="namespace", default=None)),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
@@ -16754,10 +19737,21 @@ class QueryRoot(sgqlc.types.Type):
)
),
)
- metafield_storefront_visibility = sgqlc.types.Field(
- "MetafieldStorefrontVisibility",
- graphql_name="metafieldStorefrontVisibility",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ metaobjects = sgqlc.types.Field(
+ sgqlc.types.non_null(MetaobjectConnection),
+ graphql_name="metaobjects",
+ args=sgqlc.types.ArgDict(
+ (
+ ("type", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="type", default=None)),
+ ("sort_key", sgqlc.types.Arg(String, graphql_name="sortKey", default=None)),
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ )
+ ),
)
node = sgqlc.types.Field(
Node,
@@ -16771,11 +19765,7 @@ class QueryRoot(sgqlc.types.Type):
(
(
"ids",
- sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="ids",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="ids", default=None),
),
)
),
@@ -16790,10 +19780,7 @@ class QueryRoot(sgqlc.types.Type):
graphql_name="orderPaymentStatus",
args=sgqlc.types.ArgDict(
(
- (
- "payment_reference_id",
- sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="paymentReferenceId", default=None),
- ),
+ ("payment_reference_id", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="paymentReferenceId", default=None)),
("order_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="orderId", default=None)),
)
),
@@ -16827,6 +19814,25 @@ class QueryRoot(sgqlc.types.Type):
)
),
)
+ payment_customization = sgqlc.types.Field(
+ "PaymentCustomization",
+ graphql_name="paymentCustomization",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ payment_customizations = sgqlc.types.Field(
+ sgqlc.types.non_null(PaymentCustomizationConnection),
+ graphql_name="paymentCustomizations",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ )
+ ),
+ )
payment_terms_templates = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("PaymentTermsTemplate"))),
graphql_name="paymentTermsTemplates",
@@ -16844,7 +19850,6 @@ class QueryRoot(sgqlc.types.Type):
graphql_name="priceLists",
args=sgqlc.types.ArgDict(
(
- ("match_rule", sgqlc.types.Arg(PriceListContext, graphql_name="matchRule", default=None)),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
@@ -16854,11 +19859,6 @@ class QueryRoot(sgqlc.types.Type):
)
),
)
- price_rule = sgqlc.types.Field(
- "PriceRule",
- graphql_name="priceRule",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
- )
price_rule_saved_searches = sgqlc.types.Field(
sgqlc.types.non_null("SavedSearchConnection"),
graphql_name="priceRuleSavedSearches",
@@ -16872,35 +19872,32 @@ class QueryRoot(sgqlc.types.Type):
)
),
)
- price_rules = sgqlc.types.Field(
- sgqlc.types.non_null(PriceRuleConnection),
- graphql_name="priceRules",
- args=sgqlc.types.ArgDict(
- (
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- ("sort_key", sgqlc.types.Arg(PriceRuleSortKeys, graphql_name="sortKey", default="ID")),
- ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
- ("saved_search_id", sgqlc.types.Arg(ID, graphql_name="savedSearchId", default=None)),
- )
- ),
- )
primary_market = sgqlc.types.Field(sgqlc.types.non_null("Market"), graphql_name="primaryMarket")
- private_metafield = sgqlc.types.Field(
- "PrivateMetafield",
- graphql_name="privateMetafield",
+ product = sgqlc.types.Field(
+ "Product",
+ graphql_name="product",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ product_by_handle = sgqlc.types.Field(
+ "Product",
+ graphql_name="productByHandle",
+ args=sgqlc.types.ArgDict((("handle", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="handle", default=None)),)),
+ )
+ product_duplicate_job = sgqlc.types.Field(
+ sgqlc.types.non_null(ProductDuplicateJob),
+ graphql_name="productDuplicateJob",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ product_feed = sgqlc.types.Field(
+ "ProductFeed",
+ graphql_name="productFeed",
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
- private_metafields = sgqlc.types.Field(
- sgqlc.types.non_null(PrivateMetafieldConnection),
- graphql_name="privateMetafields",
+ product_feeds = sgqlc.types.Field(
+ sgqlc.types.non_null(ProductFeedConnection),
+ graphql_name="productFeeds",
args=sgqlc.types.ArgDict(
(
- ("namespace", sgqlc.types.Arg(String, graphql_name="namespace", default=None)),
- ("owner", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="owner", default=None)),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
@@ -16909,16 +19906,6 @@ class QueryRoot(sgqlc.types.Type):
)
),
)
- product = sgqlc.types.Field(
- "Product",
- graphql_name="product",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
- )
- product_by_handle = sgqlc.types.Field(
- "Product",
- graphql_name="productByHandle",
- args=sgqlc.types.ArgDict((("handle", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="handle", default=None)),)),
- )
product_resource_feedback = sgqlc.types.Field(
ProductResourceFeedback,
graphql_name="productResourceFeedback",
@@ -16977,16 +19964,46 @@ class QueryRoot(sgqlc.types.Type):
public_api_versions = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ApiVersion))), graphql_name="publicApiVersions"
)
- publication = sgqlc.types.Field(
- "Publication",
- graphql_name="publication",
+ publication = sgqlc.types.Field(
+ "Publication",
+ graphql_name="publication",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ publications = sgqlc.types.Field(
+ sgqlc.types.non_null(PublicationConnection),
+ graphql_name="publications",
+ args=sgqlc.types.ArgDict(
+ (
+ ("catalog_type", sgqlc.types.Arg(CatalogType, graphql_name="catalogType", default=None)),
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ refund = sgqlc.types.Field(
+ "Refund",
+ graphql_name="refund",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ return_ = sgqlc.types.Field(
+ "Return",
+ graphql_name="return",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ returnable_fulfillment = sgqlc.types.Field(
+ "ReturnableFulfillment",
+ graphql_name="returnableFulfillment",
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
- publications = sgqlc.types.Field(
- sgqlc.types.non_null(PublicationConnection),
- graphql_name="publications",
+ returnable_fulfillments = sgqlc.types.Field(
+ sgqlc.types.non_null("ReturnableFulfillmentConnection"),
+ graphql_name="returnableFulfillments",
args=sgqlc.types.ArgDict(
(
+ ("order_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="orderId", default=None)),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
@@ -16995,9 +20012,14 @@ class QueryRoot(sgqlc.types.Type):
)
),
)
- refund = sgqlc.types.Field(
- "Refund",
- graphql_name="refund",
+ reverse_delivery = sgqlc.types.Field(
+ "ReverseDelivery",
+ graphql_name="reverseDelivery",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ reverse_fulfillment_order = sgqlc.types.Field(
+ "ReverseFulfillmentOrder",
+ graphql_name="reverseFulfillmentOrder",
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
script_tag = sgqlc.types.Field(
@@ -17068,6 +20090,7 @@ class QueryRoot(sgqlc.types.Type):
(
("search", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="search", default=None)),
("filter_query_name", sgqlc.types.Arg(String, graphql_name="filterQueryName", default=None)),
+ ("function_parameter_query_name", sgqlc.types.Arg(String, graphql_name="functionParameterQueryName", default=None)),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
@@ -17110,17 +20133,42 @@ class QueryRoot(sgqlc.types.Type):
)
),
)
+ server_pixel = sgqlc.types.Field("ServerPixel", graphql_name="serverPixel")
shop = sgqlc.types.Field(sgqlc.types.non_null("Shop"), graphql_name="shop")
+ shop_billing_preferences = sgqlc.types.Field(sgqlc.types.non_null("ShopBillingPreferences"), graphql_name="shopBillingPreferences")
shop_locales = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopLocale"))),
graphql_name="shopLocales",
args=sgqlc.types.ArgDict((("published", sgqlc.types.Arg(Boolean, graphql_name="published", default=False)),)),
)
+ shopify_function = sgqlc.types.Field(
+ "ShopifyFunction",
+ graphql_name="shopifyFunction",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="id", default=None)),)),
+ )
+ shopify_functions = sgqlc.types.Field(
+ sgqlc.types.non_null("ShopifyFunctionConnection"),
+ graphql_name="shopifyFunctions",
+ args=sgqlc.types.ArgDict(
+ (
+ ("api_type", sgqlc.types.Arg(String, graphql_name="apiType", default=None)),
+ ("use_creation_ui", sgqlc.types.Arg(Boolean, graphql_name="useCreationUi", default=None)),
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
shopify_payments_account = sgqlc.types.Field("ShopifyPaymentsAccount", graphql_name="shopifyPaymentsAccount")
+ shopifyql_query = sgqlc.types.Field(
+ ShopifyqlResponse,
+ graphql_name="shopifyqlQuery",
+ args=sgqlc.types.ArgDict((("query", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="query", default=None)),)),
+ )
staff_member = sgqlc.types.Field(
- "StaffMember",
- graphql_name="staffMember",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(ID, graphql_name="id", default=None)),)),
+ "StaffMember", graphql_name="staffMember", args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(ID, graphql_name="id", default=None)),))
)
standard_metafield_definition_templates = sgqlc.types.Field(
sgqlc.types.non_null("StandardMetafieldDefinitionTemplateConnection"),
@@ -17140,6 +20188,21 @@ class QueryRoot(sgqlc.types.Type):
graphql_name="subscriptionBillingAttempt",
args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
)
+ subscription_billing_attempts = sgqlc.types.Field(
+ sgqlc.types.non_null("SubscriptionBillingAttemptConnection"),
+ graphql_name="subscriptionBillingAttempts",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("sort_key", sgqlc.types.Arg(SubscriptionBillingAttemptsSortKeys, graphql_name="sortKey", default="CREATED_AT")),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ )
+ ),
+ )
subscription_billing_cycle = sgqlc.types.Field(
"SubscriptionBillingCycle",
graphql_name="subscriptionBillingCycle",
@@ -17147,11 +20210,7 @@ class QueryRoot(sgqlc.types.Type):
(
(
"billing_cycle_input",
- sgqlc.types.Arg(
- sgqlc.types.non_null(SubscriptionBillingCycleInput),
- graphql_name="billingCycleInput",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.non_null(SubscriptionBillingCycleInput), graphql_name="billingCycleInput", default=None),
),
)
),
@@ -17165,17 +20224,13 @@ class QueryRoot(sgqlc.types.Type):
(
"billing_cycles_date_range_selector",
sgqlc.types.Arg(
- SubscriptionBillingCyclesDateRangeSelector,
- graphql_name="billingCyclesDateRangeSelector",
- default=None,
+ SubscriptionBillingCyclesDateRangeSelector, graphql_name="billingCyclesDateRangeSelector", default=None
),
),
(
"billing_cycles_index_range_selector",
sgqlc.types.Arg(
- SubscriptionBillingCyclesIndexRangeSelector,
- graphql_name="billingCyclesIndexRangeSelector",
- default=None,
+ SubscriptionBillingCyclesIndexRangeSelector, graphql_name="billingCyclesIndexRangeSelector", default=None
),
),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
@@ -17183,10 +20238,7 @@ class QueryRoot(sgqlc.types.Type):
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- (
- "sort_key",
- sgqlc.types.Arg(SubscriptionBillingCyclesSortKeys, graphql_name="sortKey", default="CYCLE_INDEX"),
- ),
+ ("sort_key", sgqlc.types.Arg(SubscriptionBillingCyclesSortKeys, graphql_name="sortKey", default="CYCLE_INDEX")),
)
),
)
@@ -17205,6 +20257,7 @@ class QueryRoot(sgqlc.types.Type):
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
)
),
)
@@ -17257,9 +20310,7 @@ class QueryRoot(sgqlc.types.Type):
(
"resource_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="resourceIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="resourceIds", default=None
),
),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
@@ -17310,9 +20361,7 @@ class QueryRoot(sgqlc.types.Type):
),
)
web_pixel = sgqlc.types.Field(
- "WebPixel",
- graphql_name="webPixel",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ "WebPixel", graphql_name="webPixel", args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(ID, graphql_name="id", default=None)),))
)
webhook_subscription = sgqlc.types.Field(
"WebhookSubscription",
@@ -17329,19 +20378,14 @@ class QueryRoot(sgqlc.types.Type):
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- (
- "sort_key",
- sgqlc.types.Arg(WebhookSubscriptionSortKeys, graphql_name="sortKey", default="CREATED_AT"),
- ),
+ ("sort_key", sgqlc.types.Arg(WebhookSubscriptionSortKeys, graphql_name="sortKey", default="CREATED_AT")),
("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
("callback_url", sgqlc.types.Arg(URL, graphql_name="callbackUrl", default=None)),
("format", sgqlc.types.Arg(WebhookSubscriptionFormat, graphql_name="format", default=None)),
(
"topics",
sgqlc.types.Arg(
- sgqlc.types.list_of(sgqlc.types.non_null(WebhookSubscriptionTopic)),
- graphql_name="topics",
- default=None,
+ sgqlc.types.list_of(sgqlc.types.non_null(WebhookSubscriptionTopic)), graphql_name="topics", default=None
),
),
)
@@ -17349,147 +20393,454 @@ class QueryRoot(sgqlc.types.Type):
)
-class RefundCreatePayload(sgqlc.types.Type):
+class RefundConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("RefundEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Refund"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class RefundCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("order", "refund", "user_errors")
+ order = sgqlc.types.Field("Order", graphql_name="order")
+ refund = sgqlc.types.Field("Refund", graphql_name="refund")
+ user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+
+
+class RefundDuty(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("amount_set", "original_duty")
+ amount_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="amountSet")
+ original_duty = sgqlc.types.Field("Duty", graphql_name="originalDuty")
+
+
+class RefundEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("Refund"), graphql_name="node")
+
+
+class RefundLineItem(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("line_item", "location", "price_set", "quantity", "restock_type", "restocked", "subtotal_set", "total_tax_set")
+ line_item = sgqlc.types.Field(sgqlc.types.non_null("LineItem"), graphql_name="lineItem")
+ location = sgqlc.types.Field("Location", graphql_name="location")
+ price_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="priceSet")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ restock_type = sgqlc.types.Field(sgqlc.types.non_null(RefundLineItemRestockType), graphql_name="restockType")
+ restocked = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="restocked")
+ subtotal_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="subtotalSet")
+ total_tax_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalTaxSet")
+
+
+class RefundLineItemConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("RefundLineItemEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(RefundLineItem))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class RefundLineItemEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null(RefundLineItem), graphql_name="node")
+
+
+class ResourceAlert(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("actions", "content", "dismissible_handle", "icon", "severity", "title")
+ actions = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ResourceAlertAction"))), graphql_name="actions"
+ )
+ content = sgqlc.types.Field(sgqlc.types.non_null(HTML), graphql_name="content")
+ dismissible_handle = sgqlc.types.Field(String, graphql_name="dismissibleHandle")
+ icon = sgqlc.types.Field(ResourceAlertIcon, graphql_name="icon")
+ severity = sgqlc.types.Field(sgqlc.types.non_null(ResourceAlertSeverity), graphql_name="severity")
+ title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+
+
+class ResourceAlertAction(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("primary", "show", "title", "url")
+ primary = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="primary")
+ show = sgqlc.types.Field(String, graphql_name="show")
+ title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+ url = sgqlc.types.Field(sgqlc.types.non_null(URL), graphql_name="url")
+
+
+class ResourceFeedback(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("details", "summary")
+ details = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AppFeedback))), graphql_name="details")
+ summary = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="summary")
+
+
+class ResourceLimit(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("available", "quantity_available", "quantity_limit", "quantity_used")
+ available = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="available")
+ quantity_available = sgqlc.types.Field(Int, graphql_name="quantityAvailable")
+ quantity_limit = sgqlc.types.Field(Int, graphql_name="quantityLimit")
+ quantity_used = sgqlc.types.Field(Int, graphql_name="quantityUsed")
+
+
+class ResourcePublication(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("is_published", "publication", "publish_date", "publishable")
+ is_published = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isPublished")
+ publication = sgqlc.types.Field(sgqlc.types.non_null("Publication"), graphql_name="publication")
+ publish_date = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="publishDate")
+ publishable = sgqlc.types.Field(sgqlc.types.non_null(Publishable), graphql_name="publishable")
+
+
+class ResourcePublicationConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ResourcePublicationEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ResourcePublication))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class ResourcePublicationEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null(ResourcePublication), graphql_name="node")
+
+
+class ResourcePublicationV2(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("is_published", "publication", "publish_date", "publishable")
+ is_published = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isPublished")
+ publication = sgqlc.types.Field(sgqlc.types.non_null("Publication"), graphql_name="publication")
+ publish_date = sgqlc.types.Field(DateTime, graphql_name="publishDate")
+ publishable = sgqlc.types.Field(sgqlc.types.non_null(Publishable), graphql_name="publishable")
+
+
+class ResourcePublicationV2Connection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ResourcePublicationV2Edge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ResourcePublicationV2))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class ResourcePublicationV2Edge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null(ResourcePublicationV2), graphql_name="node")
+
+
+class ReturnApproveRequestPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("return_", "user_errors")
+ return_ = sgqlc.types.Field("Return", graphql_name="return")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
+
+
+class ReturnCancelPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("return_", "user_errors")
+ return_ = sgqlc.types.Field("Return", graphql_name="return")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
+
+
+class ReturnClosePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("return_", "user_errors")
+ return_ = sgqlc.types.Field("Return", graphql_name="return")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
+
+
+class ReturnConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Return"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class ReturnCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("return_", "user_errors")
+ return_ = sgqlc.types.Field("Return", graphql_name="return")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
+
+
+class ReturnDecline(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("note", "reason")
+ note = sgqlc.types.Field(String, graphql_name="note")
+ reason = sgqlc.types.Field(sgqlc.types.non_null(ReturnDeclineReason), graphql_name="reason")
+
+
+class ReturnDeclineRequestPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("return_", "user_errors")
+ return_ = sgqlc.types.Field("Return", graphql_name="return")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
+
+
+class ReturnEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("Return"), graphql_name="node")
+
+
+class ReturnLineItemConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnLineItemEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnLineItem"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class ReturnLineItemEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("ReturnLineItem"), graphql_name="node")
+
+
+class ReturnRefundPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("refund", "user_errors")
+ refund = sgqlc.types.Field("Refund", graphql_name="refund")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
+
+
+class ReturnReopenPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("return_", "user_errors")
+ return_ = sgqlc.types.Field("Return", graphql_name="return")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
+
+
+class ReturnRequestPayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("return_", "user_errors")
+ return_ = sgqlc.types.Field("Return", graphql_name="return")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
+
+
+class ReturnableFulfillmentConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
- __field_names__ = ("order", "refund", "user_errors")
- order = sgqlc.types.Field("Order", graphql_name="order")
- refund = sgqlc.types.Field("Refund", graphql_name="refund")
- user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnableFulfillmentEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnableFulfillment"))), graphql_name="nodes"
+ )
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-class RefundDuty(sgqlc.types.Type):
+class ReturnableFulfillmentEdge(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("amount_set", "original_duty")
- amount_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="amountSet")
- original_duty = sgqlc.types.Field("Duty", graphql_name="originalDuty")
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("ReturnableFulfillment"), graphql_name="node")
-class RefundLineItem(sgqlc.types.Type):
+class ReturnableFulfillmentLineItem(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "line_item",
- "location",
- "price_set",
- "quantity",
- "restock_type",
- "restocked",
- "subtotal_set",
- "total_tax_set",
- )
- line_item = sgqlc.types.Field(sgqlc.types.non_null("LineItem"), graphql_name="lineItem")
- location = sgqlc.types.Field("Location", graphql_name="location")
- price_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="priceSet")
+ __field_names__ = ("fulfillment_line_item", "quantity")
+ fulfillment_line_item = sgqlc.types.Field(sgqlc.types.non_null("FulfillmentLineItem"), graphql_name="fulfillmentLineItem")
quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
- restock_type = sgqlc.types.Field(sgqlc.types.non_null(RefundLineItemRestockType), graphql_name="restockType")
- restocked = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="restocked")
- subtotal_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="subtotalSet")
- total_tax_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalTaxSet")
-class RefundLineItemConnection(sgqlc.types.relay.Connection):
+class ReturnableFulfillmentLineItemConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("RefundLineItemEdge"))), graphql_name="edges")
- nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(RefundLineItem))), graphql_name="nodes")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnableFulfillmentLineItemEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ReturnableFulfillmentLineItem))), graphql_name="nodes"
+ )
page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-class RefundLineItemEdge(sgqlc.types.Type):
+class ReturnableFulfillmentLineItemEdge(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("cursor", "node")
cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null(RefundLineItem), graphql_name="node")
+ node = sgqlc.types.Field(sgqlc.types.non_null(ReturnableFulfillmentLineItem), graphql_name="node")
-class ResourceAlert(sgqlc.types.Type):
+class ReverseDeliveryConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
- __field_names__ = ("actions", "content", "dismissible_handle", "icon", "severity", "title")
- actions = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ResourceAlertAction"))), graphql_name="actions"
- )
- content = sgqlc.types.Field(sgqlc.types.non_null(HTML), graphql_name="content")
- dismissible_handle = sgqlc.types.Field(String, graphql_name="dismissibleHandle")
- icon = sgqlc.types.Field(ResourceAlertIcon, graphql_name="icon")
- severity = sgqlc.types.Field(sgqlc.types.non_null(ResourceAlertSeverity), graphql_name="severity")
- title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReverseDeliveryEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReverseDelivery"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-class ResourceAlertAction(sgqlc.types.Type):
+class ReverseDeliveryCreateWithShippingPayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("primary", "show", "title", "url")
- primary = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="primary")
- show = sgqlc.types.Field(String, graphql_name="show")
- title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
- url = sgqlc.types.Field(sgqlc.types.non_null(URL), graphql_name="url")
+ __field_names__ = ("reverse_delivery", "user_errors")
+ reverse_delivery = sgqlc.types.Field("ReverseDelivery", graphql_name="reverseDelivery")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
-class ResourceFeedback(sgqlc.types.Type):
+class ReverseDeliveryDisposePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("details", "summary")
- details = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AppFeedback))), graphql_name="details")
- summary = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="summary")
+ __field_names__ = ("reverse_delivery_line_items", "user_errors")
+ reverse_delivery_line_items = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null("ReverseDeliveryLineItem")), graphql_name="reverseDeliveryLineItems"
+ )
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
-class ResourceLimit(sgqlc.types.Type):
+class ReverseDeliveryEdge(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("available", "quantity_available", "quantity_limit", "quantity_used")
- available = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="available")
- quantity_available = sgqlc.types.Field(Int, graphql_name="quantityAvailable")
- quantity_limit = sgqlc.types.Field(Int, graphql_name="quantityLimit")
- quantity_used = sgqlc.types.Field(Int, graphql_name="quantityUsed")
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("ReverseDelivery"), graphql_name="node")
-class ResourcePublication(sgqlc.types.Type):
+class ReverseDeliveryLabelV2(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("is_published", "publication", "publish_date", "publishable")
- is_published = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isPublished")
- publication = sgqlc.types.Field(sgqlc.types.non_null("Publication"), graphql_name="publication")
- publish_date = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="publishDate")
- publishable = sgqlc.types.Field(sgqlc.types.non_null(Publishable), graphql_name="publishable")
+ __field_names__ = ("created_at", "public_file_url", "updated_at")
+ created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
+ public_file_url = sgqlc.types.Field(URL, graphql_name="publicFileUrl")
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
-class ResourcePublicationConnection(sgqlc.types.relay.Connection):
+class ReverseDeliveryLineItemConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ResourcePublicationEdge"))), graphql_name="edges"
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReverseDeliveryLineItemEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReverseDeliveryLineItem"))), graphql_name="nodes"
)
- nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ResourcePublication))), graphql_name="nodes")
page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-class ResourcePublicationEdge(sgqlc.types.Type):
+class ReverseDeliveryLineItemEdge(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("cursor", "node")
cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null(ResourcePublication), graphql_name="node")
+ node = sgqlc.types.Field(sgqlc.types.non_null("ReverseDeliveryLineItem"), graphql_name="node")
-class ResourcePublicationV2(sgqlc.types.Type):
+class ReverseDeliveryShippingDeliverable(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("is_published", "publication", "publish_date", "publishable")
- is_published = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isPublished")
- publication = sgqlc.types.Field(sgqlc.types.non_null("Publication"), graphql_name="publication")
- publish_date = sgqlc.types.Field(DateTime, graphql_name="publishDate")
- publishable = sgqlc.types.Field(sgqlc.types.non_null(Publishable), graphql_name="publishable")
+ __field_names__ = ("label", "tracking")
+ label = sgqlc.types.Field(ReverseDeliveryLabelV2, graphql_name="label")
+ tracking = sgqlc.types.Field("ReverseDeliveryTrackingV2", graphql_name="tracking")
-class ResourcePublicationV2Connection(sgqlc.types.relay.Connection):
+class ReverseDeliveryShippingUpdatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("reverse_delivery", "user_errors")
+ reverse_delivery = sgqlc.types.Field("ReverseDelivery", graphql_name="reverseDelivery")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
+
+
+class ReverseDeliveryTrackingV2(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("carrier_name", "number", "url")
+ carrier_name = sgqlc.types.Field(String, graphql_name="carrierName")
+ number = sgqlc.types.Field(String, graphql_name="number")
+ url = sgqlc.types.Field(URL, graphql_name="url")
+
+
+class ReverseFulfillmentOrderConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ResourcePublicationV2Edge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReverseFulfillmentOrderEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReverseFulfillmentOrder"))), graphql_name="nodes"
)
- nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ResourcePublicationV2))), graphql_name="nodes")
page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-class ResourcePublicationV2Edge(sgqlc.types.Type):
+class ReverseFulfillmentOrderDisposePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("reverse_fulfillment_order_line_items", "user_errors")
+ reverse_fulfillment_order_line_items = sgqlc.types.Field(
+ sgqlc.types.list_of(sgqlc.types.non_null("ReverseFulfillmentOrderLineItem")), graphql_name="reverseFulfillmentOrderLineItems"
+ )
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReturnUserError"))), graphql_name="userErrors"
+ )
+
+
+class ReverseFulfillmentOrderEdge(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("cursor", "node")
cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null(ResourcePublicationV2), graphql_name="node")
+ node = sgqlc.types.Field(sgqlc.types.non_null("ReverseFulfillmentOrder"), graphql_name="node")
+
+
+class ReverseFulfillmentOrderLineItemConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReverseFulfillmentOrderLineItemEdge"))), graphql_name="edges"
+ )
+ nodes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReverseFulfillmentOrderLineItem"))), graphql_name="nodes"
+ )
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class ReverseFulfillmentOrderLineItemEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null("ReverseFulfillmentOrderLineItem"), graphql_name="node")
+
+
+class ReverseFulfillmentOrderThirdPartyConfirmation(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("status",)
+ status = sgqlc.types.Field(sgqlc.types.non_null(ReverseFulfillmentOrderThirdPartyConfirmationStatus), graphql_name="status")
+
+
+class RowCount(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("count", "exceeds_max")
+ count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="count")
+ exceeds_max = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="exceedsMax")
class SEO(sgqlc.types.Type):
@@ -17499,30 +20850,6 @@ class SEO(sgqlc.types.Type):
title = sgqlc.types.Field(String, graphql_name="title")
-class Sale(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = (
- "action_type",
- "id",
- "line_type",
- "quantity",
- "taxes",
- "total_amount",
- "total_discount_amount_after_taxes",
- "total_discount_amount_before_taxes",
- "total_tax_amount",
- )
- action_type = sgqlc.types.Field(sgqlc.types.non_null(SaleActionType), graphql_name="actionType")
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
- line_type = sgqlc.types.Field(sgqlc.types.non_null(SaleLineType), graphql_name="lineType")
- quantity = sgqlc.types.Field(Int, graphql_name="quantity")
- taxes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SaleTax"))), graphql_name="taxes")
- total_amount = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalAmount")
- total_discount_amount_after_taxes = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalDiscountAmountAfterTaxes")
- total_discount_amount_before_taxes = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalDiscountAmountBeforeTaxes")
- total_tax_amount = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalTaxAmount")
-
-
class SaleConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -17546,29 +20873,6 @@ class SaleTax(sgqlc.types.Type):
tax_line = sgqlc.types.Field(sgqlc.types.non_null("TaxLine"), graphql_name="taxLine")
-class SalesAgreement(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("app", "happened_at", "id", "reason", "sales", "user")
- app = sgqlc.types.Field("App", graphql_name="app")
- happened_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="happenedAt")
- id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
- reason = sgqlc.types.Field(sgqlc.types.non_null(OrderActionType), graphql_name="reason")
- sales = sgqlc.types.Field(
- sgqlc.types.non_null(SaleConnection),
- graphql_name="sales",
- args=sgqlc.types.ArgDict(
- (
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- )
- ),
- )
- user = sgqlc.types.Field("StaffMember", graphql_name="user")
-
-
class SalesAgreementConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
@@ -17668,8 +20972,7 @@ class SearchFilterOptions(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("product_availability",)
product_availability = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FilterOption))),
- graphql_name="productAvailability",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FilterOption))), graphql_name="productAvailability"
)
@@ -17697,34 +21000,6 @@ class SearchResultEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null(SearchResult), graphql_name="node")
-class SegmentAssociationFilterValue(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("localized_name", "query_name")
- localized_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="localizedName")
- query_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="queryName")
-
-
-class SegmentAssociationFilterValueConnection(sgqlc.types.relay.Connection):
- __schema__ = shopify_schema
- __field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SegmentAssociationFilterValueEdge"))),
- graphql_name="edges",
- )
- nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SegmentAssociationFilterValue))),
- graphql_name="nodes",
- )
- page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-
-
-class SegmentAssociationFilterValueEdge(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("cursor", "node")
- cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null(SegmentAssociationFilterValue), graphql_name="node")
-
-
class SegmentAttributeStatistics(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("average", "sum")
@@ -17733,101 +21008,42 @@ class SegmentAttributeStatistics(sgqlc.types.Type):
class SegmentConnection(sgqlc.types.relay.Connection):
- __schema__ = shopify_schema
- __field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SegmentEdge"))), graphql_name="edges")
- nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Segment"))), graphql_name="nodes")
- page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-
-
-class SegmentCreatePayload(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("segment", "user_errors")
- segment = sgqlc.types.Field("Segment", graphql_name="segment")
- user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
-
-
-class SegmentDeletePayload(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("deleted_segment_id", "user_errors")
- deleted_segment_id = sgqlc.types.Field(ID, graphql_name="deletedSegmentId")
- user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
-
-
-class SegmentEdge(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("cursor", "node")
- cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null("Segment"), graphql_name="node")
-
-
-class SegmentEnumFilterValue(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("localized_name", "query_name")
- localized_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="localizedName")
- query_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="queryName")
-
-
-class SegmentEnumFilterValueConnection(sgqlc.types.relay.Connection):
- __schema__ = shopify_schema
- __field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SegmentEnumFilterValueEdge"))),
- graphql_name="edges",
- )
- nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SegmentEnumFilterValue))), graphql_name="nodes")
- page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-
-
-class SegmentEnumFilterValueEdge(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("cursor", "node")
- cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null(SegmentEnumFilterValue), graphql_name="node")
-
-
-class SegmentEventFilterParameter(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("localized_description", "localized_name", "optional", "parameter_type", "query_name")
- localized_description = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="localizedDescription")
- localized_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="localizedName")
- optional = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="optional")
- parameter_type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="parameterType")
- query_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="queryName")
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SegmentEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Segment"))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-class SegmentEventFilterValue(sgqlc.types.Type):
+class SegmentCreatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("localized_name", "query_name")
- localized_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="localizedName")
- query_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="queryName")
+ __field_names__ = ("segment", "user_errors")
+ segment = sgqlc.types.Field("Segment", graphql_name="segment")
+ user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
-class SegmentEventFilterValueConnection(sgqlc.types.relay.Connection):
+class SegmentDeletePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SegmentEventFilterValueEdge"))),
- graphql_name="edges",
- )
- nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SegmentEventFilterValue))), graphql_name="nodes"
- )
- page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+ __field_names__ = ("deleted_segment_id", "user_errors")
+ deleted_segment_id = sgqlc.types.Field(ID, graphql_name="deletedSegmentId")
+ user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
-class SegmentEventFilterValueEdge(sgqlc.types.Type):
+class SegmentEdge(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("cursor", "node")
cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null(SegmentEventFilterValue), graphql_name="node")
+ node = sgqlc.types.Field(sgqlc.types.non_null("Segment"), graphql_name="node")
-class SegmentFilter(sgqlc.types.Interface):
+class SegmentEventFilterParameter(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("localized_name", "multi_value", "query_name")
+ __field_names__ = ("accepts_multiple_values", "localized_description", "localized_name", "optional", "parameter_type", "query_name")
+ accepts_multiple_values = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="acceptsMultipleValues")
+ localized_description = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="localizedDescription")
localized_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="localizedName")
- multi_value = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="multiValue")
+ optional = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="optional")
+ parameter_type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="parameterType")
query_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="queryName")
@@ -17886,47 +21102,14 @@ class SegmentMigrationEdge(sgqlc.types.Type):
class SegmentStatistics(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("attribute_statistics", "total_count")
+ __field_names__ = ("attribute_statistics",)
attribute_statistics = sgqlc.types.Field(
sgqlc.types.non_null(SegmentAttributeStatistics),
graphql_name="attributeStatistics",
args=sgqlc.types.ArgDict(
- (
- (
- "attribute_name",
- sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="attributeName", default=None),
- ),
- )
+ (("attribute_name", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="attributeName", default=None)),)
),
)
- total_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="totalCount")
-
-
-class SegmentStringFilterValue(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("localized_name", "query_name")
- localized_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="localizedName")
- query_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="queryName")
-
-
-class SegmentStringFilterValueConnection(sgqlc.types.relay.Connection):
- __schema__ = shopify_schema
- __field_names__ = ("edges", "nodes", "page_info")
- edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SegmentStringFilterValueEdge"))),
- graphql_name="edges",
- )
- nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SegmentStringFilterValue))), graphql_name="nodes"
- )
- page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
-
-
-class SegmentStringFilterValueEdge(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = ("cursor", "node")
- cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
- node = sgqlc.types.Field(sgqlc.types.non_null(SegmentStringFilterValue), graphql_name="node")
class SegmentUpdatePayload(sgqlc.types.Type):
@@ -18020,14 +21203,7 @@ class SellingPlanFixedBillingPolicy(sgqlc.types.Type):
class SellingPlanFixedDeliveryPolicy(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "anchors",
- "cutoff",
- "fulfillment_exact_time",
- "fulfillment_trigger",
- "intent",
- "pre_anchor_behavior",
- )
+ __field_names__ = ("anchors", "cutoff", "fulfillment_exact_time", "fulfillment_trigger", "intent", "pre_anchor_behavior")
anchors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SellingPlanAnchor))), graphql_name="anchors")
cutoff = sgqlc.types.Field(Int, graphql_name="cutoff")
fulfillment_exact_time = sgqlc.types.Field(DateTime, graphql_name="fulfillmentExactTime")
@@ -18043,8 +21219,7 @@ class SellingPlanGroupAddProductVariantsPayload(sgqlc.types.Type):
__field_names__ = ("selling_plan_group", "user_errors")
selling_plan_group = sgqlc.types.Field("SellingPlanGroup", graphql_name="sellingPlanGroup")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))), graphql_name="userErrors"
)
@@ -18053,8 +21228,7 @@ class SellingPlanGroupAddProductsPayload(sgqlc.types.Type):
__field_names__ = ("selling_plan_group", "user_errors")
selling_plan_group = sgqlc.types.Field("SellingPlanGroup", graphql_name="sellingPlanGroup")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))), graphql_name="userErrors"
)
@@ -18071,8 +21245,7 @@ class SellingPlanGroupCreatePayload(sgqlc.types.Type):
__field_names__ = ("selling_plan_group", "user_errors")
selling_plan_group = sgqlc.types.Field("SellingPlanGroup", graphql_name="sellingPlanGroup")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))), graphql_name="userErrors"
)
@@ -18081,8 +21254,7 @@ class SellingPlanGroupDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_selling_plan_group_id", "user_errors")
deleted_selling_plan_group_id = sgqlc.types.Field(ID, graphql_name="deletedSellingPlanGroupId")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))), graphql_name="userErrors"
)
@@ -18098,8 +21270,7 @@ class SellingPlanGroupRemoveProductVariantsPayload(sgqlc.types.Type):
__field_names__ = ("removed_product_variant_ids", "user_errors")
removed_product_variant_ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="removedProductVariantIds")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))), graphql_name="userErrors"
)
@@ -18108,8 +21279,7 @@ class SellingPlanGroupRemoveProductsPayload(sgqlc.types.Type):
__field_names__ = ("removed_product_ids", "user_errors")
removed_product_ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="removedProductIds")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))), graphql_name="userErrors"
)
@@ -18119,8 +21289,7 @@ class SellingPlanGroupUpdatePayload(sgqlc.types.Type):
deleted_selling_plan_ids = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="deletedSellingPlanIds")
selling_plan_group = sgqlc.types.Field("SellingPlanGroup", graphql_name="sellingPlanGroup")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanGroupUserError"))), graphql_name="userErrors"
)
@@ -18130,13 +21299,6 @@ class SellingPlanInventoryPolicy(sgqlc.types.Type):
reserve = sgqlc.types.Field(sgqlc.types.non_null(SellingPlanReserve), graphql_name="reserve")
-class SellingPlanPricingPolicyBase(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("adjustment_type", "adjustment_value")
- adjustment_type = sgqlc.types.Field(sgqlc.types.non_null(SellingPlanPricingPolicyAdjustmentType), graphql_name="adjustmentType")
- adjustment_value = sgqlc.types.Field(sgqlc.types.non_null("SellingPlanPricingPolicyAdjustmentValue"), graphql_name="adjustmentValue")
-
-
class SellingPlanPricingPolicyPercentageValue(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("percentage",)
@@ -18168,6 +21330,24 @@ class SellingPlanRecurringDeliveryPolicy(sgqlc.types.Type):
)
+class ServerPixelCreatePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("server_pixel", "user_errors")
+ server_pixel = sgqlc.types.Field("ServerPixel", graphql_name="serverPixel")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ErrorsServerPixelUserError"))), graphql_name="userErrors"
+ )
+
+
+class ServerPixelDeletePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("deleted_server_pixel_id", "user_errors")
+ deleted_server_pixel_id = sgqlc.types.Field(ID, graphql_name="deletedServerPixelId")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ErrorsServerPixelUserError"))), graphql_name="userErrors"
+ )
+
+
class ShippingLine(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = (
@@ -18191,8 +21371,7 @@ class ShippingLine(sgqlc.types.Type):
custom = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="custom")
delivery_category = sgqlc.types.Field(String, graphql_name="deliveryCategory")
discount_allocations = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DiscountAllocation))),
- graphql_name="discountAllocations",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DiscountAllocation))), graphql_name="discountAllocations"
)
discounted_price_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="discountedPriceSet")
id = sgqlc.types.Field(ID, graphql_name="id")
@@ -18276,11 +21455,18 @@ class ShopAlertAction(sgqlc.types.Type):
url = sgqlc.types.Field(sgqlc.types.non_null(URL), graphql_name="url")
+class ShopBillingPreferences(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("currency",)
+ currency = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="currency")
+
+
class ShopFeatures(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = (
"avalara_avatax",
"branding",
+ "bundles",
"captcha",
"captcha_external_domains",
"dynamic_remarketing",
@@ -18303,6 +21489,7 @@ class ShopFeatures(sgqlc.types.Type):
)
avalara_avatax = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="avalaraAvatax")
branding = sgqlc.types.Field(sgqlc.types.non_null(ShopBranding), graphql_name="branding")
+ bundles = sgqlc.types.Field(sgqlc.types.non_null(BundlesFeature), graphql_name="bundles")
captcha = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="captcha")
captcha_external_domains = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="captchaExternalDomains")
dynamic_remarketing = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="dynamicRemarketing")
@@ -18317,8 +21504,7 @@ class ShopFeatures(sgqlc.types.Type):
live_view = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="liveView")
onboarding_visual = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="onboardingVisual")
paypal_express_subscription_gateway_status = sgqlc.types.Field(
- sgqlc.types.non_null(PaypalExpressSubscriptionsGatewayStatus),
- graphql_name="paypalExpressSubscriptionGatewayStatus",
+ sgqlc.types.non_null(PaypalExpressSubscriptionsGatewayStatus), graphql_name="paypalExpressSubscriptionGatewayStatus"
)
reports = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="reports")
sells_subscriptions = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="sellsSubscriptions")
@@ -18332,8 +21518,7 @@ class ShopLocale(sgqlc.types.Type):
__field_names__ = ("locale", "market_web_presences", "name", "primary", "published")
locale = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="locale")
market_web_presences = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketWebPresence"))),
- graphql_name="marketWebPresences",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MarketWebPresence"))), graphql_name="marketWebPresences"
)
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
primary = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="primary")
@@ -18374,37 +21559,77 @@ class ShopPolicyUpdatePayload(sgqlc.types.Type):
__field_names__ = ("shop_policy", "user_errors")
shop_policy = sgqlc.types.Field("ShopPolicy", graphql_name="shopPolicy")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopPolicyUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopPolicyUserError"))), graphql_name="userErrors"
)
-class ShopResourceLimits(sgqlc.types.Type):
+class ShopResourceFeedbackCreatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "location_limit",
- "max_product_options",
- "max_product_variants",
- "redirect_limit_reached",
- "sku_resource_limits",
+ __field_names__ = ("feedback", "user_errors")
+ feedback = sgqlc.types.Field(AppFeedback, graphql_name="feedback")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopResourceFeedbackCreateUserError"))), graphql_name="userErrors"
)
+
+
+class ShopResourceLimits(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("location_limit", "max_product_options", "max_product_variants", "redirect_limit_reached")
location_limit = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="locationLimit")
max_product_options = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="maxProductOptions")
max_product_variants = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="maxProductVariants")
redirect_limit_reached = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="redirectLimitReached")
- sku_resource_limits = sgqlc.types.Field(sgqlc.types.non_null(ResourceLimit), graphql_name="skuResourceLimits")
+
+
+class ShopifyFunction(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "api_type",
+ "api_version",
+ "app",
+ "app_bridge",
+ "app_key",
+ "description",
+ "id",
+ "input_query",
+ "title",
+ "use_creation_ui",
+ )
+ api_type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="apiType")
+ api_version = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="apiVersion")
+ app = sgqlc.types.Field(sgqlc.types.non_null("App"), graphql_name="app")
+ app_bridge = sgqlc.types.Field(sgqlc.types.non_null(FunctionsAppBridge), graphql_name="appBridge")
+ app_key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="appKey")
+ description = sgqlc.types.Field(String, graphql_name="description")
+ id = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="id")
+ input_query = sgqlc.types.Field(String, graphql_name="inputQuery")
+ title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+ use_creation_ui = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="useCreationUi")
+
+
+class ShopifyFunctionConnection(sgqlc.types.relay.Connection):
+ __schema__ = shopify_schema
+ __field_names__ = ("edges", "nodes", "page_info")
+ edges = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyFunctionEdge"))), graphql_name="edges")
+ nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ShopifyFunction))), graphql_name="nodes")
+ page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
+
+
+class ShopifyFunctionEdge(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("cursor", "node")
+ cursor = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="cursor")
+ node = sgqlc.types.Field(sgqlc.types.non_null(ShopifyFunction), graphql_name="node")
class ShopifyPaymentsBankAccountConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsBankAccountEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsBankAccountEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsBankAccount"))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsBankAccount"))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
@@ -18416,19 +21641,11 @@ class ShopifyPaymentsBankAccountEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null("ShopifyPaymentsBankAccount"), graphql_name="node")
-class ShopifyPaymentsChargeStatementDescriptor(sgqlc.types.Interface):
- __schema__ = shopify_schema
- __field_names__ = ("default", "prefix")
- default = sgqlc.types.Field(String, graphql_name="default")
- prefix = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="prefix")
-
-
class ShopifyPaymentsDisputeConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsDisputeEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsDisputeEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsDispute"))), graphql_name="nodes"
@@ -18474,8 +21691,7 @@ class ShopifyPaymentsPayoutConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsPayoutEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsPayoutEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsPayout"))), graphql_name="nodes"
@@ -18578,8 +21794,7 @@ class StagedMediaUploadTarget(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("parameters", "resource_url", "url")
parameters = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("StagedUploadParameter"))),
- graphql_name="parameters",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("StagedUploadParameter"))), graphql_name="parameters"
)
resource_url = sgqlc.types.Field(URL, graphql_name="resourceUrl")
url = sgqlc.types.Field(URL, graphql_name="url")
@@ -18640,12 +21855,10 @@ class StandardMetafieldDefinitionTemplateConnection(sgqlc.types.relay.Connection
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("StandardMetafieldDefinitionTemplateEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("StandardMetafieldDefinitionTemplateEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("StandardMetafieldDefinitionTemplate"))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("StandardMetafieldDefinitionTemplate"))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
@@ -18657,6 +21870,15 @@ class StandardMetafieldDefinitionTemplateEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null("StandardMetafieldDefinitionTemplate"), graphql_name="node")
+class StandardMetaobjectDefinitionEnablePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("metaobject_definition", "user_errors")
+ metaobject_definition = sgqlc.types.Field("MetaobjectDefinition", graphql_name="metaobjectDefinition")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("MetaobjectUserError"))), graphql_name="userErrors"
+ )
+
+
class StandardizedProductType(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("product_taxonomy_node",)
@@ -18667,8 +21889,7 @@ class StorefrontAccessTokenConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("StorefrontAccessTokenEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("StorefrontAccessTokenEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("StorefrontAccessToken"))), graphql_name="nodes"
@@ -18724,12 +21945,10 @@ class SubscriptionBillingAttemptConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingAttemptEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingAttemptEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingAttempt"))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingAttempt"))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
@@ -18739,8 +21958,7 @@ class SubscriptionBillingAttemptCreatePayload(sgqlc.types.Type):
__field_names__ = ("subscription_billing_attempt", "user_errors")
subscription_billing_attempt = sgqlc.types.Field("SubscriptionBillingAttempt", graphql_name="subscriptionBillingAttempt")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BillingAttemptUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("BillingAttemptUserError"))), graphql_name="userErrors"
)
@@ -18793,8 +22011,7 @@ class SubscriptionBillingCycleConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingCycleEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingCycleEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionBillingCycle))), graphql_name="nodes"
@@ -18807,8 +22024,7 @@ class SubscriptionBillingCycleContractDraftCommitPayload(sgqlc.types.Type):
__field_names__ = ("contract", "user_errors")
contract = sgqlc.types.Field("SubscriptionBillingCycleEditedContract", graphql_name="contract")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -18817,8 +22033,7 @@ class SubscriptionBillingCycleContractDraftConcatenatePayload(sgqlc.types.Type):
__field_names__ = ("draft", "user_errors")
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -18827,8 +22042,7 @@ class SubscriptionBillingCycleContractEditPayload(sgqlc.types.Type):
__field_names__ = ("draft", "user_errors")
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -18844,8 +22058,7 @@ class SubscriptionBillingCycleEditDeletePayload(sgqlc.types.Type):
__field_names__ = ("billing_cycles", "user_errors")
billing_cycles = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionBillingCycle)), graphql_name="billingCycles")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingCycleUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingCycleUserError"))), graphql_name="userErrors"
)
@@ -18854,8 +22067,7 @@ class SubscriptionBillingCycleEditsDeletePayload(sgqlc.types.Type):
__field_names__ = ("billing_cycles", "user_errors")
billing_cycles = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionBillingCycle)), graphql_name="billingCycles")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingCycleUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingCycleUserError"))), graphql_name="userErrors"
)
@@ -18864,8 +22076,7 @@ class SubscriptionBillingCycleScheduleEditPayload(sgqlc.types.Type):
__field_names__ = ("billing_cycle", "user_errors")
billing_cycle = sgqlc.types.Field(SubscriptionBillingCycle, graphql_name="billingCycle")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingCycleUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionBillingCycleUserError"))), graphql_name="userErrors"
)
@@ -18879,88 +22090,20 @@ class SubscriptionBillingPolicy(sgqlc.types.Type):
min_cycles = sgqlc.types.Field(Int, graphql_name="minCycles")
-class SubscriptionContractBase(sgqlc.types.Interface):
+class SubscriptionContractAtomicCreatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "app",
- "app_admin_url",
- "currency_code",
- "custom_attributes",
- "customer",
- "customer_payment_method",
- "delivery_method",
- "delivery_price",
- "discounts",
- "line_count",
- "lines",
- "note",
- "orders",
- "updated_at",
- )
- app = sgqlc.types.Field("App", graphql_name="app")
- app_admin_url = sgqlc.types.Field(URL, graphql_name="appAdminUrl")
- currency_code = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="currencyCode")
- custom_attributes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(Attribute))), graphql_name="customAttributes"
- )
- customer = sgqlc.types.Field("Customer", graphql_name="customer")
- customer_payment_method = sgqlc.types.Field(
- "CustomerPaymentMethod",
- graphql_name="customerPaymentMethod",
- args=sgqlc.types.ArgDict((("show_revoked", sgqlc.types.Arg(Boolean, graphql_name="showRevoked", default=False)),)),
- )
- delivery_method = sgqlc.types.Field("SubscriptionDeliveryMethod", graphql_name="deliveryMethod")
- delivery_price = sgqlc.types.Field(sgqlc.types.non_null(MoneyV2), graphql_name="deliveryPrice")
- discounts = sgqlc.types.Field(
- sgqlc.types.non_null("SubscriptionManualDiscountConnection"),
- graphql_name="discounts",
- args=sgqlc.types.ArgDict(
- (
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- )
- ),
- )
- line_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="lineCount")
- lines = sgqlc.types.Field(
- sgqlc.types.non_null("SubscriptionLineConnection"),
- graphql_name="lines",
- args=sgqlc.types.ArgDict(
- (
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- )
- ),
- )
- note = sgqlc.types.Field(String, graphql_name="note")
- orders = sgqlc.types.Field(
- sgqlc.types.non_null(OrderConnection),
- graphql_name="orders",
- args=sgqlc.types.ArgDict(
- (
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- )
- ),
+ __field_names__ = ("contract", "user_errors")
+ contract = sgqlc.types.Field("SubscriptionContract", graphql_name="contract")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
- updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
class SubscriptionContractConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionContractEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionContractEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionContract"))), graphql_name="nodes")
page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
@@ -18971,8 +22114,7 @@ class SubscriptionContractCreatePayload(sgqlc.types.Type):
__field_names__ = ("draft", "user_errors")
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -18983,13 +22125,22 @@ class SubscriptionContractEdge(sgqlc.types.Type):
node = sgqlc.types.Field(sgqlc.types.non_null("SubscriptionContract"), graphql_name="node")
+class SubscriptionContractProductChangePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("contract", "line_updated", "user_errors")
+ contract = sgqlc.types.Field("SubscriptionContract", graphql_name="contract")
+ line_updated = sgqlc.types.Field("SubscriptionLine", graphql_name="lineUpdated")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
+ )
+
+
class SubscriptionContractSetNextBillingDatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("contract", "user_errors")
contract = sgqlc.types.Field("SubscriptionContract", graphql_name="contract")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionContractUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionContractUserError"))), graphql_name="userErrors"
)
@@ -18998,8 +22149,7 @@ class SubscriptionContractUpdatePayload(sgqlc.types.Type):
__field_names__ = ("draft", "user_errors")
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19057,8 +22207,7 @@ class SubscriptionDeliveryMethodShipping(sgqlc.types.Type):
class SubscriptionDeliveryMethodShippingOption(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("carrier_service", "code", "description", "presentment_title", "title")
- carrier_service = sgqlc.types.Field("DeliveryCarrierService", graphql_name="carrierService")
+ __field_names__ = ("code", "description", "presentment_title", "title")
code = sgqlc.types.Field(String, graphql_name="code")
description = sgqlc.types.Field(String, graphql_name="description")
presentment_title = sgqlc.types.Field(String, graphql_name="presentmentTitle")
@@ -19075,8 +22224,7 @@ class SubscriptionDeliveryOptionResultSuccess(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("delivery_options",)
delivery_options = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDeliveryOption"))),
- graphql_name="deliveryOptions",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDeliveryOption"))), graphql_name="deliveryOptions"
)
@@ -19099,8 +22247,7 @@ class SubscriptionDiscountConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDiscountEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDiscountEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDiscount"))), graphql_name="nodes")
page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
@@ -19150,8 +22297,7 @@ class SubscriptionDraftCommitPayload(sgqlc.types.Type):
__field_names__ = ("contract", "user_errors")
contract = sgqlc.types.Field("SubscriptionContract", graphql_name="contract")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19161,8 +22307,7 @@ class SubscriptionDraftDiscountAddPayload(sgqlc.types.Type):
discount_added = sgqlc.types.Field("SubscriptionManualDiscount", graphql_name="discountAdded")
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19172,8 +22317,7 @@ class SubscriptionDraftDiscountCodeApplyPayload(sgqlc.types.Type):
applied_discount = sgqlc.types.Field(SubscriptionAppliedCodeDiscount, graphql_name="appliedDiscount")
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19183,8 +22327,7 @@ class SubscriptionDraftDiscountRemovePayload(sgqlc.types.Type):
discount_removed = sgqlc.types.Field("SubscriptionDiscount", graphql_name="discountRemoved")
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19194,8 +22337,7 @@ class SubscriptionDraftDiscountUpdatePayload(sgqlc.types.Type):
discount_updated = sgqlc.types.Field("SubscriptionManualDiscount", graphql_name="discountUpdated")
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19205,8 +22347,7 @@ class SubscriptionDraftFreeShippingDiscountAddPayload(sgqlc.types.Type):
discount_added = sgqlc.types.Field("SubscriptionManualDiscount", graphql_name="discountAdded")
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19216,8 +22357,7 @@ class SubscriptionDraftFreeShippingDiscountUpdatePayload(sgqlc.types.Type):
discount_updated = sgqlc.types.Field("SubscriptionManualDiscount", graphql_name="discountUpdated")
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19227,8 +22367,7 @@ class SubscriptionDraftLineAddPayload(sgqlc.types.Type):
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
line_added = sgqlc.types.Field("SubscriptionLine", graphql_name="lineAdded")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19241,8 +22380,7 @@ class SubscriptionDraftLineRemovePayload(sgqlc.types.Type):
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
line_removed = sgqlc.types.Field("SubscriptionLine", graphql_name="lineRemoved")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19252,8 +22390,7 @@ class SubscriptionDraftLineUpdatePayload(sgqlc.types.Type):
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
line_updated = sgqlc.types.Field("SubscriptionLine", graphql_name="lineUpdated")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19262,8 +22399,7 @@ class SubscriptionDraftUpdatePayload(sgqlc.types.Type):
__field_names__ = ("draft", "user_errors")
draft = sgqlc.types.Field("SubscriptionDraft", graphql_name="draft")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionDraftUserError"))), graphql_name="userErrors"
)
@@ -19293,8 +22429,7 @@ class SubscriptionLine(sgqlc.types.Type):
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(Attribute))), graphql_name="customAttributes"
)
discount_allocations = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionDiscountAllocation))),
- graphql_name="discountAllocations",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionDiscountAllocation))), graphql_name="discountAllocations"
)
id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
line_discounted_price = sgqlc.types.Field(sgqlc.types.non_null(MoneyV2), graphql_name="lineDiscountedPrice")
@@ -19398,12 +22533,10 @@ class SubscriptionManualDiscountConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionManualDiscountEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SubscriptionManualDiscountEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionManualDiscount))),
- graphql_name="nodes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionManualDiscount))), graphql_name="nodes"
)
page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
@@ -19417,16 +22550,7 @@ class SubscriptionManualDiscountEdge(sgqlc.types.Type):
class SubscriptionPickupOption(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = (
- "code",
- "description",
- "location",
- "phone_required",
- "pickup_time",
- "presentment_title",
- "price",
- "title",
- )
+ __field_names__ = ("code", "description", "location", "phone_required", "pickup_time", "presentment_title", "price", "title")
code = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="code")
description = sgqlc.types.Field(String, graphql_name="description")
location = sgqlc.types.Field(sgqlc.types.non_null("Location"), graphql_name="location")
@@ -19442,23 +22566,13 @@ class SubscriptionPricingPolicy(sgqlc.types.Type):
__field_names__ = ("base_price", "cycle_discounts")
base_price = sgqlc.types.Field(sgqlc.types.non_null(MoneyV2), graphql_name="basePrice")
cycle_discounts = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionCyclePriceAdjustment))),
- graphql_name="cycleDiscounts",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionCyclePriceAdjustment))), graphql_name="cycleDiscounts"
)
class SubscriptionShippingOption(sgqlc.types.Type):
- __schema__ = shopify_schema
- __field_names__ = (
- "carrier_service",
- "code",
- "description",
- "phone_required",
- "presentment_title",
- "price",
- "title",
- )
- carrier_service = sgqlc.types.Field("DeliveryCarrierService", graphql_name="carrierService")
+ __schema__ = shopify_schema
+ __field_names__ = ("code", "description", "phone_required", "presentment_title", "price", "title")
code = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="code")
description = sgqlc.types.Field(String, graphql_name="description")
phone_required = sgqlc.types.Field(Boolean, graphql_name="phoneRequired")
@@ -19477,8 +22591,7 @@ class SubscriptionShippingOptionResultSuccess(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("shipping_options",)
shipping_options = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionShippingOption))),
- graphql_name="shippingOptions",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SubscriptionShippingOption))), graphql_name="shippingOptions"
)
@@ -19529,14 +22642,63 @@ class SuggestedRefund(sgqlc.types.Type):
shipping = sgqlc.types.Field(sgqlc.types.non_null(ShippingRefund), graphql_name="shipping")
subtotal_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="subtotalSet")
suggested_transactions = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SuggestedOrderTransaction))),
- graphql_name="suggestedTransactions",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SuggestedOrderTransaction))), graphql_name="suggestedTransactions"
)
total_cart_discount_amount_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalCartDiscountAmountSet")
total_duties_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalDutiesSet")
total_tax_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalTaxSet")
+class SuggestedReturnRefund(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "amount",
+ "discounted_subtotal",
+ "maximum_refundable",
+ "refund_duties",
+ "shipping",
+ "subtotal",
+ "suggested_transactions",
+ "total_cart_discount_amount",
+ "total_duties",
+ "total_tax",
+ )
+ amount = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="amount")
+ discounted_subtotal = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="discountedSubtotal")
+ maximum_refundable = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="maximumRefundable")
+ refund_duties = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(RefundDuty))), graphql_name="refundDuties"
+ )
+ shipping = sgqlc.types.Field(sgqlc.types.non_null(ShippingRefund), graphql_name="shipping")
+ subtotal = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="subtotal")
+ suggested_transactions = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SuggestedOrderTransaction))), graphql_name="suggestedTransactions"
+ )
+ total_cart_discount_amount = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalCartDiscountAmount")
+ total_duties = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalDuties")
+ total_tax = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalTax")
+
+
+class TableData(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("columns", "row_data", "unformatted_data")
+ columns = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TableDataColumn"))), graphql_name="columns")
+ row_data = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))))),
+ graphql_name="rowData",
+ )
+ unformatted_data = sgqlc.types.Field(sgqlc.types.non_null(JSON), graphql_name="unformattedData")
+
+
+class TableDataColumn(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("compared_to", "data_type", "display_name", "name")
+ compared_to = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="comparedTo")
+ data_type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="dataType")
+ display_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="displayName")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+
+
class TagsAddPayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("node", "user_errors")
@@ -19551,6 +22713,21 @@ class TagsRemovePayload(sgqlc.types.Type):
user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+class TaxAppConfiguration(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("state",)
+ state = sgqlc.types.Field(sgqlc.types.non_null(TaxPartnerState), graphql_name="state")
+
+
+class TaxAppConfigurePayload(sgqlc.types.Type):
+ __schema__ = shopify_schema
+ __field_names__ = ("tax_app_configuration", "user_errors")
+ tax_app_configuration = sgqlc.types.Field(TaxAppConfiguration, graphql_name="taxAppConfiguration")
+ user_errors = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TaxAppConfigureUserError"))), graphql_name="userErrors"
+ )
+
+
class TaxLine(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("channel_liable", "price_set", "rate", "rate_percentage", "title")
@@ -19587,10 +22764,11 @@ class TenderTransactionEdge(sgqlc.types.Type):
class TranslatableContent(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("digest", "key", "locale", "value")
+ __field_names__ = ("digest", "key", "locale", "type", "value")
digest = sgqlc.types.Field(String, graphql_name="digest")
key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
locale = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="locale")
+ type = sgqlc.types.Field(sgqlc.types.non_null(LocalizableContentType), graphql_name="type")
value = sgqlc.types.Field(String, graphql_name="value")
@@ -19599,8 +22777,7 @@ class TranslatableResource(sgqlc.types.Type):
__field_names__ = ("resource_id", "translatable_content", "translations")
resource_id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="resourceId")
translatable_content = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(TranslatableContent))),
- graphql_name="translatableContent",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(TranslatableContent))), graphql_name="translatableContent"
)
translations = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Translation"))),
@@ -19619,8 +22796,7 @@ class TranslatableResourceConnection(sgqlc.types.relay.Connection):
__schema__ = shopify_schema
__field_names__ = ("edges", "nodes", "page_info")
edges = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TranslatableResourceEdge"))),
- graphql_name="edges",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TranslatableResourceEdge"))), graphql_name="edges"
)
nodes = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(TranslatableResource))), graphql_name="nodes")
page_info = sgqlc.types.Field(sgqlc.types.non_null(PageInfo), graphql_name="pageInfo")
@@ -19635,11 +22811,12 @@ class TranslatableResourceEdge(sgqlc.types.Type):
class Translation(sgqlc.types.Type):
__schema__ = shopify_schema
- __field_names__ = ("key", "locale", "market", "outdated", "value")
+ __field_names__ = ("key", "locale", "market", "outdated", "updated_at", "value")
key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
locale = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="locale")
market = sgqlc.types.Field("Market", graphql_name="market")
outdated = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="outdated")
+ updated_at = sgqlc.types.Field(DateTime, graphql_name="updatedAt")
value = sgqlc.types.Field(String, graphql_name="value")
@@ -19648,8 +22825,7 @@ class TranslationsRegisterPayload(sgqlc.types.Type):
__field_names__ = ("translations", "user_errors")
translations = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(Translation)), graphql_name="translations")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TranslationUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TranslationUserError"))), graphql_name="userErrors"
)
@@ -19658,8 +22834,7 @@ class TranslationsRemovePayload(sgqlc.types.Type):
__field_names__ = ("translations", "user_errors")
translations = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(Translation)), graphql_name="translations")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TranslationUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("TranslationUserError"))), graphql_name="userErrors"
)
@@ -19692,8 +22867,7 @@ class UrlRedirectBulkDeleteByIdsPayload(sgqlc.types.Type):
__field_names__ = ("job", "user_errors")
job = sgqlc.types.Field(Job, graphql_name="job")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectBulkDeleteByIdsUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectBulkDeleteByIdsUserError"))), graphql_name="userErrors"
)
@@ -19712,8 +22886,7 @@ class UrlRedirectBulkDeleteBySearchPayload(sgqlc.types.Type):
__field_names__ = ("job", "user_errors")
job = sgqlc.types.Field(Job, graphql_name="job")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectBulkDeleteBySearchUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectBulkDeleteBySearchUserError"))), graphql_name="userErrors"
)
@@ -19730,8 +22903,7 @@ class UrlRedirectCreatePayload(sgqlc.types.Type):
__field_names__ = ("url_redirect", "user_errors")
url_redirect = sgqlc.types.Field("UrlRedirect", graphql_name="urlRedirect")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectUserError"))), graphql_name="userErrors"
)
@@ -19740,8 +22912,7 @@ class UrlRedirectDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_url_redirect_id", "user_errors")
deleted_url_redirect_id = sgqlc.types.Field(ID, graphql_name="deletedUrlRedirectId")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectUserError"))), graphql_name="userErrors"
)
@@ -19757,8 +22928,7 @@ class UrlRedirectImportCreatePayload(sgqlc.types.Type):
__field_names__ = ("url_redirect_import", "user_errors")
url_redirect_import = sgqlc.types.Field("UrlRedirectImport", graphql_name="urlRedirectImport")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectImportUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectImportUserError"))), graphql_name="userErrors"
)
@@ -19774,8 +22944,7 @@ class UrlRedirectImportSubmitPayload(sgqlc.types.Type):
__field_names__ = ("job", "user_errors")
job = sgqlc.types.Field(Job, graphql_name="job")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectImportUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectImportUserError"))), graphql_name="userErrors"
)
@@ -19784,8 +22953,7 @@ class UrlRedirectUpdatePayload(sgqlc.types.Type):
__field_names__ = ("url_redirect", "user_errors")
url_redirect = sgqlc.types.Field("UrlRedirect", graphql_name="urlRedirect")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UrlRedirectUserError"))), graphql_name="userErrors"
)
@@ -19832,8 +23000,7 @@ class WebPixelCreatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("user_errors", "web_pixel")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ErrorsWebPixelUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ErrorsWebPixelUserError"))), graphql_name="userErrors"
)
web_pixel = sgqlc.types.Field("WebPixel", graphql_name="webPixel")
@@ -19843,8 +23010,7 @@ class WebPixelDeletePayload(sgqlc.types.Type):
__field_names__ = ("deleted_web_pixel_id", "user_errors")
deleted_web_pixel_id = sgqlc.types.Field(ID, graphql_name="deletedWebPixelId")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ErrorsWebPixelUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ErrorsWebPixelUserError"))), graphql_name="userErrors"
)
@@ -19852,8 +23018,7 @@ class WebPixelUpdatePayload(sgqlc.types.Type):
__schema__ = shopify_schema
__field_names__ = ("user_errors", "web_pixel")
user_errors = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ErrorsWebPixelUserError"))),
- graphql_name="userErrors",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ErrorsWebPixelUserError"))), graphql_name="userErrors"
)
web_pixel = sgqlc.types.Field("WebPixel", graphql_name="webPixel")
@@ -19943,6 +23108,123 @@ class deliveryProfileUpdatePayload(sgqlc.types.Type):
user_errors = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("UserError"))), graphql_name="userErrors")
+class AbandonedCheckout(sgqlc.types.Type, Navigable, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("abandoned_checkout_url", "line_items_quantity", "total_price_set")
+ abandoned_checkout_url = sgqlc.types.Field(sgqlc.types.non_null(URL), graphql_name="abandonedCheckoutUrl")
+ line_items_quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="lineItemsQuantity")
+ total_price_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalPriceSet")
+
+
+class Abandonment(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "abandoned_checkout_payload",
+ "abandonment_type",
+ "app",
+ "cart_url",
+ "created_at",
+ "customer",
+ "customer_has_no_order_since_abandonment",
+ "days_since_last_abandonment_email",
+ "email_sent_at",
+ "email_state",
+ "hours_since_last_abandoned_checkout",
+ "inventory_available",
+ "is_from_online_store",
+ "is_from_shop_app",
+ "is_from_shop_pay",
+ "is_most_significant_abandonment",
+ "last_browse_abandonment_date",
+ "last_cart_abandonment_date",
+ "last_checkout_abandonment_date",
+ "most_recent_step",
+ "products_added_to_cart",
+ "products_viewed",
+ "visit_started_at",
+ )
+ abandoned_checkout_payload = sgqlc.types.Field(AbandonedCheckout, graphql_name="abandonedCheckoutPayload")
+ abandonment_type = sgqlc.types.Field(sgqlc.types.non_null(AbandonmentAbandonmentType), graphql_name="abandonmentType")
+ app = sgqlc.types.Field(sgqlc.types.non_null("App"), graphql_name="app")
+ cart_url = sgqlc.types.Field(URL, graphql_name="cartUrl")
+ created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
+ customer = sgqlc.types.Field(sgqlc.types.non_null("Customer"), graphql_name="customer")
+ customer_has_no_order_since_abandonment = sgqlc.types.Field(
+ sgqlc.types.non_null(Boolean), graphql_name="customerHasNoOrderSinceAbandonment"
+ )
+ days_since_last_abandonment_email = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="daysSinceLastAbandonmentEmail")
+ email_sent_at = sgqlc.types.Field(DateTime, graphql_name="emailSentAt")
+ email_state = sgqlc.types.Field(AbandonmentEmailState, graphql_name="emailState")
+ hours_since_last_abandoned_checkout = sgqlc.types.Field(Float, graphql_name="hoursSinceLastAbandonedCheckout")
+ inventory_available = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="inventoryAvailable")
+ is_from_online_store = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isFromOnlineStore")
+ is_from_shop_app = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isFromShopApp")
+ is_from_shop_pay = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isFromShopPay")
+ is_most_significant_abandonment = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isMostSignificantAbandonment")
+ last_browse_abandonment_date = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="lastBrowseAbandonmentDate")
+ last_cart_abandonment_date = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="lastCartAbandonmentDate")
+ last_checkout_abandonment_date = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="lastCheckoutAbandonmentDate")
+ most_recent_step = sgqlc.types.Field(sgqlc.types.non_null(AbandonmentAbandonmentType), graphql_name="mostRecentStep")
+ products_added_to_cart = sgqlc.types.Field(
+ sgqlc.types.non_null(CustomerVisitProductInfoConnection),
+ graphql_name="productsAddedToCart",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ products_viewed = sgqlc.types.Field(
+ sgqlc.types.non_null(CustomerVisitProductInfoConnection),
+ graphql_name="productsViewed",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ visit_started_at = sgqlc.types.Field(DateTime, graphql_name="visitStartedAt")
+
+
+class AbandonmentEmailStateUpdateUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(AbandonmentEmailStateUpdateUserErrorCode, graphql_name="code")
+
+
+class AbandonmentUpdateActivitiesDeliveryStatusesUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(AbandonmentUpdateActivitiesDeliveryStatusesUserErrorCode, graphql_name="code")
+
+
+class AddAllProductsOperation(sgqlc.types.Type, Node, ResourceOperation):
+ __schema__ = shopify_schema
+ __field_names__ = ()
+
+
+class AdditionalFee(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("name", "price", "tax_lines")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ price = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="price")
+ tax_lines = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(TaxLine))), graphql_name="taxLines")
+
+
+class AdditionalFeeSale(sgqlc.types.Type, Sale):
+ __schema__ = shopify_schema
+ __field_names__ = ("additional_fee",)
+ additional_fee = sgqlc.types.Field(sgqlc.types.non_null("SaleAdditionalFee"), graphql_name="additionalFee")
+
+
class AdjustmentSale(sgqlc.types.Type, Sale):
__schema__ = shopify_schema
__field_names__ = ()
@@ -19985,8 +23267,7 @@ class App(sgqlc.types.Type, Node):
app_store_app_url = sgqlc.types.Field(URL, graphql_name="appStoreAppUrl")
app_store_developer_url = sgqlc.types.Field(URL, graphql_name="appStoreDeveloperUrl")
available_access_scopes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AccessScope))),
- graphql_name="availableAccessScopes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AccessScope))), graphql_name="availableAccessScopes"
)
banner = sgqlc.types.Field(sgqlc.types.non_null("Image"), graphql_name="banner")
description = sgqlc.types.Field(String, graphql_name="description")
@@ -19994,8 +23275,7 @@ class App(sgqlc.types.Type, Node):
developer_type = sgqlc.types.Field(sgqlc.types.non_null(AppDeveloperType), graphql_name="developerType")
embedded = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="embedded")
failed_requirements = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FailedRequirement))),
- graphql_name="failedRequirements",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FailedRequirement))), graphql_name="failedRequirements"
)
features = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="features")
feedback = sgqlc.types.Field(AppFeedback, graphql_name="feedback")
@@ -20011,8 +23291,7 @@ class App(sgqlc.types.Type, Node):
public_category = sgqlc.types.Field(sgqlc.types.non_null(AppPublicCategory), graphql_name="publicCategory")
published = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="published")
requested_access_scopes = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AccessScope))),
- graphql_name="requestedAccessScopes",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AccessScope))), graphql_name="requestedAccessScopes"
)
screenshots = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Image"))), graphql_name="screenshots")
shopify_developed = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="shopifyDeveloped")
@@ -20021,6 +23300,24 @@ class App(sgqlc.types.Type, Node):
webhook_api_version = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="webhookApiVersion")
+class AppCatalog(sgqlc.types.Type, Catalog, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("apps",)
+ apps = sgqlc.types.Field(
+ sgqlc.types.non_null(AppConnection),
+ graphql_name="apps",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+
+
class AppCredit(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = ("amount", "created_at", "description", "test")
@@ -20048,8 +23345,7 @@ class AppInstallation(sgqlc.types.Type, HasMetafields, Node):
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AccessScope))), graphql_name="accessScopes"
)
active_subscriptions = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppSubscription"))),
- graphql_name="activeSubscriptions",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("AppSubscription"))), graphql_name="activeSubscriptions"
)
all_subscriptions = sgqlc.types.Field(
sgqlc.types.non_null(AppSubscriptionConnection),
@@ -20106,10 +23402,7 @@ class AppInstallation(sgqlc.types.Type, HasMetafields, Node):
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- (
- "sort_key",
- sgqlc.types.Arg(AppRevenueAttributionRecordSortKeys, graphql_name="sortKey", default="CREATED_AT"),
- ),
+ ("sort_key", sgqlc.types.Arg(AppRevenueAttributionRecordSortKeys, graphql_name="sortKey", default="CREATED_AT")),
)
),
)
@@ -20146,21 +23439,11 @@ class AppRevenueAttributionRecordDeleteUserError(sgqlc.types.Type, DisplayableEr
class AppSubscription(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = (
- "created_at",
- "current_period_end",
- "line_items",
- "name",
- "return_url",
- "status",
- "test",
- "trial_days",
- )
+ __field_names__ = ("created_at", "current_period_end", "line_items", "name", "return_url", "status", "test", "trial_days")
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
current_period_end = sgqlc.types.Field(DateTime, graphql_name="currentPeriodEnd")
line_items = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AppSubscriptionLineItem))),
- graphql_name="lineItems",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AppSubscriptionLineItem))), graphql_name="lineItems"
)
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
return_url = sgqlc.types.Field(sgqlc.types.non_null(URL), graphql_name="returnUrl")
@@ -20177,9 +23460,10 @@ class AppSubscriptionTrialExtendUserError(sgqlc.types.Type, DisplayableError):
class AppUsageRecord(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = ("created_at", "description", "price", "subscription_line_item")
+ __field_names__ = ("created_at", "description", "idempotency_key", "price", "subscription_line_item")
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
description = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="description")
+ idempotency_key = sgqlc.types.Field(String, graphql_name="idempotencyKey")
price = sgqlc.types.Field(sgqlc.types.non_null(MoneyV2), graphql_name="price")
subscription_line_item = sgqlc.types.Field(sgqlc.types.non_null(AppSubscriptionLineItem), graphql_name="subscriptionLineItem")
@@ -20351,6 +23635,35 @@ class CalculatedScriptDiscountApplication(sgqlc.types.Type, CalculatedDiscountAp
__field_names__ = ()
+class CartTransform(sgqlc.types.Type, HasMetafields, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("function_id",)
+ function_id = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="functionId")
+
+
+class CartTransformCreateUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(CartTransformCreateUserErrorCode, graphql_name="code")
+
+
+class CartTransformDeleteUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(CartTransformDeleteUserErrorCode, graphql_name="code")
+
+
+class CatalogCsvOperation(sgqlc.types.Type, Node, ResourceOperation):
+ __schema__ = shopify_schema
+ __field_names__ = ()
+
+
+class CatalogUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(CatalogUserErrorCode, graphql_name="code")
+
+
class Channel(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = (
@@ -20427,9 +23740,10 @@ class Channel(sgqlc.types.Type, Node):
class ChannelDefinition(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = ("channel_name", "handle", "sub_channel_name", "svg_icon")
+ __field_names__ = ("channel_name", "handle", "is_marketplace", "sub_channel_name", "svg_icon")
channel_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="channelName")
handle = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="handle")
+ is_marketplace = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isMarketplace")
sub_channel_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="subChannelName")
svg_icon = sgqlc.types.Field(String, graphql_name="svgIcon")
@@ -20444,8 +23758,9 @@ class ChannelInformation(sgqlc.types.Type, Node):
class CheckoutProfile(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = ("created_at", "is_published", "name", "updated_at")
+ __field_names__ = ("created_at", "edited_at", "is_published", "name", "updated_at")
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
+ edited_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="editedAt")
is_published = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isPublished")
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
@@ -20495,10 +23810,7 @@ class Collection(sgqlc.types.Type, HasMetafieldDefinitions, HasMetafields, HasPu
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- (
- "sort_key",
- sgqlc.types.Arg(ProductCollectionSortKeys, graphql_name="sortKey", default="COLLECTION_DEFAULT"),
- ),
+ ("sort_key", sgqlc.types.Arg(ProductCollectionSortKeys, graphql_name="sortKey", default="COLLECTION_DEFAULT")),
)
),
)
@@ -20521,8 +23833,7 @@ class CommentEvent(sgqlc.types.Type, Event, Node):
__schema__ = shopify_schema
__field_names__ = ("attachments", "author", "can_delete", "can_edit", "edited", "embed", "raw_message", "subject")
attachments = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CommentEventAttachment))),
- graphql_name="attachments",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CommentEventAttachment))), graphql_name="attachments"
)
author = sgqlc.types.Field(sgqlc.types.non_null("StaffMember"), graphql_name="author")
can_delete = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="canDelete")
@@ -20533,7 +23844,7 @@ class CommentEvent(sgqlc.types.Type, Event, Node):
subject = sgqlc.types.Field(sgqlc.types.non_null(CommentEventSubject), graphql_name="subject")
-class Company(sgqlc.types.Type, CommentEventSubject, HasEvents, Navigable, Node):
+class Company(sgqlc.types.Type, CommentEventSubject, HasEvents, HasMetafieldDefinitions, HasMetafields, Navigable, Node):
__schema__ = shopify_schema
__field_names__ = (
"contact_count",
@@ -20748,10 +24059,7 @@ class CompanyContact(sgqlc.types.Type, Node):
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- (
- "sort_key",
- sgqlc.types.Arg(CompanyContactRoleAssignmentSortKeys, graphql_name="sortKey", default="ID"),
- ),
+ ("sort_key", sgqlc.types.Arg(CompanyContactRoleAssignmentSortKeys, graphql_name="sortKey", default="ID")),
("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
)
),
@@ -20778,16 +24086,18 @@ class CompanyContactRoleAssignment(sgqlc.types.Type, Node):
updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
-class CompanyLocation(sgqlc.types.Type, CommentEventSubject, HasEvents, Navigable, Node):
+class CompanyLocation(sgqlc.types.Type, CommentEventSubject, HasEvents, HasMetafieldDefinitions, HasMetafields, Navigable, Node):
__schema__ = shopify_schema
__field_names__ = (
"billing_address",
"buyer_experience_configuration",
+ "catalogs",
"company",
"created_at",
"currency",
"draft_orders",
"external_id",
+ "in_catalog",
"locale",
"market",
"name",
@@ -20804,6 +24114,19 @@ class CompanyLocation(sgqlc.types.Type, CommentEventSubject, HasEvents, Navigabl
)
billing_address = sgqlc.types.Field(CompanyAddress, graphql_name="billingAddress")
buyer_experience_configuration = sgqlc.types.Field(BuyerExperienceConfiguration, graphql_name="buyerExperienceConfiguration")
+ catalogs = sgqlc.types.Field(
+ sgqlc.types.non_null(CatalogConnection),
+ graphql_name="catalogs",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
company = sgqlc.types.Field(sgqlc.types.non_null(Company), graphql_name="company")
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
currency = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="currency")
@@ -20823,6 +24146,11 @@ class CompanyLocation(sgqlc.types.Type, CommentEventSubject, HasEvents, Navigabl
),
)
external_id = sgqlc.types.Field(String, graphql_name="externalId")
+ in_catalog = sgqlc.types.Field(
+ sgqlc.types.non_null(Boolean),
+ graphql_name="inCatalog",
+ args=sgqlc.types.ArgDict((("catalog_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="catalogId", default=None)),)),
+ )
locale = sgqlc.types.Field(String, graphql_name="locale")
market = sgqlc.types.Field(sgqlc.types.non_null("Market"), graphql_name="market")
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
@@ -20853,10 +24181,7 @@ class CompanyLocation(sgqlc.types.Type, CommentEventSubject, HasEvents, Navigabl
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- (
- "sort_key",
- sgqlc.types.Arg(CompanyContactRoleAssignmentSortKeys, graphql_name="sortKey", default="ID"),
- ),
+ ("sort_key", sgqlc.types.Arg(CompanyContactRoleAssignmentSortKeys, graphql_name="sortKey", default="ID")),
("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
)
),
@@ -20870,20 +24195,32 @@ class CompanyLocation(sgqlc.types.Type, CommentEventSubject, HasEvents, Navigabl
updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
-class Customer(
- sgqlc.types.Type,
- CommentEventSubject,
- HasEvents,
- HasMetafieldDefinitions,
- HasMetafields,
- LegacyInteroperability,
- Node,
-):
+class CompanyLocationCatalog(sgqlc.types.Type, Catalog, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("company_locations", "company_locations_count")
+ company_locations = sgqlc.types.Field(
+ sgqlc.types.non_null(CompanyLocationConnection),
+ graphql_name="companyLocations",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("sort_key", sgqlc.types.Arg(CompanyLocationSortKeys, graphql_name="sortKey", default="ID")),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ )
+ ),
+ )
+ company_locations_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="companyLocationsCount")
+
+
+class Customer(sgqlc.types.Type, CommentEventSubject, HasEvents, HasMetafieldDefinitions, HasMetafields, LegacyInteroperability, Node):
__schema__ = shopify_schema
__field_names__ = (
"addresses",
"amount_spent",
- "average_order_amount_v2",
"can_delete",
"company_contact_profiles",
"created_at",
@@ -20898,6 +24235,7 @@ class Customer(
"lifetime_duration",
"locale",
"market",
+ "mergeable",
"multipass_identifier",
"note",
"number_of_orders",
@@ -20923,11 +24261,9 @@ class Customer(
args=sgqlc.types.ArgDict((("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),)),
)
amount_spent = sgqlc.types.Field(sgqlc.types.non_null(MoneyV2), graphql_name="amountSpent")
- average_order_amount_v2 = sgqlc.types.Field(MoneyV2, graphql_name="averageOrderAmountV2")
can_delete = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="canDelete")
company_contact_profiles = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CompanyContact))),
- graphql_name="companyContactProfiles",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CompanyContact))), graphql_name="companyContactProfiles"
)
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
default_address = sgqlc.types.Field("MailingAddress", graphql_name="defaultAddress")
@@ -20941,6 +24277,7 @@ class Customer(
lifetime_duration = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="lifetimeDuration")
locale = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="locale")
market = sgqlc.types.Field("Market", graphql_name="market")
+ mergeable = sgqlc.types.Field(sgqlc.types.non_null(CustomerMergeable), graphql_name="mergeable")
multipass_identifier = sgqlc.types.Field(String, graphql_name="multipassIdentifier")
note = sgqlc.types.Field(String, graphql_name="note")
number_of_orders = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="numberOfOrders")
@@ -21010,6 +24347,12 @@ class CustomerEmailMarketingConsentUpdateUserError(sgqlc.types.Type, Displayable
code = sgqlc.types.Field(CustomerEmailMarketingConsentUpdateUserErrorCode, graphql_name="code")
+class CustomerMergeUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(CustomerMergeErrorCode, graphql_name="code")
+
+
class CustomerPaymentMethod(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = ("customer", "instrument", "revoked_at", "revoked_reason", "subscription_contracts")
@@ -21032,6 +24375,18 @@ class CustomerPaymentMethod(sgqlc.types.Type, Node):
)
+class CustomerPaymentMethodCreateFromDuplicationDataUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(CustomerPaymentMethodCreateFromDuplicationDataUserErrorCode, graphql_name="code")
+
+
+class CustomerPaymentMethodGetDuplicationDataUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(CustomerPaymentMethodGetDuplicationDataUserErrorCode, graphql_name="code")
+
+
class CustomerPaymentMethodGetUpdateUrlUserError(sgqlc.types.Type, DisplayableError):
__schema__ = shopify_schema
__field_names__ = ("code",)
@@ -21050,6 +24405,48 @@ class CustomerPaymentMethodUserError(sgqlc.types.Type, DisplayableError):
code = sgqlc.types.Field(CustomerPaymentMethodUserErrorCode, graphql_name="code")
+class CustomerSegmentMember(sgqlc.types.Type, HasMetafields):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "amount_spent",
+ "default_address",
+ "default_email_address",
+ "default_phone_number",
+ "display_name",
+ "first_name",
+ "id",
+ "last_name",
+ "last_order_id",
+ "mergeable",
+ "note",
+ "number_of_orders",
+ )
+ amount_spent = sgqlc.types.Field(MoneyV2, graphql_name="amountSpent")
+ default_address = sgqlc.types.Field("MailingAddress", graphql_name="defaultAddress")
+ default_email_address = sgqlc.types.Field(CustomerEmailAddress, graphql_name="defaultEmailAddress")
+ default_phone_number = sgqlc.types.Field(CustomerPhoneNumber, graphql_name="defaultPhoneNumber")
+ display_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="displayName")
+ first_name = sgqlc.types.Field(String, graphql_name="firstName")
+ id = sgqlc.types.Field(sgqlc.types.non_null(ID), graphql_name="id")
+ last_name = sgqlc.types.Field(String, graphql_name="lastName")
+ last_order_id = sgqlc.types.Field(ID, graphql_name="lastOrderId")
+ mergeable = sgqlc.types.Field(sgqlc.types.non_null(CustomerMergeable), graphql_name="mergeable")
+ note = sgqlc.types.Field(String, graphql_name="note")
+ number_of_orders = sgqlc.types.Field(UnsignedInt64, graphql_name="numberOfOrders")
+
+
+class CustomerSegmentMembersQuery(sgqlc.types.Type, JobResult, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("current_count",)
+ current_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="currentCount")
+
+
+class CustomerSegmentMembersQueryUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(CustomerSegmentMembersQueryUserErrorCode, graphql_name="code")
+
+
class CustomerSmsMarketingConsentError(sgqlc.types.Type, DisplayableError):
__schema__ = shopify_schema
__field_names__ = ("code",)
@@ -21088,6 +24485,12 @@ class DelegateAccessTokenCreateUserError(sgqlc.types.Type, DisplayableError):
code = sgqlc.types.Field(DelegateAccessTokenCreateUserErrorCode, graphql_name="code")
+class DelegateAccessTokenDestroyUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(DelegateAccessTokenDestroyUserErrorCode, graphql_name="code")
+
+
class DeliveryCarrierService(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = ("available_services_for_countries", "formatted_name", "icon", "name")
@@ -21096,22 +24499,12 @@ class DeliveryCarrierService(sgqlc.types.Type, Node):
graphql_name="availableServicesForCountries",
args=sgqlc.types.ArgDict(
(
- (
- "origins",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="origins", default=None),
- ),
+ ("origins", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="origins", default=None)),
(
"country_codes",
- sgqlc.types.Arg(
- sgqlc.types.list_of(sgqlc.types.non_null(CountryCode)),
- graphql_name="countryCodes",
- default=None,
- ),
- ),
- (
- "rest_of_world",
- sgqlc.types.Arg(sgqlc.types.non_null(Boolean), graphql_name="restOfWorld", default=None),
+ sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(CountryCode)), graphql_name="countryCodes", default=None),
),
+ ("rest_of_world", sgqlc.types.Arg(sgqlc.types.non_null(Boolean), graphql_name="restOfWorld", default=None)),
)
),
)
@@ -21139,9 +24532,25 @@ class DeliveryCountry(sgqlc.types.Type, Node):
translated_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="translatedName")
+class DeliveryCustomization(sgqlc.types.Type, HasMetafieldDefinitions, HasMetafields, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("enabled", "error_history", "function_id", "shopify_function", "title")
+ enabled = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="enabled")
+ error_history = sgqlc.types.Field(FunctionsErrorHistory, graphql_name="errorHistory")
+ function_id = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="functionId")
+ shopify_function = sgqlc.types.Field(sgqlc.types.non_null(ShopifyFunction), graphql_name="shopifyFunction")
+ title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+
+
+class DeliveryCustomizationError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(DeliveryCustomizationErrorCode, graphql_name="code")
+
+
class DeliveryLocationGroup(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = ("locations",)
+ __field_names__ = ("locations", "locations_count")
locations = sgqlc.types.Field(
sgqlc.types.non_null(LocationConnection),
graphql_name="locations",
@@ -21159,11 +24568,19 @@ class DeliveryLocationGroup(sgqlc.types.Type, Node):
)
),
)
+ locations_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="locationsCount")
+
+
+class DeliveryLocationLocalPickupSettingsError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(DeliveryLocationLocalPickupSettingsErrorCode, graphql_name="code")
class DeliveryMethod(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = ("max_delivery_date_time", "method_type", "min_delivery_date_time")
+ __field_names__ = ("branded_promise", "max_delivery_date_time", "method_type", "min_delivery_date_time")
+ branded_promise = sgqlc.types.Field(DeliveryBrandedPromise, graphql_name="brandedPromise")
max_delivery_date_time = sgqlc.types.Field(DateTime, graphql_name="maxDeliveryDateTime")
method_type = sgqlc.types.Field(sgqlc.types.non_null(DeliveryMethodType), graphql_name="methodType")
min_delivery_date_time = sgqlc.types.Field(DateTime, graphql_name="minDeliveryDateTime")
@@ -21175,8 +24592,7 @@ class DeliveryMethodDefinition(sgqlc.types.Type, Node):
active = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="active")
description = sgqlc.types.Field(String, graphql_name="description")
method_conditions = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DeliveryCondition))),
- graphql_name="methodConditions",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DeliveryCondition))), graphql_name="methodConditions"
)
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
rate_provider = sgqlc.types.Field(sgqlc.types.non_null("DeliveryRateProvider"), graphql_name="rateProvider")
@@ -21184,19 +24600,12 @@ class DeliveryMethodDefinition(sgqlc.types.Type, Node):
class DeliveryParticipant(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = (
- "adapt_to_new_services_flag",
- "carrier_service",
- "fixed_fee",
- "participant_services",
- "percentage_of_rate_fee",
- )
+ __field_names__ = ("adapt_to_new_services_flag", "carrier_service", "fixed_fee", "participant_services", "percentage_of_rate_fee")
adapt_to_new_services_flag = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="adaptToNewServicesFlag")
carrier_service = sgqlc.types.Field(sgqlc.types.non_null(DeliveryCarrierService), graphql_name="carrierService")
fixed_fee = sgqlc.types.Field(MoneyV2, graphql_name="fixedFee")
participant_services = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DeliveryParticipantService))),
- graphql_name="participantServices",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DeliveryParticipantService))), graphql_name="participantServices"
)
percentage_of_rate_fee = sgqlc.types.Field(sgqlc.types.non_null(Float), graphql_name="percentageOfRateFee")
@@ -21215,6 +24624,7 @@ class DeliveryProfile(sgqlc.types.Type, Node):
"profile_location_groups",
"selling_plan_groups",
"unassigned_locations",
+ "unassigned_locations_paginated",
"zone_country_count",
)
active_method_definitions_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="activeMethodDefinitionsCount")
@@ -21240,6 +24650,7 @@ class DeliveryProfile(sgqlc.types.Type, Node):
profile_location_groups = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DeliveryProfileLocationGroup))),
graphql_name="profileLocationGroups",
+ args=sgqlc.types.ArgDict((("location_group_id", sgqlc.types.Arg(ID, graphql_name="locationGroupId", default=None)),)),
)
selling_plan_groups = sgqlc.types.Field(
sgqlc.types.non_null(SellingPlanGroupConnection),
@@ -21257,6 +24668,19 @@ class DeliveryProfile(sgqlc.types.Type, Node):
unassigned_locations = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Location"))), graphql_name="unassignedLocations"
)
+ unassigned_locations_paginated = sgqlc.types.Field(
+ sgqlc.types.non_null(LocationConnection),
+ graphql_name="unassignedLocationsPaginated",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
zone_country_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="zoneCountryCount")
@@ -21316,6 +24740,7 @@ class DiscountAutomaticBxgy(sgqlc.types.Type, HasEvents, Node):
"status",
"summary",
"title",
+ "updated_at",
"uses_per_order_limit",
)
async_usage_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="asyncUsageCount")
@@ -21329,6 +24754,7 @@ class DiscountAutomaticBxgy(sgqlc.types.Type, HasEvents, Node):
status = sgqlc.types.Field(sgqlc.types.non_null(DiscountStatus), graphql_name="status")
summary = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="summary")
title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
uses_per_order_limit = sgqlc.types.Field(Int, graphql_name="usesPerOrderLimit")
@@ -21404,14 +24830,7 @@ class Domain(sgqlc.types.Type, Node):
class DraftOrder(
- sgqlc.types.Type,
- CommentEventSubject,
- HasEvents,
- HasLocalizationExtensions,
- HasMetafields,
- LegacyInteroperability,
- Navigable,
- Node,
+ sgqlc.types.Type, CommentEventSubject, HasEvents, HasLocalizationExtensions, HasMetafields, LegacyInteroperability, Navigable, Node
):
__schema__ = shopify_schema
__field_names__ = (
@@ -21436,6 +24855,7 @@ class DraftOrder(
"order",
"payment_terms",
"phone",
+ "po_number",
"presentment_currency_code",
"purchasing_entity",
"ready",
@@ -21498,6 +24918,7 @@ class DraftOrder(
order = sgqlc.types.Field("Order", graphql_name="order")
payment_terms = sgqlc.types.Field("PaymentTerms", graphql_name="paymentTerms")
phone = sgqlc.types.Field(String, graphql_name="phone")
+ po_number = sgqlc.types.Field(String, graphql_name="poNumber")
presentment_currency_code = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="presentmentCurrencyCode")
purchasing_entity = sgqlc.types.Field("PurchasingEntity", graphql_name="purchasingEntity")
ready = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="ready")
@@ -21563,8 +24984,7 @@ class DraftOrderLineItem(sgqlc.types.Type, Node):
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(Attribute))), graphql_name="customAttributes"
)
custom_attributes_v2 = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(TypedAttribute))),
- graphql_name="customAttributesV2",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(TypedAttribute))), graphql_name="customAttributesV2"
)
discounted_total = sgqlc.types.Field(sgqlc.types.non_null(Money), graphql_name="discountedTotal")
discounted_total_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="discountedTotalSet")
@@ -21615,12 +25035,48 @@ class DutySale(sgqlc.types.Type, Sale):
duty = sgqlc.types.Field(sgqlc.types.non_null(Duty), graphql_name="duty")
+class ErrorsServerPixelUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(ErrorsServerPixelUserErrorCode, graphql_name="code")
+
+
class ErrorsWebPixelUserError(sgqlc.types.Type, DisplayableError):
__schema__ = shopify_schema
__field_names__ = ("code",)
code = sgqlc.types.Field(ErrorsWebPixelUserErrorCode, graphql_name="code")
+class ExchangeV2(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "additions",
+ "completed_at",
+ "created_at",
+ "location",
+ "note",
+ "refunds",
+ "returns",
+ "staff_member",
+ "total_amount_processed_set",
+ "total_price_set",
+ "transactions",
+ )
+ additions = sgqlc.types.Field(sgqlc.types.non_null(ExchangeV2Additions), graphql_name="additions")
+ completed_at = sgqlc.types.Field(DateTime, graphql_name="completedAt")
+ created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
+ location = sgqlc.types.Field("Location", graphql_name="location")
+ note = sgqlc.types.Field(String, graphql_name="note")
+ refunds = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("Refund"))), graphql_name="refunds")
+ returns = sgqlc.types.Field(sgqlc.types.non_null(ExchangeV2Returns), graphql_name="returns")
+ staff_member = sgqlc.types.Field("StaffMember", graphql_name="staffMember")
+ total_amount_processed_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalAmountProcessedSet")
+ total_price_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalPriceSet")
+ transactions = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("OrderTransaction"))), graphql_name="transactions"
+ )
+
+
class ExternalVideo(sgqlc.types.Type, Media, Node):
__schema__ = shopify_schema
__field_names__ = ("embed_url", "host", "origin_url")
@@ -21720,9 +25176,30 @@ class Fulfillment(sgqlc.types.Type, LegacyInteroperability, Node):
class FulfillmentEvent(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = ("happened_at", "status")
+ __field_names__ = (
+ "address1",
+ "city",
+ "country",
+ "estimated_delivery_at",
+ "happened_at",
+ "latitude",
+ "longitude",
+ "message",
+ "province",
+ "status",
+ "zip",
+ )
+ address1 = sgqlc.types.Field(String, graphql_name="address1")
+ city = sgqlc.types.Field(String, graphql_name="city")
+ country = sgqlc.types.Field(String, graphql_name="country")
+ estimated_delivery_at = sgqlc.types.Field(DateTime, graphql_name="estimatedDeliveryAt")
happened_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="happenedAt")
+ latitude = sgqlc.types.Field(Float, graphql_name="latitude")
+ longitude = sgqlc.types.Field(Float, graphql_name="longitude")
+ message = sgqlc.types.Field(String, graphql_name="message")
+ province = sgqlc.types.Field(String, graphql_name="province")
status = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentEventStatus), graphql_name="status")
+ zip = sgqlc.types.Field(String, graphql_name="zip")
class FulfillmentLineItem(sgqlc.types.Type, Node):
@@ -21738,6 +25215,7 @@ class FulfillmentOrder(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = (
"assigned_location",
+ "created_at",
"delivery_method",
"destination",
"fulfill_at",
@@ -21752,15 +25230,16 @@ class FulfillmentOrder(sgqlc.types.Type, Node):
"request_status",
"status",
"supported_actions",
+ "updated_at",
)
assigned_location = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentOrderAssignedLocation), graphql_name="assignedLocation")
+ created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
delivery_method = sgqlc.types.Field(DeliveryMethod, graphql_name="deliveryMethod")
destination = sgqlc.types.Field("FulfillmentOrderDestination", graphql_name="destination")
fulfill_at = sgqlc.types.Field(DateTime, graphql_name="fulfillAt")
fulfill_by = sgqlc.types.Field(DateTime, graphql_name="fulfillBy")
fulfillment_holds = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentHold))),
- graphql_name="fulfillmentHolds",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentHold))), graphql_name="fulfillmentHolds"
)
fulfillments = sgqlc.types.Field(
sgqlc.types.non_null(FulfillmentConnection),
@@ -21820,9 +25299,9 @@ class FulfillmentOrder(sgqlc.types.Type, Node):
request_status = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentOrderRequestStatus), graphql_name="requestStatus")
status = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentOrderStatus), graphql_name="status")
supported_actions = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderSupportedAction))),
- graphql_name="supportedActions",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderSupportedAction))), graphql_name="supportedActions"
)
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
class FulfillmentOrderDestination(sgqlc.types.Type, Node):
@@ -21861,19 +25340,46 @@ class FulfillmentOrderHoldUserError(sgqlc.types.Type, DisplayableError):
class FulfillmentOrderLineItem(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = ("line_item", "remaining_quantity", "total_quantity", "warnings")
- line_item = sgqlc.types.Field(sgqlc.types.non_null("LineItem"), graphql_name="lineItem")
+ __field_names__ = (
+ "image",
+ "inventory_item_id",
+ "original_unit_price_set",
+ "product_title",
+ "remaining_quantity",
+ "requires_shipping",
+ "sku",
+ "total_quantity",
+ "variant_title",
+ "vendor",
+ "warnings",
+ "weight",
+ )
+ image = sgqlc.types.Field("Image", graphql_name="image")
+ inventory_item_id = sgqlc.types.Field(ID, graphql_name="inventoryItemId")
+ original_unit_price_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="originalUnitPriceSet")
+ product_title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="productTitle")
remaining_quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="remainingQuantity")
+ requires_shipping = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="requiresShipping")
+ sku = sgqlc.types.Field(String, graphql_name="sku")
total_quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="totalQuantity")
+ variant_title = sgqlc.types.Field(String, graphql_name="variantTitle")
+ vendor = sgqlc.types.Field(String, graphql_name="vendor")
warnings = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderLineItemWarning))),
- graphql_name="warnings",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentOrderLineItemWarning))), graphql_name="warnings"
)
+ weight = sgqlc.types.Field(Weight, graphql_name="weight")
+
+
+class FulfillmentOrderLineItemsPreparedForPickupUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(FulfillmentOrderLineItemsPreparedForPickupUserErrorCode, graphql_name="code")
class FulfillmentOrderMerchantRequest(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = ("kind", "message", "request_options", "response_data", "sent_at")
+ __field_names__ = ("fulfillment_order", "kind", "message", "request_options", "response_data", "sent_at")
+ fulfillment_order = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentOrder), graphql_name="fulfillmentOrder")
kind = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentOrderMerchantRequestKind), graphql_name="kind")
message = sgqlc.types.Field(String, graphql_name="message")
request_options = sgqlc.types.Field(JSON, graphql_name="requestOptions")
@@ -21881,6 +25387,12 @@ class FulfillmentOrderMerchantRequest(sgqlc.types.Type, Node):
sent_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="sentAt")
+class FulfillmentOrderMergeUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(FulfillmentOrderMergeUserErrorCode, graphql_name="code")
+
+
class FulfillmentOrderReleaseHoldUserError(sgqlc.types.Type, DisplayableError):
__schema__ = shopify_schema
__field_names__ = ("code",)
@@ -21893,6 +25405,18 @@ class FulfillmentOrderRescheduleUserError(sgqlc.types.Type, DisplayableError):
code = sgqlc.types.Field(FulfillmentOrderRescheduleUserErrorCode, graphql_name="code")
+class FulfillmentOrderSplitUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(FulfillmentOrderSplitUserErrorCode, graphql_name="code")
+
+
+class FulfillmentOrdersReleaseHoldsUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(FulfillmentOrdersReleaseHoldsUserErrorCode, graphql_name="code")
+
+
class FulfillmentOrdersSetFulfillmentDeadlineUserError(sgqlc.types.Type, DisplayableError):
__schema__ = shopify_schema
__field_names__ = ("code",)
@@ -21961,6 +25485,39 @@ class Image(sgqlc.types.Type, HasMetafields):
width = sgqlc.types.Field(Int, graphql_name="width")
+class InventoryAdjustQuantitiesUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(InventoryAdjustQuantitiesUserErrorCode, graphql_name="code")
+
+
+class InventoryAdjustmentGroup(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("app", "changes", "created_at", "reason", "reference_document_uri", "staff_member")
+ app = sgqlc.types.Field(App, graphql_name="app")
+ changes = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(InventoryChange))),
+ graphql_name="changes",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "inventory_item_ids",
+ sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="inventoryItemIds", default=None),
+ ),
+ ("location_ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="locationIds", default=None)),
+ (
+ "quantity_names",
+ sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name="quantityNames", default=None),
+ ),
+ )
+ ),
+ )
+ created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
+ reason = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="reason")
+ reference_document_uri = sgqlc.types.Field(String, graphql_name="referenceDocumentUri")
+ staff_member = sgqlc.types.Field("StaffMember", graphql_name="staffMember")
+
+
class InventoryBulkToggleActivationUserError(sgqlc.types.Type, DisplayableError):
__schema__ = shopify_schema
__field_names__ = ("code",)
@@ -22038,28 +25595,41 @@ class InventoryItem(sgqlc.types.Type, LegacyInteroperability, Node):
class InventoryLevel(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = (
- "available",
- "can_deactivate",
- "created_at",
- "deactivation_alert",
- "deactivation_alert_html",
- "incoming",
- "item",
- "location",
- "updated_at",
- )
- available = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="available")
+ __field_names__ = ("can_deactivate", "created_at", "deactivation_alert", "item", "location", "quantities", "updated_at")
can_deactivate = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="canDeactivate")
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
deactivation_alert = sgqlc.types.Field(String, graphql_name="deactivationAlert")
- deactivation_alert_html = sgqlc.types.Field(FormattedString, graphql_name="deactivationAlertHtml")
- incoming = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="incoming")
item = sgqlc.types.Field(sgqlc.types.non_null(InventoryItem), graphql_name="item")
location = sgqlc.types.Field(sgqlc.types.non_null("Location"), graphql_name="location")
+ quantities = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(InventoryQuantity))),
+ graphql_name="quantities",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "names",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="names", default=None
+ ),
+ ),
+ )
+ ),
+ )
updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
+class InventoryMoveQuantitiesUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(InventoryMoveQuantitiesUserErrorCode, graphql_name="code")
+
+
+class InventorySetOnHandQuantitiesUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(InventorySetOnHandQuantitiesUserErrorCode, graphql_name="code")
+
+
class LineItem(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = (
@@ -22071,6 +25641,7 @@ class LineItem(sgqlc.types.Type, Node):
"discounted_unit_price_set",
"duties",
"image",
+ "line_item_group",
"merchant_editable",
"name",
"non_fulfillable_quantity",
@@ -22101,13 +25672,13 @@ class LineItem(sgqlc.types.Type, Node):
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(Attribute))), graphql_name="customAttributes"
)
discount_allocations = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DiscountAllocation))),
- graphql_name="discountAllocations",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DiscountAllocation))), graphql_name="discountAllocations"
)
discounted_total_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="discountedTotalSet")
discounted_unit_price_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="discountedUnitPriceSet")
duties = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(Duty))), graphql_name="duties")
image = sgqlc.types.Field(Image, graphql_name="image")
+ line_item_group = sgqlc.types.Field(LineItemGroup, graphql_name="lineItemGroup")
merchant_editable = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="merchantEditable")
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
non_fulfillable_quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="nonFulfillableQuantity")
@@ -22175,8 +25746,7 @@ class LineItemMutable(sgqlc.types.Type, Node):
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(Attribute))), graphql_name="customAttributes"
)
discount_allocations = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DiscountAllocation))),
- graphql_name="discountAllocations",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(DiscountAllocation))), graphql_name="discountAllocations"
)
discounted_total_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="discountedTotalSet")
discounted_unit_price_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="discountedUnitPriceSet")
@@ -22235,6 +25805,7 @@ class Location(sgqlc.types.Type, HasMetafieldDefinitions, HasMetafields, LegacyI
"inventory_level",
"inventory_levels",
"is_active",
+ "local_pickup_settings_v2",
"name",
"ships_inventory",
"suggested_addresses",
@@ -22253,12 +25824,7 @@ class Location(sgqlc.types.Type, HasMetafieldDefinitions, HasMetafields, LegacyI
InventoryLevel,
graphql_name="inventoryLevel",
args=sgqlc.types.ArgDict(
- (
- (
- "inventory_item_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="inventoryItemId", default=None),
- ),
- )
+ (("inventory_item_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="inventoryItemId", default=None)),)
),
)
inventory_levels = sgqlc.types.Field(
@@ -22276,11 +25842,11 @@ class Location(sgqlc.types.Type, HasMetafieldDefinitions, HasMetafields, LegacyI
),
)
is_active = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="isActive")
+ local_pickup_settings_v2 = sgqlc.types.Field(DeliveryLocalPickupSettings, graphql_name="localPickupSettingsV2")
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
ships_inventory = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="shipsInventory")
suggested_addresses = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(LocationSuggestedAddress))),
- graphql_name="suggestedAddresses",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(LocationSuggestedAddress))), graphql_name="suggestedAddresses"
)
@@ -22334,6 +25900,7 @@ class MailingAddress(sgqlc.types.Type, Node):
"phone",
"province",
"province_code",
+ "time_zone",
"zip",
)
address1 = sgqlc.types.Field(String, graphql_name="address1")
@@ -22362,6 +25929,7 @@ class MailingAddress(sgqlc.types.Type, Node):
phone = sgqlc.types.Field(String, graphql_name="phone")
province = sgqlc.types.Field(String, graphql_name="province")
province_code = sgqlc.types.Field(String, graphql_name="provinceCode")
+ time_zone = sgqlc.types.Field(String, graphql_name="timeZone")
zip = sgqlc.types.Field(String, graphql_name="zip")
@@ -22372,11 +25940,25 @@ class ManualDiscountApplication(sgqlc.types.Type, DiscountApplication):
title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
-class Market(sgqlc.types.Type, Node):
+class Market(sgqlc.types.Type, HasMetafieldDefinitions, HasMetafields, Node):
__schema__ = shopify_schema
- __field_names__ = ("currency_settings", "enabled", "name", "price_list", "primary", "regions", "web_presence")
+ __field_names__ = ("catalogs", "currency_settings", "enabled", "handle", "name", "price_list", "primary", "regions", "web_presence")
+ catalogs = sgqlc.types.Field(
+ sgqlc.types.non_null(MarketCatalogConnection),
+ graphql_name="catalogs",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
currency_settings = sgqlc.types.Field(sgqlc.types.non_null(MarketCurrencySettings), graphql_name="currencySettings")
enabled = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="enabled")
+ handle = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="handle")
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
price_list = sgqlc.types.Field("PriceList", graphql_name="priceList")
primary = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="primary")
@@ -22396,6 +25978,24 @@ class Market(sgqlc.types.Type, Node):
web_presence = sgqlc.types.Field("MarketWebPresence", graphql_name="webPresence")
+class MarketCatalog(sgqlc.types.Type, Catalog, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("markets",)
+ markets = sgqlc.types.Field(
+ sgqlc.types.non_null(MarketConnection),
+ graphql_name="markets",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+
+
class MarketCurrencySettingsUserError(sgqlc.types.Type, DisplayableError):
__schema__ = shopify_schema
__field_names__ = ("code",)
@@ -22404,8 +26004,9 @@ class MarketCurrencySettingsUserError(sgqlc.types.Type, DisplayableError):
class MarketRegionCountry(sgqlc.types.Type, MarketRegion, Node):
__schema__ = shopify_schema
- __field_names__ = ("code",)
+ __field_names__ = ("code", "currency")
code = sgqlc.types.Field(sgqlc.types.non_null(CountryCode), graphql_name="code")
+ currency = sgqlc.types.Field(sgqlc.types.non_null(CurrencySetting), graphql_name="currency")
class MarketUserError(sgqlc.types.Type, DisplayableError):
@@ -22424,8 +26025,7 @@ class MarketWebPresence(sgqlc.types.Type, Node):
domain = sgqlc.types.Field(Domain, graphql_name="domain")
market = sgqlc.types.Field(sgqlc.types.non_null(Market), graphql_name="market")
root_urls = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MarketWebPresenceRootUrl))),
- graphql_name="rootUrls",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MarketWebPresenceRootUrl))), graphql_name="rootUrls"
)
subfolder_suffix = sgqlc.types.Field(String, graphql_name="subfolderSuffix")
@@ -22516,7 +26116,7 @@ class MarketingEvent(sgqlc.types.Type, LegacyInteroperability, Node):
utm_source = sgqlc.types.Field(String, graphql_name="utmSource")
-class MediaImage(sgqlc.types.Type, File, Media, Node):
+class MediaImage(sgqlc.types.Type, File, HasMetafields, Media, Node):
__schema__ = shopify_schema
__field_names__ = ("image", "mime_type", "original_source")
image = sgqlc.types.Field(Image, graphql_name="image")
@@ -22574,6 +26174,7 @@ class Metafield(sgqlc.types.Type, LegacyInteroperability, Node):
class MetafieldDefinition(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = (
+ "access",
"description",
"key",
"metafields",
@@ -22584,10 +26185,12 @@ class MetafieldDefinition(sgqlc.types.Type, Node):
"pinned_position",
"standard_template",
"type",
+ "use_as_collection_condition",
"validation_status",
"validations",
"visible_to_storefront_api",
)
+ access = sgqlc.types.Field(sgqlc.types.non_null(MetafieldAccess), graphql_name="access")
description = sgqlc.types.Field(String, graphql_name="description")
key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
metafields = sgqlc.types.Field(
@@ -22595,10 +26198,7 @@ class MetafieldDefinition(sgqlc.types.Type, Node):
graphql_name="metafields",
args=sgqlc.types.ArgDict(
(
- (
- "validation_status",
- sgqlc.types.Arg(MetafieldValidationStatus, graphql_name="validationStatus", default="ANY"),
- ),
+ ("validation_status", sgqlc.types.Arg(MetafieldValidationStatus, graphql_name="validationStatus", default="ANY")),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
@@ -22611,12 +26211,7 @@ class MetafieldDefinition(sgqlc.types.Type, Node):
sgqlc.types.non_null(Int),
graphql_name="metafieldsCount",
args=sgqlc.types.ArgDict(
- (
- (
- "validation_status",
- sgqlc.types.Arg(MetafieldValidationStatus, graphql_name="validationStatus", default=None),
- ),
- )
+ (("validation_status", sgqlc.types.Arg(MetafieldValidationStatus, graphql_name="validationStatus", default=None)),)
),
)
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
@@ -22625,10 +26220,10 @@ class MetafieldDefinition(sgqlc.types.Type, Node):
pinned_position = sgqlc.types.Field(Int, graphql_name="pinnedPosition")
standard_template = sgqlc.types.Field("StandardMetafieldDefinitionTemplate", graphql_name="standardTemplate")
type = sgqlc.types.Field(sgqlc.types.non_null(MetafieldDefinitionType), graphql_name="type")
+ use_as_collection_condition = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="useAsCollectionCondition")
validation_status = sgqlc.types.Field(sgqlc.types.non_null(MetafieldDefinitionValidationStatus), graphql_name="validationStatus")
validations = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldDefinitionValidation))),
- graphql_name="validations",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldDefinitionValidation))), graphql_name="validations"
)
visible_to_storefront_api = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="visibleToStorefrontApi")
@@ -22680,6 +26275,94 @@ class MetafieldsSetUserError(sgqlc.types.Type, DisplayableError):
element_index = sgqlc.types.Field(Int, graphql_name="elementIndex")
+class Metaobject(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "capabilities",
+ "created_by",
+ "definition",
+ "display_name",
+ "field",
+ "fields",
+ "handle",
+ "referenced_by",
+ "type",
+ "updated_at",
+ )
+ capabilities = sgqlc.types.Field(sgqlc.types.non_null(MetaobjectCapabilityData), graphql_name="capabilities")
+ created_by = sgqlc.types.Field(sgqlc.types.non_null(App), graphql_name="createdBy")
+ definition = sgqlc.types.Field(sgqlc.types.non_null("MetaobjectDefinition"), graphql_name="definition")
+ display_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="displayName")
+ field = sgqlc.types.Field(
+ MetaobjectField,
+ graphql_name="field",
+ args=sgqlc.types.ArgDict((("key", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="key", default=None)),)),
+ )
+ fields = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetaobjectField))), graphql_name="fields")
+ handle = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="handle")
+ referenced_by = sgqlc.types.Field(
+ sgqlc.types.non_null(MetafieldRelationConnection),
+ graphql_name="referencedBy",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
+
+
+class MetaobjectDefinition(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "access",
+ "capabilities",
+ "description",
+ "display_name_key",
+ "field_definitions",
+ "metaobjects",
+ "metaobjects_count",
+ "name",
+ "type",
+ )
+ access = sgqlc.types.Field(sgqlc.types.non_null(MetaobjectAccess), graphql_name="access")
+ capabilities = sgqlc.types.Field(sgqlc.types.non_null(MetaobjectCapabilities), graphql_name="capabilities")
+ description = sgqlc.types.Field(String, graphql_name="description")
+ display_name_key = sgqlc.types.Field(String, graphql_name="displayNameKey")
+ field_definitions = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetaobjectFieldDefinition))), graphql_name="fieldDefinitions"
+ )
+ metaobjects = sgqlc.types.Field(
+ sgqlc.types.non_null(MetaobjectConnection),
+ graphql_name="metaobjects",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ metaobjects_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="metaobjectsCount")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="type")
+
+
+class MetaobjectUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code", "element_index", "element_key")
+ code = sgqlc.types.Field(MetaobjectUserErrorCode, graphql_name="code")
+ element_index = sgqlc.types.Field(Int, graphql_name="elementIndex")
+ element_key = sgqlc.types.Field(String, graphql_name="elementKey")
+
+
class Model3d(sgqlc.types.Type, Media, Node):
__schema__ = shopify_schema
__field_names__ = ("bounding_box", "filename", "original_source", "sources")
@@ -22716,6 +26399,7 @@ class Order(
):
__schema__ = shopify_schema
__field_names__ = (
+ "additional_fees",
"agreements",
"alerts",
"app",
@@ -22731,6 +26415,7 @@ class Order(
"client_ip",
"closed",
"closed_at",
+ "confirmation_number",
"confirmed",
"created_at",
"currency_code",
@@ -22738,6 +26423,7 @@ class Order(
"current_subtotal_line_items_quantity",
"current_subtotal_price_set",
"current_tax_lines",
+ "current_total_additional_fees_set",
"current_total_discounts_set",
"current_total_duties_set",
"current_total_price_set",
@@ -22758,6 +26444,7 @@ class Order(
"edited",
"email",
"estimated_taxes",
+ "exchange_v2s",
"fulfillable",
"fulfillment_orders",
"fulfillments",
@@ -22770,6 +26457,7 @@ class Order(
"net_payment_set",
"non_fulfillable_line_items",
"note",
+ "original_total_additional_fees_set",
"original_total_duties_set",
"original_total_price_set",
"payment_collection_details",
@@ -22777,6 +26465,7 @@ class Order(
"payment_terms",
"phone",
"physical_location",
+ "po_number",
"presentment_currency_code",
"processed_at",
"publication",
@@ -22787,6 +26476,8 @@ class Order(
"registered_source_url",
"requires_shipping",
"restockable",
+ "return_status",
+ "returns",
"risk_level",
"risks",
"shipping_address",
@@ -22797,6 +26488,7 @@ class Order(
"subtotal_price_set",
"suggested_refund",
"tags",
+ "tax_exempt",
"tax_lines",
"taxes_included",
"test",
@@ -22815,6 +26507,9 @@ class Order(
"unpaid",
"updated_at",
)
+ additional_fees = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AdditionalFee))), graphql_name="additionalFees"
+ )
agreements = sgqlc.types.Field(
sgqlc.types.non_null(SalesAgreementConnection),
graphql_name="agreements",
@@ -22845,6 +26540,7 @@ class Order(
client_ip = sgqlc.types.Field(String, graphql_name="clientIp")
closed = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="closed")
closed_at = sgqlc.types.Field(DateTime, graphql_name="closedAt")
+ confirmation_number = sgqlc.types.Field(String, graphql_name="confirmationNumber")
confirmed = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="confirmed")
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
currency_code = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="currencyCode")
@@ -22854,6 +26550,7 @@ class Order(
current_tax_lines = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(TaxLine))), graphql_name="currentTaxLines"
)
+ current_total_additional_fees_set = sgqlc.types.Field(MoneyBag, graphql_name="currentTotalAdditionalFeesSet")
current_total_discounts_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="currentTotalDiscountsSet")
current_total_duties_set = sgqlc.types.Field(MoneyBag, graphql_name="currentTotalDutiesSet")
current_total_price_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="currentTotalPriceSet")
@@ -22894,6 +26591,20 @@ class Order(
edited = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="edited")
email = sgqlc.types.Field(String, graphql_name="email")
estimated_taxes = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="estimatedTaxes")
+ exchange_v2s = sgqlc.types.Field(
+ sgqlc.types.non_null(ExchangeV2Connection),
+ graphql_name="exchangeV2s",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ )
+ ),
+ )
fulfillable = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="fulfillable")
fulfillment_orders = sgqlc.types.Field(
sgqlc.types.non_null(FulfillmentOrderConnection),
@@ -22950,6 +26661,7 @@ class Order(
),
)
note = sgqlc.types.Field(String, graphql_name="note")
+ original_total_additional_fees_set = sgqlc.types.Field(MoneyBag, graphql_name="originalTotalAdditionalFeesSet")
original_total_duties_set = sgqlc.types.Field(MoneyBag, graphql_name="originalTotalDutiesSet")
original_total_price_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="originalTotalPriceSet")
payment_collection_details = sgqlc.types.Field(
@@ -22961,6 +26673,7 @@ class Order(
payment_terms = sgqlc.types.Field("PaymentTerms", graphql_name="paymentTerms")
phone = sgqlc.types.Field(String, graphql_name="phone")
physical_location = sgqlc.types.Field(Location, graphql_name="physicalLocation")
+ po_number = sgqlc.types.Field(String, graphql_name="poNumber")
presentment_currency_code = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="presentmentCurrencyCode")
processed_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="processedAt")
publication = sgqlc.types.Field("Publication", graphql_name="publication")
@@ -22975,6 +26688,21 @@ class Order(
registered_source_url = sgqlc.types.Field(URL, graphql_name="registeredSourceUrl")
requires_shipping = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="requiresShipping")
restockable = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="restockable")
+ return_status = sgqlc.types.Field(sgqlc.types.non_null(OrderReturnStatus), graphql_name="returnStatus")
+ returns = sgqlc.types.Field(
+ sgqlc.types.non_null(ReturnConnection),
+ graphql_name="returns",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ ("query", sgqlc.types.Arg(String, graphql_name="query", default=None)),
+ )
+ ),
+ )
risk_level = sgqlc.types.Field(sgqlc.types.non_null(OrderRiskLevel), graphql_name="riskLevel")
risks = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(OrderRisk))),
@@ -23009,24 +26737,19 @@ class Order(
(
"refund_line_items",
sgqlc.types.Arg(
- sgqlc.types.list_of(sgqlc.types.non_null(RefundLineItemInput)),
- graphql_name="refundLineItems",
- default=None,
+ sgqlc.types.list_of(sgqlc.types.non_null(RefundLineItemInput)), graphql_name="refundLineItems", default=None
),
),
(
"refund_duties",
- sgqlc.types.Arg(
- sgqlc.types.list_of(sgqlc.types.non_null(RefundDutyInput)),
- graphql_name="refundDuties",
- default=None,
- ),
+ sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(RefundDutyInput)), graphql_name="refundDuties", default=None),
),
("suggest_full_refund", sgqlc.types.Arg(Boolean, graphql_name="suggestFullRefund", default=False)),
)
),
)
tags = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="tags")
+ tax_exempt = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="taxExempt")
tax_lines = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(TaxLine))), graphql_name="taxLines")
taxes_included = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="taxesIncluded")
test = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="test")
@@ -23103,7 +26826,9 @@ class OrderTransaction(sgqlc.types.Type, Node):
"maximum_refundable_v2",
"order",
"parent_transaction",
+ "payment_details",
"payment_icon",
+ "payment_id",
"processed_at",
"receipt_json",
"settlement_currency",
@@ -23128,7 +26853,9 @@ class OrderTransaction(sgqlc.types.Type, Node):
maximum_refundable_v2 = sgqlc.types.Field(MoneyV2, graphql_name="maximumRefundableV2")
order = sgqlc.types.Field(Order, graphql_name="order")
parent_transaction = sgqlc.types.Field("OrderTransaction", graphql_name="parentTransaction")
+ payment_details = sgqlc.types.Field("PaymentDetails", graphql_name="paymentDetails")
payment_icon = sgqlc.types.Field(Image, graphql_name="paymentIcon")
+ payment_id = sgqlc.types.Field(String, graphql_name="paymentId")
processed_at = sgqlc.types.Field(DateTime, graphql_name="processedAt")
receipt_json = sgqlc.types.Field(JSON, graphql_name="receiptJson")
settlement_currency = sgqlc.types.Field(CurrencyCode, graphql_name="settlementCurrency")
@@ -23140,32 +26867,59 @@ class OrderTransaction(sgqlc.types.Type, Node):
user = sgqlc.types.Field("StaffMember", graphql_name="user")
+class PaymentCustomization(sgqlc.types.Type, HasMetafieldDefinitions, HasMetafields, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("enabled", "error_history", "function_id", "shopify_function", "title")
+ enabled = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="enabled")
+ error_history = sgqlc.types.Field(FunctionsErrorHistory, graphql_name="errorHistory")
+ function_id = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="functionId")
+ shopify_function = sgqlc.types.Field(sgqlc.types.non_null(ShopifyFunction), graphql_name="shopifyFunction")
+ title = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="title")
+
+
+class PaymentCustomizationError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(PaymentCustomizationErrorCode, graphql_name="code")
+
+
class PaymentMandate(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = ("payment_instrument",)
payment_instrument = sgqlc.types.Field(sgqlc.types.non_null("PaymentInstrument"), graphql_name="paymentInstrument")
+class PaymentReminderSendUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(PaymentReminderSendUserErrorCode, graphql_name="code")
+
+
class PaymentSchedule(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = ("amount", "completed_at", "due_at", "issued_at")
+ __field_names__ = ("amount", "completed_at", "due_at", "issued_at", "payment_terms")
amount = sgqlc.types.Field(sgqlc.types.non_null(MoneyV2), graphql_name="amount")
completed_at = sgqlc.types.Field(DateTime, graphql_name="completedAt")
due_at = sgqlc.types.Field(DateTime, graphql_name="dueAt")
issued_at = sgqlc.types.Field(DateTime, graphql_name="issuedAt")
+ payment_terms = sgqlc.types.Field(sgqlc.types.non_null("PaymentTerms"), graphql_name="paymentTerms")
class PaymentTerms(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = (
+ "draft_order",
"due_in_days",
+ "order",
"overdue",
"payment_schedules",
"payment_terms_name",
"payment_terms_type",
"translated_name",
)
+ draft_order = sgqlc.types.Field(DraftOrder, graphql_name="draftOrder")
due_in_days = sgqlc.types.Field(Int, graphql_name="dueInDays")
+ order = sgqlc.types.Field(Order, graphql_name="order")
overdue = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="overdue")
payment_schedules = sgqlc.types.Field(
sgqlc.types.non_null(PaymentScheduleConnection),
@@ -23213,11 +26967,19 @@ class PaymentTermsUpdateUserError(sgqlc.types.Type, DisplayableError):
code = sgqlc.types.Field(PaymentTermsUpdateUserErrorCode, graphql_name="code")
+class PolarisVizResponse(sgqlc.types.Type, ShopifyqlResponse):
+ __schema__ = shopify_schema
+ __field_names__ = ("data", "viz_type")
+ data = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(PolarisVizDataSeries))), graphql_name="data")
+ viz_type = sgqlc.types.Field(sgqlc.types.non_null(VisualizationType), graphql_name="vizType")
+
+
class PriceList(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = ("context_rule", "currency", "name", "parent", "prices")
- context_rule = sgqlc.types.Field(PriceListContextRule, graphql_name="contextRule")
+ __field_names__ = ("catalog", "currency", "fixed_prices_count", "name", "parent", "prices", "quantity_rules")
+ catalog = sgqlc.types.Field(Catalog, graphql_name="catalog")
currency = sgqlc.types.Field(sgqlc.types.non_null(CurrencyCode), graphql_name="currency")
+ fixed_prices_count = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="fixedPricesCount")
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
parent = sgqlc.types.Field(PriceListParent, graphql_name="parent")
prices = sgqlc.types.Field(
@@ -23234,6 +26996,26 @@ class PriceList(sgqlc.types.Type, Node):
)
),
)
+ quantity_rules = sgqlc.types.Field(
+ sgqlc.types.non_null(QuantityRuleConnection),
+ graphql_name="quantityRules",
+ args=sgqlc.types.ArgDict(
+ (
+ ("origin_type", sgqlc.types.Arg(QuantityRuleOriginType, graphql_name="originType", default=None)),
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+
+
+class PriceListFixedPricesByProductBulkUpdateUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(PriceListFixedPricesByProductBulkUpdateUserErrorCode, graphql_name="code")
class PriceListPriceUserError(sgqlc.types.Type, DisplayableError):
@@ -23318,8 +27100,7 @@ class PriceRule(sgqlc.types.Type, CommentEventSubject, HasEvents, LegacyInterope
PriceRulePrerequisiteToEntitlementQuantityRatio, graphql_name="prerequisiteToEntitlementQuantityRatio"
)
shareable_urls = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(PriceRuleShareableUrl))),
- graphql_name="shareableUrls",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(PriceRuleShareableUrl))), graphql_name="shareableUrls"
)
shipping_entitlements = sgqlc.types.Field(sgqlc.types.non_null(PriceRuleShippingLineEntitlements), graphql_name="shippingEntitlements")
starts_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="startsAt")
@@ -23395,6 +27176,7 @@ class Product(
"product_category",
"product_type",
"published_at",
+ "published_in_context",
"requires_selling_plan",
"resource_publication_on_current_publication",
"selling_plan_group_count",
@@ -23430,12 +27212,7 @@ class Product(
sgqlc.types.non_null(ProductContextualPricing),
graphql_name="contextualPricing",
args=sgqlc.types.ArgDict(
- (
- (
- "context",
- sgqlc.types.Arg(sgqlc.types.non_null(ContextualPricingContext), graphql_name="context", default=None),
- ),
- )
+ (("context", sgqlc.types.Arg(sgqlc.types.non_null(ContextualPricingContext), graphql_name="context", default=None)),)
),
)
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
@@ -23497,6 +27274,13 @@ class Product(
product_category = sgqlc.types.Field(ProductCategory, graphql_name="productCategory")
product_type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="productType")
published_at = sgqlc.types.Field(DateTime, graphql_name="publishedAt")
+ published_in_context = sgqlc.types.Field(
+ sgqlc.types.non_null(Boolean),
+ graphql_name="publishedInContext",
+ args=sgqlc.types.ArgDict(
+ (("context", sgqlc.types.Arg(sgqlc.types.non_null(ContextualPublicationContext), graphql_name="context", default=None)),)
+ ),
+ )
requires_selling_plan = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="requiresSellingPlan")
resource_publication_on_current_publication = sgqlc.types.Field(
ResourcePublicationV2, graphql_name="resourcePublicationOnCurrentPublication"
@@ -23547,6 +27331,44 @@ class ProductChangeStatusUserError(sgqlc.types.Type, DisplayableError):
code = sgqlc.types.Field(ProductChangeStatusUserErrorCode, graphql_name="code")
+class ProductDeleteUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(ProductDeleteUserErrorCode, graphql_name="code")
+
+
+class ProductDuplicateUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(ProductDuplicateUserErrorCode, graphql_name="code")
+
+
+class ProductFeed(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("country", "language", "status")
+ country = sgqlc.types.Field(CountryCode, graphql_name="country")
+ language = sgqlc.types.Field(LanguageCode, graphql_name="language")
+ status = sgqlc.types.Field(sgqlc.types.non_null(ProductFeedStatus), graphql_name="status")
+
+
+class ProductFeedCreateUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(ProductFeedCreateUserErrorCode, graphql_name="code")
+
+
+class ProductFeedDeleteUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(ProductFeedDeleteUserErrorCode, graphql_name="code")
+
+
+class ProductFullSyncUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(ProductFullSyncUserErrorCode, graphql_name="code")
+
+
class ProductOption(sgqlc.types.Type, HasPublishedTranslations, Node):
__schema__ = shopify_schema
__field_names__ = ("name", "position", "values")
@@ -23571,13 +27393,7 @@ class ProductTaxonomyNode(sgqlc.types.Type, Node):
class ProductVariant(
- sgqlc.types.Type,
- HasMetafieldDefinitions,
- HasMetafields,
- HasPublishedTranslations,
- LegacyInteroperability,
- Navigable,
- Node,
+ sgqlc.types.Type, HasMetafieldDefinitions, HasMetafields, HasPublishedTranslations, LegacyInteroperability, Navigable, Node
):
__schema__ = shopify_schema
__field_names__ = (
@@ -23597,6 +27413,8 @@ class ProductVariant(
"position",
"price",
"product",
+ "product_variant_components",
+ "requires_components",
"selected_options",
"sellable_online_quantity",
"selling_plan_group_count",
@@ -23616,12 +27434,7 @@ class ProductVariant(
sgqlc.types.non_null(ProductVariantContextualPricing),
graphql_name="contextualPricing",
args=sgqlc.types.ArgDict(
- (
- (
- "context",
- sgqlc.types.Arg(sgqlc.types.non_null(ContextualPricingContext), graphql_name="context", default=None),
- ),
- )
+ (("context", sgqlc.types.Arg(sgqlc.types.non_null(ContextualPricingContext), graphql_name="context", default=None)),)
),
)
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
@@ -23648,6 +27461,20 @@ class ProductVariant(
position = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="position")
price = sgqlc.types.Field(sgqlc.types.non_null(Money), graphql_name="price")
product = sgqlc.types.Field(sgqlc.types.non_null(Product), graphql_name="product")
+ product_variant_components = sgqlc.types.Field(
+ sgqlc.types.non_null(ProductVariantComponentConnection),
+ graphql_name="productVariantComponents",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ requires_components = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="requiresComponents")
selected_options = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SelectedOption))), graphql_name="selectedOptions"
)
@@ -23675,6 +27502,19 @@ class ProductVariant(
weight_unit = sgqlc.types.Field(sgqlc.types.non_null(WeightUnit), graphql_name="weightUnit")
+class ProductVariantComponent(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("product_variant", "quantity")
+ product_variant = sgqlc.types.Field(sgqlc.types.non_null(ProductVariant), graphql_name="productVariant")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+
+
+class ProductVariantRelationshipBulkUpdateUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(ProductVariantRelationshipBulkUpdateUserErrorCode, graphql_name="code")
+
+
class ProductVariantsBulkCreateUserError(sgqlc.types.Type, DisplayableError):
__schema__ = shopify_schema
__field_names__ = ("code",)
@@ -23714,16 +27554,18 @@ class PubSubWebhookSubscriptionUpdateUserError(sgqlc.types.Type, DisplayableErro
class Publication(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = (
- "app",
+ "auto_publish",
+ "catalog",
"collection_publications_v3",
"collections",
"has_collection",
- "name",
+ "operation",
"product_publications_v3",
"products",
"supports_future_publishing",
)
- app = sgqlc.types.Field(sgqlc.types.non_null(App), graphql_name="app")
+ auto_publish = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="autoPublish")
+ catalog = sgqlc.types.Field(Catalog, graphql_name="catalog")
collection_publications_v3 = sgqlc.types.Field(
sgqlc.types.non_null(ResourcePublicationConnection),
graphql_name="collectionPublicationsV3",
@@ -23750,15 +27592,231 @@ class Publication(sgqlc.types.Type, Node):
)
),
)
- has_collection = sgqlc.types.Field(
- sgqlc.types.non_null(Boolean),
- graphql_name="hasCollection",
- args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ has_collection = sgqlc.types.Field(
+ sgqlc.types.non_null(Boolean),
+ graphql_name="hasCollection",
+ args=sgqlc.types.ArgDict((("id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="id", default=None)),)),
+ )
+ operation = sgqlc.types.Field("PublicationOperation", graphql_name="operation")
+ product_publications_v3 = sgqlc.types.Field(
+ sgqlc.types.non_null(ResourcePublicationConnection),
+ graphql_name="productPublicationsV3",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ products = sgqlc.types.Field(
+ sgqlc.types.non_null(ProductConnection),
+ graphql_name="products",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ supports_future_publishing = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="supportsFuturePublishing")
+
+
+class PublicationResourceOperation(sgqlc.types.Type, Node, ResourceOperation):
+ __schema__ = shopify_schema
+ __field_names__ = ()
+
+
+class PublicationUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(PublicationUserErrorCode, graphql_name="code")
+
+
+class QuantityRuleUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(QuantityRuleUserErrorCode, graphql_name="code")
+
+
+class Refund(sgqlc.types.Type, LegacyInteroperability, Node):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "created_at",
+ "duties",
+ "note",
+ "order",
+ "refund_line_items",
+ "return_",
+ "staff_member",
+ "total_refunded_set",
+ "transactions",
+ "updated_at",
+ )
+ created_at = sgqlc.types.Field(DateTime, graphql_name="createdAt")
+ duties = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(RefundDuty)), graphql_name="duties")
+ note = sgqlc.types.Field(String, graphql_name="note")
+ order = sgqlc.types.Field(sgqlc.types.non_null(Order), graphql_name="order")
+ refund_line_items = sgqlc.types.Field(
+ sgqlc.types.non_null(RefundLineItemConnection),
+ graphql_name="refundLineItems",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ return_ = sgqlc.types.Field("Return", graphql_name="return")
+ staff_member = sgqlc.types.Field("StaffMember", graphql_name="staffMember")
+ total_refunded_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalRefundedSet")
+ transactions = sgqlc.types.Field(
+ sgqlc.types.non_null(OrderTransactionConnection),
+ graphql_name="transactions",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
+
+
+class RefundAgreement(sgqlc.types.Type, SalesAgreement):
+ __schema__ = shopify_schema
+ __field_names__ = ("refund",)
+ refund = sgqlc.types.Field(sgqlc.types.non_null(Refund), graphql_name="refund")
+
+
+class Return(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "decline",
+ "name",
+ "order",
+ "refunds",
+ "return_line_items",
+ "reverse_fulfillment_orders",
+ "status",
+ "suggested_refund",
+ "total_quantity",
+ )
+ decline = sgqlc.types.Field(ReturnDecline, graphql_name="decline")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ order = sgqlc.types.Field(sgqlc.types.non_null(Order), graphql_name="order")
+ refunds = sgqlc.types.Field(
+ sgqlc.types.non_null(RefundConnection),
+ graphql_name="refunds",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ return_line_items = sgqlc.types.Field(
+ sgqlc.types.non_null(ReturnLineItemConnection),
+ graphql_name="returnLineItems",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ reverse_fulfillment_orders = sgqlc.types.Field(
+ sgqlc.types.non_null(ReverseFulfillmentOrderConnection),
+ graphql_name="reverseFulfillmentOrders",
+ args=sgqlc.types.ArgDict(
+ (
+ ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
+ ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
+ ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
+ ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
+ ("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
+ )
+ ),
+ )
+ status = sgqlc.types.Field(sgqlc.types.non_null(ReturnStatus), graphql_name="status")
+ suggested_refund = sgqlc.types.Field(
+ SuggestedReturnRefund,
+ graphql_name="suggestedRefund",
+ args=sgqlc.types.ArgDict(
+ (
+ (
+ "return_refund_line_items",
+ sgqlc.types.Arg(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ReturnRefundLineItemInput))),
+ graphql_name="returnRefundLineItems",
+ default=None,
+ ),
+ ),
+ ("refund_shipping", sgqlc.types.Arg(RefundShippingInput, graphql_name="refundShipping", default=None)),
+ (
+ "refund_duties",
+ sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(RefundDutyInput)), graphql_name="refundDuties", default=None),
+ ),
+ )
+ ),
)
- name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
- product_publications_v3 = sgqlc.types.Field(
- sgqlc.types.non_null(ResourcePublicationConnection),
- graphql_name="productPublicationsV3",
+ total_quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="totalQuantity")
+
+
+class ReturnLineItem(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "customer_note",
+ "fulfillment_line_item",
+ "quantity",
+ "refundable_quantity",
+ "refunded_quantity",
+ "return_reason",
+ "return_reason_note",
+ "total_weight",
+ "with_code_discounted_total_price_set",
+ )
+ customer_note = sgqlc.types.Field(String, graphql_name="customerNote")
+ fulfillment_line_item = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentLineItem), graphql_name="fulfillmentLineItem")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ refundable_quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="refundableQuantity")
+ refunded_quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="refundedQuantity")
+ return_reason = sgqlc.types.Field(sgqlc.types.non_null(ReturnReason), graphql_name="returnReason")
+ return_reason_note = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="returnReasonNote")
+ total_weight = sgqlc.types.Field(Weight, graphql_name="totalWeight")
+ with_code_discounted_total_price_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="withCodeDiscountedTotalPriceSet")
+
+
+class ReturnUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(ReturnErrorCode, graphql_name="code")
+
+
+class ReturnableFulfillment(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("fulfillment", "returnable_fulfillment_line_items")
+ fulfillment = sgqlc.types.Field(sgqlc.types.non_null(Fulfillment), graphql_name="fulfillment")
+ returnable_fulfillment_line_items = sgqlc.types.Field(
+ sgqlc.types.non_null(ReturnableFulfillmentLineItemConnection),
+ graphql_name="returnableFulfillmentLineItems",
args=sgqlc.types.ArgDict(
(
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
@@ -23769,9 +27827,15 @@ class Publication(sgqlc.types.Type, Node):
)
),
)
- products = sgqlc.types.Field(
- sgqlc.types.non_null(ProductConnection),
- graphql_name="products",
+
+
+class ReverseDelivery(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("deliverable", "reverse_delivery_line_items", "reverse_fulfillment_order")
+ deliverable = sgqlc.types.Field("ReverseDeliveryDeliverable", graphql_name="deliverable")
+ reverse_delivery_line_items = sgqlc.types.Field(
+ sgqlc.types.non_null(ReverseDeliveryLineItemConnection),
+ graphql_name="reverseDeliveryLineItems",
args=sgqlc.types.ArgDict(
(
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
@@ -23782,29 +27846,27 @@ class Publication(sgqlc.types.Type, Node):
)
),
)
- supports_future_publishing = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="supportsFuturePublishing")
+ reverse_fulfillment_order = sgqlc.types.Field(sgqlc.types.non_null("ReverseFulfillmentOrder"), graphql_name="reverseFulfillmentOrder")
-class Refund(sgqlc.types.Type, LegacyInteroperability, Node):
+class ReverseDeliveryLineItem(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = (
- "created_at",
- "duties",
- "note",
- "order",
- "refund_line_items",
- "staff_member",
- "total_refunded_set",
- "transactions",
- "updated_at",
+ __field_names__ = ("dispositions", "quantity", "reverse_fulfillment_order_line_item")
+ dispositions = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ReverseFulfillmentOrderDisposition"))), graphql_name="dispositions"
)
- created_at = sgqlc.types.Field(DateTime, graphql_name="createdAt")
- duties = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(RefundDuty)), graphql_name="duties")
- note = sgqlc.types.Field(String, graphql_name="note")
- order = sgqlc.types.Field(sgqlc.types.non_null(Order), graphql_name="order")
- refund_line_items = sgqlc.types.Field(
- sgqlc.types.non_null(RefundLineItemConnection),
- graphql_name="refundLineItems",
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ reverse_fulfillment_order_line_item = sgqlc.types.Field(
+ sgqlc.types.non_null("ReverseFulfillmentOrderLineItem"), graphql_name="reverseFulfillmentOrderLineItem"
+ )
+
+
+class ReverseFulfillmentOrder(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("line_items", "order", "reverse_deliveries", "status", "third_party_confirmation")
+ line_items = sgqlc.types.Field(
+ sgqlc.types.non_null(ReverseFulfillmentOrderLineItemConnection),
+ graphql_name="lineItems",
args=sgqlc.types.ArgDict(
(
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
@@ -23815,11 +27877,10 @@ class Refund(sgqlc.types.Type, LegacyInteroperability, Node):
)
),
)
- staff_member = sgqlc.types.Field("StaffMember", graphql_name="staffMember")
- total_refunded_set = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="totalRefundedSet")
- transactions = sgqlc.types.Field(
- sgqlc.types.non_null(OrderTransactionConnection),
- graphql_name="transactions",
+ order = sgqlc.types.Field(sgqlc.types.non_null(Order), graphql_name="order")
+ reverse_deliveries = sgqlc.types.Field(
+ sgqlc.types.non_null(ReverseDeliveryConnection),
+ graphql_name="reverseDeliveries",
args=sgqlc.types.ArgDict(
(
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
@@ -23830,13 +27891,34 @@ class Refund(sgqlc.types.Type, LegacyInteroperability, Node):
)
),
)
- updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
+ status = sgqlc.types.Field(sgqlc.types.non_null(ReverseFulfillmentOrderStatus), graphql_name="status")
+ third_party_confirmation = sgqlc.types.Field(ReverseFulfillmentOrderThirdPartyConfirmation, graphql_name="thirdPartyConfirmation")
-class RefundAgreement(sgqlc.types.Type, SalesAgreement):
+class ReverseFulfillmentOrderDisposition(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = ("refund",)
- refund = sgqlc.types.Field(sgqlc.types.non_null(Refund), graphql_name="refund")
+ __field_names__ = ("location", "quantity", "type")
+ location = sgqlc.types.Field(Location, graphql_name="location")
+ quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="quantity")
+ type = sgqlc.types.Field(sgqlc.types.non_null(ReverseFulfillmentOrderDispositionType), graphql_name="type")
+
+
+class ReverseFulfillmentOrderLineItem(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("dispositions", "fulfillment_line_item", "total_quantity")
+ dispositions = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ReverseFulfillmentOrderDisposition))), graphql_name="dispositions"
+ )
+ fulfillment_line_item = sgqlc.types.Field(sgqlc.types.non_null(FulfillmentLineItem), graphql_name="fulfillmentLineItem")
+ total_quantity = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name="totalQuantity")
+
+
+class SaleAdditionalFee(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("name", "price", "tax_lines")
+ name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
+ price = sgqlc.types.Field(sgqlc.types.non_null(MoneyBag), graphql_name="price")
+ tax_lines = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(TaxLine))), graphql_name="taxLines")
class SavedSearch(sgqlc.types.Type, LegacyInteroperability, Node):
@@ -23876,19 +27958,7 @@ class Segment(sgqlc.types.Type, Node):
class SegmentAssociationFilter(sgqlc.types.Type, SegmentFilter):
__schema__ = shopify_schema
- __field_names__ = ("values",)
- values = sgqlc.types.Field(
- sgqlc.types.non_null(SegmentAssociationFilterValueConnection),
- graphql_name="values",
- args=sgqlc.types.ArgDict(
- (
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- )
- ),
- )
+ __field_names__ = ()
class SegmentBooleanFilter(sgqlc.types.Type, SegmentFilter):
@@ -23903,41 +27973,16 @@ class SegmentDateFilter(sgqlc.types.Type, SegmentFilter):
class SegmentEnumFilter(sgqlc.types.Type, SegmentFilter):
__schema__ = shopify_schema
- __field_names__ = ("values",)
- values = sgqlc.types.Field(
- sgqlc.types.non_null(SegmentEnumFilterValueConnection),
- graphql_name="values",
- args=sgqlc.types.ArgDict(
- (
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- )
- ),
- )
+ __field_names__ = ()
class SegmentEventFilter(sgqlc.types.Type, SegmentFilter):
__schema__ = shopify_schema
- __field_names__ = ("parameters", "return_value_type", "values")
+ __field_names__ = ("parameters", "return_value_type")
parameters = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SegmentEventFilterParameter))),
- graphql_name="parameters",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(SegmentEventFilterParameter))), graphql_name="parameters"
)
return_value_type = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="returnValueType")
- values = sgqlc.types.Field(
- sgqlc.types.non_null(SegmentEventFilterValueConnection),
- graphql_name="values",
- args=sgqlc.types.ArgDict(
- (
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- )
- ),
- )
class SegmentFloatFilter(sgqlc.types.Type, SegmentFilter):
@@ -23952,22 +27997,10 @@ class SegmentIntegerFilter(sgqlc.types.Type, SegmentFilter):
class SegmentStringFilter(sgqlc.types.Type, SegmentFilter):
__schema__ = shopify_schema
- __field_names__ = ("values",)
- values = sgqlc.types.Field(
- sgqlc.types.non_null(SegmentStringFilterValueConnection),
- graphql_name="values",
- args=sgqlc.types.ArgDict(
- (
- ("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
- ("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
- ("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
- ("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
- )
- ),
- )
+ __field_names__ = ()
-class SellingPlan(sgqlc.types.Type, Node):
+class SellingPlan(sgqlc.types.Type, HasPublishedTranslations, Node):
__schema__ = shopify_schema
__field_names__ = (
"billing_policy",
@@ -23991,8 +28024,7 @@ class SellingPlan(sgqlc.types.Type, Node):
options = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="options")
position = sgqlc.types.Field(Int, graphql_name="position")
pricing_policies = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanPricingPolicy"))),
- graphql_name="pricingPolicies",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("SellingPlanPricingPolicy"))), graphql_name="pricingPolicies"
)
@@ -24002,7 +28034,7 @@ class SellingPlanFixedPricingPolicy(sgqlc.types.Type, SellingPlanPricingPolicyBa
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
-class SellingPlanGroup(sgqlc.types.Type, Node):
+class SellingPlanGroup(sgqlc.types.Type, HasPublishedTranslations, Node):
__schema__ = shopify_schema
__field_names__ = (
"app_id",
@@ -24032,12 +28064,7 @@ class SellingPlanGroup(sgqlc.types.Type, Node):
sgqlc.types.non_null(Boolean),
graphql_name="appliesToProductVariant",
args=sgqlc.types.ArgDict(
- (
- (
- "product_variant_id",
- sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="productVariantId", default=None),
- ),
- )
+ (("product_variant_id", sgqlc.types.Arg(sgqlc.types.non_null(ID), graphql_name="productVariantId", default=None)),)
),
)
applies_to_product_variants = sgqlc.types.Field(
@@ -24113,6 +28140,13 @@ class SellingPlanRecurringPricingPolicy(sgqlc.types.Type, SellingPlanPricingPoli
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
+class ServerPixel(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = ("status", "webhook_endpoint_address")
+ status = sgqlc.types.Field(ServerPixelStatus, graphql_name="status")
+ webhook_endpoint_address = sgqlc.types.Field(String, graphql_name="webhookEndpointAddress")
+
+
class ShippingLineSale(sgqlc.types.Type, Sale):
__schema__ = shopify_schema
__field_names__ = ("shipping_line",)
@@ -24181,22 +28215,15 @@ class Shop(sgqlc.types.Type, HasMetafields, HasPublishedTranslations, Node):
)
alerts = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ShopAlert))), graphql_name="alerts")
all_product_categories = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ProductCategory))),
- graphql_name="allProductCategories",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ProductCategory))), graphql_name="allProductCategories"
)
assigned_fulfillment_orders = sgqlc.types.Field(
sgqlc.types.non_null(FulfillmentOrderConnection),
graphql_name="assignedFulfillmentOrders",
args=sgqlc.types.ArgDict(
(
- (
- "assignment_status",
- sgqlc.types.Arg(FulfillmentOrderAssignmentStatus, graphql_name="assignmentStatus", default=None),
- ),
- (
- "location_ids",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="locationIds", default=None),
- ),
+ ("assignment_status", sgqlc.types.Arg(FulfillmentOrderAssignmentStatus, graphql_name="assignmentStatus", default=None)),
+ ("location_ids", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ID)), graphql_name="locationIds", default=None)),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
@@ -24219,7 +28246,7 @@ class Shop(sgqlc.types.Type, HasMetafields, HasPublishedTranslations, Node):
)
),
)
- billing_address = sgqlc.types.Field(sgqlc.types.non_null(MailingAddress), graphql_name="billingAddress")
+ billing_address = sgqlc.types.Field(sgqlc.types.non_null("ShopAddress"), graphql_name="billingAddress")
channel_definitions_for_installed_channels = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(AvailableChannelDefinitionsByChannel))),
graphql_name="channelDefinitionsForInstalledChannels",
@@ -24256,13 +28283,11 @@ class Shop(sgqlc.types.Type, HasMetafields, HasPublishedTranslations, Node):
)
email = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="email")
enabled_presentment_currencies = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CurrencyCode))),
- graphql_name="enabledPresentmentCurrencies",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(CurrencyCode))), graphql_name="enabledPresentmentCurrencies"
)
features = sgqlc.types.Field(sgqlc.types.non_null(ShopFeatures), graphql_name="features")
fulfillment_services = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentService))),
- graphql_name="fulfillmentServices",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(FulfillmentService))), graphql_name="fulfillmentServices"
)
iana_timezone = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="ianaTimezone")
limited_pending_order_count = sgqlc.types.Field(sgqlc.types.non_null(LimitedPendingOrderCount), graphql_name="limitedPendingOrderCount")
@@ -24270,8 +28295,7 @@ class Shop(sgqlc.types.Type, HasMetafields, HasPublishedTranslations, Node):
myshopify_domain = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="myshopifyDomain")
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
navigation_settings = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(NavigationItem))),
- graphql_name="navigationSettings",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(NavigationItem))), graphql_name="navigationSettings"
)
order_number_format_prefix = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="orderNumberFormatPrefix")
order_number_format_suffix = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="orderNumberFormatSuffix")
@@ -24326,10 +28350,7 @@ class Shop(sgqlc.types.Type, HasMetafields, HasPublishedTranslations, Node):
args=sgqlc.types.ArgDict(
(
("query", sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name="query", default=None)),
- (
- "types",
- sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(SearchResultType)), graphql_name="types", default=None),
- ),
+ ("types", sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(SearchResultType)), graphql_name="types", default=None)),
("first", sgqlc.types.Arg(sgqlc.types.non_null(Int), graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
)
@@ -24384,9 +28405,7 @@ class Shop(sgqlc.types.Type, HasMetafields, HasPublishedTranslations, Node):
(
"image_ids",
sgqlc.types.Arg(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))),
- graphql_name="imageIds",
- default=None,
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ID))), graphql_name="imageIds", default=None
),
),
)
@@ -24396,6 +28415,46 @@ class Shop(sgqlc.types.Type, HasMetafields, HasPublishedTranslations, Node):
weight_unit = sgqlc.types.Field(sgqlc.types.non_null(WeightUnit), graphql_name="weightUnit")
+class ShopAddress(sgqlc.types.Type, Node):
+ __schema__ = shopify_schema
+ __field_names__ = (
+ "address1",
+ "address2",
+ "city",
+ "company",
+ "coordinates_validated",
+ "country",
+ "country_code_v2",
+ "formatted",
+ "formatted_area",
+ "latitude",
+ "longitude",
+ "phone",
+ "province",
+ "province_code",
+ "zip",
+ )
+ address1 = sgqlc.types.Field(String, graphql_name="address1")
+ address2 = sgqlc.types.Field(String, graphql_name="address2")
+ city = sgqlc.types.Field(String, graphql_name="city")
+ company = sgqlc.types.Field(String, graphql_name="company")
+ coordinates_validated = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="coordinatesValidated")
+ country = sgqlc.types.Field(String, graphql_name="country")
+ country_code_v2 = sgqlc.types.Field(CountryCode, graphql_name="countryCodeV2")
+ formatted = sgqlc.types.Field(
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))),
+ graphql_name="formatted",
+ args=sgqlc.types.ArgDict((("with_company", sgqlc.types.Arg(Boolean, graphql_name="withCompany", default=True)),)),
+ )
+ formatted_area = sgqlc.types.Field(String, graphql_name="formattedArea")
+ latitude = sgqlc.types.Field(Float, graphql_name="latitude")
+ longitude = sgqlc.types.Field(Float, graphql_name="longitude")
+ phone = sgqlc.types.Field(String, graphql_name="phone")
+ province = sgqlc.types.Field(String, graphql_name="province")
+ province_code = sgqlc.types.Field(String, graphql_name="provinceCode")
+ zip = sgqlc.types.Field(String, graphql_name="zip")
+
+
class ShopPolicy(sgqlc.types.Type, HasPublishedTranslations, Node):
__schema__ = shopify_schema
__field_names__ = ("body", "type", "url")
@@ -24410,6 +28469,12 @@ class ShopPolicyUserError(sgqlc.types.Type, DisplayableError):
code = sgqlc.types.Field(ShopPolicyErrorCode, graphql_name="code")
+class ShopResourceFeedbackCreateUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(ShopResourceFeedbackCreateUserErrorCode, graphql_name="code")
+
+
class ShopifyPaymentsAccount(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = (
@@ -24473,10 +28538,7 @@ class ShopifyPaymentsAccount(sgqlc.types.Type, Node):
graphql_name="payouts",
args=sgqlc.types.ArgDict(
(
- (
- "transaction_type",
- sgqlc.types.Arg(ShopifyPaymentsPayoutTransactionType, graphql_name="transactionType", default=None),
- ),
+ ("transaction_type", sgqlc.types.Arg(ShopifyPaymentsPayoutTransactionType, graphql_name="transactionType", default=None)),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
@@ -24490,8 +28552,7 @@ class ShopifyPaymentsAccount(sgqlc.types.Type, Node):
graphql_name="permittedVerificationDocuments",
)
verifications = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsVerification"))),
- graphql_name="verifications",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsVerification"))), graphql_name="verifications"
)
@@ -24519,10 +28580,7 @@ class ShopifyPaymentsBankAccount(sgqlc.types.Type, Node):
graphql_name="payouts",
args=sgqlc.types.ArgDict(
(
- (
- "transaction_type",
- sgqlc.types.Arg(ShopifyPaymentsPayoutTransactionType, graphql_name="transactionType", default=None),
- ),
+ ("transaction_type", sgqlc.types.Arg(ShopifyPaymentsPayoutTransactionType, graphql_name="transactionType", default=None)),
("first", sgqlc.types.Arg(Int, graphql_name="first", default=None)),
("after", sgqlc.types.Arg(String, graphql_name="after", default=None)),
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
@@ -24607,8 +28665,7 @@ class ShopifyPaymentsDisputeEvidence(sgqlc.types.Type, Node):
graphql_name="disputeFileUploads",
)
fulfillments = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsDisputeFulfillment"))),
- graphql_name="fulfillments",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null("ShopifyPaymentsDisputeFulfillment"))), graphql_name="fulfillments"
)
product_description = sgqlc.types.Field(String, graphql_name="productDescription")
refund_policy_disclosure = sgqlc.types.Field(String, graphql_name="refundPolicyDisclosure")
@@ -24707,16 +28764,7 @@ class StandardMetafieldDefinitionEnableUserError(sgqlc.types.Type, DisplayableEr
class StandardMetafieldDefinitionTemplate(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = (
- "description",
- "key",
- "name",
- "namespace",
- "owner_types",
- "type",
- "validations",
- "visible_to_storefront_api",
- )
+ __field_names__ = ("description", "key", "name", "namespace", "owner_types", "type", "validations", "visible_to_storefront_api")
description = sgqlc.types.Field(String, graphql_name="description")
key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="key")
name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name="name")
@@ -24726,8 +28774,7 @@ class StandardMetafieldDefinitionTemplate(sgqlc.types.Type, Node):
)
type = sgqlc.types.Field(sgqlc.types.non_null(MetafieldDefinitionType), graphql_name="type")
validations = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldDefinitionValidation))),
- graphql_name="validations",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetafieldDefinitionValidation))), graphql_name="validations"
)
visible_to_storefront_api = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="visibleToStorefrontApi")
@@ -24783,10 +28830,7 @@ class SubscriptionBillingCycleEditedContract(sgqlc.types.Type, SubscriptionContr
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- (
- "sort_key",
- sgqlc.types.Arg(SubscriptionBillingCyclesSortKeys, graphql_name="sortKey", default="CYCLE_INDEX"),
- ),
+ ("sort_key", sgqlc.types.Arg(SubscriptionBillingCyclesSortKeys, graphql_name="sortKey", default="CYCLE_INDEX")),
)
),
)
@@ -24809,6 +28853,7 @@ class SubscriptionContract(sgqlc.types.Type, Node, SubscriptionContractBase):
"last_payment_status",
"next_billing_date",
"origin_order",
+ "revision_id",
"status",
)
billing_attempts = sgqlc.types.Field(
@@ -24830,6 +28875,7 @@ class SubscriptionContract(sgqlc.types.Type, Node, SubscriptionContractBase):
last_payment_status = sgqlc.types.Field(SubscriptionContractLastPaymentStatus, graphql_name="lastPaymentStatus")
next_billing_date = sgqlc.types.Field(DateTime, graphql_name="nextBillingDate")
origin_order = sgqlc.types.Field(Order, graphql_name="originOrder")
+ revision_id = sgqlc.types.Field(sgqlc.types.non_null(UnsignedInt64), graphql_name="revisionId")
status = sgqlc.types.Field(sgqlc.types.non_null(SubscriptionContractSubscriptionStatus), graphql_name="status")
@@ -24877,10 +28923,7 @@ class SubscriptionDraft(sgqlc.types.Type, Node):
("last", sgqlc.types.Arg(Int, graphql_name="last", default=None)),
("before", sgqlc.types.Arg(String, graphql_name="before", default=None)),
("reverse", sgqlc.types.Arg(Boolean, graphql_name="reverse", default=False)),
- (
- "sort_key",
- sgqlc.types.Arg(SubscriptionBillingCyclesSortKeys, graphql_name="sortKey", default="CYCLE_INDEX"),
- ),
+ ("sort_key", sgqlc.types.Arg(SubscriptionBillingCyclesSortKeys, graphql_name="sortKey", default="CYCLE_INDEX")),
)
),
)
@@ -25007,17 +29050,20 @@ class SubscriptionDraftUserError(sgqlc.types.Type, DisplayableError):
code = sgqlc.types.Field(SubscriptionDraftErrorCode, graphql_name="code")
+class TableResponse(sgqlc.types.Type, ShopifyqlResponse):
+ __schema__ = shopify_schema
+ __field_names__ = ()
+
+
+class TaxAppConfigureUserError(sgqlc.types.Type, DisplayableError):
+ __schema__ = shopify_schema
+ __field_names__ = ("code",)
+ code = sgqlc.types.Field(TaxAppConfigureUserErrorCode, graphql_name="code")
+
+
class TenderTransaction(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = (
- "amount",
- "payment_method",
- "processed_at",
- "remote_reference",
- "test",
- "transaction_details",
- "user",
- )
+ __field_names__ = ("amount", "payment_method", "processed_at", "remote_reference", "test", "transaction_details", "user")
amount = sgqlc.types.Field(sgqlc.types.non_null(MoneyV2), graphql_name="amount")
payment_method = sgqlc.types.Field(String, graphql_name="paymentMethod")
processed_at = sgqlc.types.Field(DateTime, graphql_name="processedAt")
@@ -25051,6 +29097,11 @@ class TranslationUserError(sgqlc.types.Type, DisplayableError):
code = sgqlc.types.Field(TranslationErrorCode, graphql_name="code")
+class UnknownSale(sgqlc.types.Type, Sale):
+ __schema__ = shopify_schema
+ __field_names__ = ()
+
+
class UrlRedirect(sgqlc.types.Type, Node):
__schema__ = shopify_schema
__field_names__ = ("path", "target")
@@ -25078,23 +29129,14 @@ class UrlRedirectBulkDeleteBySearchUserError(sgqlc.types.Type, DisplayableError)
class UrlRedirectImport(sgqlc.types.Type, Node):
__schema__ = shopify_schema
- __field_names__ = (
- "count",
- "created_count",
- "failed_count",
- "finished",
- "finished_at",
- "preview_redirects",
- "updated_count",
- )
+ __field_names__ = ("count", "created_count", "failed_count", "finished", "finished_at", "preview_redirects", "updated_count")
count = sgqlc.types.Field(Int, graphql_name="count")
created_count = sgqlc.types.Field(Int, graphql_name="createdCount")
failed_count = sgqlc.types.Field(Int, graphql_name="failedCount")
finished = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name="finished")
finished_at = sgqlc.types.Field(DateTime, graphql_name="finishedAt")
preview_redirects = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(UrlRedirectImportPreview))),
- graphql_name="previewRedirects",
+ sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(UrlRedirectImportPreview))), graphql_name="previewRedirects"
)
updated_count = sgqlc.types.Field(Int, graphql_name="updatedCount")
@@ -25133,16 +29175,8 @@ class WebPixel(sgqlc.types.Type, Node):
class WebhookSubscription(sgqlc.types.Type, LegacyInteroperability, Node):
__schema__ = shopify_schema
- __field_names__ = (
- "created_at",
- "endpoint",
- "format",
- "include_fields",
- "metafield_namespaces",
- "private_metafield_namespaces",
- "topic",
- "updated_at",
- )
+ __field_names__ = ("api_version", "created_at", "endpoint", "format", "include_fields", "metafield_namespaces", "topic", "updated_at")
+ api_version = sgqlc.types.Field(sgqlc.types.non_null(ApiVersion), graphql_name="apiVersion")
created_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="createdAt")
endpoint = sgqlc.types.Field(sgqlc.types.non_null("WebhookSubscriptionEndpoint"), graphql_name="endpoint")
format = sgqlc.types.Field(sgqlc.types.non_null(WebhookSubscriptionFormat), graphql_name="format")
@@ -25152,10 +29186,6 @@ class WebhookSubscription(sgqlc.types.Type, LegacyInteroperability, Node):
metafield_namespaces = sgqlc.types.Field(
sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name="metafieldNamespaces"
)
- private_metafield_namespaces = sgqlc.types.Field(
- sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))),
- graphql_name="privateMetafieldNamespaces",
- )
topic = sgqlc.types.Field(sgqlc.types.non_null(WebhookSubscriptionTopic), graphql_name="topic")
updated_at = sgqlc.types.Field(sgqlc.types.non_null(DateTime), graphql_name="updatedAt")
@@ -25175,7 +29205,12 @@ class AppSubscriptionDiscountValue(sgqlc.types.Union):
class CollectionRuleConditionObject(sgqlc.types.Union):
__schema__ = shopify_schema
- __types__ = (CollectionRuleProductCategoryCondition, CollectionRuleTextCondition)
+ __types__ = (CollectionRuleMetafieldCondition, CollectionRuleProductCategoryCondition, CollectionRuleTextCondition)
+
+
+class CollectionRuleConditionsRuleObject(sgqlc.types.Union):
+ __schema__ = shopify_schema
+ __types__ = (CollectionRuleMetafieldCondition,)
class CommentEventEmbed(sgqlc.types.Union):
@@ -25258,7 +29293,33 @@ class DiscountShippingDestinationSelection(sgqlc.types.Union):
class MetafieldReference(sgqlc.types.Union):
__schema__ = shopify_schema
- __types__ = (Collection, GenericFile, MediaImage, OnlineStorePage, Product, ProductVariant, Video)
+ __types__ = (Collection, GenericFile, MediaImage, Metaobject, OnlineStorePage, Product, ProductVariant, Video)
+
+
+class MetafieldReferencer(sgqlc.types.Union):
+ __schema__ = shopify_schema
+ __types__ = (
+ AppInstallation,
+ Collection,
+ Customer,
+ DeliveryCustomization,
+ DiscountAutomaticNode,
+ DiscountCodeNode,
+ DiscountNode,
+ DraftOrder,
+ FulfillmentOrder,
+ Location,
+ Market,
+ Metaobject,
+ OnlineStoreArticle,
+ OnlineStoreBlog,
+ OnlineStorePage,
+ Order,
+ PaymentCustomization,
+ Product,
+ ProductVariant,
+ Shop,
+ )
class OrderStagedChange(sgqlc.types.Union):
@@ -25273,6 +29334,11 @@ class OrderStagedChange(sgqlc.types.Union):
)
+class PaymentDetails(sgqlc.types.Union):
+ __schema__ = shopify_schema
+ __types__ = (CardPaymentDetails,)
+
+
class PaymentInstrument(sgqlc.types.Union):
__schema__ = shopify_schema
__types__ = (VaultCreditCard, VaultPaypalBillingAgreement)
@@ -25288,11 +29354,21 @@ class PricingValue(sgqlc.types.Union):
__types__ = (MoneyV2, PricingPercentageValue)
+class PublicationOperation(sgqlc.types.Union):
+ __schema__ = shopify_schema
+ __types__ = (AddAllProductsOperation, CatalogCsvOperation, PublicationResourceOperation)
+
+
class PurchasingEntity(sgqlc.types.Union):
__schema__ = shopify_schema
__types__ = (Customer, PurchasingCompany)
+class ReverseDeliveryDeliverable(sgqlc.types.Union):
+ __schema__ = shopify_schema
+ __types__ = (ReverseDeliveryShippingDeliverable,)
+
+
class SellingPlanBillingPolicy(sgqlc.types.Union):
__schema__ = shopify_schema
__types__ = (SellingPlanFixedBillingPolicy, SellingPlanRecurringBillingPolicy)
@@ -25320,11 +29396,7 @@ class SellingPlanPricingPolicyAdjustmentValue(sgqlc.types.Union):
class SubscriptionDeliveryMethod(sgqlc.types.Union):
__schema__ = shopify_schema
- __types__ = (
- SubscriptionDeliveryMethodLocalDelivery,
- SubscriptionDeliveryMethodPickup,
- SubscriptionDeliveryMethodShipping,
- )
+ __types__ = (SubscriptionDeliveryMethodLocalDelivery, SubscriptionDeliveryMethodPickup, SubscriptionDeliveryMethodShipping)
class SubscriptionDeliveryOption(sgqlc.types.Union):
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/source.py b/airbyte-integrations/connectors/source-shopify/source_shopify/source.py
index 8225aa5f08c6..7c584865f1c0 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/source.py
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/source.py
@@ -3,932 +3,68 @@
#
-import logging
-from abc import ABC, abstractmethod
-from functools import cached_property
-from typing import Any, Dict, Iterable, List, Mapping, MutableMapping, Optional, Tuple, Union
-from urllib.parse import parse_qsl, urlparse
+from typing import Any, List, Mapping, Tuple
-import requests
from airbyte_cdk import AirbyteLogger
+from airbyte_cdk.models import SyncMode
from airbyte_cdk.sources import AbstractSource
from airbyte_cdk.sources.streams import Stream
-from airbyte_cdk.sources.streams.http import HttpStream
-from requests.exceptions import ConnectionError, InvalidURL, JSONDecodeError, RequestException, SSLError
+from requests.exceptions import ConnectionError, RequestException, SSLError
from .auth import MissingAccessTokenError, ShopifyAuthenticator
-from .graphql import get_query_products
-from .transform import DataTypeEnforcer
-from .utils import SCOPES_MAPPING, ApiTypeEnum
-from .utils import EagerlyCachedStreamState as stream_state_cache
-from .utils import ShopifyAccessScopesError, ShopifyBadJsonError, ShopifyConnectionError, ShopifyNonRetryableErrors
-from .utils import ShopifyRateLimiter as limiter
-from .utils import ShopifyWrongShopNameError
-
-
-class ShopifyStream(HttpStream, ABC):
-
- # define default logger
- logger = logging.getLogger("airbyte")
-
- # Latest Stable Release
- api_version = "2023-07"
- # Page size
- limit = 250
-
- primary_key = "id"
- order_field = "updated_at"
- filter_field = "updated_at_min"
-
- raise_on_http_errors = True
- max_retries = 5
-
- def __init__(self, config: Dict):
- super().__init__(authenticator=config["authenticator"])
- self._transformer = DataTypeEnforcer(self.get_json_schema())
- self.config = config
-
- @property
- @abstractmethod
- def data_field(self) -> str:
- """The name of the field in the response which contains the data"""
-
- @property
- def url_base(self) -> str:
- return f"https://{self.config['shop']}.myshopify.com/admin/api/{self.api_version}/"
-
- @property
- def default_filter_field_value(self) -> Union[int, str]:
- # certain streams are using `since_id` field as `filter_field`, which requires to use `int` type,
- # but many other use `str` values for this, we determine what to use based on `filter_field` value
- # by default, we use the user defined `Start Date` as initial value, or 0 for `id`-dependent streams.
- return 0 if self.filter_field == "since_id" else (self.config.get("start_date") or "")
-
- def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]:
- next_page = response.links.get("next", None)
- if next_page:
- return dict(parse_qsl(urlparse(next_page.get("url")).query))
- else:
- return None
-
- def request_params(self, next_page_token: Mapping[str, Any] = None, **kwargs) -> MutableMapping[str, Any]:
- params = {"limit": self.limit}
- if next_page_token:
- params.update(**next_page_token)
- else:
- params["order"] = f"{self.order_field} asc"
- params[self.filter_field] = self.default_filter_field_value
- if self.config.get("end_date") and self.filter_field == "updated_at_min":
- params["updated_at_max"] = self.config.get("end_date")
- return params
-
- @limiter.balance_rate_limit()
- def parse_response(self, response: requests.Response, **kwargs) -> Iterable[Mapping]:
- if response.status_code is requests.codes.OK:
- try:
- json_response = response.json()
- records = json_response.get(self.data_field, []) if self.data_field is not None else json_response
- yield from self.produce_records(records)
- except RequestException as e:
- self.logger.warning(f"Unexpected error in `parse_ersponse`: {e}, the actual response data: {response.text}")
- yield {}
-
- def produce_records(self, records: Union[Iterable[Mapping[str, Any]], Mapping[str, Any]] = None) -> Iterable[Mapping[str, Any]]:
- # transform method was implemented according to issue 4841
- # Shopify API returns price fields as a string and it should be converted to number
- # this solution designed to convert string into number, but in future can be modified for general purpose
- if isinstance(records, dict):
- # for cases when we have a single record as dict
- # add shop_url to the record to make querying easy
- records["shop_url"] = self.config["shop"]
- yield self._transformer.transform(records)
- else:
- # for other cases
- for record in records:
- # add shop_url to the record to make querying easy
- record["shop_url"] = self.config["shop"]
- yield self._transformer.transform(record)
-
- def should_retry(self, response: requests.Response) -> bool:
- known_errors = ShopifyNonRetryableErrors(self.name)
- status = response.status_code
- if status in known_errors.keys():
- setattr(self, "raise_on_http_errors", False)
- self.logger.warning(known_errors.get(status))
- return False
- else:
- return super().should_retry(response)
-
-
-class ShopifyDeletedEventsStream(ShopifyStream):
-
- data_field = "events"
- primary_key = "id"
- cursor_field = "deleted_at"
-
- @property
- def availability_strategy(self) -> None:
- """
- No need to apply the `availability strategy` for this service stream.
- """
- return None
-
- def __init__(self, config: Dict, deleted_events_api_name: str):
- self.deleted_events_api_name = deleted_events_api_name
- super().__init__(config)
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
- def get_json_schema(self) -> None:
- """
- No need to apply the `schema` for this service stream.
- """
- return {}
-
- def produce_deleted_records_from_events(self, delete_events: Iterable[Mapping[str, Any]] = []) -> None:
- for event in delete_events:
- yield {
- "id": event["subject_id"],
- self.cursor_field: event["created_at"],
- "updated_at": event["created_at"],
- "deleted_message": event["message"],
- "deleted_description": event["description"],
- "shop_url": event["shop_url"],
- }
-
- def read_records(self, stream_state: Mapping[str, Any] = None, **kwargs):
- delete_events = super().read_records(stream_state=stream_state, **kwargs)
- yield from self.produce_deleted_records_from_events(delete_events)
-
- def request_params(
- self,
- stream_state: Mapping[str, Any] = None,
- next_page_token: Mapping[str, Any] = None,
- **kwargs,
- ) -> Mapping[str, Any]:
- params = {}
-
- if not next_page_token:
- params.update(**{"filter": self.deleted_events_api_name, "verb": "destroy"})
- if stream_state:
- state = stream_state.get("deleted", {}).get(self.cursor_field)
- if state:
- params["created_at_min"] = state
- else:
- # `filter` and `verb` cannot be passed, when `page_info` is present.
- # See https://shopify.dev/api/usage/pagination-rest
- params.update(**next_page_token)
-
- return params
-
-
-class IncrementalShopifyStream(ShopifyStream, ABC):
-
- # Setting the check point interval to the limit of the records output
- @property
- def state_checkpoint_interval(self) -> int:
- return super().limit
-
- # Setting the default cursor field for all streams
- cursor_field = "updated_at"
- deleted_cursor_field = "deleted_at"
-
- @property
- def default_state_comparison_value(self) -> Union[int, str]:
- # certain streams are using `id` field as `cursor_field`, which requires to use `int` type,
- # but many other use `str` values for this, we determine what to use based on `cursor_field` value
- return 0 if self.cursor_field == "id" else ""
-
- def get_updated_state(self, current_stream_state: MutableMapping[str, Any], latest_record: Mapping[str, Any]) -> Mapping[str, Any]:
- last_record_value = latest_record.get(self.cursor_field) or self.default_state_comparison_value
- current_state_value = current_stream_state.get(self.cursor_field) or self.default_state_comparison_value
- return {self.cursor_field: max(last_record_value, current_state_value)}
-
- @stream_state_cache.cache_stream_state
- def request_params(self, stream_state: Mapping[str, Any] = None, next_page_token: Mapping[str, Any] = None, **kwargs):
- params = super().request_params(stream_state=stream_state, next_page_token=next_page_token, **kwargs)
- # If there is a next page token then we should only send pagination-related parameters.
- if not next_page_token:
- params["order"] = f"{self.order_field} asc"
- if stream_state:
- params[self.filter_field] = stream_state.get(self.cursor_field)
- return params
-
- # Parse the `stream_slice` with respect to `stream_state` for `Incremental refresh`
- # cases where we slice the stream, the endpoints for those classes don't accept any other filtering,
- # but they provide us with the updated_at field in most cases, so we used that as incremental filtering during the order slicing.
- def filter_records_newer_than_state(self, stream_state: Mapping[str, Any] = None, records_slice: Iterable[Mapping] = None) -> Iterable:
- # Getting records >= state
- if stream_state:
- state_value = stream_state.get(self.cursor_field)
- for record in records_slice:
- if self.cursor_field in record:
- record_value = record.get(self.cursor_field, self.default_state_comparison_value)
- if record_value:
- if record_value >= state_value:
- yield record
- else:
- # old entities could have cursor field in place, but set to null
- self.logger.warning(
- f"Stream `{self.name}`, Record ID: `{record.get(self.primary_key)}` cursor value is: {record_value}, record is emitted without state comparison"
- )
- yield record
- else:
- # old entities could miss the cursor field
- self.logger.warning(
- f"Stream `{self.name}`, Record ID: `{record.get(self.primary_key)}` missing cursor field: {self.cursor_field}, record is emitted without state comparison"
- )
- yield record
- else:
- yield from records_slice
-
-
-class IncrementalShopifyStreamWithDeletedEvents(IncrementalShopifyStream):
- @property
- @abstractmethod
- def deleted_events_api_name(self) -> str:
- """
- The string value of the Shopify Events Object to pull:
-
- articles -> Article
- blogs -> Blog
- custom_collections -> Collection
- orders -> Order
- pages -> Page
- price_rules -> PriceRule
- products -> Product
-
- """
-
- @property
- def deleted_events(self) -> ShopifyDeletedEventsStream:
- """
- The Events stream instance to fetch the `destroyed` records for specified `deleted_events_api_name`, like: `Product`.
- See more in `ShopifyDeletedEventsStream` class.
- """
- return ShopifyDeletedEventsStream(self.config, self.deleted_events_api_name)
-
- @property
- def default_deleted_state_comparison_value(self) -> Union[int, str]:
- """
- Set the default STATE comparison value for cases when the deleted record doesn't have it's value.
- We expect the `deleted_at` cursor field for destroyed records would be always type of String.
- """
- return ""
-
- def get_updated_state(self, current_stream_state: MutableMapping[str, Any], latest_record: Mapping[str, Any]) -> Mapping[str, Any]:
- """
- We extend the stream state with `deleted` property to store the `destroyed` records STATE separetely from the Stream State.
- """
- state = super().get_updated_state(current_stream_state, latest_record)
- # add `deleted` property to each stream supports `deleted events`,
- # to povide the `Incremental` sync mode, for the `Incremental Delete` records.
- last_deleted_record_value = latest_record.get(self.deleted_cursor_field) or self.default_deleted_state_comparison_value
- current_deleted_state_value = current_stream_state.get(self.deleted_cursor_field) or self.default_deleted_state_comparison_value
- state["deleted"] = {self.deleted_cursor_field: max(last_deleted_record_value, current_deleted_state_value)}
- return state
-
- def read_records(
- self,
- stream_state: Mapping[str, Any] = None,
- stream_slice: Optional[Mapping[str, Any]] = None,
- **kwargs,
- ) -> Iterable[Mapping[str, Any]]:
- """Override to fetch deleted records for supported streams"""
- # main records stream
- yield from super().read_records(stream_state=stream_state, stream_slice=stream_slice, **kwargs)
- # fetch deleted events after the Stream data is pulled
- yield from self.deleted_events.read_records(stream_state=stream_state, **kwargs)
-
-
-class ShopifySubstream(IncrementalShopifyStream):
- """
- ShopifySubstream - provides slicing functionality for streams using parts of data from parent stream.
- For example:
- - `Refunds Orders` is the entity of `Orders`,
- - `OrdersRisks` is the entity of `Orders`,
- - `DiscountCodes` is the entity of `PriceRules`, etc.
-
- :: @ parent_stream - defines the parent stream object to read from
- :: @ slice_key - defines the name of the property in stream slices dict.
- :: @ nested_record - the name of the field inside of parent stream record. Default is `id`.
- :: @ nested_record_field_name - the name of the field inside of nested_record.
- :: @ nested_substream - the name of the nested entity inside of parent stream, helps to reduce the number of
- API Calls, if present, see `OrderRefunds` stream for more.
- """
-
- parent_stream_class: object = None
- slice_key: str = None
- nested_record: str = "id"
- nested_record_field_name: str = None
- nested_substream = None
- nested_substream_list_field_id = None
-
- @cached_property
- def parent_stream(self) -> object:
- """
- Returns the instance of parent stream, if the substream has a `parent_stream_class` dependency.
- """
- return self.parent_stream_class(self.config) if self.parent_stream_class else None
-
- def get_updated_state(self, current_stream_state: MutableMapping[str, Any], latest_record: Mapping[str, Any]) -> Mapping[str, Any]:
- """UPDATING THE STATE OBJECT:
- Stream: Transactions
- Parent Stream: Orders
- Returns:
- {
- {...},
- "transactions": {
- "created_at": "2022-03-03T03:47:45-08:00",
- "orders": {
- "updated_at": "2022-03-03T03:47:46-08:00"
- }
- },
- {...},
- }
- """
- updated_state = super().get_updated_state(current_stream_state, latest_record)
- # add parent_stream_state to `updated_state`
- updated_state[self.parent_stream.name] = stream_state_cache.cached_state.get(self.parent_stream.name)
- return updated_state
-
- def request_params(self, next_page_token: Mapping[str, Any] = None, **kwargs) -> MutableMapping[str, Any]:
- params = {"limit": self.limit}
- if next_page_token:
- params.update(**next_page_token)
- return params
-
- def stream_slices(self, stream_state: Mapping[str, Any] = None, **kwargs) -> Iterable[Optional[Mapping[str, Any]]]:
- """
- Reading the parent stream for slices with structure:
- EXAMPLE: for given nested_record as `id` of Orders,
-
- Outputs:
- [
- {slice_key: 123},
- {slice_key: 456},
- {...},
- {slice_key: 999
- ]
- """
- sorted_substream_slices = []
-
- # reading parent nested stream_state from child stream state
- parent_stream_state = stream_state.get(self.parent_stream.name) if stream_state else {}
-
- # reading the parent stream
- for record in self.parent_stream.read_records(stream_state=parent_stream_state, **kwargs):
- # updating the `stream_state` with the state of it's parent stream
- # to have the child stream sync independently from the parent stream
- stream_state_cache.cached_state[self.parent_stream.name] = self.parent_stream.get_updated_state({}, record)
- # to limit the number of API Calls and reduce the time of data fetch,
- # we can pull the ready data for child_substream, if nested data is present,
- # and corresponds to the data of child_substream we need.
- if self.nested_substream and self.nested_substream_list_field_id:
- if record.get(self.nested_substream):
- sorted_substream_slices.extend(
- [
- {
- self.slice_key: sub_record[self.nested_substream_list_field_id],
- self.cursor_field: record[self.nested_substream][0].get(
- self.cursor_field, self.default_state_comparison_value
- ),
- }
- for sub_record in record[self.nested_record]
- ]
- )
- elif self.nested_substream:
- if record.get(self.nested_substream):
- sorted_substream_slices.append(
- {
- self.slice_key: record[self.nested_record],
- self.cursor_field: record[self.nested_substream][0].get(self.cursor_field, self.default_state_comparison_value),
- }
- )
- else:
- # avoid checking `deleted` records for substreams, a.k.a `Metafields` streams,
- # since `deleted` records are not available, thus we avoid HTTP-400 errors.
- if self.deleted_cursor_field not in record:
- yield {self.slice_key: record[self.nested_record]}
-
- # output slice from sorted list to avoid filtering older records
- if self.nested_substream:
- if len(sorted_substream_slices) > 0:
- # sort by cursor_field
- sorted_substream_slices.sort(key=lambda x: x.get(self.cursor_field))
- for sorted_slice in sorted_substream_slices:
- yield {self.slice_key: sorted_slice[self.slice_key]}
-
- def read_records(
- self,
- stream_state: Mapping[str, Any] = None,
- stream_slice: Optional[Mapping[str, Any]] = None,
- **kwargs,
- ) -> Iterable[Mapping[str, Any]]:
- """Reading child streams records for each `id`"""
-
- slice_data = stream_slice.get(self.slice_key)
- # sometimes the stream_slice.get(self.slice_key) has the list of records,
- # to avoid data exposition inside the logs, we should get the data we need correctly out of stream_slice.
- if isinstance(slice_data, list) and self.nested_record_field_name is not None and len(slice_data) > 0:
- slice_data = slice_data[0].get(self.nested_record_field_name)
-
- self.logger.info(f"Reading {self.name} for {self.slice_key}: {slice_data}")
- records = super().read_records(stream_slice=stream_slice, **kwargs)
- yield from self.filter_records_newer_than_state(stream_state=stream_state, records_slice=records)
-
-
-class MetafieldShopifySubstream(ShopifySubstream):
- slice_key = "id"
- data_field = "metafields"
-
- parent_stream_class: object = None
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- object_id = stream_slice[self.slice_key]
- return f"{self.parent_stream_class.data_field}/{object_id}/{self.data_field}.json"
-
-
-class Articles(IncrementalShopifyStreamWithDeletedEvents):
- data_field = "articles"
- cursor_field = "id"
- order_field = "id"
- filter_field = "since_id"
- deleted_events_api_name = "Article"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class MetafieldArticles(MetafieldShopifySubstream):
- parent_stream_class: object = Articles
-
-
-class Blogs(IncrementalShopifyStreamWithDeletedEvents):
- cursor_field = "id"
- order_field = "id"
- data_field = "blogs"
- filter_field = "since_id"
- deleted_events_api_name = "Blog"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class MetafieldBlogs(MetafieldShopifySubstream):
- parent_stream_class: object = Blogs
-
-
-class Customers(IncrementalShopifyStream):
- data_field = "customers"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class MetafieldCustomers(MetafieldShopifySubstream):
- parent_stream_class: object = Customers
-
-
-class Orders(IncrementalShopifyStreamWithDeletedEvents):
- data_field = "orders"
- deleted_events_api_name = "Order"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
- def request_params(
- self, stream_state: Mapping[str, Any] = None, next_page_token: Mapping[str, Any] = None, **kwargs
- ) -> MutableMapping[str, Any]:
- params = super().request_params(stream_state=stream_state, next_page_token=next_page_token, **kwargs)
- if not next_page_token:
- params["status"] = "any"
- return params
-
-
-class Disputes(IncrementalShopifyStream):
- data_field = "disputes"
- filter_field = "since_id"
- cursor_field = "id"
- order_field = "id"
-
- def path(self, **kwargs) -> str:
- return f"shopify_payments/{self.data_field}.json"
-
-
-class MetafieldOrders(MetafieldShopifySubstream):
- parent_stream_class: object = Orders
-
-
-class DraftOrders(IncrementalShopifyStream):
- data_field = "draft_orders"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class MetafieldDraftOrders(MetafieldShopifySubstream):
- parent_stream_class: object = DraftOrders
-
-
-class Products(IncrementalShopifyStreamWithDeletedEvents):
- use_cache = True
- data_field = "products"
- deleted_events_api_name = "Product"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class ProductsGraphQl(IncrementalShopifyStream):
- filter_field = "updatedAt"
- cursor_field = "updatedAt"
- data_field = "graphql"
- http_method = "POST"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
- def request_params(
- self,
- stream_state: Optional[Mapping[str, Any]] = None,
- next_page_token: Optional[Mapping[str, Any]] = None,
- **kwargs,
- ) -> MutableMapping[str, Any]:
- return {}
-
- def request_body_json(
- self,
- stream_state: Mapping[str, Any],
- stream_slice: Optional[Mapping[str, Any]] = None,
- next_page_token: Optional[Mapping[str, Any]] = None,
- ) -> Optional[Mapping]:
- state_value = stream_state.get(self.filter_field)
- if state_value:
- filter_value = state_value
- else:
- filter_value = self.default_filter_field_value
- query = get_query_products(
- first=self.limit, filter_field=self.filter_field, filter_value=filter_value, next_page_token=next_page_token
- )
- return {"query": query}
-
- @staticmethod
- def next_page_token(response: requests.Response) -> Optional[Mapping[str, Any]]:
- page_info = response.json()["data"]["products"]["pageInfo"]
- has_next_page = page_info["hasNextPage"]
- if has_next_page:
- return page_info["endCursor"]
- else:
- return None
-
- @limiter.balance_rate_limit(api_type=ApiTypeEnum.graphql.value)
- def parse_response(self, response: requests.Response, **kwargs) -> Iterable[Mapping]:
- if response.status_code is requests.codes.OK:
- try:
- json_response = response.json()["data"]["products"]["nodes"]
- yield from self.produce_records(json_response)
- except RequestException as e:
- self.logger.warning(f"Unexpected error in `parse_ersponse`: {e}, the actual response data: {response.text}")
- yield {}
-
-
-class MetafieldProducts(MetafieldShopifySubstream):
- parent_stream_class: object = Products
-
-
-class ProductImages(ShopifySubstream):
- parent_stream_class: object = Products
- cursor_field = "id"
- slice_key = "product_id"
- data_field = "images"
- nested_substream = "images"
- filter_field = "since_id"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- product_id = stream_slice[self.slice_key]
- return f"products/{product_id}/{self.data_field}.json"
-
-
-class MetafieldProductImages(MetafieldShopifySubstream):
- parent_stream_class: object = Products
- nested_record = "images"
- slice_key = "images"
- nested_substream = "images"
- nested_substream_list_field_id = "id"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- image_id = stream_slice[self.slice_key]
- return f"product_images/{image_id}/{self.data_field}.json"
-
-
-class ProductVariants(ShopifySubstream):
- parent_stream_class: object = Products
- cursor_field = "id"
- slice_key = "product_id"
- data_field = "variants"
- nested_substream = "variants"
- filter_field = "since_id"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- product_id = stream_slice[self.slice_key]
- return f"products/{product_id}/{self.data_field}.json"
-
-
-class MetafieldProductVariants(MetafieldShopifySubstream):
- parent_stream_class: object = Products
- nested_record = "variants"
- slice_key = "variants"
- nested_substream = "variants"
- nested_substream_list_field_id = "id"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- variant_id = stream_slice[self.slice_key]
- return f"variants/{variant_id}/{self.data_field}.json"
-
-
-class AbandonedCheckouts(IncrementalShopifyStream):
- data_field = "checkouts"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
- def request_params(
- self, stream_state: Mapping[str, Any] = None, next_page_token: Mapping[str, Any] = None, **kwargs
- ) -> MutableMapping[str, Any]:
- params = super().request_params(stream_state=stream_state, next_page_token=next_page_token, **kwargs)
- # If there is a next page token then we should only send pagination-related parameters.
- if not next_page_token:
- params["status"] = "any"
- return params
-
-
-class CustomCollections(IncrementalShopifyStreamWithDeletedEvents):
- data_field = "custom_collections"
- deleted_events_api_name = "Collection"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class SmartCollections(IncrementalShopifyStream):
- data_field = "smart_collections"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class MetafieldSmartCollections(MetafieldShopifySubstream):
- parent_stream_class: object = SmartCollections
-
-
-class Collects(IncrementalShopifyStream):
- """
- Collects stream does not support Incremental Refresh based on datetime fields, only `since_id` is supported:
- https://shopify.dev/docs/admin-api/rest/reference/products/collect
-
- The Collect stream is the link between Products and Collections, if the Collection is created for Products,
- the `collect` record is created, it's reasonable to Full Refresh all collects. As for Incremental refresh -
- we would use the since_id specificaly for this stream.
- """
-
- data_field = "collects"
- cursor_field = "id"
- order_field = "id"
- filter_field = "since_id"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class Collections(ShopifySubstream):
- parent_stream_class: object = Collects
- nested_record = "collection_id"
- slice_key = "collection_id"
- data_field = "collection"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- collection_id = stream_slice[self.slice_key]
- return f"collections/{collection_id}.json"
-
-
-class MetafieldCollections(MetafieldShopifySubstream):
- parent_stream_class: object = Collects
- slice_key = "collection_id"
- nested_record = "collection_id"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- object_id = stream_slice[self.slice_key]
- return f"collections/{object_id}/{self.data_field}.json"
-
-
-class BalanceTransactions(IncrementalShopifyStream):
-
- """
- PaymentsTransactions stream does not support Incremental Refresh based on datetime fields, only `since_id` is supported:
- https://shopify.dev/api/admin-rest/2021-07/resources/transactions
- """
-
- data_field = "transactions"
- cursor_field = "id"
- order_field = "id"
- filter_field = "since_id"
-
- def path(self, **kwargs) -> str:
- return f"shopify_payments/balance/{self.data_field}.json"
-
-
-class OrderRefunds(ShopifySubstream):
- parent_stream_class: object = Orders
- slice_key = "order_id"
- data_field = "refunds"
- cursor_field = "created_at"
- # we pull out the records that we already know has the refunds data from Orders object
- nested_substream = "refunds"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- order_id = stream_slice["order_id"]
- return f"orders/{order_id}/{self.data_field}.json"
-
-
-class OrderRisks(ShopifySubstream):
- parent_stream_class: object = Orders
- slice_key = "order_id"
- data_field = "risks"
- cursor_field = "id"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- order_id = stream_slice["order_id"]
- return f"orders/{order_id}/{self.data_field}.json"
-
-
-class Transactions(ShopifySubstream):
- parent_stream_class: object = Orders
- slice_key = "order_id"
- data_field = "transactions"
- cursor_field = "created_at"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- order_id = stream_slice["order_id"]
- return f"orders/{order_id}/{self.data_field}.json"
-
-
-class TenderTransactions(IncrementalShopifyStream):
- data_field = "tender_transactions"
- cursor_field = "processed_at"
- filter_field = "processed_at_min"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class Pages(IncrementalShopifyStreamWithDeletedEvents):
- data_field = "pages"
- deleted_events_api_name = "Page"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class MetafieldPages(MetafieldShopifySubstream):
- parent_stream_class: object = Pages
-
-
-class PriceRules(IncrementalShopifyStreamWithDeletedEvents):
- data_field = "price_rules"
- deleted_events_api_name = "PriceRule"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class DiscountCodes(ShopifySubstream):
- parent_stream_class: object = PriceRules
- slice_key = "price_rule_id"
- data_field = "discount_codes"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- price_rule_id = stream_slice["price_rule_id"]
- return f"price_rules/{price_rule_id}/{self.data_field}.json"
-
-
-class Locations(ShopifyStream):
- """
- The location API does not support any form of filtering.
- https://shopify.dev/api/admin-rest/2021-07/resources/location
-
- Therefore, only FULL_REFRESH mode is supported.
- """
-
- data_field = "locations"
-
- def path(self, **kwargs):
- return f"{self.data_field}.json"
-
-
-class MetafieldLocations(MetafieldShopifySubstream):
- parent_stream_class: object = Locations
-
-
-class InventoryLevels(ShopifySubstream):
- parent_stream_class: object = Locations
- slice_key = "location_id"
- data_field = "inventory_levels"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- location_id = stream_slice["location_id"]
- return f"locations/{location_id}/{self.data_field}.json"
-
- def parse_response(self, response: requests.Response, **kwargs) -> Iterable[Mapping]:
- records_stream = super().parse_response(response, **kwargs)
-
- def generate_key(record):
- record.update({"id": "|".join((str(record.get("location_id", "")), str(record.get("inventory_item_id", ""))))})
- return record
-
- # associate the surrogate key
- yield from map(generate_key, records_stream)
-
-
-class InventoryItems(ShopifySubstream):
- parent_stream_class: object = Products
- slice_key = "id"
- nested_record = "variants"
- nested_record_field_name = "inventory_item_id"
- data_field = "inventory_items"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- ids = ",".join(str(x[self.nested_record_field_name]) for x in stream_slice[self.slice_key])
- return f"inventory_items.json?ids={ids}"
-
-
-class FulfillmentOrders(ShopifySubstream):
- parent_stream_class: object = Orders
- slice_key = "order_id"
- data_field = "fulfillment_orders"
- cursor_field = "id"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- order_id = stream_slice[self.slice_key]
- return f"orders/{order_id}/{self.data_field}.json"
-
-
-class Fulfillments(ShopifySubstream):
- parent_stream_class: object = Orders
- slice_key = "order_id"
- data_field = "fulfillments"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- order_id = stream_slice[self.slice_key]
- return f"orders/{order_id}/{self.data_field}.json"
-
-
-class Shop(ShopifyStream):
- data_field = "shop"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class MetafieldShops(IncrementalShopifyStream):
- data_field = "metafields"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class CustomerSavedSearch(IncrementalShopifyStream):
- api_version = "2022-01"
- cursor_field = "id"
- order_field = "id"
- data_field = "customer_saved_searches"
- filter_field = "since_id"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
-
-
-class CustomerAddress(ShopifySubstream):
- parent_stream_class: object = Customers
- slice_key = "id"
- data_field = "addresses"
- cursor_field = "id"
-
- def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
- customer_id = stream_slice[self.slice_key]
- return f"customers/{customer_id}/{self.data_field}.json"
-
-
-class Countries(ShopifyStream):
- data_field = "countries"
-
- def path(self, **kwargs) -> str:
- return f"{self.data_field}.json"
+from .scopes import ShopifyScopes
+from .streams.streams import (
+ AbandonedCheckouts,
+ Articles,
+ BalanceTransactions,
+ Blogs,
+ Collections,
+ Collects,
+ Countries,
+ CustomCollections,
+ CustomerAddress,
+ Customers,
+ CustomerSavedSearch,
+ DiscountCodes,
+ Disputes,
+ DraftOrders,
+ FulfillmentOrders,
+ Fulfillments,
+ InventoryItems,
+ InventoryLevels,
+ Locations,
+ MetafieldArticles,
+ MetafieldBlogs,
+ MetafieldCollections,
+ MetafieldCustomers,
+ MetafieldDraftOrders,
+ MetafieldLocations,
+ MetafieldOrders,
+ MetafieldPages,
+ MetafieldProductImages,
+ MetafieldProducts,
+ MetafieldProductVariants,
+ MetafieldShops,
+ MetafieldSmartCollections,
+ OrderRefunds,
+ OrderRisks,
+ Orders,
+ Pages,
+ PriceRules,
+ ProductImages,
+ Products,
+ ProductsGraphQl,
+ ProductVariants,
+ Shop,
+ SmartCollections,
+ TenderTransactions,
+ Transactions,
+ TransactionsGraphql,
+)
class ConnectionCheckTest:
- def __init__(self, config: Mapping[str, Any]):
+ def __init__(self, config: Mapping[str, Any]) -> None:
self.config = config
# use `Shop` as a test stream for connection check
self.test_stream = Shop(self.config)
@@ -953,7 +89,7 @@ def test_connection(self) -> tuple[bool, str]:
return False, "The `Shopify Store` name is missing. Make sure it's entered and valid."
try:
- response = list(self.test_stream.read_records(sync_mode=None))
+ response = list(self.test_stream.read_records(sync_mode=SyncMode.full_refresh))
# check for the shop_id is present in the response
shop_id = response[0].get("id")
if shop_id is not None:
@@ -969,8 +105,38 @@ def test_connection(self) -> tuple[bool, str]:
except MissingAccessTokenError:
return False, self.describe_error("missing_token_error")
+ def get_shop_id(self) -> str:
+ """
+ We need to have the `shop_id` value available to have it passed elsewhere and fill-in the missing data.
+ By the time this method is tiggered, we are sure we've passed the `Connection Checks` and have the `shop_id` value.
+ """
+ response = list(self.test_stream.read_records(sync_mode=SyncMode.full_refresh))
+ shop_id = response[0].get("id")
+ if shop_id:
+ return shop_id
+ else:
+ raise Exception(f"Couldn't get `shop_id`. Actual `response`: {response}.")
+
class SourceShopify(AbstractSource):
+ @property
+ def continue_sync_on_stream_failure(self) -> bool:
+ return True
+
+ @property
+ def raise_exception_on_missing_stream(self) -> bool:
+ return False
+
+ @staticmethod
+ def get_shop_name(config) -> str:
+ split_pattern = ".myshopify.com"
+ shop_name = config.get("shop")
+ return shop_name.split(split_pattern)[0] if split_pattern in shop_name else shop_name
+
+ @staticmethod
+ def format_stream_name(name) -> str:
+ return "".join(x.capitalize() for x in name.split("_"))
+
def check_connection(self, logger: AirbyteLogger, config: Mapping[str, Any]) -> Tuple[bool, any]:
"""
Testing connection availability for the connector.
@@ -979,6 +145,16 @@ def check_connection(self, logger: AirbyteLogger, config: Mapping[str, Any]) ->
config["authenticator"] = ShopifyAuthenticator(config)
return ConnectionCheckTest(config).test_connection()
+ def select_transactions_stream(self, config: Mapping[str, Any]) -> Stream:
+ """
+ Allow the Customer to decide which API type to use when it comes to the `Transactions` stream.
+ """
+ should_fetch_user_id = config.get("fetch_transactions_user_id")
+ if should_fetch_user_id:
+ return Transactions(config)
+ else:
+ return TransactionsGraphql(config)
+
def streams(self, config: Mapping[str, Any]) -> List[Stream]:
"""
Mapping a input config of the user input configuration as defined in the connector spec.
@@ -986,16 +162,12 @@ def streams(self, config: Mapping[str, Any]) -> List[Stream]:
"""
config["shop"] = self.get_shop_name(config)
config["authenticator"] = ShopifyAuthenticator(config)
- user_scopes = self.get_user_scopes(config)
- always_permitted_streams = ["MetafieldShops", "Shop", "Countries"]
- permitted_streams = [
- stream
- for user_scope in user_scopes
- if user_scope["handle"] in SCOPES_MAPPING
- for stream in SCOPES_MAPPING.get(user_scope["handle"])
- ] + always_permitted_streams
-
- # before adding stream to stream_instances list, please add it to SCOPES_MAPPING
+ # add `shop_id` int value
+ config["shop_id"] = ConnectionCheckTest(config).get_shop_id()
+ # define scopes checker
+ scopes_manager: ShopifyScopes = ShopifyScopes(config)
+ # get the list of the permitted streams, based on the authenticated user scopes
+ permitted_streams = scopes_manager.get_permitted_streams()
stream_instances = [
AbandonedCheckouts(config),
Articles(config),
@@ -1038,41 +210,12 @@ def streams(self, config: Mapping[str, Any]) -> List[Stream]:
Shop(config),
SmartCollections(config),
TenderTransactions(config),
- Transactions(config),
+ self.select_transactions_stream(config),
CustomerSavedSearch(config),
CustomerAddress(config),
Countries(config),
]
- return [stream_instance for stream_instance in stream_instances if self.format_name(stream_instance.name) in permitted_streams]
-
- @staticmethod
- def get_user_scopes(config):
- session = requests.Session()
- url = f"https://{config['shop']}.myshopify.com/admin/oauth/access_scopes.json"
- headers = config["authenticator"].get_auth_header()
-
- try:
- response = session.get(url, headers=headers).json()
- access_scopes = response.get("access_scopes")
- except InvalidURL:
- raise ShopifyWrongShopNameError(url)
- except JSONDecodeError as json_error:
- raise ShopifyBadJsonError(json_error)
- except (SSLError, ConnectionError) as con_error:
- raise ShopifyConnectionError(con_error)
-
- if access_scopes:
- return access_scopes
- else:
- raise ShopifyAccessScopesError(response)
-
- @staticmethod
- def get_shop_name(config):
- split_pattern = ".myshopify.com"
- shop_name = config.get("shop")
- return shop_name.split(split_pattern)[0] if split_pattern in shop_name else shop_name
-
- @staticmethod
- def format_name(name):
- return "".join(x.capitalize() for x in name.split("_"))
+ return [
+ stream_instance for stream_instance in stream_instances if self.format_stream_name(stream_instance.name) in permitted_streams
+ ]
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/spec.json b/airbyte-integrations/connectors/source-shopify/source_shopify/spec.json
index 03629c443fa2..4f965d55addf 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/spec.json
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/spec.json
@@ -85,6 +85,18 @@
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
"format": "date",
"order": 3
+ },
+ "bulk_window_in_days": {
+ "type": "integer",
+ "title": "GraphQL BULK Date Range in Days",
+ "description": "Defines what would be a date range per single BULK Job",
+ "default": 30
+ },
+ "fetch_transactions_user_id": {
+ "type": "boolean",
+ "title": "Add `user_id` to Transactions (slower)",
+ "description": "Defines which API type (REST/BULK) to use to fetch `Transactions` data. If you are a `Shopify Plus` user, leave the default value to speed up the fetch.",
+ "default": false
}
}
},
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/streams/base_streams.py b/airbyte-integrations/connectors/source-shopify/source_shopify/streams/base_streams.py
new file mode 100644
index 000000000000..6f423a54ec31
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/streams/base_streams.py
@@ -0,0 +1,722 @@
+#
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+#
+
+
+import logging
+from abc import ABC, abstractmethod
+from functools import cached_property
+from typing import Any, Dict, Iterable, Mapping, MutableMapping, Optional, Union
+from urllib.parse import parse_qsl, urlparse
+
+import pendulum as pdm
+import requests
+from airbyte_cdk.sources.streams.http import HttpStream
+from requests.exceptions import RequestException
+from source_shopify.shopify_graphql.bulk.job import ShopifyBulkManager
+from source_shopify.shopify_graphql.bulk.query import ShopifyBulkQuery, ShopifyBulkTemplates
+from source_shopify.shopify_graphql.bulk.record import ShopifyBulkRecord
+from source_shopify.transform import DataTypeEnforcer
+from source_shopify.utils import EagerlyCachedStreamState as stream_state_cache
+from source_shopify.utils import ShopifyNonRetryableErrors
+from source_shopify.utils import ShopifyRateLimiter as limiter
+
+
+class ShopifyStream(HttpStream, ABC):
+ # define default logger
+ logger = logging.getLogger("airbyte")
+
+ # Latest Stable Release
+ api_version = "2023-07"
+ # Page size
+ limit = 250
+
+ primary_key = "id"
+ order_field = "updated_at"
+ filter_field = "updated_at_min"
+
+ raise_on_http_errors = True
+ max_retries = 5
+
+ def __init__(self, config: Dict) -> None:
+ super().__init__(authenticator=config["authenticator"])
+ self._transformer = DataTypeEnforcer(self.get_json_schema())
+ self.config = config
+
+ @property
+ @abstractmethod
+ def data_field(self) -> str:
+ """The name of the field in the response which contains the data"""
+
+ @property
+ def url_base(self) -> str:
+ return f"https://{self.config['shop']}.myshopify.com/admin/api/{self.api_version}/"
+
+ @property
+ def default_filter_field_value(self) -> Union[int, str]:
+ # certain streams are using `since_id` field as `filter_field`, which requires to use `int` type,
+ # but many other use `str` values for this, we determine what to use based on `filter_field` value
+ # by default, we use the user defined `Start Date` as initial value, or 0 for `id`-dependent streams.
+ return 0 if self.filter_field == "since_id" else (self.config.get("start_date") or "")
+
+ def path(self, **kwargs) -> str:
+ return f"{self.data_field}.json"
+
+ def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]:
+ next_page = response.links.get("next", None)
+ if next_page:
+ return dict(parse_qsl(urlparse(next_page.get("url")).query))
+ else:
+ return None
+
+ def request_params(self, next_page_token: Optional[Mapping[str, Any]] = None, **kwargs) -> MutableMapping[str, Any]:
+ params = {"limit": self.limit}
+ if next_page_token:
+ params.update(**next_page_token)
+ else:
+ params["order"] = f"{self.order_field} asc"
+ params[self.filter_field] = self.default_filter_field_value
+ return params
+
+ @limiter.balance_rate_limit()
+ def parse_response(self, response: requests.Response, **kwargs) -> Iterable[Mapping]:
+ if response.status_code is requests.codes.OK:
+ try:
+ json_response = response.json()
+ records = json_response.get(self.data_field, []) if self.data_field is not None else json_response
+ yield from self.produce_records(records)
+ except RequestException as e:
+ self.logger.warning(f"Unexpected error in `parse_ersponse`: {e}, the actual response data: {response.text}")
+ yield {}
+
+ def produce_records(self, records: Optional[Union[Iterable[Mapping[str, Any]], Mapping[str, Any]]] = None) -> Mapping[str, Any]:
+ # transform method was implemented according to issue 4841
+ # Shopify API returns price fields as a string and it should be converted to number
+ # this solution designed to convert string into number, but in future can be modified for general purpose
+ if isinstance(records, dict):
+ # for cases when we have a single record as dict
+ # add shop_url to the record to make querying easy
+ records["shop_url"] = self.config["shop"]
+ yield self._transformer.transform(records)
+ else:
+ # for other cases
+ for record in records:
+ # add shop_url to the record to make querying easy
+ record["shop_url"] = self.config["shop"]
+ yield self._transformer.transform(record)
+
+ def should_retry(self, response: requests.Response) -> bool:
+ known_errors = ShopifyNonRetryableErrors(self.name)
+ status = response.status_code
+ if status in known_errors.keys():
+ setattr(self, "raise_on_http_errors", False)
+ self.logger.warning(known_errors.get(status))
+ return False
+ else:
+ return super().should_retry(response)
+
+
+class ShopifyDeletedEventsStream(ShopifyStream):
+ data_field = "events"
+ primary_key = "id"
+ cursor_field = "deleted_at"
+
+ def __init__(self, config: Dict, deleted_events_api_name: str) -> None:
+ self.deleted_events_api_name = deleted_events_api_name
+ super().__init__(config)
+
+ @property
+ def availability_strategy(self) -> None:
+ """
+ No need to apply the `availability strategy` for this service stream.
+ """
+ return None
+
+ def get_json_schema(self) -> None:
+ """
+ No need to apply the `schema` for this service stream.
+ Return `{}` to satisfy the `self._transformer.transform(record)` logic.
+ """
+ return {}
+
+ def produce_deleted_records_from_events(self, delete_events: Iterable[Mapping[str, Any]] = []) -> Mapping[str, Any]:
+ for event in delete_events:
+ yield {
+ "id": event["subject_id"],
+ self.cursor_field: event["created_at"],
+ "updated_at": event["created_at"],
+ "deleted_message": event["message"],
+ "deleted_description": event["description"],
+ "shop_url": event["shop_url"],
+ }
+
+ def read_records(self, stream_state: Optional[Mapping[str, Any]] = None, **kwargs) -> Iterable[Mapping[str, Any]]:
+ delete_events = super().read_records(stream_state=stream_state, **kwargs)
+ yield from self.produce_deleted_records_from_events(delete_events)
+
+ def request_params(
+ self,
+ stream_state: Optional[Mapping[str, Any]] = None,
+ next_page_token: Optional[Mapping[str, Any]] = None,
+ **kwargs,
+ ) -> MutableMapping[str, Any]:
+ params: Mapping[str, Any] = {}
+
+ if next_page_token:
+ # `filter` and `verb` cannot be passed, when `page_info` is present.
+ # See https://shopify.dev/api/usage/pagination-rest
+ params.update(**next_page_token)
+ else:
+ params.update(**{"filter": self.deleted_events_api_name, "verb": "destroy"})
+ if stream_state:
+ state = stream_state.get("deleted", {}).get(self.cursor_field)
+ if state:
+ params["created_at_min"] = state
+ return params
+
+
+class IncrementalShopifyStream(ShopifyStream, ABC):
+ # Setting the check point interval to the limit of the records output
+ @property
+ def state_checkpoint_interval(self) -> int:
+ return super().limit
+
+ # Setting the default cursor field for all streams
+ cursor_field = "updated_at"
+ deleted_cursor_field = "deleted_at"
+
+ @property
+ def default_state_comparison_value(self) -> Union[int, str]:
+ # certain streams are using `id` field as `cursor_field`, which requires to use `int` type,
+ # but many other use `str` values for this, we determine what to use based on `cursor_field` value
+ return 0 if self.cursor_field == "id" else ""
+
+ def get_updated_state(
+ self, current_stream_state: MutableMapping[str, Any], latest_record: Mapping[str, Any]
+ ) -> MutableMapping[str, Any]:
+ last_record_value = latest_record.get(self.cursor_field) or self.default_state_comparison_value
+ current_state_value = current_stream_state.get(self.cursor_field) or self.default_state_comparison_value
+ return {self.cursor_field: max(last_record_value, current_state_value)}
+
+ @stream_state_cache.cache_stream_state
+ def request_params(
+ self, stream_state: Optional[Mapping[str, Any]] = None, next_page_token: Optional[Mapping[str, Any]] = None, **kwargs
+ ) -> MutableMapping[str, Any]:
+ params = super().request_params(stream_state=stream_state, next_page_token=next_page_token, **kwargs)
+ # If there is a next page token then we should only send pagination-related parameters.
+ if not next_page_token:
+ params["order"] = f"{self.order_field} asc"
+ if stream_state:
+ params[self.filter_field] = stream_state.get(self.cursor_field)
+ return params
+
+ # Parse the `stream_slice` with respect to `stream_state` for `Incremental refresh`
+ # cases where we slice the stream, the endpoints for those classes don't accept any other filtering,
+ # but they provide us with the updated_at field in most cases, so we used that as incremental filtering during the order slicing.
+ def filter_records_newer_than_state(
+ self, stream_state: Optional[Mapping[str, Any]] = None, records_slice: Optional[Iterable[Mapping]] = None
+ ) -> Iterable:
+ # Getting records >= state
+ if stream_state:
+ state_value = stream_state.get(self.cursor_field)
+ for record in records_slice:
+ if self.cursor_field in record:
+ record_value = record.get(self.cursor_field, self.default_state_comparison_value)
+ if record_value:
+ if record_value >= state_value:
+ yield record
+ else:
+ # old entities could have cursor field in place, but set to null
+ self.logger.warning(
+ f"Stream `{self.name}`, Record ID: `{record.get(self.primary_key)}` cursor value is: {record_value}, record is emitted without state comparison"
+ )
+ yield record
+ else:
+ # old entities could miss the cursor field
+ self.logger.warning(
+ f"Stream `{self.name}`, Record ID: `{record.get(self.primary_key)}` missing cursor field: {self.cursor_field}, record is emitted without state comparison"
+ )
+ yield record
+ else:
+ yield from records_slice
+
+
+class IncrementalShopifySubstream(IncrementalShopifyStream):
+ """
+ IncrementalShopifySubstream - provides slicing functionality for streams using parts of data from parent stream.
+ For example:
+ - `Refunds Orders` is the entity of `Orders`,
+ - `OrdersRisks` is the entity of `Orders`,
+ - `DiscountCodes` is the entity of `PriceRules`, etc.
+
+ :: @ parent_stream - defines the parent stream object to read from
+ :: @ slice_key - defines the name of the property in stream slices dict.
+ :: @ nested_record - the name of the field inside of parent stream record. Default is `id`.
+ :: @ nested_record_field_name - the name of the field inside of nested_record.
+ :: @ nested_substream - the name of the nested entity inside of parent stream, helps to reduce the number of
+ API Calls, if present, see `OrderRefunds` stream for more.
+ """
+
+ parent_stream_class: Union[ShopifyStream, IncrementalShopifyStream] = None
+ slice_key: str = None
+ nested_record: str = "id"
+ nested_record_field_name: str = None
+ nested_substream = None
+ nested_substream_list_field_id = None
+
+ @cached_property
+ def parent_stream(self) -> Union[ShopifyStream, IncrementalShopifyStream]:
+ """
+ Returns the instance of parent stream, if the substream has a `parent_stream_class` dependency.
+ """
+ return self.parent_stream_class(self.config) if self.parent_stream_class else None
+
+ def get_updated_state(
+ self, current_stream_state: MutableMapping[str, Any], latest_record: Mapping[str, Any]
+ ) -> MutableMapping[str, Any]:
+ """UPDATING THE STATE OBJECT:
+ Stream: Transactions
+ Parent Stream: Orders
+ Returns:
+ {
+ {...},
+ "transactions": {
+ "created_at": "2022-03-03T03:47:45-08:00",
+ "orders": {
+ "updated_at": "2022-03-03T03:47:46-08:00"
+ }
+ },
+ {...},
+ }
+ """
+ updated_state = super().get_updated_state(current_stream_state, latest_record)
+ # add parent_stream_state to `updated_state`
+ updated_state[self.parent_stream.name] = stream_state_cache.cached_state.get(self.parent_stream.name)
+ return updated_state
+
+ def request_params(self, next_page_token: Optional[Mapping[str, Any]] = None, **kwargs) -> MutableMapping[str, Any]:
+ params = {"limit": self.limit}
+ if next_page_token:
+ params.update(**next_page_token)
+ return params
+
+ def stream_slices(self, stream_state: Optional[Mapping[str, Any]] = None, **kwargs) -> Iterable[Optional[Mapping[str, Any]]]:
+ """
+ Reading the parent stream for slices with structure:
+ EXAMPLE: for given nested_record as `id` of Orders,
+
+ Outputs:
+ [
+ {slice_key: 123},
+ {slice_key: 456},
+ {...},
+ {slice_key: 999
+ ]
+ """
+ sorted_substream_slices = []
+
+ # reading parent nested stream_state from child stream state
+ parent_stream_state = stream_state.get(self.parent_stream.name) if stream_state else {}
+
+ # reading the parent stream
+ for record in self.parent_stream.read_records(stream_state=parent_stream_state, **kwargs):
+ # updating the `stream_state` with the state of it's parent stream
+ # to have the child stream sync independently from the parent stream
+ stream_state_cache.cached_state[self.parent_stream.name] = self.parent_stream.get_updated_state({}, record)
+ # to limit the number of API Calls and reduce the time of data fetch,
+ # we can pull the ready data for child_substream, if nested data is present,
+ # and corresponds to the data of child_substream we need.
+ if self.nested_substream and self.nested_substream_list_field_id:
+ if record.get(self.nested_substream):
+ sorted_substream_slices.extend(
+ [
+ {
+ self.slice_key: sub_record[self.nested_substream_list_field_id],
+ self.cursor_field: record[self.nested_substream][0].get(
+ self.cursor_field, self.default_state_comparison_value
+ ),
+ }
+ for sub_record in record[self.nested_record]
+ ]
+ )
+ elif self.nested_substream:
+ if record.get(self.nested_substream):
+ sorted_substream_slices.append(
+ {
+ self.slice_key: record[self.nested_record],
+ self.cursor_field: record[self.nested_substream][0].get(self.cursor_field, self.default_state_comparison_value),
+ }
+ )
+ else:
+ # avoid checking `deleted` records for substreams, a.k.a `Metafields` streams,
+ # since `deleted` records are not available, thus we avoid HTTP-400 errors.
+ if self.deleted_cursor_field not in record:
+ yield {self.slice_key: record[self.nested_record]}
+
+ # output slice from sorted list to avoid filtering older records
+ if self.nested_substream:
+ if len(sorted_substream_slices) > 0:
+ # sort by cursor_field
+ sorted_substream_slices.sort(key=lambda x: x.get(self.cursor_field))
+ for sorted_slice in sorted_substream_slices:
+ yield {self.slice_key: sorted_slice[self.slice_key]}
+
+ # the stream_state caching is required to avoid the STATE collisions for Substreams
+ @stream_state_cache.cache_stream_state
+ def read_records(
+ self,
+ stream_state: Optional[Mapping[str, Any]] = None,
+ stream_slice: Optional[Mapping[str, Any]] = None,
+ **kwargs,
+ ) -> Iterable[Mapping[str, Any]]:
+ """Reading child streams records for each `id`"""
+
+ slice_data = stream_slice.get(self.slice_key)
+ # sometimes the stream_slice.get(self.slice_key) has the list of records,
+ # to avoid data exposition inside the logs, we should get the data we need correctly out of stream_slice.
+ if isinstance(slice_data, list) and self.nested_record_field_name is not None and len(slice_data) > 0:
+ slice_data = slice_data[0].get(self.nested_record_field_name)
+
+ # reading substream records
+ self.logger.info(f"Reading {self.name} for {self.slice_key}: {slice_data}")
+ records = super().read_records(stream_slice=stream_slice, **kwargs)
+ # get the cached substream state, to avoid state collisions for Incremental Syncs
+ cached_substream_state = stream_state_cache.cached_state.get(self.name, {})
+ # filtering the portion of already emmited substream records using cached state value,
+ # since the actual `metafields` endpoint doesn't support the server-side filtering using query params
+ # thus to avoid the duplicates - we filter the records following the cached state,
+ # which is freezed every time the sync starts using the actual STATE provided,
+ # while the active STATE is updated during the sync and saved as expected, in the end.
+ yield from self.filter_records_newer_than_state(stream_state=cached_substream_state, records_slice=records)
+
+
+class MetafieldShopifySubstream(IncrementalShopifySubstream):
+ slice_key = "id"
+ data_field = "metafields"
+
+ parent_stream_class: Union[ShopifyStream, IncrementalShopifyStream] = None
+
+ def path(self, stream_slice: Optional[Mapping[str, Any]] = None, **kwargs) -> str:
+ object_id = stream_slice[self.slice_key]
+ return f"{self.parent_stream_class.data_field}/{object_id}/{self.data_field}.json"
+
+
+class IncrementalShopifyNestedStream(IncrementalShopifyStream):
+ """
+ IncrementalShopifyNestedStream - provides slicing functionality for streams using parts of data from parent stream.
+
+ For example:
+ - `refunds` is the entity of `order.refunds`,
+ - `fulfillments` is the entity of the `order.fulfillments` which is nested sub-entity
+
+ :: @ parent_stream - defines the parent stream object to read from
+ :: @ mutation_map - defines how the nested record should be populated with additional values,
+ available from parent record.
+ Example:
+ >> mutation_map = {"parent_id": "id"},
+ where `parent_id` is the new field that created for each subrecord available.
+ and `id` is the parent_key named `id`, we take the value from.
+
+ :: @ nested_entity - the name of the nested entity inside of parent stream, helps to reduce the number of
+ API Calls, if present, see `OrderRefunds` or `Fulfillments` streams for more info.
+ """
+
+ data_field = None
+ parent_stream_class: Union[ShopifyStream, IncrementalShopifyStream] = None
+ mutation_map: Mapping[str, Any] = None
+ nested_entity = None
+
+ @cached_property
+ def parent_stream(self) -> object:
+ """
+ Returns the instance of parent stream, if the substream has a `parent_stream_class` dependency.
+ """
+ return self.parent_stream_class(self.config) if self.parent_stream_class else None
+
+ def path(self, **kwargs) -> str:
+ """
+ NOT USED FOR THIS TYPE OF STREAMS.
+ """
+ return ""
+
+ def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]:
+ """
+ NOT USED FOR THIS TYPE OF STREAMS.
+ """
+ return None
+
+ def request_params(self, **kwargs) -> MutableMapping[str, Any]:
+ """
+ NOT USED FOR THIS TYPE OF STREAMS.
+ """
+ return {}
+
+ def get_updated_state(
+ self, current_stream_state: MutableMapping[str, Any], latest_record: Mapping[str, Any]
+ ) -> MutableMapping[str, Any]:
+ """UPDATING THE STATE OBJECT:
+ Stream: Transactions
+ Parent Stream: Orders
+ Returns:
+ {
+ {...},
+ "transactions": {
+ "created_at": "2022-03-03T03:47:45-08:00",
+ "orders": {
+ "updated_at": "2022-03-03T03:47:46-08:00"
+ }
+ },
+ {...},
+ }
+ """
+ updated_state = super().get_updated_state(current_stream_state, latest_record)
+ # add parent_stream_state to `updated_state`
+ updated_state[self.parent_stream.name] = stream_state_cache.cached_state.get(self.parent_stream.name)
+ return updated_state
+
+ def add_parent_id(self, record: Optional[Mapping[str, Any]] = None) -> Mapping[str, Any]:
+ """
+ Adds new field to the record with name `key` based on the `value` key from record.
+ """
+ if self.mutation_map and record:
+ for subrecord in record.get(self.nested_entity, []):
+ for k, v in self.mutation_map.items():
+ subrecord[k] = record.get(v)
+ else:
+ return record
+
+ # the stream_state caching is required to avoid the STATE collisions for Substreams
+ @stream_state_cache.cache_stream_state
+ def stream_slices(self, stream_state: Optional[Mapping[str, Any]] = None, **kwargs) -> Iterable[Optional[Mapping[str, Any]]]:
+ parent_stream_state = stream_state.get(self.parent_stream.name) if stream_state else {}
+ for record in self.parent_stream.read_records(stream_state=parent_stream_state, **kwargs):
+ # updating the `stream_state` with the state of it's parent stream
+ # to have the child stream sync independently from the parent stream
+ stream_state_cache.cached_state[self.parent_stream.name] = self.parent_stream.get_updated_state({}, record)
+ # to limit the number of API Calls and reduce the time of data fetch,
+ # we can pull the ready data for child_substream, if nested data is present,
+ # and corresponds to the data of child_substream we need.
+ if self.nested_entity in record.keys():
+ # add parent_id key, value from mutation_map, if passed.
+ self.add_parent_id(record)
+ # yield nested sub-rcords
+ yield from [{self.nested_entity: sub_record} for sub_record in record.get(self.nested_entity, [])]
+
+ def read_records(self, stream_slice: Optional[Mapping[str, Any]] = None, **kwargs) -> Iterable[Mapping[str, Any]]:
+ # get the cached substream state, to avoid state collisions for Incremental Syncs
+ cached_state = stream_state_cache.cached_state.get(self.name, {})
+ # emitting nested parent entity
+ yield from self.filter_records_newer_than_state(cached_state, self.produce_records(stream_slice.get(self.nested_entity, [])))
+
+
+class IncrementalShopifyStreamWithDeletedEvents(IncrementalShopifyStream):
+ @property
+ @abstractmethod
+ def deleted_events_api_name(self) -> str:
+ """
+ The string value of the Shopify Events Object to pull:
+
+ articles -> Article
+ blogs -> Blog
+ custom_collections -> Collection
+ orders -> Order
+ pages -> Page
+ price_rules -> PriceRule
+ products -> Product
+
+ """
+
+ @property
+ def deleted_events(self) -> ShopifyDeletedEventsStream:
+ """
+ The Events stream instance to fetch the `destroyed` records for specified `deleted_events_api_name`, like: `Product`.
+ See more in `ShopifyDeletedEventsStream` class.
+ """
+ return ShopifyDeletedEventsStream(self.config, self.deleted_events_api_name)
+
+ @property
+ def default_deleted_state_comparison_value(self) -> Union[int, str]:
+ """
+ Set the default STATE comparison value for cases when the deleted record doesn't have it's value.
+ We expect the `deleted_at` cursor field for destroyed records would be always type of String.
+ """
+ return ""
+
+ def get_updated_state(self, current_stream_state: MutableMapping[str, Any], latest_record: Mapping[str, Any]) -> Mapping[str, Any]:
+ """
+ We extend the stream state with `deleted` property to store the `destroyed` records STATE separetely from the Stream State.
+ """
+ state = super().get_updated_state(current_stream_state, latest_record)
+ # add `deleted` property to each stream supports `deleted events`,
+ # to provide the `Incremental` sync mode, for the `Incremental Delete` records.
+ last_deleted_record_value = latest_record.get(self.deleted_cursor_field) or self.default_deleted_state_comparison_value
+ current_deleted_state_value = current_stream_state.get(self.deleted_cursor_field) or self.default_deleted_state_comparison_value
+ state["deleted"] = {self.deleted_cursor_field: max(last_deleted_record_value, current_deleted_state_value)}
+ return state
+
+ def read_records(
+ self,
+ stream_state: Optional[Mapping[str, Any]] = None,
+ stream_slice: Optional[Mapping[str, Any]] = None,
+ **kwargs,
+ ) -> Iterable[Mapping[str, Any]]:
+ """Override to fetch deleted records for supported streams"""
+ # main records stream
+ yield from super().read_records(stream_state=stream_state, stream_slice=stream_slice, **kwargs)
+ # fetch deleted events after the Stream data is pulled
+ yield from self.deleted_events.read_records(stream_state=stream_state, **kwargs)
+
+
+class IncrementalShopifyGraphQlBulkStream(IncrementalShopifyStream):
+ filter_field = "updated_at"
+ cursor_field = "updated_at"
+ data_field = "graphql"
+ http_method = "POST"
+
+ parent_stream_class: Optional[Union[ShopifyStream, IncrementalShopifyStream]] = None
+
+ def __init__(self, config: Dict) -> None:
+ super().__init__(config)
+ # init BULK Query instance, pass `shop_id` from config
+ self.query = self.bulk_query(shop_id=config.get("shop_id"))
+ # define BULK Manager instance
+ self.job_manager: ShopifyBulkManager = ShopifyBulkManager(self._session, f"{self.url_base}/{self.path()}")
+ # define Record Producer instance
+ self.record_producer: ShopifyBulkRecord = ShopifyBulkRecord(self.query)
+
+ @cached_property
+ def parent_stream(self) -> object:
+ """
+ Returns the instance of parent stream, if the substream has a `parent_stream_class` dependency.
+ """
+ return self.parent_stream_class(self.config) if self.parent_stream_class else None
+
+ @property
+ def slice_interval_in_days(self) -> int:
+ """
+ Defines date range per single BULK Job.
+ """
+ return self.config.get("bulk_window_in_days", 30)
+
+ @property
+ @abstractmethod
+ def bulk_query(self) -> ShopifyBulkQuery:
+ """
+ This method property should be defined in the stream class instance,
+ and should be instantiated from the `ShopifyBulkQuery` class.
+ """
+
+ def add_shop_url_field(self, records: Iterable[MutableMapping[str, Any]] = []) -> Iterable[MutableMapping[str, Any]]:
+ # ! Mandatory, add shop_url to the record to make querying easy
+ # more info: https://github.com/airbytehq/airbyte/issues/25110
+ for record in records:
+ if record:
+ record["shop_url"] = self.config["shop"]
+ yield record
+
+ @property
+ def default_state_comparison_value(self) -> Union[int, str]:
+ # certain streams are using `id` field as `cursor_field`, which requires to use `int` type,
+ # but many other use `str` values for this, we determine what to use based on `cursor_field` value
+ return 0 if self.cursor_field == "id" else self.config.get("start_date")
+
+ # CDK OVERIDES
+ @property
+ def availability_strategy(self) -> None:
+ """NOT USED FOR BULK OPERATIONS TO SAVE THE RATE LIMITS AND TIME FOR THE SYNC."""
+ return None
+
+ def request_params(self, **kwargs) -> MutableMapping[str, Any]:
+ """
+ NOT USED FOR SHOPIFY BULK OPERARTIONS.
+ https://shopify.dev/docs/api/usage/bulk-operations/queries#write-a-bulk-operation
+ """
+ return {}
+
+ def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]:
+ """
+ NOT USED FOR SHOPIFY BULK OPERATIONS.
+ https://shopify.dev/docs/api/usage/bulk-operations/queries#write-a-bulk-operation
+ """
+ return None
+
+ def request_body_json(self, stream_slice: Optional[Mapping[str, Any]] = None, **kwargs) -> Mapping[str, Any]:
+ """
+ Override for _send_request CDK method to send HTTP request to Shopify BULK Operatoions.
+ https://shopify.dev/docs/api/usage/bulk-operations/queries#bulk-query-overview
+ """
+ return {"query": ShopifyBulkTemplates.prepare(stream_slice.get("query"))}
+
+ def get_updated_state(
+ self, current_stream_state: MutableMapping[str, Any], latest_record: Mapping[str, Any]
+ ) -> MutableMapping[str, Any]:
+ """UPDATING THE STATE OBJECT:
+ Stream: CustomerAddress
+ Parent Stream: Customers
+ Returns:
+ {
+ "customer_address": {
+ "id": 12345,
+ "customers": {
+ "updated_at": "2022-03-03T03:47:46-08:00"
+ }
+ }
+ }
+ """
+ updated_state = super().get_updated_state(current_stream_state, latest_record)
+ if self.parent_stream_class:
+ # add parent_stream_state to `updated_state`
+ updated_state[self.parent_stream.name] = {self.parent_stream.cursor_field: latest_record.get(self.parent_stream.cursor_field)}
+ return updated_state
+
+ def get_state_value(self, stream_state: Mapping[str, Any] = None) -> Optional[Union[str, int]]:
+ if stream_state:
+ if self.parent_stream_class:
+ # get parent stream state from the stream_state object.
+ parent_state = stream_state.get(self.parent_stream.name, {})
+ if parent_state:
+ return parent_state.get(self.parent_stream.cursor_field, self.default_state_comparison_value)
+ else:
+ # get the stream state, if no `parent_stream_class` was assigned.
+ return stream_state.get(self.cursor_field, self.default_state_comparison_value)
+ else:
+ # for majority of cases we fallback to start_date, otherwise.
+ return self.config.get("start_date")
+
+ @stream_state_cache.cache_stream_state
+ def stream_slices(self, stream_state: Optional[Mapping[str, Any]] = None, **kwargs) -> Iterable[Optional[Mapping[str, Any]]]:
+ if self.filter_field:
+ state = self.get_state_value(stream_state)
+ start = pdm.parse(state)
+ end = pdm.now()
+ while start < end:
+ slice_end = start.add(days=self.slice_interval_in_days)
+ # check end period is less than now() or now() is applied otherwise.
+ slice_end = slice_end if slice_end < end else end
+ # making pre-defined sliced query to pass it directly
+ prepared_query = self.query.get(self.filter_field, start.to_rfc3339_string(), slice_end.to_rfc3339_string())
+ self.logger.info(f"Stream: `{self.name}` requesting BULK Job for period: {start} -- {slice_end}.")
+ yield {"query": prepared_query}
+ start = slice_end
+ else:
+ # for the streams that don't support filtering
+ yield {"query": self.query.get()}
+
+ def process_bulk_results(
+ self, response: requests.Response, stream_state: Optional[Mapping[str, Any]] = None
+ ) -> Iterable[Mapping[str, Any]]:
+ # get results fetched from COMPLETED BULK Job or `None`
+ filename = self.job_manager.job_check(response)
+ # the `filename` could be `None`, meaning there are no data available for the slice period.
+ if filename:
+ # add `shop_url` field to each record produced
+ records = self.add_shop_url_field(
+ # produce records from saved bulk job result
+ self.record_producer.read_file(filename)
+ )
+ yield from self.filter_records_newer_than_state(stream_state, records)
+
+ def parse_response(self, response: requests.Response, **kwargs) -> Iterable[Mapping]:
+ # get the cached substream state, to avoid state collisions for Incremental Syncs
+ stream_state = stream_state_cache.cached_state.get(self.name, {self.cursor_field: self.default_state_comparison_value})
+ yield from self.process_bulk_results(response, stream_state)
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/streams/streams.py b/airbyte-integrations/connectors/source-shopify/source_shopify/streams/streams.py
new file mode 100644
index 000000000000..d528ed0105b2
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/streams/streams.py
@@ -0,0 +1,388 @@
+#
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+#
+
+
+from typing import Any, Iterable, Mapping, MutableMapping, Optional
+
+import requests
+from airbyte_cdk.sources.streams.core import package_name_from_class
+from airbyte_cdk.sources.utils.schema_helpers import ResourceSchemaLoader
+from requests.exceptions import RequestException
+from source_shopify.shopify_graphql.bulk.query import (
+ Collection,
+ CustomerAddresses,
+ DiscountCode,
+ FulfillmentOrder,
+ InventoryItem,
+ InventoryLevel,
+ MetafieldCollection,
+ MetafieldCustomer,
+ MetafieldDraftOrder,
+ MetafieldLocation,
+ MetafieldOrder,
+ MetafieldProduct,
+ MetafieldProductImage,
+ MetafieldProductVariant,
+ Transaction,
+)
+from source_shopify.shopify_graphql.graphql import get_query_products
+from source_shopify.utils import ApiTypeEnum
+from source_shopify.utils import ShopifyRateLimiter as limiter
+
+from .base_streams import (
+ IncrementalShopifyGraphQlBulkStream,
+ IncrementalShopifyNestedStream,
+ IncrementalShopifyStream,
+ IncrementalShopifyStreamWithDeletedEvents,
+ IncrementalShopifySubstream,
+ MetafieldShopifySubstream,
+ ShopifyStream,
+)
+
+
+class Articles(IncrementalShopifyStreamWithDeletedEvents):
+ data_field = "articles"
+ cursor_field = "id"
+ order_field = "id"
+ filter_field = "since_id"
+ deleted_events_api_name = "Article"
+
+
+class MetafieldArticles(MetafieldShopifySubstream):
+ parent_stream_class = Articles
+
+
+class Blogs(IncrementalShopifyStreamWithDeletedEvents):
+ cursor_field = "id"
+ order_field = "id"
+ data_field = "blogs"
+ filter_field = "since_id"
+ deleted_events_api_name = "Blog"
+
+
+class MetafieldBlogs(MetafieldShopifySubstream):
+ parent_stream_class = Blogs
+
+
+class Customers(IncrementalShopifyStream):
+ data_field = "customers"
+
+
+class MetafieldCustomers(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: MetafieldCustomer = MetafieldCustomer
+
+
+class Orders(IncrementalShopifyStreamWithDeletedEvents):
+ data_field = "orders"
+ deleted_events_api_name = "Order"
+
+ def request_params(
+ self, stream_state: Mapping[str, Any] = None, next_page_token: Mapping[str, Any] = None, **kwargs
+ ) -> MutableMapping[str, Any]:
+ params = super().request_params(stream_state=stream_state, next_page_token=next_page_token, **kwargs)
+ if not next_page_token:
+ params["status"] = "any"
+ return params
+
+
+class Disputes(IncrementalShopifyStream):
+ data_field = "disputes"
+ filter_field = "since_id"
+ cursor_field = "id"
+ order_field = "id"
+
+ def path(self, **kwargs) -> str:
+ return f"shopify_payments/{self.data_field}.json"
+
+
+class MetafieldOrders(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: MetafieldOrder = MetafieldOrder
+
+
+class DraftOrders(IncrementalShopifyStream):
+ data_field = "draft_orders"
+
+
+class MetafieldDraftOrders(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: MetafieldDraftOrder = MetafieldDraftOrder
+
+
+class Products(IncrementalShopifyStreamWithDeletedEvents):
+ use_cache = True
+ data_field = "products"
+ deleted_events_api_name = "Product"
+
+
+class ProductsGraphQl(IncrementalShopifyStream):
+ filter_field = "updatedAt"
+ cursor_field = "updatedAt"
+ data_field = "graphql"
+ http_method = "POST"
+
+ def request_params(
+ self,
+ stream_state: Optional[Mapping[str, Any]] = None,
+ next_page_token: Optional[Mapping[str, Any]] = None,
+ **kwargs,
+ ) -> MutableMapping[str, Any]:
+ return {}
+
+ def request_body_json(
+ self,
+ stream_state: Mapping[str, Any],
+ stream_slice: Optional[Mapping[str, Any]] = None,
+ next_page_token: Optional[Mapping[str, Any]] = None,
+ ) -> Optional[Mapping]:
+ state_value = stream_state.get(self.filter_field)
+ if state_value:
+ filter_value = state_value
+ else:
+ filter_value = self.default_filter_field_value
+ query = get_query_products(
+ first=self.limit, filter_field=self.filter_field, filter_value=filter_value, next_page_token=next_page_token
+ )
+ return {"query": query}
+
+ @staticmethod
+ def next_page_token(response: requests.Response) -> Optional[Mapping[str, Any]]:
+ page_info = response.json()["data"]["products"]["pageInfo"]
+ has_next_page = page_info["hasNextPage"]
+ if has_next_page:
+ return page_info["endCursor"]
+ else:
+ return None
+
+ @limiter.balance_rate_limit(api_type=ApiTypeEnum.graphql.value)
+ def parse_response(self, response: requests.Response, **kwargs) -> Iterable[Mapping]:
+ if response.status_code is requests.codes.OK:
+ try:
+ json_response = response.json()["data"]["products"]["nodes"]
+ yield from self.produce_records(json_response)
+ except RequestException as e:
+ self.logger.warning(f"Unexpected error in `parse_ersponse`: {e}, the actual response data: {response.text}")
+
+
+class MetafieldProducts(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: MetafieldProduct = MetafieldProduct
+
+
+class ProductImages(IncrementalShopifyNestedStream):
+ parent_stream_class = Products
+ nested_entity = "images"
+ # add `product_id` to each nested subrecord
+ mutation_map = {"product_id": "id"}
+
+
+class MetafieldProductImages(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: MetafieldProductImage = MetafieldProductImage
+
+
+class ProductVariants(IncrementalShopifyNestedStream):
+ parent_stream_class = Products
+ nested_entity = "variants"
+ # add `product_id` to each nested subrecord
+ mutation_map = {"product_id": "id"}
+
+
+class MetafieldProductVariants(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: MetafieldProductVariant = MetafieldProductVariant
+
+
+class AbandonedCheckouts(IncrementalShopifyStream):
+ data_field = "checkouts"
+
+ def request_params(
+ self, stream_state: Mapping[str, Any] = None, next_page_token: Mapping[str, Any] = None, **kwargs
+ ) -> MutableMapping[str, Any]:
+ params = super().request_params(stream_state=stream_state, next_page_token=next_page_token, **kwargs)
+ # If there is a next page token then we should only send pagination-related parameters.
+ if not next_page_token:
+ params["status"] = "any"
+ return params
+
+
+class CustomCollections(IncrementalShopifyStreamWithDeletedEvents):
+ data_field = "custom_collections"
+ deleted_events_api_name = "Collection"
+
+
+class SmartCollections(IncrementalShopifyStream):
+ data_field = "smart_collections"
+
+
+class MetafieldSmartCollections(MetafieldShopifySubstream):
+ parent_stream_class = SmartCollections
+
+
+class Collects(IncrementalShopifyStream):
+ """
+ Collects stream does not support Incremental Refresh based on datetime fields, only `since_id` is supported:
+ https://shopify.dev/docs/admin-api/rest/reference/products/collect
+
+ The Collect stream is the link between Products and Collections, if the Collection is created for Products,
+ the `collect` record is created, it's reasonable to Full Refresh all collects. As for Incremental refresh -
+ we would use the since_id specificaly for this stream.
+ """
+
+ data_field = "collects"
+ cursor_field = "id"
+ order_field = "id"
+ filter_field = "since_id"
+
+
+class Collections(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: Collection = Collection
+
+
+class MetafieldCollections(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: MetafieldCollection = MetafieldCollection
+
+
+class BalanceTransactions(IncrementalShopifyStream):
+
+ """
+ PaymentsTransactions stream does not support Incremental Refresh based on datetime fields, only `since_id` is supported:
+ https://shopify.dev/api/admin-rest/2021-07/resources/transactions
+ """
+
+ data_field = "transactions"
+ cursor_field = "id"
+ order_field = "id"
+ filter_field = "since_id"
+
+ def path(self, **kwargs) -> str:
+ return f"shopify_payments/balance/{self.data_field}.json"
+
+
+class OrderRefunds(IncrementalShopifyNestedStream):
+ parent_stream_class = Orders
+ # override default cursor field
+ cursor_field = "created_at"
+ nested_entity = "refunds"
+
+
+class OrderRisks(IncrementalShopifySubstream):
+ parent_stream_class = Orders
+ slice_key = "order_id"
+ data_field = "risks"
+ cursor_field = "id"
+
+ def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
+ order_id = stream_slice["order_id"]
+ return f"orders/{order_id}/{self.data_field}.json"
+
+
+class Transactions(IncrementalShopifySubstream):
+ parent_stream_class = Orders
+ slice_key = "order_id"
+ data_field = "transactions"
+ cursor_field = "created_at"
+
+ def path(self, stream_slice: Mapping[str, Any] = None, **kwargs) -> str:
+ order_id = stream_slice["order_id"]
+ return f"orders/{order_id}/{self.data_field}.json"
+
+
+class TransactionsGraphql(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: Transaction = Transaction
+ cursor_field = "created_at"
+
+ @property
+ def name(self) -> str:
+ # override default name. This stream is essentially the same as `Transactions` stream, but it's using GraphQL API, which does not include the user_id field
+ return "transactions"
+
+ def get_json_schema(self) -> Mapping[str, Any]:
+ """
+ This stream has the same schema as `Transactions` stream, except of:
+ - fields: [ `device_id, source_name, user_id, location_id` ]
+
+ Specifically:
+ - `user_id` field requires `Shopify Plus` / be authorised via `Financialy Embedded App`.
+ - additional `read_users` scope is required https://shopify.dev/docs/api/usage/access-scopes#authenticated-access-scopes
+ """
+ return ResourceSchemaLoader(package_name_from_class(Transactions)).get_schema("transactions")
+
+
+class TenderTransactions(IncrementalShopifyStream):
+ data_field = "tender_transactions"
+ cursor_field = "processed_at"
+ filter_field = "processed_at_min"
+
+
+class Pages(IncrementalShopifyStreamWithDeletedEvents):
+ data_field = "pages"
+ deleted_events_api_name = "Page"
+
+
+class MetafieldPages(MetafieldShopifySubstream):
+ parent_stream_class = Pages
+
+
+class PriceRules(IncrementalShopifyStreamWithDeletedEvents):
+ data_field = "price_rules"
+ deleted_events_api_name = "PriceRule"
+
+
+class DiscountCodes(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: DiscountCode = DiscountCode
+
+
+class Locations(ShopifyStream):
+ """
+ The location API does not support any form of filtering.
+ https://shopify.dev/api/admin-rest/2021-07/resources/location
+
+ Therefore, only FULL_REFRESH mode is supported.
+ """
+
+ data_field = "locations"
+
+
+class MetafieldLocations(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: MetafieldLocation = MetafieldLocation
+ filter_field = None
+
+
+class InventoryLevels(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: InventoryLevel = InventoryLevel
+
+
+class InventoryItems(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: InventoryItem = InventoryItem
+
+
+class FulfillmentOrders(IncrementalShopifyGraphQlBulkStream):
+ bulk_query: FulfillmentOrder = FulfillmentOrder
+
+
+class Fulfillments(IncrementalShopifyNestedStream):
+ parent_stream_class = Orders
+ nested_entity = "fulfillments"
+
+
+class Shop(ShopifyStream):
+ data_field = "shop"
+
+
+class MetafieldShops(IncrementalShopifyStream):
+ data_field = "metafields"
+
+
+class CustomerSavedSearch(IncrementalShopifyStream):
+ api_version = "2022-01"
+ cursor_field = "id"
+ order_field = "id"
+ data_field = "customer_saved_searches"
+ filter_field = "since_id"
+
+
+class CustomerAddress(IncrementalShopifyGraphQlBulkStream):
+ parent_stream_class = Customers
+ bulk_query: CustomerAddresses = CustomerAddresses
+ cursor_field = "id"
+
+
+class Countries(ShopifyStream):
+ data_field = "countries"
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/transform.py b/airbyte-integrations/connectors/source-shopify/source_shopify/transform.py
index 87b1e82b3107..496e527b09e4 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/transform.py
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/transform.py
@@ -41,6 +41,9 @@ def _get_json_types(value_type: Any) -> List[str]:
type(None): [
"null",
],
+ # overflow, when we need to read nested entity from the parent record,
+ # that has been already transformed.
+ Decimal: ["number"],
}
return json_types.get(value_type)
diff --git a/airbyte-integrations/connectors/source-shopify/source_shopify/utils.py b/airbyte-integrations/connectors/source-shopify/source_shopify/utils.py
index 4eab2e65cd2f..46cb2c18b5f6 100644
--- a/airbyte-integrations/connectors/source-shopify/source_shopify/utils.py
+++ b/airbyte-integrations/connectors/source-shopify/source_shopify/utils.py
@@ -6,72 +6,11 @@
import enum
from functools import wraps
from time import sleep
-from typing import Any, Dict, List, Mapping, Optional
+from typing import Any, Callable, Dict, List, Mapping, Optional
import requests
-
-SCOPES_MAPPING = {
- "read_customers": [
- "Customers",
- "MetafieldCustomers",
- "CustomerSavedSearch",
- "CustomerAddress",
- ],
- "read_orders": [
- "Orders",
- "AbandonedCheckouts",
- "TenderTransactions",
- "Transactions",
- "Fulfillments",
- "OrderRefunds",
- "OrderRisks",
- "MetafieldOrders",
- ],
- "read_draft_orders": [
- "DraftOrders",
- "MetafieldDraftOrders",
- ],
- "read_products": [
- "Products",
- "ProductsGraphQl",
- "MetafieldProducts",
- "ProductImages",
- "MetafieldProductImages",
- "MetafieldProductVariants",
- "CustomCollections",
- "Collects",
- "Collections",
- "ProductVariants",
- "MetafieldCollections",
- "SmartCollections",
- "MetafieldSmartCollections",
- ],
- "read_content": [
- "Pages",
- "MetafieldPages",
- ],
- "read_price_rules": ["PriceRules"],
- "read_discounts": ["DiscountCodes"],
- "read_locations": [
- "Locations",
- "MetafieldLocations",
- ],
- "read_inventory": [
- "InventoryItems",
- "InventoryLevels",
- ],
- "read_merchant_managed_fulfillment_orders": ["FulfillmentOrders"],
- "read_shopify_payments_payouts": [
- "BalanceTransactions",
- "Disputes",
- ],
- "read_online_store_pages": [
- "Articles",
- "MetafieldArticles",
- "Blogs",
- "MetafieldBlogs",
- ],
-}
+from airbyte_cdk.utils import AirbyteTracedException
+from airbyte_protocol.models import FailureType
class ShopifyNonRetryableErrors:
@@ -88,38 +27,38 @@ def __new__(self, stream: str) -> Mapping[str, Any]:
}
-class ShopifyAccessScopesError(Exception):
+class ShopifyAccessScopesError(AirbyteTracedException):
"""Raises the error if authenticated user doesn't have access to verify the grantted scopes."""
help_url = "https://shopify.dev/docs/api/usage/access-scopes#authenticated-access-scopes"
- def __init__(self, response):
- super().__init__(
- f"Reason: Scopes are not available, make sure you're using the correct `Shopify Store` name. Actual response: {response}. More info about: {self.help_url}"
- )
+ def __init__(self, response, **kwargs) -> None:
+ self.message = f"Reason: Scopes are not available, make sure you're using the correct `Shopify Store` name. Actual response: {response}. More info about: {self.help_url}"
+ super().__init__(internal_message=self.message, failure_type=FailureType.config_error, **kwargs)
-class ShopifyBadJsonError(ShopifyAccessScopesError):
+class ShopifyBadJsonError(AirbyteTracedException):
"""Raises the error when Shopify replies with broken json for `access_scopes` request"""
- def __init__(self, message):
- super().__init__(f"Reason: Bad JSON Response from the Shopify server. Details: {message}.")
+ def __init__(self, message, **kwargs) -> None:
+ self.message = f"Reason: Bad JSON Response from the Shopify server. Details: {message}."
+ super().__init__(internal_message=self.message, failure_type=FailureType.config_error, **kwargs)
-class ShopifyConnectionError(ShopifyAccessScopesError):
- """Raises the error when Shopify replies with broken connection error for `access_scopes` request"""
+class ShopifyConnectionError(AirbyteTracedException):
+ """Raises the error when Shopify resources couldn't be accessed because of the ConnectionError occured (100-x)"""
- def __init__(self, details):
- super().__init__(f"Invalid `Shopify Store` name used or `host` couldn't be verified by Shopify. Details: {details}")
+ def __init__(self, details, **kwargs) -> None:
+ self.message = f"Invalid `Shopify Store` name used or `host` couldn't be verified by Shopify. Details: {details}"
+ super().__init__(internal_message=self.message, failure_type=FailureType.config_error, **kwargs)
-class ShopifyWrongShopNameError(Exception):
+class ShopifyWrongShopNameError(AirbyteTracedException):
"""Raises the error when `Shopify Store` name is incorrect or couldn't be verified by the Shopify"""
- def __init__(self, url):
- super().__init__(
- f"Reason: The `Shopify Store` name is invalid or missing for `input configuration`, make sure it's valid. Details: {url}"
- )
+ def __init__(self, url, **kwargs) -> None:
+ self.message = f"The `Shopify Store` name is invalid or missing for `input configuration`, make sure it's valid. Details: {url}"
+ super().__init__(internal_message=self.message, failure_type=FailureType.config_error, **kwargs)
class UnrecognisedApiType(Exception):
@@ -175,7 +114,7 @@ def _convert_load_to_time(load: Optional[float], threshold: float) -> float:
return wait_time
@staticmethod
- def get_rest_api_wait_time(*args, threshold: float = 0.9, rate_limit_header: str = "X-Shopify-Shop-Api-Call-Limit"):
+ def get_rest_api_wait_time(*args, threshold: float = 0.9, rate_limit_header: str = "X-Shopify-Shop-Api-Call-Limit") -> float:
"""
To avoid reaching Shopify REST API Rate Limits, use the "X-Shopify-Shop-Api-Call-Limit" header value,
to determine the current rate limits and load and handle wait_time based on load %.
@@ -206,7 +145,7 @@ def get_rest_api_wait_time(*args, threshold: float = 0.9, rate_limit_header: str
return wait_time
@staticmethod
- def get_graphql_api_wait_time(*args, threshold: float = 0.9):
+ def get_graphql_api_wait_time(*args, threshold: float = 0.9) -> float:
"""
To avoid reaching Shopify Graphql API Rate Limits, use the extensions dict in the response.
@@ -254,7 +193,7 @@ def get_graphql_api_wait_time(*args, threshold: float = 0.9):
return wait_time
@staticmethod
- def wait_time(wait_time: float):
+ def wait_time(wait_time: float) -> None:
return sleep(wait_time)
@staticmethod
@@ -262,15 +201,15 @@ def balance_rate_limit(
threshold: float = 0.9,
rate_limit_header: str = "X-Shopify-Shop-Api-Call-Limit",
api_type: ApiTypeEnum = ApiTypeEnum.rest.value,
- ):
+ ) -> Callable[..., Any]:
"""
The decorator function.
Adjust `threshold`, `rate_limit_header` and `api_type` if needed.
"""
- def decorator(func):
+ def decorator(func) -> Callable[..., Any]:
@wraps(func)
- def wrapper_balance_rate_limit(*args, **kwargs):
+ def wrapper_balance_rate_limit(*args, **kwargs) -> Any:
if api_type == ApiTypeEnum.rest.value:
ShopifyRateLimiter.wait_time(
ShopifyRateLimiter.get_rest_api_wait_time(*args, threshold=threshold, rate_limit_header=rate_limit_header)
@@ -310,7 +249,7 @@ def stream_state_to_tmp(*args, state_object: Dict = cached_state, **kwargs) -> D
# Map the input *args, the sequece should be always keeped up to the input function
# change the mapping if needed
stream: object = args[0] # the self instance of the stream
- current_stream_state: Dict = kwargs["stream_state"] or {}
+ current_stream_state: Dict = kwargs.get("stream_state") or {}
# get the current tmp_state_value
tmp_stream_state_value = state_object.get(stream.name, {}).get(stream.cursor_field, "")
# Save the curent stream value for current sync, if present.
@@ -324,9 +263,9 @@ def stream_state_to_tmp(*args, state_object: Dict = cached_state, **kwargs) -> D
return state_object
- def cache_stream_state(func):
+ def cache_stream_state(func) -> Callable[..., Any]:
@wraps(func)
- def decorator(*args, **kwargs):
+ def decorator(*args, **kwargs) -> Any:
EagerlyCachedStreamState.stream_state_to_tmp(*args, **kwargs)
return func(*args, **kwargs)
diff --git a/airbyte-integrations/connectors/source-shopify/unit_tests/conftest.py b/airbyte-integrations/connectors/source-shopify/unit_tests/conftest.py
index e8e250524894..6b7d9e7cb0e4 100644
--- a/airbyte-integrations/connectors/source-shopify/unit_tests/conftest.py
+++ b/airbyte-integrations/connectors/source-shopify/unit_tests/conftest.py
@@ -3,6 +3,8 @@
#
import os
+from json import dumps
+from typing import Any
import pytest
import requests
@@ -26,6 +28,7 @@ def basic_config():
def auth_config():
return {
"shop": "test_shop",
+ "start_date": "2023-01-01",
"credentials": {"auth_method": "api_password", "api_password": "api_password"},
"authenticator": None,
}
@@ -55,3 +58,800 @@ def response_with_bad_json():
response.status_code = 200
response._content = bad_json_str.encode("utf-8")
return response
+
+
+@pytest.fixture
+def bulk_error() -> dict[str, Any]:
+ return {
+ "data": {
+ "bulkOperationRunQuery": {
+ "bulkOperation": None,
+ "userErrors": [
+ {
+ "field": "some_field",
+ "message": "something wrong with the requested field.",
+ },
+ ],
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 10,
+ "actualQueryCost": 10,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 990,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_unknown_error() -> dict[str, Any]:
+ return {
+ "errors": [
+ {
+ "message": "something wrong with the job",
+ },
+ ],
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 10,
+ "actualQueryCost": 10,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 990,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_no_errors() -> dict[str, Any]:
+ return {}
+
+
+@pytest.fixture
+def bulk_error_with_concurrent_job():
+ return {
+ "data": {
+ "bulkOperationRunQuery": {
+ "bulkOperation": None,
+ "userErrors": [
+ {
+ "field": None,
+ "message": "",
+ },
+ {
+ "field": None,
+ "message": "A bulk query operation for this app and shop is already in progress: gid://shopify/BulkOperation/4046676525245.",
+ },
+ ],
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 10,
+ "actualQueryCost": 10,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 990,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_successful_response():
+ return {
+ "data": {
+ "bulkOperationRunQuery": {
+ "bulkOperation": {
+ "id": "gid://shopify/BulkOperation/4046733967549",
+ "status": "CREATED",
+ },
+ "userErrors": [],
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 10,
+ "actualQueryCost": 10,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 990,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_successful_response_with_errors():
+ return {
+ "data": {
+ "node": {
+ "id": "gid://shopify/BulkOperation/4046733967549",
+ "status": "RUNNING",
+ },
+ "bulkOperationRunQuery": {
+ "userErrors": [
+ {
+ "message": "something wrong with the job",
+ },
+ ],
+ },
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 10,
+ "actualQueryCost": 10,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 990,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_successful_response_with_no_id():
+ return {
+ "data": {
+ "bulkOperationRunQuery": {
+ "bulkOperation": {
+ "status": "RUNNING",
+ },
+ "userErrors": [],
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 10,
+ "actualQueryCost": 10,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 990,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_successful_completed_response():
+ return {
+ "data": {
+ "bulkOperationRunQuery": {
+ "bulkOperation": {
+ "id": "gid://shopify/BulkOperation/4046733967549",
+ "status": "CREATED",
+ "url": '"https://some_url/response-content-disposition=attachment;+filename="bulk-123456789.jsonl";+filename*=UTF-8'
+ 'bulk-4047416819901.jsonl&response-content-type=application/jsonl"',
+ },
+ "userErrors": [],
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 10,
+ "actualQueryCost": 10,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 990,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_job_created_response():
+ return {
+ "data": {
+ "node": {
+ "id": "gid://shopify/BulkOperation/4046733967549",
+ "status": "CREATED",
+ "userErrors": [],
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 10,
+ "actualQueryCost": 10,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 990,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_job_completed_response():
+ return {
+ "data": {
+ "node": {
+ "id": "gid://shopify/BulkOperation/4047052112061",
+ "status": "COMPLETED",
+ "errorCode": None,
+ "objectCount": "0",
+ "fileSize": None,
+ "url": 'https://some_url?response-content-disposition=attachment;+filename="bulk-123456789.jsonl";+filename*=UTF-8'
+ "bulk-123456789.jsonl&response-content-type=application/jsonl",
+ "partialDataUrl": None,
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 1,
+ "actualQueryCost": 1,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 999,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_job_failed_response():
+ return {
+ "data": {
+ "node": {
+ "id": "gid://shopify/BulkOperation/4047052112061",
+ "status": "FAILED",
+ "errorCode": None,
+ "objectCount": "0",
+ "fileSize": None,
+ "url": None,
+ "partialDataUrl": None,
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 1,
+ "actualQueryCost": 1,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 999,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_job_timeout_response():
+ return {
+ "data": {
+ "node": {
+ "id": "gid://shopify/BulkOperation/4047052112061",
+ "status": "TIMEOUT",
+ "errorCode": None,
+ "objectCount": "0",
+ "fileSize": None,
+ "url": None,
+ "partialDataUrl": None,
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 1,
+ "actualQueryCost": 1,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 999,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_job_running_response():
+ return {
+ "data": {
+ "node": {
+ "id": "gid://shopify/BulkOperation/4047052112061",
+ "status": "RUNNING",
+ "errorCode": None,
+ "objectCount": "0",
+ "fileSize": None,
+ "url": None,
+ "partialDataUrl": None,
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 1,
+ "actualQueryCost": 1,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 999,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_job_running_response_without_id():
+ return {
+ "data": {
+ "node": {
+ # "id": "gid://shopify/BulkOperation/4047052112061",
+ "status": "RUNNING",
+ "errorCode": None,
+ "objectCount": "0",
+ "fileSize": None,
+ "url": None,
+ "partialDataUrl": None,
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 1,
+ "actualQueryCost": 1,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 999,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_job_access_denied_response():
+ return {
+ "data": {
+ "node": {
+ "id": "gid://shopify/BulkOperation/4047052112061",
+ "status": "ACCESS_DENIED",
+ "errorCode": None,
+ "objectCount": "0",
+ "fileSize": None,
+ "url": None,
+ "partialDataUrl": None,
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 1,
+ "actualQueryCost": 1,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 999,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def bulk_job_unknown_status_response():
+ return {
+ "data": {
+ "node": {
+ "id": "gid://shopify/BulkOperation/4047052112061",
+ "status": None,
+ "errorCode": None,
+ "objectCount": "0",
+ "fileSize": None,
+ "url": None,
+ "partialDataUrl": None,
+ }
+ },
+ "extensions": {
+ "cost": {
+ "requestedQueryCost": 1,
+ "actualQueryCost": 1,
+ "throttleStatus": {
+ "maximumAvailable": 1000.0,
+ "currentlyAvailable": 999,
+ "restoreRate": 50.0,
+ },
+ }
+ },
+ }
+
+
+@pytest.fixture
+def metafield_jsonl_content_example():
+ return (
+ dumps(
+ {
+ "__typename": "Metafield",
+ "id": "gid://shopify/Metafield/123",
+ "__parentId": "gid://shopify/Order/1234567",
+ "createdAt": "2023-01-01T01:01:01Z",
+ "updatedAt": "2023-01-01T01:01:01Z",
+ }
+ )
+ + "\n"
+ )
+
+
+@pytest.fixture
+def filfillment_order_jsonl_content_example():
+ return """{"__typename":"Order","id":"gid:\/\/shopify\/Order\/1"}
+{"__typename":"FulfillmentOrder","id":"gid:\/\/shopify\/FulfillmentOrder\/2","assignedLocation":{"address1":"Test","address2":null,"city":"Test","countryCode":"Test","name":"Test","phone":"","province":null,"zip":"00000","location":{"locationId":"gid:\/\/shopify\/Location\/123"}},"destination":{"id":"gid:\/\/shopify\/Destination\/777"},"deliveryMethod":{"id":"gid:\/\/shopify\/DeliveryMethod\/123","methodType":"SHIPPING","minDeliveryDateTime":"2023-04-13T12:00:00Z","maxDeliveryDateTime":"2023-04-13T12:00:00Z"},"fulfillAt":"2023-04-13T12:00:00Z","fulfillBy":null,"internationalDuties":null,"fulfillmentHolds":[{}],"createdAt":"2023-04-13T12:09:45Z","updatedAt":"2023-04-13T12:09:46Z","requestStatus":"UNSUBMITTED","status":"CLOSED","supportedActions":[{}],"__parentId":"gid:\/\/shopify\/Order\/1"}
+{"__typename":"FulfillmentOrderLineItem","id":"gid:\/\/shopify\/FulfillmentOrderLineItem\/3","inventoryItemId":"gid:\/\/shopify\/InventoryItem\/33","lineItem":{"lineItemId":"gid:\/\/shopify\/LineItem\/31","fulfillableQuantity":0,"quantity":1,"variant":{"variantId":"gid:\/\/shopify\/ProductVariant\/333"}},"__parentId":"gid:\/\/shopify\/FulfillmentOrder\/2"}
+{"__typename":"FulfillmentOrderMerchantRequest","id":"gid:\/\/shopify\/FulfillmentOrderMerchantRequest\/333","message":null,"kind":"FULFILLMENT_REQUEST","requestOptions":{"notify_customer":true},"__parentId":"gid:\/\/shopify\/FulfillmentOrder\/2"}\n"""
+
+
+@pytest.fixture
+def inventory_items_jsonl_content_example():
+ return """{"__typename":"InventoryItem","id":"gid:\/\/shopify\/InventoryItem\/44871665713341","unitCost":null,"countryCodeOfOrigin":null,"harmonizedSystemCode":null,"provinceCodeOfOrigin":null,"updatedAt":"2023-04-14T10:29:27Z","createdAt":"2023-04-14T10:29:27Z","sku":"","tracked":true,"requiresShipping":false}
+{"__typename":"InventoryItem","id":"gid:\/\/shopify\/InventoryItem\/45419395743933","unitCost":{"cost":"29.0"},"countryCodeOfOrigin":"UA","harmonizedSystemCode":"330510","provinceCodeOfOrigin":null,"updatedAt":"2023-12-11T10:37:41Z","createdAt":"2023-12-11T10:37:41Z","sku":"123","tracked":true,"requiresShipping":true}\n"""
+
+
+@pytest.fixture
+def customer_address_jsonl_content_example():
+ return """{"__typename":"Customer","id":"gid:\/\/shopify\/Customer\/123","defaultAddress":{"id":"gid:\/\/shopify\/MailingAddress\/123?model_name=CustomerAddress"},"addresses":[{"address1":"My Best Accent","address2":"","city":"Fair Lawn","country":"United States","countryCode":"US","company":"Test Company","firstName":"New Test","id":"gid:\/\/shopify\/MailingAddress\/123?model_name=CustomerAddress","lastName":"Customer","name":"New Test Customer","phone":"","province":"New Jersey","provinceCode":"NJ","zip":"07410"}],"updatedAt":"2023-04-24T13:53:48Z"}
+{"__typename":"Customer","id":"gid:\/\/shopify\/Customer\/456","defaultAddress":{"id":"gid:\/\/shopify\/MailingAddress\/456?model_name=CustomerAddress"},"addresses":[{"address1":null,"address2":null,"city":null,"country":null,"countryCode":null,"company":null,"firstName":"MArcos","id":"gid:\/\/shopify\/MailingAddress\/456?model_name=CustomerAddress","lastName":"Millnitz","name":"MArcos Millnitz","phone":null,"province":null,"provinceCode":null,"zip":null}],"updatedAt":"2023-07-11T20:07:45Z"}\n"""
+
+
+@pytest.fixture
+def inventory_levels_jsonl_content_example():
+ return """{"__typename":"Location","id":"gid:\/\/shopify\/Location\/63590301885"}
+{"__typename":"InventoryLevel","id":"gid:\/\/shopify\/InventoryLevel\/97912455357?inventory_item_id=42185200631997","available":15,"item":{"inventory_item_id":"gid:\/\/shopify\/InventoryItem\/42185200631997"},"updatedAt":"2023-04-13T12:00:55Z","__parentId":"gid:\/\/shopify\/Location\/63590301885"}
+{"__typename":"InventoryLevel","id":"gid:\/\/shopify\/InventoryLevel\/97912455357?inventory_item_id=42185218719933","available":8,"item":{"inventory_item_id":"gid:\/\/shopify\/InventoryItem\/42185218719933"},"updatedAt":"2023-04-13T12:09:45Z","__parentId":"gid:\/\/shopify\/Location\/63590301885"}\n"""
+
+
+@pytest.fixture
+def discount_codes_jsonl_content_example():
+ return """{"__typename":"DiscountCodeNode","id":"gid:\/\/shopify\/DiscountCodeNode\/945205379261","codeDiscount":{"updatedAt":"2023-12-07T11:40:44Z","createdAt":"2021-07-08T12:40:37Z","summary":"Free shipping on all products • Minimum purchase of $1.00 • For all countries","discountType":"SHIPPING"}}
+{"__typename":"DiscountRedeemCode","usageCount":0,"code":"TEST","id":"gid:\/\/shopify\/DiscountRedeemCode\/11545139282109","__parentId":"gid:\/\/shopify\/DiscountCodeNode\/945205379261"}
+{"__typename":"DiscountRedeemCode","usageCount":0,"code":"TEST2","id":"gid:\/\/shopify\/DiscountRedeemCode\/13175793582269","__parentId":"gid:\/\/shopify\/DiscountCodeNode\/945205379261"}\n"""
+
+
+@pytest.fixture
+def collections_jsonl_content_example():
+ return """{"__typename":"Collection","id":"gid:\/\/shopify\/Collection\/270889287869","handle":"frontpage","title":"Home page","updatedAt":"2023-09-05T14:06:59Z","bodyHtml":"updated_mon_24.04.2023","sortOrder":"BEST_SELLING","templateSuffix":"","productsCount":1}
+{"__typename":"CollectionPublication","publishedAt":"2021-06-23T01:00:25Z","__parentId":"gid:\/\/shopify\/Collection\/270889287869"}
+{"__typename":"CollectionPublication","publishedAt":"2021-08-18T09:39:34Z","__parentId":"gid:\/\/shopify\/Collection\/270889287869"}
+{"__typename":"CollectionPublication","publishedAt":"2023-04-20T11:12:24Z","__parentId":"gid:\/\/shopify\/Collection\/270889287869"}
+{"__typename":"Collection","id":"gid:\/\/shopify\/Collection\/273278566589","handle":"test-collection","title":"Test Collection","updatedAt":"2023-09-05T14:12:04Z","bodyHtml":"updated_mon_24.04.2023","sortOrder":"BEST_SELLING","templateSuffix":"","productsCount":26}
+{"__typename":"CollectionPublication","publishedAt":"2021-07-19T14:02:54Z","__parentId":"gid:\/\/shopify\/Collection\/273278566589"}
+{"__typename":"CollectionPublication","publishedAt":"2021-08-18T09:39:34Z","__parentId":"gid:\/\/shopify\/Collection\/273278566589"}
+{"__typename":"CollectionPublication","publishedAt":"2023-04-20T11:12:24Z","__parentId":"gid:\/\/shopify\/Collection\/273278566589"}\n"""
+
+
+@pytest.fixture
+def transactions_jsonl_content_example():
+ return (
+ dumps(
+ {
+ "__typename": "Order",
+ "id": "gid://shopify/Order/1",
+ "currency": "USD",
+ "transactions": [
+ {
+ "id": "gid://shopify/OrderTransaction/1",
+ "errorCode": None,
+ "parentTransaction": {"parentId": "gid://shopify/ParentOrderTransaction/0"},
+ "test": True,
+ "kind": "SALE",
+ "amount": "102.00",
+ "receipt": '{"paid_amount":"102.00"}',
+ "gateway": "test",
+ "authorization": "1234",
+ "createdAt": "2030-07-02T07:51:49Z",
+ "status": "SUCCESS",
+ "processedAt": "2030-07-02T07:51:49Z",
+ "totalUnsettledSet": {
+ "presentmentMoney": {"amount": "0.0", "currency": "USD"},
+ "shopMoney": {"amount": "0.0", "currency": "USD"},
+ },
+ "paymentId": "some_payment_id.1",
+ "paymentDetails": {
+ "avsResultCode": None,
+ "cvvResultCode": None,
+ "creditCardBin": "1",
+ "creditCardCompany": "Test",
+ "creditCardNumber": "•••• •••• •••• 1",
+ "creditCardName": "Test Gateway",
+ "creditCardWallet": None,
+ "creditCardExpirationYear": 2023,
+ "creditCardExpirationMonth": 11,
+ },
+ }
+ ],
+ }
+ )
+ + "\n"
+ )
+
+
+@pytest.fixture
+def metafield_parse_response_expected_result():
+ return {
+ "id": 123,
+ "admin_graphql_api_id": "gid://shopify/Metafield/123",
+ "owner_id": 1234567,
+ "owner_resource": "order",
+ "shop_url": "test_shop",
+ "created_at": "2023-01-01T01:01:01+00:00",
+ "updated_at": "2023-01-01T01:01:01+00:00",
+ }
+
+
+@pytest.fixture
+def fulfillment_orders_response_expected_result():
+ return {
+ "id": 2,
+ "assigned_location": {
+ "address1": "Test",
+ "address2": None,
+ "city": "Test",
+ "country_code": "Test",
+ "name": "Test",
+ "phone": "",
+ "province": None,
+ "zip": "00000",
+ "location_id": 123,
+ },
+ "destination": {
+ "id": 777,
+ },
+ "delivery_method": {
+ "id": 123,
+ "method_type": "SHIPPING",
+ "min_delivery_date_time": "2023-04-13T12:00:00+00:00",
+ "max_delivery_date_time": "2023-04-13T12:00:00+00:00",
+ },
+ "fulfill_at": "2023-04-13T12:00:00+00:00",
+ "fulfill_by": None,
+ "international_duties": None,
+ "fulfillment_holds": [],
+ "created_at": "2023-04-13T12:09:45+00:00",
+ "updated_at": "2023-04-13T12:09:46+00:00",
+ "request_status": "UNSUBMITTED",
+ "status": "CLOSED",
+ "supported_actions": [],
+ "shop_id": None,
+ "order_id": 1,
+ "assigned_location_id": 123,
+ "line_items": [
+ {
+ "id": 3,
+ "inventory_item_id": 33,
+ "shop_id": None,
+ "fulfillment_order_id": 2,
+ "quantity": 1,
+ "line_item_id": 31,
+ "fulfillable_quantity": 0,
+ "variant_id": 333,
+ },
+ ],
+ "merchant_requests": [{"id": 333, "message": None, "kind": "FULFILLMENT_REQUEST", "request_options": {"notify_customer": True}}],
+ "admin_graphql_api_id": "gid://shopify/FulfillmentOrder/2",
+ "shop_url": "test_shop",
+ }
+
+
+@pytest.fixture
+def inventory_items_response_expected_result():
+ return [
+ {
+ "id": 44871665713341,
+ "country_code_of_origin": None,
+ "harmonized_system_code": None,
+ "province_code_of_origin": None,
+ "updated_at": "2023-04-14T10:29:27+00:00",
+ "created_at": "2023-04-14T10:29:27+00:00",
+ "sku": "",
+ "tracked": True,
+ "requires_shipping": False,
+ "admin_graphql_api_id": "gid://shopify/InventoryItem/44871665713341",
+ "cost": None,
+ "country_harmonized_system_codes": [],
+ "shop_url": "test_shop",
+ },
+ {
+ "id": 45419395743933,
+ "country_code_of_origin": "UA",
+ "harmonized_system_code": "330510",
+ "province_code_of_origin": None,
+ "updated_at": "2023-12-11T10:37:41+00:00",
+ "created_at": "2023-12-11T10:37:41+00:00",
+ "sku": "123",
+ "tracked": True,
+ "requires_shipping": True,
+ "admin_graphql_api_id": "gid://shopify/InventoryItem/45419395743933",
+ "cost": 29.0,
+ "country_harmonized_system_codes": [],
+ "shop_url": "test_shop",
+ },
+ ]
+
+
+@pytest.fixture
+def customer_address_parse_response_expected_result():
+ return [
+ {
+ "address1": "My Best Accent",
+ "address2": "",
+ "city": "Fair Lawn",
+ "country": "United States",
+ "country_code": "US",
+ "company": "Test Company",
+ "first_name": "New Test",
+ "id": 123,
+ "last_name": "Customer",
+ "name": "New Test Customer",
+ "phone": "",
+ "province": "New Jersey",
+ "province_code": "NJ",
+ "zip": "07410",
+ "customer_id": 123,
+ "country_name": "United States",
+ "default": True,
+ "updated_at": "2023-04-24T13:53:48+00:00",
+ "shop_url": "test_shop"
+ },
+ {
+ "address1": None,
+ "address2": None,
+ "city": None,
+ "country": None,
+ "country_code": None,
+ "company": None,
+ "first_name": "MArcos",
+ "id": 456,
+ "last_name": "Millnitz",
+ "name": "MArcos Millnitz",
+ "phone": None,
+ "province": None,
+ "province_code": None,
+ "zip": None,
+ "customer_id": 456,
+ "country_name": None,
+ "default": True,
+ "updated_at": "2023-07-11T20:07:45+00:00",
+ "shop_url": "test_shop"
+ }
+]
+
+
+@pytest.fixture
+def inventory_levels_response_expected_result():
+ return [
+ {
+ "id": "63590301885|42185200631997",
+ "available": 15,
+ "updated_at": "2023-04-13T12:00:55+00:00",
+ "admin_graphql_api_id": "gid://shopify/InventoryLevel/97912455357?inventory_item_id=42185200631997",
+ "inventory_item_id": 42185200631997,
+ "location_id": 63590301885,
+ "shop_url": "test_shop",
+ },
+ {
+ "id": "63590301885|42185218719933",
+ "available": 8,
+ "updated_at": "2023-04-13T12:09:45+00:00",
+ "admin_graphql_api_id": "gid://shopify/InventoryLevel/97912455357?inventory_item_id=42185218719933",
+ "inventory_item_id": 42185218719933,
+ "location_id": 63590301885,
+ "shop_url": "test_shop",
+ },
+ ]
+
+
+@pytest.fixture
+def discount_codes_response_expected_result():
+ return [
+ {
+ "usage_count": 0,
+ "code": "TEST",
+ "id": 11545139282109,
+ "admin_graphql_api_id": "gid://shopify/DiscountRedeemCode/11545139282109",
+ "price_rule_id": 945205379261,
+ "updated_at": "2023-12-07T11:40:44+00:00",
+ "created_at": "2021-07-08T12:40:37+00:00",
+ "summary": "Free shipping on all products • Minimum purchase of $1.00 • For all countries",
+ "discount_type": "SHIPPING",
+ "shop_url": "test_shop",
+ },
+ {
+ "usage_count": 0,
+ "code": "TEST2",
+ "id": 13175793582269,
+ "admin_graphql_api_id": "gid://shopify/DiscountRedeemCode/13175793582269",
+ "price_rule_id": 945205379261,
+ "updated_at": "2023-12-07T11:40:44+00:00",
+ "created_at": "2021-07-08T12:40:37+00:00",
+ "summary": "Free shipping on all products • Minimum purchase of $1.00 • For all countries",
+ "discount_type": "SHIPPING",
+ "shop_url": "test_shop",
+ },
+ ]
+
+
+@pytest.fixture
+def collections_response_expected_result():
+ return [
+ {
+ "id": 270889287869,
+ "handle": "frontpage",
+ "title": "Home page",
+ "updated_at": "2023-09-05T14:06:59+00:00",
+ "body_html": "updated_mon_24.04.2023",
+ "sort_order": "BEST_SELLING",
+ "template_suffix": "",
+ "products_count": 1,
+ "admin_graphql_api_id": "gid://shopify/Collection/270889287869",
+ "published_at": "2021-06-23T01:00:25+00:00",
+ "shop_url": "test_shop",
+ },
+ {
+ "id": 273278566589,
+ "handle": "test-collection",
+ "title": "Test Collection",
+ "updated_at": "2023-09-05T14:12:04+00:00",
+ "body_html": "updated_mon_24.04.2023",
+ "sort_order": "BEST_SELLING",
+ "template_suffix": "",
+ "products_count": 26,
+ "admin_graphql_api_id": "gid://shopify/Collection/273278566589",
+ "published_at": "2021-07-19T14:02:54+00:00",
+ "shop_url": "test_shop",
+ },
+ ]
+
+
+@pytest.fixture
+def transactions_response_expected_result():
+ return {
+ "id": 1,
+ "error_code": None,
+ "test": True,
+ "kind": "SALE",
+ "amount": 102.0,
+ "receipt": '{"paid_amount":"102.00"}',
+ "gateway": "test",
+ "authorization": "1234",
+ "created_at": "2030-07-02T07:51:49+00:00",
+ "status": "SUCCESS",
+ "processed_at": "2030-07-02T07:51:49+00:00",
+ "total_unsettled_set": {"presentment_money": {"amount": 0.0, "currency": "USD"}, "shop_money": {"amount": 0.0, "currency": "USD"}},
+ "payment_id": "some_payment_id.1",
+ "payment_details": {
+ "avs_result_code": None,
+ "cvv_result_code": None,
+ "credit_card_bin": "1",
+ "credit_card_company": "Test",
+ "credit_card_number": "•••• •••• •••• 1",
+ "credit_card_name": "Test Gateway",
+ "credit_card_wallet": None,
+ "credit_card_expiration_year": 2023,
+ "credit_card_expiration_month": 11,
+ },
+ "order_id": 1,
+ "currency": "USD",
+ "admin_graphql_api_id": "gid://shopify/OrderTransaction/1",
+ "parent_id": 0,
+ "shop_url": "test_shop",
+ }
diff --git a/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_job.py b/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_job.py
new file mode 100644
index 000000000000..fa5d50cd0bee
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_job.py
@@ -0,0 +1,265 @@
+#
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+#
+
+
+import pytest
+import requests
+from source_shopify.shopify_graphql.bulk.exceptions import ShopifyBulkExceptions
+from source_shopify.shopify_graphql.bulk.job import ShopifyBulkStatus
+from source_shopify.streams.streams import (
+ Collections,
+ CustomerAddress,
+ DiscountCodes,
+ FulfillmentOrders,
+ InventoryItems,
+ InventoryLevels,
+ MetafieldOrders,
+ TransactionsGraphql,
+)
+
+
+@pytest.mark.parametrize(
+ "bulk_job_response, expected_len",
+ [
+ ("bulk_error", 1),
+ ("bulk_unknown_error", 1),
+ ("bulk_no_errors", 0),
+ ],
+)
+def test_check_for_errors(request, requests_mock, bulk_job_response, expected_len, auth_config) -> None:
+ stream = MetafieldOrders(auth_config)
+ requests_mock.get(stream.job_manager.base_url, json=request.getfixturevalue(bulk_job_response))
+ test_response = requests.get(stream.job_manager.base_url)
+ test_errors = stream.job_manager.job_check_for_errors(test_response)
+ assert len(test_errors) == expected_len
+
+
+def test_get_errors_from_response_invalid_response(auth_config) -> None:
+ expected = "Couldn't check the `response` for `errors`"
+ stream = MetafieldOrders(auth_config)
+ response = requests.Response()
+ response.status_code = 404
+ response.url = "https://example.com/invalid"
+ with pytest.raises(ShopifyBulkExceptions.BulkJobBadResponse) as error:
+ stream.job_manager.job_check_for_errors(response)
+ assert expected in repr(error.value)
+
+
+@pytest.mark.parametrize(
+ "bulk_job_response, expected",
+ [
+ ("bulk_error_with_concurrent_job", True),
+ ("bulk_successful_response", False),
+ ("bulk_error", False),
+ ],
+)
+def test_has_running_concurrent_job(request, requests_mock, bulk_job_response, auth_config, expected) -> None:
+ stream = MetafieldOrders(auth_config)
+ requests_mock.get(stream.job_manager.base_url, json=request.getfixturevalue(bulk_job_response))
+ test_response = requests.get(stream.job_manager.base_url)
+ test_errors = stream.job_manager.job_check_for_errors(test_response)
+ assert stream.job_manager.has_running_concurrent_job(test_errors) == expected
+
+
+@pytest.mark.parametrize(
+ "bulk_job_response, expected",
+ [
+ ("bulk_successful_response", "gid://shopify/BulkOperation/4046733967549"),
+ ("bulk_error", None),
+ ("bulk_successful_response_with_no_id", None),
+ ],
+)
+def test_job_get_id(request, requests_mock, bulk_job_response, auth_config, expected) -> None:
+ stream = MetafieldOrders(auth_config)
+ requests_mock.get(stream.job_manager.base_url, json=request.getfixturevalue(bulk_job_response))
+ test_response = requests.get(stream.job_manager.base_url)
+ assert stream.job_manager.job_get_id(test_response) == expected
+
+
+def test_job_state_completed(auth_config) -> None:
+ stream = MetafieldOrders(auth_config)
+ stream.job_manager.job_state = ShopifyBulkStatus.COMPLETED.value
+ assert stream.job_manager.job_completed() == True
+
+
+@pytest.mark.parametrize(
+ "bulk_job_response, concurrent_max_retry, error_type, expected",
+ [
+ # method should return this response fixture, once retried.
+ ("bulk_successful_completed_response", 2, None, "gid://shopify/BulkOperation/4046733967549"),
+ # method should raise AirbyteTracebackException, because the concurrent BULK Job is in progress
+ (
+ "bulk_error_with_concurrent_job",
+ 1,
+ ShopifyBulkExceptions.BulkJobConcurrentError,
+ "The BULK Job couldn't be created at this time, since another job is running",
+ ),
+ ],
+ ids=[
+ "regular concurrent request",
+ "max atttempt reached",
+ ]
+)
+def test_job_retry_on_concurrency(request, requests_mock, bulk_job_response, concurrent_max_retry, error_type, auth_config, expected) -> None:
+ stream = MetafieldOrders(auth_config)
+ # patching concurent settings
+ stream.job_manager.concurrent_max_retry = concurrent_max_retry
+ stream.job_manager.concurrent_interval_sec = 1
+ requests_mock.get(stream.job_manager.base_url, json=request.getfixturevalue(bulk_job_response))
+ if error_type:
+ with pytest.raises(error_type) as error:
+ stream.job_manager.job_retry_on_concurrency(requests.get(stream.job_manager.base_url).request)
+ assert expected in repr(error.value)
+ else:
+ result = stream.job_manager.job_retry_on_concurrency(requests.get(stream.job_manager.base_url).request)
+ assert stream.job_manager.job_get_id(result) == expected
+
+
+
+@pytest.mark.parametrize(
+ "job_response, error_type, patch_healthcheck, expected",
+ [
+ (
+ "bulk_job_completed_response",
+ None,
+ False,
+ "bulk-123456789.jsonl",
+ ),
+ ("bulk_job_failed_response", ShopifyBulkExceptions.BulkJobFailed, False, "exited with FAILED"),
+ ("bulk_job_timeout_response", ShopifyBulkExceptions.BulkJobTimout, False, "exited with TIMEOUT"),
+ ("bulk_job_access_denied_response", ShopifyBulkExceptions.BulkJobAccessDenied, False, "exited with ACCESS_DENIED"),
+ ("bulk_successful_response_with_errors", ShopifyBulkExceptions.BulkJobUnknownError, True, "Could not validate the status of the BULK Job"),
+ ],
+ ids=[
+ "completed",
+ "failed",
+ "timeout",
+ "access_denied",
+ "success with errors (edge)",
+ ],
+)
+def test_job_check(mocker, request, requests_mock, job_response, auth_config, error_type, patch_healthcheck, expected) -> None:
+ stream = MetafieldOrders(auth_config)
+ # modify the sleep time for the test
+ stream.job_manager.concurrent_max_retry = 1
+ stream.job_manager.concurrent_interval_sec = 1
+ stream.job_manager.job_check_interval_sec = 1
+ # get job_id from FIXTURE
+ job_id = request.getfixturevalue(job_response).get("data", {}).get("node", {}).get("id")
+ # patching the method to get the right ID checks
+ if job_id:
+ mocker.patch("source_shopify.shopify_graphql.bulk.job.ShopifyBulkManager.job_get_id", value=job_id)
+ if patch_healthcheck:
+ mocker.patch("source_shopify.shopify_graphql.bulk.job.ShopifyBulkManager.job_healthcheck", value=job_response)
+ # mocking the response for STATUS CHECKS
+ requests_mock.post(stream.job_manager.base_url, json=request.getfixturevalue(job_response))
+ test_job_status_response = requests.post(stream.job_manager.base_url)
+ job_result_url = test_job_status_response.json().get("data", {}).get("node", {}).get("url")
+ if error_type:
+ with pytest.raises(error_type) as error:
+ stream.job_manager.job_check(test_job_status_response)
+ assert expected in repr(error.value)
+ else:
+ if job_result_url:
+ # mocking the nested request call to retrieve the data from result URL
+ requests_mock.get(job_result_url, json=request.getfixturevalue(job_response))
+ result = stream.job_manager.job_check(test_job_status_response)
+ assert expected == result
+
+
+@pytest.mark.parametrize(
+ "job_response, expected",
+ [
+ ("bulk_job_created_response", ShopifyBulkStatus.CREATED.value),
+ ("bulk_job_running_response", ShopifyBulkStatus.RUNNING.value),
+ ("bulk_job_running_response_without_id", ShopifyBulkStatus.RUNNING.value),
+ ],
+ ids=[
+ "created",
+ "running",
+ "running_no_id (edge)",
+ ],
+)
+def test_job_check_with_running_scenario(request, requests_mock, job_response, auth_config, expected) -> None:
+ stream = MetafieldOrders(auth_config)
+ # modify the sleep time for the test
+ stream.job_manager.job_check_interval_sec = 0
+ # get job_id from FIXTURE
+ job_id = request.getfixturevalue(job_response).get("data", {}).get("node", {}).get("id")
+ # mocking the response for STATUS CHECKS
+ requests_mock.post(stream.job_manager.base_url, json=request.getfixturevalue(job_response))
+ test_job_status_response = requests.post(stream.job_manager.base_url)
+ job_result_url = test_job_status_response.json().get("data", {}).get("node", {}).get("url")
+ # test the state of the job isn't assigned
+ assert stream.job_manager.job_state == None
+
+ # mocking the nested request call to retrieve the data from result URL
+ stream.job_manager.job_id = job_id
+ requests_mock.get(job_result_url, json=request.getfixturevalue(job_response))
+
+ # calling the sceario processing
+ stream.job_manager.job_track_running()
+ assert stream.job_manager.job_state == expected
+
+
+
+def test_job_read_file_invalid_filename(mocker, auth_config) -> None:
+ stream = MetafieldOrders(auth_config)
+ expected = "An error occured while producing records from BULK Job result"
+ # patching the method to get the filename
+ mocker.patch("source_shopify.shopify_graphql.bulk.record.ShopifyBulkRecord.produce_records", side_effect=Exception)
+ with pytest.raises(ShopifyBulkExceptions.BulkRecordProduceError) as error:
+ list(stream.record_producer.read_file("test.jsonl"))
+
+ assert expected in repr(error.value)
+
+
+@pytest.mark.parametrize(
+ "stream, json_content_example, expected",
+ [
+ (CustomerAddress, "customer_address_jsonl_content_example", "customer_address_parse_response_expected_result"),
+ (MetafieldOrders, "metafield_jsonl_content_example", "metafield_parse_response_expected_result"),
+ (FulfillmentOrders, "filfillment_order_jsonl_content_example", "fulfillment_orders_response_expected_result"),
+ (DiscountCodes, "discount_codes_jsonl_content_example", "discount_codes_response_expected_result"),
+ (Collections, "collections_jsonl_content_example", "collections_response_expected_result"),
+ (TransactionsGraphql, "transactions_jsonl_content_example", "transactions_response_expected_result"),
+ (InventoryItems, "inventory_items_jsonl_content_example", "inventory_items_response_expected_result"),
+ (InventoryLevels, "inventory_levels_jsonl_content_example", "inventory_levels_response_expected_result"),
+ ],
+ ids=[
+ "CustomerAddress",
+ "MetafieldOrders",
+ "FulfillmentOrders",
+ "DiscountCodes",
+ "Collections",
+ "TransactionsGraphql",
+ "InventoryItems",
+ "InventoryLevels",
+ ],
+)
+def test_bulk_stream_parse_response(
+ request,
+ requests_mock,
+ bulk_job_completed_response,
+ stream,
+ json_content_example,
+ expected,
+ auth_config,
+) -> None:
+ stream = stream(auth_config)
+ # get the mocked job_result_url
+ test_result_url = bulk_job_completed_response.get("data").get("node").get("url")
+ # mocking the result url with jsonl content
+ requests_mock.post(stream.job_manager.base_url, json=bulk_job_completed_response)
+ # getting mock response
+ test_bulk_response: requests.Response = requests.post(stream.job_manager.base_url)
+ # mocking nested api call to get data from result url
+ requests_mock.get(test_result_url, text=request.getfixturevalue(json_content_example))
+ # parsing result from completed job
+ test_records = list(stream.parse_response(test_bulk_response))
+ expected_result = request.getfixturevalue(expected)
+ if isinstance(expected_result, dict):
+ assert test_records == [expected_result]
+ elif isinstance(expected_result, list):
+ assert test_records == expected_result
diff --git a/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_query.py b/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_query.py
new file mode 100644
index 000000000000..9b9bb8da0873
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_query.py
@@ -0,0 +1,209 @@
+#
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+#
+
+
+import pytest
+from graphql_query import Argument, Field, Operation, Query
+from source_shopify.shopify_graphql.bulk.query import (
+ InventoryLevel,
+ MetafieldCustomer,
+ MetafieldProductImage,
+ ShopifyBulkQuery,
+ ShopifyBulkTemplates,
+)
+
+
+def test_query_status() -> None:
+ expected = """query {
+ node(id: "gid://shopify/BulkOperation/4047052112061") {
+ ... on BulkOperation {
+ id
+ status
+ errorCode
+ objectCount
+ fileSize
+ url
+ partialDataUrl
+ }
+ }
+ }"""
+
+ input_job_id = "gid://shopify/BulkOperation/4047052112061"
+ template = ShopifyBulkTemplates.status(input_job_id)
+ assert repr(template) == repr(expected)
+
+
+def test_bulk_query_prepare() -> None:
+ expected = '''mutation {
+ bulkOperationRunQuery(
+ query: """
+ {some_query}
+ """
+ ) {
+ bulkOperation {
+ id
+ status
+ }
+ userErrors {
+ field
+ message
+ }
+ }
+ }'''
+
+ input_query_from_slice = "{some_query}"
+ template = ShopifyBulkTemplates.prepare(input_query_from_slice)
+ assert repr(template) == repr(expected)
+
+
+@pytest.mark.parametrize(
+ "query_name, fields, filter_field, start, end, expected",
+ [
+ (
+ "test_root",
+ ["test_field1", "test_field2"],
+ "updated_at",
+ "2023-01-01",
+ "2023-01-02",
+ Query(
+ name='test_root',
+ arguments=[
+ Argument(name="query", value=f"\"updated_at:>'2023-01-01' AND updated_at:<='2023-01-02'\""),
+ ],
+ fields=[Field(name='edges', fields=[Field(name='node', fields=["test_field1", "test_field2"])])]
+ )
+ )
+ ],
+ ids=["simple query with filter and sort"]
+)
+def test_base_build_query(query_name, fields, filter_field, start, end, expected) -> None:
+ """
+ Expected result rendered:
+ '''
+ {
+ test_root(query: "updated_at:>'2023-01-01' AND updated_at:<='2023-01-02'") {
+ edges {
+ node {
+ id
+ test_field1
+ test_field2
+ }
+ }
+ }
+ '''
+ """
+
+
+ builder = ShopifyBulkQuery(shop_id=0)
+ filter_query = f"{filter_field}:>'{start}' AND {filter_field}:<='{end}'"
+ built_query = builder.build(query_name, fields, filter_query)
+ assert expected.render() == built_query.render()
+
+
+@pytest.mark.parametrize(
+ "query_class, filter_field, start, end, expected",
+ [
+ (
+ MetafieldCustomer,
+ "updated_at",
+ "2023-01-01",
+ "2023-01-02",
+ Operation(
+ type="",
+ queries=[
+ Query(
+ name='customers',
+ arguments=[
+ Argument(name="query", value=f"\"updated_at:>='2023-01-01' AND updated_at:<='2023-01-02'\""),
+ Argument(name="sortKey", value="UPDATED_AT"),
+ ],
+ fields=[Field(name='edges', fields=[Field(name='node', fields=['__typename', 'id', Field(name="metafields", fields=[Field(name="edges", fields=[Field(name="node", fields=["__typename", "id", "namespace", "value", "key", "description", "createdAt", "updatedAt", "type"])])])])])]
+ )
+ ]
+ ),
+ ),
+ (
+ MetafieldProductImage,
+ "updated_at",
+ "2023-01-01",
+ "2023-01-02",
+ Operation(
+ type="",
+ queries=[
+ Query(
+ name='products',
+ arguments=[
+ Argument(name="query", value=f"\"updated_at:>='2023-01-01' AND updated_at:<='2023-01-02'\""),
+ Argument(name="sortKey", value="UPDATED_AT"),
+ ],
+ fields=[Field(name='edges', fields=[Field(name='node', fields=['__typename','id',Field(name="images", fields=[Field(name="edges", fields=[Field(name="node", fields=["__typename", "id", Field(name="metafields", fields=[Field(name="edges", fields=[Field(name="node", fields=["__typename", "id", "namespace", "value", "key", "description", "createdAt", "updatedAt", "type"])])])])])])])])]
+ )
+ ]
+ ),
+ ),
+ (
+ InventoryLevel,
+ "updated_at",
+ "2023-01-01",
+ "2023-01-02",
+ Operation(
+ type="",
+ queries=[
+ Query(
+ name='locations',
+ arguments=[
+ Argument(name="includeLegacy", value="true"),
+ Argument(name="includeInactive", value="true"),
+ ],
+ fields=[
+ Field(
+ name='edges',
+ fields=[
+ Field(
+ name='node',
+ fields=[
+ '__typename',
+ 'id',
+ Query(
+ name="inventoryLevels",
+ arguments=[
+ Argument(name="query", value=f"\"updated_at:>='2023-01-01' AND updated_at:<='2023-01-02'\""),
+ ],
+ fields=[
+ Field(
+ name="edges",
+ fields=[
+ Field(
+ name="node",
+ fields=[
+ "__typename",
+ "id",
+ Field(name="available"),
+ Field(name="item", fields=[Field(name="id", alias="inventory_item_id")]),
+ Field(name="updatedAt")
+ ]
+ )
+ ]
+ )
+ ]
+ )
+ ]
+ )
+ ]
+ )
+ ]
+ )
+ ]
+ ),
+ ),
+ ],
+ ids=[
+ "MetafieldCustomers query with 1 query_path(str)",
+ "MetafieldProductImages query with composite quey_path(List[2])",
+ "InventoryLevel query",
+ ]
+)
+def test_bulk_query(query_class, filter_field, start, end, expected) -> None:
+ stream = query_class(shop_id=0)
+ assert stream.get(filter_field, start, end) == expected.render()
\ No newline at end of file
diff --git a/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_record.py b/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_record.py
new file mode 100644
index 000000000000..2c163004cb38
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_record.py
@@ -0,0 +1,198 @@
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+
+
+import pytest
+from source_shopify.shopify_graphql.bulk.query import ShopifyBulkQuery
+from source_shopify.shopify_graphql.bulk.record import ShopifyBulkRecord
+
+
+@pytest.mark.parametrize(
+ "record, expected",
+ [
+ (
+ {"id": "gid://shopify/Order/19435458986123"},
+ {"id": 19435458986123, "admin_graphql_api_id": "gid://shopify/Order/19435458986123"},
+ ),
+ ({"id": 123}, {"id": 123}),
+ ],
+)
+def test_record_resolve_id(record, expected) -> None:
+ bulk_query = ShopifyBulkQuery(shop_id=0)
+ assert ShopifyBulkRecord(bulk_query).record_resolve_id(record) == expected
+
+
+@pytest.mark.parametrize(
+ "record, types, expected",
+ [
+ ({"__typename": "Order", "id": "gid://shopify/Order/19435458986123"}, ["Test", "Order"], True),
+ ({"__typename": "Test", "id": "gid://shopify/Order/19435458986123"}, "Other", False),
+ ({}, "Other", False),
+ ],
+)
+def test_check_type(record, types, expected) -> None:
+ query = ShopifyBulkQuery(shop_id=0)
+ assert ShopifyBulkRecord(query).check_type(record, types) == expected
+
+
+@pytest.mark.parametrize(
+ "record, expected",
+ [
+ (
+ {
+ "id": "gid://shopify/Metafield/123",
+ "__parentId": "gid://shopify/Order/102030",
+ },
+ {
+ "id": 123,
+ "admin_graphql_api_id": "gid://shopify/Metafield/123",
+ "__parentId": "gid://shopify/Order/102030",
+ },
+ )
+ ],
+)
+def test_record_resolver(record, expected) -> None:
+ query = ShopifyBulkQuery(shop_id=0)
+ record_instance = ShopifyBulkRecord(query)
+ assert record_instance.record_resolve_id(record) == expected
+
+
+@pytest.mark.parametrize(
+ "record, expected",
+ [
+ (
+ {"id": "gid://shopify/Order/1234567890", "__typename": "Order"},
+ {"id": "gid://shopify/Order/1234567890"},
+ ),
+ ],
+)
+def test_record_new(record, expected) -> None:
+ query = ShopifyBulkQuery(shop_id=0)
+ record_instance = ShopifyBulkRecord(query)
+ record_instance.record_new(record)
+ assert record_instance.buffer == [expected]
+
+
+@pytest.mark.parametrize(
+ "records_from_jsonl, record_components, expected",
+ [
+ (
+ [
+ {"__typename": "NewRecord", "id": "gid://shopify/NewRecord/1234567890", "name": "new_record"},
+ {"__typename": "RecordComponent", "id": "gid://shopify/RecordComponent/1234567890", "name": "new_component"},
+ ],
+ {"new_record": "NewRecord", "record_components": ["RecordComponent"]},
+ [
+ {
+ "id": "gid://shopify/NewRecord/1234567890",
+ "name": "new_record",
+ "record_components": {
+ "RecordComponent": [
+ {
+ "id": "gid://shopify/RecordComponent/1234567890",
+ "name": "new_component",
+ },
+ ]
+ },
+ }
+ ],
+ ),
+ ],
+ ids=["add_component"],
+)
+def test_record_new_component(records_from_jsonl, record_components, expected) -> None:
+ query = ShopifyBulkQuery(shop_id=0)
+ record_instance = ShopifyBulkRecord(query)
+ record_instance.components = record_components.get("record_components")
+ # register new record first
+ record_instance.record_new(records_from_jsonl[0])
+ assert len(record_instance.buffer) > 0
+ # check the components placeholder was created for new record registered
+ assert "record_components" in record_instance.buffer[-1].keys()
+ # register record component
+ record_instance.record_new_component(records_from_jsonl[1])
+ # check the component was proccessed
+ assert len(record_instance.buffer[-1]["record_components"]["RecordComponent"]) > 0
+ # general check
+ assert record_instance.buffer == expected
+
+
+@pytest.mark.parametrize(
+ "buffered_record, expected",
+ [
+ (
+ {
+ "id": "gid://shopify/NewRecord/1234567890",
+ "name": "new_record",
+ "record_components": {
+ "RecordComponent": [
+ {
+ "id": "gid://shopify/RecordComponent/1234567890",
+ "name": "new_component",
+ }
+ ]
+ },
+ },
+ [
+ {
+ "id": 1234567890,
+ "name": "new_record",
+ "record_components": {
+ "RecordComponent": [
+ {
+ "id": "gid://shopify/RecordComponent/1234567890",
+ "name": "new_component",
+ },
+ ]
+ },
+ "admin_graphql_api_id": "gid://shopify/NewRecord/1234567890",
+ }
+ ],
+ ),
+ ],
+)
+def test_buffer_flush(buffered_record, expected) -> None:
+ query = ShopifyBulkQuery(shop_id=0)
+ record_instance = ShopifyBulkRecord(query)
+ # populate the buffer with record
+ record_instance.buffer.append(buffered_record)
+ assert list(record_instance.buffer_flush()) == expected
+
+
+@pytest.mark.parametrize(
+ "records_from_jsonl, record_composition, expected",
+ [
+ (
+ [
+ {"__typename": "NewRecord", "id": "gid://shopify/NewRecord/1234567890", "name": "new_record"},
+ {"__typename": "RecordComponent", "id": "gid://shopify/RecordComponent/1234567890", "name": "new_component"},
+ ],
+ {"new_record": "NewRecord", "record_components": ["RecordComponent"]},
+ [
+ {
+ "id": "gid://shopify/NewRecord/1234567890",
+ "name": "new_record",
+ "record_components": {
+ "RecordComponent": [
+ {
+ "id": "gid://shopify/RecordComponent/1234567890",
+ "name": "new_component",
+ },
+ ]
+ },
+ }
+ ],
+ ),
+ ],
+ ids=["test_compose"],
+)
+def test_record_compose(records_from_jsonl, record_composition, expected) -> None:
+ query = ShopifyBulkQuery(shop_id=0)
+ # query.record_composition = record_composition
+ record_instance = ShopifyBulkRecord(query)
+ record_instance.composition = record_composition
+ record_instance.components = record_composition.get("record_components")
+ # process read jsonl records
+ for record in records_from_jsonl:
+ list(record_instance.record_compose(record))
+
+ assert record_instance.buffer == expected
diff --git a/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_tools.py b/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_tools.py
new file mode 100644
index 000000000000..ba7e0474f494
--- /dev/null
+++ b/airbyte-integrations/connectors/source-shopify/unit_tests/graphql_bulk/test_tools.py
@@ -0,0 +1,54 @@
+# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
+
+
+import pytest
+from source_shopify.shopify_graphql.bulk.exceptions import ShopifyBulkExceptions
+from source_shopify.shopify_graphql.bulk.tools import BulkTools
+
+
+def test_camel_to_snake() -> None:
+ assert BulkTools.camel_to_snake("camelCase") == "camel_case"
+ assert BulkTools.camel_to_snake("snake_case") == "snake_case"
+ assert BulkTools.camel_to_snake("PascalCase") == "pascal_case"
+
+
+@pytest.mark.parametrize(
+ "job_result_url, error_type, expected",
+ [
+ (
+ "https://storage.googleapis.com/shopify-tiers-assets-prod-us-east1/?GoogleAccessId=assets-us-prod%40shopify-tiers.iam.gserviceaccount.com&Expires=1705508208&Signature=%3D%3D&response-content-disposition=attachment%3B+filename%3D%22bulk-4147374162109.jsonl%22%3B+filename%2A%3DUTF-8%27%27bulk-4147374162109.jsonl&response-content-type=application%2Fjsonl",
+ None,
+ "bulk-4147374162109.jsonl",
+ ),
+ (
+ "https://storage.googleapis.com/shopify-tiers-assets-prod-us-east1/?GoogleAccessId=assets-us-prod%40shopify-tiers.iam.gserviceaccount.com&Expires=1705508208",
+ ShopifyBulkExceptions.BulkJobResultUrlError,
+ "Could not extract the `filename` from `result_url` provided",
+ ),
+ ],
+ ids=["success", "error"],
+)
+def test_filename_from_url(job_result_url, error_type, expected) -> None:
+ if error_type:
+ with pytest.raises(error_type) as error:
+ BulkTools.filename_from_url(job_result_url)
+ assert expected in repr(error.value)
+ else:
+ assert BulkTools.filename_from_url(job_result_url) == expected
+
+
+def test_from_iso8601_to_rfc3339() -> None:
+ record = {"date": "2023-01-01T15:00:00Z"}
+ assert BulkTools.from_iso8601_to_rfc3339(record, "date") == "2023-01-01T15:00:00+00:00"
+
+
+def test_fields_names_to_snake_case() -> None:
+ dict_input = {"camelCase": "value", "snake_case": "value", "__parentId": "value"}
+ expected_output = {"camel_case": "value", "snake_case": "value", "__parentId": "value"}
+ assert BulkTools().fields_names_to_snake_case(dict_input) == expected_output
+
+
+def test_resolve_str_id() -> None:
+ assert BulkTools.resolve_str_id("123") == 123
+ assert BulkTools.resolve_str_id("456", str) == "456"
+ assert BulkTools.resolve_str_id(None) is None
diff --git a/airbyte-integrations/connectors/source-shopify/unit_tests/test_cached_stream_state.py b/airbyte-integrations/connectors/source-shopify/unit_tests/test_cached_stream_state.py
index 031e7871e8ef..80cc6115c449 100644
--- a/airbyte-integrations/connectors/source-shopify/unit_tests/test_cached_stream_state.py
+++ b/airbyte-integrations/connectors/source-shopify/unit_tests/test_cached_stream_state.py
@@ -4,7 +4,7 @@
import pytest
-from source_shopify.source import OrderRefunds, Orders
+from source_shopify.streams.streams import OrderRefunds, Orders
from source_shopify.utils import EagerlyCachedStreamState as stream_state_cache
# Define the Stream instances for the tests
diff --git a/airbyte-integrations/connectors/source-shopify/unit_tests/test_deleted_events_stream.py b/airbyte-integrations/connectors/source-shopify/unit_tests/test_deleted_events_stream.py
index 6dde83e179de..126d28b7e66d 100644
--- a/airbyte-integrations/connectors/source-shopify/unit_tests/test_deleted_events_stream.py
+++ b/airbyte-integrations/connectors/source-shopify/unit_tests/test_deleted_events_stream.py
@@ -5,7 +5,8 @@
import pytest
from source_shopify.auth import ShopifyAuthenticator
-from source_shopify.source import Products, ShopifyDeletedEventsStream
+from source_shopify.streams.base_streams import ShopifyDeletedEventsStream
+from source_shopify.streams.streams import Products
@pytest.fixture
@@ -21,7 +22,7 @@ def config(basic_config):
(Products, "products.json", "events.json"),
],
)
-def test_path(stream, expected_main_path, expected_events_path, config):
+def test_path(stream, expected_main_path, expected_events_path, config) -> None:
stream = stream(config)
main_path = stream.path()
events_path = stream.deleted_events.path()
@@ -35,7 +36,7 @@ def test_path(stream, expected_main_path, expected_events_path, config):
(Products, {}),
],
)
-def test_get_json_schema(stream, expected_events_schema, config):
+def test_get_json_schema(stream, expected_events_schema, config) -> None:
stream = stream(config)
schema = stream.deleted_events.get_json_schema()
# no schema is expected
@@ -48,7 +49,7 @@ def test_get_json_schema(stream, expected_events_schema, config):
(Products, "events", "id", "deleted_at"),
],
)
-def test_has_correct_instance_vars(stream, expected_data_field, expected_pk, expected_cursor_field, config):
+def test_has_correct_instance_vars(stream, expected_data_field, expected_pk, expected_cursor_field, config) -> None:
stream = stream(config)
assert stream.deleted_events.data_field == expected_data_field
assert stream.deleted_events.primary_key == expected_pk
@@ -61,7 +62,7 @@ def test_has_correct_instance_vars(stream, expected_data_field, expected_pk, exp
(Products, None),
],
)
-def test_has_no_availability_strategy(stream, expected, config):
+def test_has_no_availability_strategy(stream, expected, config) -> None:
stream = stream(config)
# no availability_strategy is expected
assert stream.deleted_events.availability_strategy is expected
@@ -103,11 +104,11 @@ def test_has_no_availability_strategy(stream, expected, config):
),
],
)
-def test_read_deleted_records(stream, requests_mock, deleted_records_json, expected, config, mocker):
+def test_read_deleted_records(stream, requests_mock, deleted_records_json, expected, config, mocker) -> None:
stream = stream(config)
deleted_records_url = stream.url_base + stream.deleted_events.path()
requests_mock.get(deleted_records_url, json=deleted_records_json)
- mocker.patch("source_shopify.source.IncrementalShopifyStreamWithDeletedEvents.read_records", return_value=deleted_records_json)
+ mocker.patch("source_shopify.streams.base_streams.IncrementalShopifyStreamWithDeletedEvents.read_records", return_value=deleted_records_json)
assert list(stream.read_records(sync_mode=None)) == expected
@@ -143,7 +144,7 @@ def test_read_deleted_records(stream, requests_mock, deleted_records_json, expec
),
],
)
-def test_produce_deleted_records_from_events(stream, input, expected, config):
+def test_produce_deleted_records_from_events(stream, input, expected, config) -> None:
stream = stream(config)
result = stream.deleted_events.produce_deleted_records_from_events(input)
assert list(result) == expected
@@ -178,7 +179,7 @@ def test_produce_deleted_records_from_events(stream, input, expected, config):
),
],
)
-def test_request_params(config, stream, stream_state, next_page_token, expected_stream_params, expected_deleted_params):
+def test_request_params(config, stream, stream_state, next_page_token, expected_stream_params, expected_deleted_params) -> None:
stream = stream(config)
assert stream.request_params(stream_state=stream_state, next_page_token=next_page_token) == expected_stream_params
assert stream.deleted_events.request_params(stream_state=stream_state, next_page_token=next_page_token) == expected_deleted_params
@@ -190,7 +191,7 @@ def test_request_params(config, stream, stream_state, next_page_token, expected_
(Products, ShopifyDeletedEventsStream),
],
)
-def test_deleted_events_instance(stream, config, expected):
+def test_deleted_events_instance(stream, config, expected) -> None:
stream = stream(config)
assert isinstance(stream.deleted_events, expected)
@@ -201,7 +202,7 @@ def test_deleted_events_instance(stream, config, expected):
(Products, ""),
],
)
-def test_default_deleted_state_comparison_value(stream, config, expected):
+def test_default_deleted_state_comparison_value(stream, config, expected) -> None:
stream = stream(config)
assert stream.default_deleted_state_comparison_value == expected
@@ -239,6 +240,6 @@ def test_default_deleted_state_comparison_value(stream, config, expected):
),
],
)
-def test_get_updated_state(config, stream, last_record, current_state, expected):
+def test_get_updated_state(config, stream, last_record, current_state, expected) -> None:
stream = stream(config)
assert stream.get_updated_state(current_state, last_record) == expected
diff --git a/airbyte-integrations/connectors/source-shopify/unit_tests/test_graphql_products.py b/airbyte-integrations/connectors/source-shopify/unit_tests/test_graphql_products.py
index d1a9f02de29b..a6c99f9c3c44 100644
--- a/airbyte-integrations/connectors/source-shopify/unit_tests/test_graphql_products.py
+++ b/airbyte-integrations/connectors/source-shopify/unit_tests/test_graphql_products.py
@@ -1,7 +1,7 @@
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
import pytest
-from source_shopify.graphql import get_query_products
+from source_shopify.shopify_graphql.graphql import get_query_products
@pytest.mark.parametrize(
diff --git a/airbyte-integrations/connectors/source-shopify/unit_tests/test_source.py b/airbyte-integrations/connectors/source-shopify/unit_tests/test_source.py
index 1f4f7bb1d0e9..e4f07f314761 100644
--- a/airbyte-integrations/connectors/source-shopify/unit_tests/test_source.py
+++ b/airbyte-integrations/connectors/source-shopify/unit_tests/test_source.py
@@ -7,7 +7,8 @@
import pytest
from source_shopify.auth import ShopifyAuthenticator
-from source_shopify.source import (
+from source_shopify.source import SourceShopify
+from source_shopify.streams.streams import (
AbandonedCheckouts,
Articles,
Blogs,
@@ -41,14 +42,14 @@
Products,
ProductVariants,
Shop,
- SourceShopify,
TenderTransactions,
Transactions,
+ TransactionsGraphql,
)
@pytest.fixture
-def config(basic_config):
+def config(basic_config) -> dict:
basic_config["start_date"] = "2020-11-01"
basic_config["authenticator"] = ShopifyAuthenticator(basic_config)
return basic_config
@@ -61,18 +62,22 @@ def config(basic_config):
(Blogs, None, "blogs.json"),
(MetafieldBlogs, {"id": 123}, "blogs/123/metafields.json"),
(MetafieldArticles, {"id": 123}, "articles/123/metafields.json"),
- (MetafieldCustomers, {"id": 123}, "customers/123/metafields.json"),
- (MetafieldOrders, {"id": 123}, "orders/123/metafields.json"),
- (MetafieldDraftOrders, {"id": 123}, "draft_orders/123/metafields.json"),
- (MetafieldProducts, {"id": 123}, "products/123/metafields.json"),
- (MetafieldProductVariants, {"variants": 123}, "variants/123/metafields.json"),
+ # GraphQL Bulk Streams
+ (MetafieldCustomers, None, "graphql.json"),
+ (MetafieldOrders, None, "graphql.json"),
+ (MetafieldDraftOrders, None, "graphql.json"),
+ (MetafieldProducts, None, "graphql.json"),
+ (MetafieldProductVariants, None, "graphql.json"),
+ (MetafieldLocations, None, "graphql.json"),
+ (MetafieldCollections, None, "graphql.json"),
+ #
(MetafieldSmartCollections, {"id": 123}, "smart_collections/123/metafields.json"),
- (MetafieldCollections, {"collection_id": 123}, "collections/123/metafields.json"),
(MetafieldPages, {"id": 123}, "pages/123/metafields.json"),
- (MetafieldLocations, {"id": 123}, "locations/123/metafields.json"),
(MetafieldShops, None, "metafields.json"),
- (ProductImages, {"product_id": 123}, "products/123/images.json"),
- (ProductVariants, {"product_id": 123}, "products/123/variants.json"),
+ # Nested Substreams
+ (ProductImages, None, ""),
+ (ProductVariants, None, ""),
+ #
(Customers, None, "customers.json"),
(Orders, None, "orders.json"),
(DraftOrders, None, "draft_orders.json"),
@@ -87,7 +92,7 @@ def config(basic_config):
(CustomCollections, None, "custom_collections.json"),
],
)
-def test_customers_path(stream, stream_slice, expected_path, config):
+def test_path(stream, stream_slice, expected_path, config) -> None:
stream = stream(config)
if stream_slice:
result = stream.path(stream_slice)
@@ -99,39 +104,47 @@ def test_customers_path(stream, stream_slice, expected_path, config):
@pytest.mark.parametrize(
"stream,stream_slice,expected_path",
[
- (OrderRefunds, {"order_id": 12345}, "orders/12345/refunds.json"),
(OrderRisks, {"order_id": 12345}, "orders/12345/risks.json"),
(Transactions, {"order_id": 12345}, "orders/12345/transactions.json"),
- (DiscountCodes, {"price_rule_id": 12345}, "price_rules/12345/discount_codes.json"),
- (InventoryLevels, {"location_id": 12345}, "locations/12345/inventory_levels.json"),
- (FulfillmentOrders, {"order_id": 12345}, "orders/12345/fulfillment_orders.json"),
- (Fulfillments, {"order_id": 12345}, "orders/12345/fulfillments.json"),
+ # Nested Substreams
+ (OrderRefunds, None, ""),
+ (Fulfillments, None, ""),
+ # GQL BULK stream
+ (DiscountCodes, None, "graphql.json"),
+ (FulfillmentOrders, None, "graphql.json"),
+ (InventoryLevels, None, "graphql.json"),
],
)
-def test_customers_path_with_stream_slice_param(stream, stream_slice, expected_path, config):
+def test_path_with_stream_slice_param(stream, stream_slice, expected_path, config) -> None:
stream = stream(config)
- assert stream.path(stream_slice) == expected_path
+ if stream_slice:
+ result = stream.path(stream_slice)
+ else:
+ result = stream.path()
+ assert result == expected_path
-def test_check_connection(config, mocker):
- mocker.patch("source_shopify.source.Shop.read_records", return_value=[{"id": 1}])
+def test_check_connection(config, mocker) -> None:
+ mocker.patch("source_shopify.streams.streams.Shop.read_records", return_value=[{"id": 1}])
source = SourceShopify()
logger_mock = MagicMock()
assert source.check_connection(logger_mock, config) == (True, None)
-def test_read_records(config, mocker):
+def test_read_records(config, mocker) -> None:
records = [{"created_at": "2022-10-10T06:21:53-07:00", "orders": {"updated_at": "2022-10-10T06:21:53-07:00"}}]
stream_slice = records[0]
stream = OrderRefunds(config)
- mocker.patch("source_shopify.source.IncrementalShopifyStream.read_records", return_value=records)
- assert next(stream.read_records(stream_slice=stream_slice)) == records[0]
+ mocker.patch("source_shopify.streams.base_streams.IncrementalShopifyNestedStream.read_records", return_value=records)
+ assert stream.read_records(stream_slice=stream_slice)[0] == records[0]
@pytest.mark.parametrize(
"stream, expected",
[
- (OrderRefunds, {"limit": 250}),
+ # Nested Substream
+ (OrderRefunds, {}),
+ #
(Orders, {"limit": 250, "status": "any", "order": "updated_at asc", "updated_at_min": "2020-11-01"}),
(
AbandonedCheckouts,
@@ -139,7 +152,7 @@ def test_read_records(config, mocker):
),
],
)
-def test_request_params(config, stream, expected):
+def test_request_params(config, stream, expected) -> None:
assert stream(config).request_params() == expected
@@ -168,12 +181,12 @@ def test_request_params(config, stream, expected):
"no values at all",
],
)
-def test_get_updated_state(config, last_record, current_state, expected):
+def test_get_updated_state(config, last_record, current_state, expected) -> None:
stream = OrderRefunds(config)
assert stream.get_updated_state(current_state, last_record) == expected
-def test_parse_response_with_bad_json(config, response_with_bad_json):
+def test_parse_response_with_bad_json(config, response_with_bad_json) -> None:
stream = Customers(config)
assert list(stream.parse_response(response_with_bad_json)) == [{}]
@@ -186,8 +199,30 @@ def test_parse_response_with_bad_json(config, response_with_bad_json):
],
ids=["old style", "oauth style"],
)
-def test_get_shop_name(config, shop, expected):
+def test_get_shop_name(config, shop, expected) -> None:
source = SourceShopify()
config["shop"] = shop
actual = source.get_shop_name(config)
assert actual == expected
+
+@pytest.mark.parametrize(
+ "config, expected_stream_class",
+ [
+ ({"fetch_transactions_user_id": False}, TransactionsGraphql),
+ ({"fetch_transactions_user_id": True}, Transactions),
+ ({}, TransactionsGraphql),
+ ],
+ ids=["don't fetch user_id", "fetch user id", "unset config value shouldn't fetch user_id"],
+)
+def test_select_transactions_stream(config, expected_stream_class):
+ config["shop"] = "test-store"
+ config["credentials"] = {
+ "auth_method": "api_password",
+ "api_password": "shppa_123"
+ }
+ config["authenticator"] = ShopifyAuthenticator(config)
+
+ source = SourceShopify()
+ actual = source.select_transactions_stream(config)
+ assert type(actual) == expected_stream_class
+
diff --git a/airbyte-integrations/connectors/source-shopify/unit_tests/unit_test.py b/airbyte-integrations/connectors/source-shopify/unit_tests/unit_test.py
index 14da41e6c0b1..d9c9e1ea0723 100644
--- a/airbyte-integrations/connectors/source-shopify/unit_tests/unit_test.py
+++ b/airbyte-integrations/connectors/source-shopify/unit_tests/unit_test.py
@@ -3,9 +3,12 @@
#
+from unittest.mock import patch
+
import pytest
import requests
-from source_shopify.source import BalanceTransactions, DiscountCodes, FulfillmentOrders, PriceRules, SourceShopify
+from source_shopify.source import ConnectionCheckTest, SourceShopify
+from source_shopify.streams.streams import BalanceTransactions, DiscountCodes, FulfillmentOrders, PriceRules
def test_get_next_page_token(requests_mock, auth_config):
@@ -30,28 +33,54 @@ def test_get_next_page_token(requests_mock, auth_config):
assert test == expected_output_token
-def test_privileges_validation(requests_mock, basic_config):
+@pytest.mark.parametrize(
+ "fetch_transactions_user_id, expected",
+ [
+ (
+ True,
+ [
+ "abandoned_checkouts",
+ "fulfillments",
+ "metafield_orders",
+ "metafield_shops",
+ "order_refunds",
+ "order_risks",
+ "orders",
+ "shop",
+ "tender_transactions",
+ "transactions",
+ "countries",
+ ],
+ ),
+ (
+ False,
+ [
+ "abandoned_checkouts",
+ "fulfillments",
+ "metafield_orders",
+ "metafield_shops",
+ "order_refunds",
+ "order_risks",
+ "orders",
+ "shop",
+ "tender_transactions",
+ "transactions",
+ "countries",
+ ],
+ ),
+ ],
+)
+def test_privileges_validation(requests_mock, fetch_transactions_user_id, basic_config, expected):
requests_mock.get(
"https://test_shop.myshopify.com/admin/oauth/access_scopes.json",
json={"access_scopes": [{"handle": "read_orders"}]},
)
- source = SourceShopify()
-
- expected = [
- "abandoned_checkouts",
- "fulfillments",
- "metafield_orders",
- "metafield_shops",
- "order_refunds",
- "order_risks",
- "orders",
- "shop",
- "tender_transactions",
- "transactions",
- "countries",
- ]
-
- assert [stream.name for stream in source.streams(basic_config)] == expected
+ basic_config["fetch_transactions_user_id"] = fetch_transactions_user_id
+ # mock the get_shop_id method
+ with patch.object(ConnectionCheckTest, "get_shop_id", return_value=123) as mock:
+ source = SourceShopify()
+ streams = source.streams(basic_config)
+ assert [stream.name for stream in streams] == expected
@pytest.mark.parametrize(
diff --git a/docs/integrations/sources/shopify-migrations.md b/docs/integrations/sources/shopify-migrations.md
index e811d2f5743e..0ecf880c31ae 100644
--- a/docs/integrations/sources/shopify-migrations.md
+++ b/docs/integrations/sources/shopify-migrations.md
@@ -1,5 +1,43 @@
# Shopify Migration Guide
+## Upgrading to 2.0.0
+This version implements `Shopify GraphQL BULK Operations` to speed up the following streams:
+ - `Collections`
+ - `Customer Address`
+ - `Discount Codes`
+ - `Fulfillment Orders`
+ - `Inventory Items`
+ - `Inventory Levels`
+ - `Metafield Collections`
+ - `Metafield Customers`
+ - `Metafield Draft_orders`
+ - `Metafield Locations`
+ - `Metafield Orders`
+ - `Metafield Product Images`
+ - `Metafield Product Variants`
+ - `Transactions Graphql` (duplicated `Transactions` stream to provide faster fetch)
+
+Increased the performance for the following streams:
+- `Fulfillments`
+- `Order Refunds`
+- `Product Images`
+- `Product Variants`
+
+Other bug fixes and improvements, more info: `https://github.com/airbytehq/airbyte/pull/32345`
+
+### Action items required for 2.0.0
+* The `Fulfillments` stream now has the cursor field `updated_at`, instead of the `id`.
+* The `Order Refunds` stream, now has the schema `refund_line_items.line_item.properties` to array of `strings`, instead of `object` with properties.
+* The `Fulfillment Orders` stream now has the `supported_actions` schema as `array of objects` instead of `array of strings`.
+* The `Collections` stream now requires additional api scope `read_publications` to fetch the `published_at` field with `GraphQL BULK Operations`.
+
+ - if `API_PASSWORD` is used for authentication:
+ - BEFORE UPDATING to the `2.0.0`: update your `Private Developer Application` scopes with `read_publications` and save the changes, in your Shopify Account.
+ - if `OAuth2.0` is used for authentication:
+ - `re-auth` in order to obtain new scope automatically, after the upgrade.
+ - `Refresh Schema` + `Reset` is required for these streams after the upgrade from previous version.
+
+
## Upgrading to 1.0.0
This version uses Shopify API version `2023-07` which brings changes to the following streams:
- removed `gateway, payment_details, processing_method` properties from `Order` stream, they are no longer supplied.
diff --git a/docs/integrations/sources/shopify.md b/docs/integrations/sources/shopify.md
index 5a5aa4b43b91..86b9ebdc35c3 100644
--- a/docs/integrations/sources/shopify.md
+++ b/docs/integrations/sources/shopify.md
@@ -85,6 +85,7 @@ Add the following scopes to your custom app to ensure Airbyte can sync all avail
* `read_price_rules`
* `read_product_listings`
* `read_products`
+* `read_publications`
* `read_reports`
* `read_resource_feedbacks`
* `read_script_tags`
@@ -105,43 +106,44 @@ Add the following scopes to your custom app to ensure Airbyte can sync all avail
The Shopify source supports both Full Refresh and Incremental syncs. You can choose if this connector will copy only the new or updated data, or all rows in the tables and columns you set up for replication, every time a sync is run.
-This source can sync data for the [Shopify REST API](https://shopify.dev/api/admin-rest) and the [Shopify GraphQl API](https://shopify.dev/api/admin-graphql).
+This source can sync data for the [Shopify REST API](https://shopify.dev/api/admin-rest) and the [Shopify GraphQL API](https://shopify.dev/api/admin-graphql) and the [Shopify GraphQL BULK API](https://shopify.dev/docs/api/usage/bulk-operations/queries)
## Supported streams
-- [Abandoned Checkouts](https://shopify.dev/api/admin-rest/2022-01/resources/abandoned-checkouts#top)
-- [Articles](https://shopify.dev/api/admin-rest/2022-01/resources/article)
+- [Abandoned Checkouts](https://shopify.dev/api/admin-rest/2023-07/resources/abandoned-checkouts#top)
+- [Articles](https://shopify.dev/api/admin-rest/2023-07/resources/article)
- [Balance Transactions](https://shopify.dev/docs/api/admin-rest/2023-10/resources/transactions)
-- [Blogs](https://shopify.dev/api/admin-rest/2022-01/resources/blog)
-- [Collects](https://shopify.dev/api/admin-rest/2022-01/resources/collect#top)
-- [Collections](https://shopify.dev/api/admin-rest/2022-01/resources/collection)
-- [Countries](https://shopify.dev/docs/api/admin-rest/2023-04/resources/country)
-- [Custom Collections](https://shopify.dev/api/admin-rest/2022-01/resources/customcollection#top)
-- [Customers](https://shopify.dev/api/admin-rest/2022-01/resources/customer#top)
-- [Customer Address](https://shopify.dev/docs/api/admin-rest/2023-04/resources/customer-address)
-- [Customer Saved Search](https://shopify.dev/docs/api/admin-rest/2023-04/resources/customersavedsearch)
-- [Draft Orders](https://shopify.dev/api/admin-rest/2022-01/resources/draftorder#top)
-- [Discount Codes](https://shopify.dev/api/admin-rest/2022-01/resources/discountcode#top)
+- [Blogs](https://shopify.dev/api/admin-rest/2023-07/resources/blog)
+- [Collects](https://shopify.dev/api/admin-rest/2023-07/resources/collect#top)
+- [Collections (GraphQL)](https://shopify.dev/docs/api/admin-graphql/2023-07/objects/Collection)
+- [Countries](https://shopify.dev/docs/api/admin-rest/2023-07/resources/country)
+- [Custom Collections](https://shopify.dev/api/admin-rest/2023-07/resources/customcollection#top)
+- [Customers](https://shopify.dev/api/admin-rest/2023-07/resources/customer#top)
+- [Customer Address](https://shopify.dev/docs/api/admin-rest/2023-07/resources/customer-address)
+- [Customer Saved Search](https://shopify.dev/docs/api/admin-rest/2023-07/resources/customersavedsearch)
+- [Draft Orders](https://shopify.dev/api/admin-rest/2023-07/resources/draftorder#top)
+- [Discount Codes (GraphQL)](https://shopify.dev/docs/api/admin-graphql/2023-07/unions/DiscountCode)
- [Disputes](https://shopify.dev/docs/api/admin-rest/2023-07/resources/dispute)
-- [Fulfillments](https://shopify.dev/api/admin-rest/2022-01/resources/fulfillment)
-- [Fulfillment Orders](https://shopify.dev/api/admin-rest/2022-01/resources/fulfillmentorder)
-- [Inventory Items](https://shopify.dev/api/admin-rest/2022-01/resources/inventoryItem)
-- [Inventory Levels](https://shopify.dev/api/admin-rest/2021-01/resources/inventorylevel)
-- [Locations](https://shopify.dev/api/admin-rest/2022-01/resources/location)
-- [Metafields](https://shopify.dev/api/admin-rest/2022-01/resources/metafield#top)
-- [Orders](https://shopify.dev/api/admin-rest/2022-01/resources/order#top)
-- [Order Refunds](https://shopify.dev/api/admin-rest/2022-01/resources/refund#top)
-- [Order Risks](https://shopify.dev/api/admin-rest/2022-01/resources/order-risk#top)
-- [Pages](https://shopify.dev/api/admin-rest/2022-01/resources/page#top)
-- [Price Rules](https://shopify.dev/api/admin-rest/2022-01/resources/pricerule#top)
-- [Products](https://shopify.dev/api/admin-rest/2022-01/resources/product#top)
+- [Fulfillments](https://shopify.dev/api/admin-rest/2023-07/resources/fulfillment)
+- [Fulfillment Orders (GraphQL)](https://shopify.dev/docs/api/admin-graphql/2023-07/objects/FulfillmentOrder)
+- [Inventory Items (GraphQL)](https://shopify.dev/docs/api/admin-graphql/2023-07/objects/InventoryItem)
+- [Inventory Levels (GraphQL)](https://shopify.dev/docs/api/admin-graphql/2023-07/objects/InventoryLevel)
+- [Locations](https://shopify.dev/api/admin-rest/2023-07/resources/location)
+- [Metafields (GraphQL)](https://shopify.dev/docs/api/admin-graphql/2023-07/objects/Metafield)
+- [Orders](https://shopify.dev/api/admin-rest/2023-07/resources/order#top)
+- [Order Refunds](https://shopify.dev/api/admin-rest/2023-07/resources/refund#top)
+- [Order Risks](https://shopify.dev/api/admin-rest/2023-07/resources/order-risk#top)
+- [Pages](https://shopify.dev/api/admin-rest/2023-07/resources/page#top)
+- [Price Rules](https://shopify.dev/api/admin-rest/2023-07/resources/pricerule#top)
+- [Products](https://shopify.dev/api/admin-rest/2023-07/resources/product#top)
- [Products (GraphQL)](https://shopify.dev/api/admin-graphql/2022-10/queries/products)
-- [Product Images](https://shopify.dev/api/admin-rest/2022-01/resources/product-image)
-- [Product Variants](https://shopify.dev/api/admin-rest/2022-01/resources/product-variant)
-- [Shop](https://shopify.dev/api/admin-rest/2022-01/resources/shop)
-- [Smart Collections](https://shopify.dev/api/admin-rest/2022-01/resources/smartcollection)
-- [Transactions](https://shopify.dev/api/admin-rest/2022-01/resources/transaction#top)
-- [Tender Transactions](https://shopify.dev/api/admin-rest/2022-01/resources/tendertransaction)
+- [Product Images](https://shopify.dev/api/admin-rest/2023-07/resources/product-image)
+- [Product Variants](https://shopify.dev/api/admin-rest/2023-07/resources/product-variant)
+- [Shop](https://shopify.dev/api/admin-rest/2023-07/resources/shop)
+- [Smart Collections](https://shopify.dev/api/admin-rest/2023-07/resources/smartcollection)
+- [Transactions](https://shopify.dev/api/admin-rest/2023-07/resources/transaction#top)
+- [Transactions (GraphQL)](https://shopify.dev/docs/api/admin-graphql/2023-07/objects/OrderTransaction)
+- [Tender Transactions](https://shopify.dev/api/admin-rest/2023-07/resources/tendertransaction)
## Capturing deleted records
@@ -191,14 +193,8 @@ Waiting seconds then retrying..."
This is expected when the connector hits a `429 - Rate Limit Exceeded` HTTP Error. The sync operation will continue successfully after a short backoff period.
-#### Incremental sync recommendations
+For all `Shopify GraphQL BULK` api requests these limitations are applied: https://shopify.dev/docs/api/usage/bulk-operations/queries#operation-restrictions
-For the smoothest experience with Incremental Refresh sync mode, the following is recommended:
-
-- The `Order Refunds`, `Order Risks`, `Transactions` should be synced along with `Orders` stream.
-- `Discount Codes` should be synced along with `Price Rules` stream.
-
-If a child stream is synced independently of its parent stream, a full sync will occur, followed by a filtering out of records. This process may be less efficient compared to syncing child streams alongside their respective parent streams.
### Troubleshooting
@@ -211,6 +207,7 @@ If a child stream is synced independently of its parent stream, a full sync will
| Version | Date | Pull Request | Subject |
| :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |
+| 2.0.0 | 2024-02-12 | [32345](https://github.com/airbytehq/airbyte/pull/32345) | Fixed the issue with `state` causing the `substreams` to skip the records, made `metafield_*`: `collections, customers, draft_orders, locations, orders, product_images, product_variants, products`, and `fulfillment_orders, collections, discount_codes, inventory_levels, inventory_items, transactions_graphql, customer_address` streams to use `BULK Operations` instead of `REST`|
| 1.1.8 | 2024-02-12 | [35166](https://github.com/airbytehq/airbyte/pull/35166) | Manage dependencies with Poetry. |
| 1.1.7 | 2024-01-19 | [33804](https://github.com/airbytehq/airbyte/pull/33804) | Updated documentation with list of all supported streams |
| 1.1.6 | 2024-01-04 | [33414](https://github.com/airbytehq/airbyte/pull/33414) | Prepare for airbyte-lib |