airbyte-agent-shopify 0.1.9__tar.gz → 0.1.16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/AUTH.md +1 -1
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/CHANGELOG.md +35 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/PKG-INFO +5 -5
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/README.md +4 -4
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/__init__.py +6 -6
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/connector_model_loader.py +54 -8
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/http_client.py +1 -1
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/schema/security.py +0 -1
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/connector.py +1 -1
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/connector_model.py +1 -2
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/pyproject.toml +1 -1
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/.gitignore +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/REFERENCE.md +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/__init__.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/__init__.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/auth_strategies.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/auth_template.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/cloud_utils/__init__.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/cloud_utils/client.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/constants.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/exceptions.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/executor/__init__.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/executor/hosted_executor.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/executor/local_executor.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/executor/models.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/extensions.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/http/__init__.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/http/adapters/__init__.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/http/adapters/httpx_adapter.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/http/config.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/http/exceptions.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/http/protocols.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/http/response.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/introspection.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/logging/__init__.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/logging/logger.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/logging/types.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/observability/__init__.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/observability/config.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/observability/models.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/observability/redactor.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/observability/session.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/performance/__init__.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/performance/instrumentation.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/performance/metrics.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/schema/__init__.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/schema/base.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/schema/components.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/schema/connector.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/schema/extensions.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/schema/operations.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/secrets.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/telemetry/__init__.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/telemetry/config.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/telemetry/events.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/telemetry/tracker.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/types.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/utils.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/_vendored/connector_sdk/validation.py +0 -0
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/models.py +65 -65
- {airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/types.py +0 -0
|
@@ -65,7 +65,7 @@ After creating the connector, execute operations using either the Python SDK or
|
|
|
65
65
|
from airbyte_agent_shopify import ShopifyConnector
|
|
66
66
|
|
|
67
67
|
connector = ShopifyConnector(
|
|
68
|
-
external_user_id="<
|
|
68
|
+
external_user_id="<your_external_user_id>",
|
|
69
69
|
airbyte_client_id="<your-client-id>",
|
|
70
70
|
airbyte_client_secret="<your-client-secret>"
|
|
71
71
|
)
|
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Shopify changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.16] - 2026-01-28
|
|
4
|
+
- Updated connector definition (YAML version 0.1.2)
|
|
5
|
+
- Source commit: 71f48c10
|
|
6
|
+
- SDK version: 0.1.0
|
|
7
|
+
|
|
8
|
+
## [0.1.15] - 2026-01-27
|
|
9
|
+
- Updated connector definition (YAML version 0.1.2)
|
|
10
|
+
- Source commit: 0f5e1914
|
|
11
|
+
- SDK version: 0.1.0
|
|
12
|
+
|
|
13
|
+
## [0.1.14] - 2026-01-27
|
|
14
|
+
- Updated connector definition (YAML version 0.1.2)
|
|
15
|
+
- Source commit: a01f6b16
|
|
16
|
+
- SDK version: 0.1.0
|
|
17
|
+
|
|
18
|
+
## [0.1.13] - 2026-01-27
|
|
19
|
+
- Updated connector definition (YAML version 0.1.2)
|
|
20
|
+
- Source commit: c9b05509
|
|
21
|
+
- SDK version: 0.1.0
|
|
22
|
+
|
|
23
|
+
## [0.1.12] - 2026-01-27
|
|
24
|
+
- Updated connector definition (YAML version 0.1.1)
|
|
25
|
+
- Source commit: 4bded58d
|
|
26
|
+
- SDK version: 0.1.0
|
|
27
|
+
|
|
28
|
+
## [0.1.11] - 2026-01-26
|
|
29
|
+
- Updated connector definition (YAML version 0.1.1)
|
|
30
|
+
- Source commit: 74809153
|
|
31
|
+
- SDK version: 0.1.0
|
|
32
|
+
|
|
33
|
+
## [0.1.10] - 2026-01-26
|
|
34
|
+
- Updated connector definition (YAML version 0.1.1)
|
|
35
|
+
- Source commit: b73c71e0
|
|
36
|
+
- SDK version: 0.1.0
|
|
37
|
+
|
|
3
38
|
## [0.1.9] - 2026-01-24
|
|
4
39
|
- Updated connector definition (YAML version 0.1.1)
|
|
5
40
|
- Source commit: 609c1d86
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: airbyte-agent-shopify
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.16
|
|
4
4
|
Summary: Airbyte Shopify Connector for AI platforms
|
|
5
5
|
Project-URL: Homepage, https://github.com/airbytehq/airbyte-agent-connectors
|
|
6
6
|
Project-URL: Documentation, https://docs.airbyte.com/ai-agents/
|
|
@@ -108,7 +108,7 @@ This example assumes you've already authenticated your connector with Airbyte. S
|
|
|
108
108
|
from airbyte_agent_shopify import ShopifyConnector
|
|
109
109
|
|
|
110
110
|
connector = ShopifyConnector(
|
|
111
|
-
external_user_id="<
|
|
111
|
+
external_user_id="<your_external_user_id>",
|
|
112
112
|
airbyte_client_id="<your-client-id>",
|
|
113
113
|
airbyte_client_secret="<your-client-secret>"
|
|
114
114
|
)
|
|
@@ -168,6 +168,6 @@ For the service's official API docs, see the [Shopify API reference](https://sho
|
|
|
168
168
|
|
|
169
169
|
## Version information
|
|
170
170
|
|
|
171
|
-
- **Package version:** 0.1.
|
|
172
|
-
- **Connector version:** 0.1.
|
|
173
|
-
- **Generated with Connector SDK commit SHA:**
|
|
171
|
+
- **Package version:** 0.1.16
|
|
172
|
+
- **Connector version:** 0.1.2
|
|
173
|
+
- **Generated with Connector SDK commit SHA:** 71f48c102ce98c9298e5102761e740f0d97eb71b
|
|
@@ -75,7 +75,7 @@ This example assumes you've already authenticated your connector with Airbyte. S
|
|
|
75
75
|
from airbyte_agent_shopify import ShopifyConnector
|
|
76
76
|
|
|
77
77
|
connector = ShopifyConnector(
|
|
78
|
-
external_user_id="<
|
|
78
|
+
external_user_id="<your_external_user_id>",
|
|
79
79
|
airbyte_client_id="<your-client-id>",
|
|
80
80
|
airbyte_client_secret="<your-client-secret>"
|
|
81
81
|
)
|
|
@@ -135,6 +135,6 @@ For the service's official API docs, see the [Shopify API reference](https://sho
|
|
|
135
135
|
|
|
136
136
|
## Version information
|
|
137
137
|
|
|
138
|
-
- **Package version:** 0.1.
|
|
139
|
-
- **Connector version:** 0.1.
|
|
140
|
-
- **Generated with Connector SDK commit SHA:**
|
|
138
|
+
- **Package version:** 0.1.16
|
|
139
|
+
- **Connector version:** 0.1.2
|
|
140
|
+
- **Generated with Connector SDK commit SHA:** 71f48c102ce98c9298e5102761e740f0d97eb71b
|
{airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/__init__.py
RENAMED
|
@@ -13,14 +13,14 @@ from .models import (
|
|
|
13
13
|
CustomerAddressList,
|
|
14
14
|
MarketingConsent,
|
|
15
15
|
OrderAddress,
|
|
16
|
-
Transaction,
|
|
17
|
-
Refund,
|
|
18
16
|
LineItem,
|
|
19
17
|
Fulfillment,
|
|
18
|
+
Transaction,
|
|
19
|
+
Refund,
|
|
20
20
|
Order,
|
|
21
21
|
OrderList,
|
|
22
|
-
ProductImage,
|
|
23
22
|
ProductVariant,
|
|
23
|
+
ProductImage,
|
|
24
24
|
Product,
|
|
25
25
|
ProductList,
|
|
26
26
|
ProductVariantList,
|
|
@@ -186,14 +186,14 @@ __all__ = [
|
|
|
186
186
|
"CustomerAddressList",
|
|
187
187
|
"MarketingConsent",
|
|
188
188
|
"OrderAddress",
|
|
189
|
-
"Transaction",
|
|
190
|
-
"Refund",
|
|
191
189
|
"LineItem",
|
|
192
190
|
"Fulfillment",
|
|
191
|
+
"Transaction",
|
|
192
|
+
"Refund",
|
|
193
193
|
"Order",
|
|
194
194
|
"OrderList",
|
|
195
|
-
"ProductImage",
|
|
196
195
|
"ProductVariant",
|
|
196
|
+
"ProductImage",
|
|
197
197
|
"Product",
|
|
198
198
|
"ProductList",
|
|
199
199
|
"ProductVariantList",
|
|
@@ -62,6 +62,53 @@ class TokenExtractValidationError(ConnectorModelLoaderError):
|
|
|
62
62
|
pass
|
|
63
63
|
|
|
64
64
|
|
|
65
|
+
# Expected auth_mapping keys for each auth type.
|
|
66
|
+
# These are the auth parameters that each security scheme expects, NOT the user's credential field names.
|
|
67
|
+
EXPECTED_AUTH_MAPPING_KEYS: dict[AuthType, set[str]] = {
|
|
68
|
+
AuthType.BEARER: {"token"},
|
|
69
|
+
AuthType.BASIC: {"username", "password"},
|
|
70
|
+
AuthType.API_KEY: {"api_key"},
|
|
71
|
+
AuthType.OAUTH2: {"access_token", "refresh_token", "client_id", "client_secret"},
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _validate_auth_mapping_keys(
|
|
76
|
+
auth_type: AuthType,
|
|
77
|
+
auth_config: AirbyteAuthConfig | None,
|
|
78
|
+
scheme_name: str = "default",
|
|
79
|
+
) -> None:
|
|
80
|
+
"""Validate that auth_mapping keys match expected parameters for the auth type.
|
|
81
|
+
|
|
82
|
+
The auth_mapping keys must be the parameters expected by the security scheme
|
|
83
|
+
(e.g., "token" for bearer), not the user's credential field names.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
auth_type: The authentication type
|
|
87
|
+
auth_config: The x-airbyte-auth-config containing auth_mapping
|
|
88
|
+
scheme_name: Name of the security scheme for error messages
|
|
89
|
+
|
|
90
|
+
Raises:
|
|
91
|
+
InvalidOpenAPIError: If auth_mapping keys don't match expected parameters
|
|
92
|
+
"""
|
|
93
|
+
if auth_config is None or auth_config.auth_mapping is None:
|
|
94
|
+
return # No explicit auth_mapping, will use defaults
|
|
95
|
+
|
|
96
|
+
expected_keys = EXPECTED_AUTH_MAPPING_KEYS.get(auth_type)
|
|
97
|
+
if expected_keys is None:
|
|
98
|
+
return # Unknown auth type, skip validation
|
|
99
|
+
|
|
100
|
+
actual_keys = set(auth_config.auth_mapping.keys())
|
|
101
|
+
invalid_keys = actual_keys - expected_keys
|
|
102
|
+
|
|
103
|
+
if invalid_keys:
|
|
104
|
+
raise InvalidOpenAPIError(
|
|
105
|
+
f"Invalid auth_mapping keys for {auth_type.value} auth in scheme '{scheme_name}': {invalid_keys}. "
|
|
106
|
+
f"Expected keys for {auth_type.value}: {sorted(expected_keys)}. "
|
|
107
|
+
f"Note: auth_mapping keys must be the auth parameters (e.g., 'token' for bearer), "
|
|
108
|
+
f'not your credential field names. Use template syntax to map: token: "${{your_field}}"'
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
|
|
65
112
|
def extract_path_params(path: str) -> list[str]:
|
|
66
113
|
"""Extract parameter names from path template.
|
|
67
114
|
|
|
@@ -711,7 +758,6 @@ def _generate_default_auth_config(auth_type: AuthType) -> AirbyteAuthConfig:
|
|
|
711
758
|
description="Authentication bearer token",
|
|
712
759
|
format=None,
|
|
713
760
|
pattern=None,
|
|
714
|
-
airbyte_secret=False,
|
|
715
761
|
default=None,
|
|
716
762
|
)
|
|
717
763
|
},
|
|
@@ -731,7 +777,6 @@ def _generate_default_auth_config(auth_type: AuthType) -> AirbyteAuthConfig:
|
|
|
731
777
|
description="Authentication username",
|
|
732
778
|
format=None,
|
|
733
779
|
pattern=None,
|
|
734
|
-
airbyte_secret=False,
|
|
735
780
|
default=None,
|
|
736
781
|
),
|
|
737
782
|
"password": AuthConfigFieldSpec(
|
|
@@ -740,7 +785,6 @@ def _generate_default_auth_config(auth_type: AuthType) -> AirbyteAuthConfig:
|
|
|
740
785
|
description="Authentication password",
|
|
741
786
|
format=None,
|
|
742
787
|
pattern=None,
|
|
743
|
-
airbyte_secret=False,
|
|
744
788
|
default=None,
|
|
745
789
|
),
|
|
746
790
|
},
|
|
@@ -760,7 +804,6 @@ def _generate_default_auth_config(auth_type: AuthType) -> AirbyteAuthConfig:
|
|
|
760
804
|
description="API authentication key",
|
|
761
805
|
format=None,
|
|
762
806
|
pattern=None,
|
|
763
|
-
airbyte_secret=False,
|
|
764
807
|
default=None,
|
|
765
808
|
)
|
|
766
809
|
},
|
|
@@ -785,7 +828,6 @@ def _generate_default_auth_config(auth_type: AuthType) -> AirbyteAuthConfig:
|
|
|
785
828
|
description="OAuth2 access token",
|
|
786
829
|
format=None,
|
|
787
830
|
pattern=None,
|
|
788
|
-
airbyte_secret=False,
|
|
789
831
|
default=None,
|
|
790
832
|
),
|
|
791
833
|
"refresh_token": AuthConfigFieldSpec(
|
|
@@ -794,7 +836,6 @@ def _generate_default_auth_config(auth_type: AuthType) -> AirbyteAuthConfig:
|
|
|
794
836
|
description="OAuth2 refresh token (optional)",
|
|
795
837
|
format=None,
|
|
796
838
|
pattern=None,
|
|
797
|
-
airbyte_secret=False,
|
|
798
839
|
default=None,
|
|
799
840
|
),
|
|
800
841
|
"client_id": AuthConfigFieldSpec(
|
|
@@ -803,7 +844,6 @@ def _generate_default_auth_config(auth_type: AuthType) -> AirbyteAuthConfig:
|
|
|
803
844
|
description="OAuth2 client ID (optional)",
|
|
804
845
|
format=None,
|
|
805
846
|
pattern=None,
|
|
806
|
-
airbyte_secret=False,
|
|
807
847
|
default=None,
|
|
808
848
|
),
|
|
809
849
|
"client_secret": AuthConfigFieldSpec(
|
|
@@ -812,7 +852,6 @@ def _generate_default_auth_config(auth_type: AuthType) -> AirbyteAuthConfig:
|
|
|
812
852
|
description="OAuth2 client secret (optional)",
|
|
813
853
|
format=None,
|
|
814
854
|
pattern=None,
|
|
815
|
-
airbyte_secret=False,
|
|
816
855
|
default=None,
|
|
817
856
|
),
|
|
818
857
|
},
|
|
@@ -924,6 +963,9 @@ def _parse_single_security_scheme(scheme: Any) -> AuthConfig:
|
|
|
924
963
|
oauth2_config = _parse_oauth2_config(scheme)
|
|
925
964
|
# Use explicit x-airbyte-auth-config if present, otherwise generate default
|
|
926
965
|
auth_config_obj = scheme.x_airbyte_auth_config or _generate_default_auth_config(AuthType.OAUTH2)
|
|
966
|
+
# Validate auth_mapping keys if explicitly provided
|
|
967
|
+
if scheme.x_airbyte_auth_config:
|
|
968
|
+
_validate_auth_mapping_keys(AuthType.OAUTH2, scheme.x_airbyte_auth_config)
|
|
927
969
|
return AuthConfig(
|
|
928
970
|
type=AuthType.OAUTH2,
|
|
929
971
|
config=oauth2_config,
|
|
@@ -934,6 +976,10 @@ def _parse_single_security_scheme(scheme: Any) -> AuthConfig:
|
|
|
934
976
|
# Use explicit x-airbyte-auth-config if present, otherwise generate default
|
|
935
977
|
auth_config_obj = scheme.x_airbyte_auth_config or _generate_default_auth_config(auth_type)
|
|
936
978
|
|
|
979
|
+
# Validate auth_mapping keys if explicitly provided
|
|
980
|
+
if scheme.x_airbyte_auth_config:
|
|
981
|
+
_validate_auth_mapping_keys(auth_type, scheme.x_airbyte_auth_config)
|
|
982
|
+
|
|
937
983
|
return AuthConfig(
|
|
938
984
|
type=auth_type,
|
|
939
985
|
config=auth_config,
|
|
@@ -490,7 +490,7 @@ class HTTPClient:
|
|
|
490
490
|
|
|
491
491
|
if not response_text.strip():
|
|
492
492
|
response_data = {}
|
|
493
|
-
elif "application/json" in content_type or not content_type:
|
|
493
|
+
elif "application/json" in content_type or "+json" in content_type or not content_type:
|
|
494
494
|
response_data = await response.json()
|
|
495
495
|
else:
|
|
496
496
|
error_msg = f"Expected JSON response for {method.upper()} {url}, got content-type: {content_type}"
|
|
@@ -55,7 +55,6 @@ class AuthConfigFieldSpec(BaseModel):
|
|
|
55
55
|
description: str | None = None
|
|
56
56
|
format: str | None = None # e.g., "email", "uri"
|
|
57
57
|
pattern: str | None = None # Regex validation
|
|
58
|
-
airbyte_secret: bool = Field(False, alias="airbyte_secret")
|
|
59
58
|
default: Any | None = None
|
|
60
59
|
|
|
61
60
|
|
{airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/connector.py
RENAMED
|
@@ -178,7 +178,7 @@ class ShopifyConnector:
|
|
|
178
178
|
"""
|
|
179
179
|
|
|
180
180
|
connector_name = "shopify"
|
|
181
|
-
connector_version = "0.1.
|
|
181
|
+
connector_version = "0.1.2"
|
|
182
182
|
vendored_sdk_version = "0.1.0" # Version of vendored connector-sdk
|
|
183
183
|
|
|
184
184
|
# Map of (entity, action) -> needs_envelope for envelope wrapping decision
|
|
@@ -26,7 +26,7 @@ from uuid import (
|
|
|
26
26
|
ShopifyConnectorModel: ConnectorModel = ConnectorModel(
|
|
27
27
|
id=UUID('9da77001-af33-4bcd-be46-6252bf9342b9'),
|
|
28
28
|
name='shopify',
|
|
29
|
-
version='0.1.
|
|
29
|
+
version='0.1.2',
|
|
30
30
|
base_url='https://{shop}.myshopify.com/admin/api/2025-01',
|
|
31
31
|
auth=AuthConfig(
|
|
32
32
|
type=AuthType.API_KEY,
|
|
@@ -39,7 +39,6 @@ ShopifyConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
39
39
|
'api_key': AuthConfigFieldSpec(
|
|
40
40
|
title='Access Token',
|
|
41
41
|
description='Your Shopify Admin API access token',
|
|
42
|
-
airbyte_secret=True,
|
|
43
42
|
),
|
|
44
43
|
'shop': AuthConfigFieldSpec(
|
|
45
44
|
title='Shop Name',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{airbyte_agent_shopify-0.1.9 → airbyte_agent_shopify-0.1.16}/airbyte_agent_shopify/models.py
RENAMED
|
@@ -119,55 +119,6 @@ class OrderAddress(BaseModel):
|
|
|
119
119
|
latitude: Union[float | None, Any] = Field(default=None)
|
|
120
120
|
longitude: Union[float | None, Any] = Field(default=None)
|
|
121
121
|
|
|
122
|
-
class Transaction(BaseModel):
|
|
123
|
-
"""An order transaction"""
|
|
124
|
-
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
125
|
-
|
|
126
|
-
id: Union[int, Any] = Field(default=None)
|
|
127
|
-
order_id: Union[int | None, Any] = Field(default=None)
|
|
128
|
-
kind: Union[str | None, Any] = Field(default=None)
|
|
129
|
-
gateway: Union[str | None, Any] = Field(default=None)
|
|
130
|
-
status: Union[str | None, Any] = Field(default=None)
|
|
131
|
-
message: Union[str | None, Any] = Field(default=None)
|
|
132
|
-
created_at: Union[str | None, Any] = Field(default=None)
|
|
133
|
-
test: Union[bool | None, Any] = Field(default=None)
|
|
134
|
-
authorization: Union[str | None, Any] = Field(default=None)
|
|
135
|
-
location_id: Union[int | None, Any] = Field(default=None)
|
|
136
|
-
user_id: Union[int | None, Any] = Field(default=None)
|
|
137
|
-
parent_id: Union[int | None, Any] = Field(default=None)
|
|
138
|
-
processed_at: Union[str | None, Any] = Field(default=None)
|
|
139
|
-
device_id: Union[int | None, Any] = Field(default=None)
|
|
140
|
-
error_code: Union[str | None, Any] = Field(default=None)
|
|
141
|
-
source_name: Union[str | None, Any] = Field(default=None)
|
|
142
|
-
receipt: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
143
|
-
currency_exchange_adjustment: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
144
|
-
amount: Union[str | None, Any] = Field(default=None)
|
|
145
|
-
currency: Union[str | None, Any] = Field(default=None)
|
|
146
|
-
payment_id: Union[str | None, Any] = Field(default=None)
|
|
147
|
-
total_unsettled_set: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
148
|
-
manual_payment_gateway: Union[bool | None, Any] = Field(default=None)
|
|
149
|
-
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
150
|
-
|
|
151
|
-
class Refund(BaseModel):
|
|
152
|
-
"""An order refund"""
|
|
153
|
-
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
154
|
-
|
|
155
|
-
id: Union[int, Any] = Field(default=None)
|
|
156
|
-
order_id: Union[int | None, Any] = Field(default=None)
|
|
157
|
-
created_at: Union[str | None, Any] = Field(default=None)
|
|
158
|
-
note: Union[str | None, Any] = Field(default=None)
|
|
159
|
-
user_id: Union[int | None, Any] = Field(default=None)
|
|
160
|
-
processed_at: Union[str | None, Any] = Field(default=None)
|
|
161
|
-
restock: Union[bool | None, Any] = Field(default=None)
|
|
162
|
-
duties: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
163
|
-
total_duties_set: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
164
|
-
return_: Union[dict[str, Any] | None, Any] = Field(default=None, alias="return")
|
|
165
|
-
refund_line_items: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
166
|
-
transactions: Union[list[Transaction] | None, Any] = Field(default=None)
|
|
167
|
-
order_adjustments: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
168
|
-
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
169
|
-
refund_shipping_lines: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
170
|
-
|
|
171
122
|
class LineItem(BaseModel):
|
|
172
123
|
"""LineItem type definition"""
|
|
173
124
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
@@ -225,6 +176,55 @@ class Fulfillment(BaseModel):
|
|
|
225
176
|
name: Union[str | None, Any] = Field(default=None)
|
|
226
177
|
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
227
178
|
|
|
179
|
+
class Transaction(BaseModel):
|
|
180
|
+
"""An order transaction"""
|
|
181
|
+
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
182
|
+
|
|
183
|
+
id: Union[int, Any] = Field(default=None)
|
|
184
|
+
order_id: Union[int | None, Any] = Field(default=None)
|
|
185
|
+
kind: Union[str | None, Any] = Field(default=None)
|
|
186
|
+
gateway: Union[str | None, Any] = Field(default=None)
|
|
187
|
+
status: Union[str | None, Any] = Field(default=None)
|
|
188
|
+
message: Union[str | None, Any] = Field(default=None)
|
|
189
|
+
created_at: Union[str | None, Any] = Field(default=None)
|
|
190
|
+
test: Union[bool | None, Any] = Field(default=None)
|
|
191
|
+
authorization: Union[str | None, Any] = Field(default=None)
|
|
192
|
+
location_id: Union[int | None, Any] = Field(default=None)
|
|
193
|
+
user_id: Union[int | None, Any] = Field(default=None)
|
|
194
|
+
parent_id: Union[int | None, Any] = Field(default=None)
|
|
195
|
+
processed_at: Union[str | None, Any] = Field(default=None)
|
|
196
|
+
device_id: Union[int | None, Any] = Field(default=None)
|
|
197
|
+
error_code: Union[str | None, Any] = Field(default=None)
|
|
198
|
+
source_name: Union[str | None, Any] = Field(default=None)
|
|
199
|
+
receipt: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
200
|
+
currency_exchange_adjustment: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
201
|
+
amount: Union[str | None, Any] = Field(default=None)
|
|
202
|
+
currency: Union[str | None, Any] = Field(default=None)
|
|
203
|
+
payment_id: Union[str | None, Any] = Field(default=None)
|
|
204
|
+
total_unsettled_set: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
205
|
+
manual_payment_gateway: Union[bool | None, Any] = Field(default=None)
|
|
206
|
+
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
207
|
+
|
|
208
|
+
class Refund(BaseModel):
|
|
209
|
+
"""An order refund"""
|
|
210
|
+
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
211
|
+
|
|
212
|
+
id: Union[int, Any] = Field(default=None)
|
|
213
|
+
order_id: Union[int | None, Any] = Field(default=None)
|
|
214
|
+
created_at: Union[str | None, Any] = Field(default=None)
|
|
215
|
+
note: Union[str | None, Any] = Field(default=None)
|
|
216
|
+
user_id: Union[int | None, Any] = Field(default=None)
|
|
217
|
+
processed_at: Union[str | None, Any] = Field(default=None)
|
|
218
|
+
restock: Union[bool | None, Any] = Field(default=None)
|
|
219
|
+
duties: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
220
|
+
total_duties_set: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
221
|
+
return_: Union[dict[str, Any] | None, Any] = Field(default=None, alias="return")
|
|
222
|
+
refund_line_items: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
223
|
+
transactions: Union[list[Transaction] | None, Any] = Field(default=None)
|
|
224
|
+
order_adjustments: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
225
|
+
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
226
|
+
refund_shipping_lines: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
227
|
+
|
|
228
228
|
class Order(BaseModel):
|
|
229
229
|
"""A Shopify order"""
|
|
230
230
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
@@ -329,22 +329,6 @@ class OrderList(BaseModel):
|
|
|
329
329
|
|
|
330
330
|
orders: Union[list[Order], Any] = Field(default=None)
|
|
331
331
|
|
|
332
|
-
class ProductImage(BaseModel):
|
|
333
|
-
"""A product image"""
|
|
334
|
-
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
335
|
-
|
|
336
|
-
id: Union[int, Any] = Field(default=None)
|
|
337
|
-
product_id: Union[int | None, Any] = Field(default=None)
|
|
338
|
-
position: Union[int | None, Any] = Field(default=None)
|
|
339
|
-
created_at: Union[str | None, Any] = Field(default=None)
|
|
340
|
-
updated_at: Union[str | None, Any] = Field(default=None)
|
|
341
|
-
alt: Union[str | None, Any] = Field(default=None)
|
|
342
|
-
width: Union[int | None, Any] = Field(default=None)
|
|
343
|
-
height: Union[int | None, Any] = Field(default=None)
|
|
344
|
-
src: Union[str | None, Any] = Field(default=None)
|
|
345
|
-
variant_ids: Union[list[int] | None, Any] = Field(default=None)
|
|
346
|
-
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
347
|
-
|
|
348
332
|
class ProductVariant(BaseModel):
|
|
349
333
|
"""A product variant"""
|
|
350
334
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
@@ -376,6 +360,22 @@ class ProductVariant(BaseModel):
|
|
|
376
360
|
requires_shipping: Union[bool | None, Any] = Field(default=None)
|
|
377
361
|
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
378
362
|
|
|
363
|
+
class ProductImage(BaseModel):
|
|
364
|
+
"""A product image"""
|
|
365
|
+
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
366
|
+
|
|
367
|
+
id: Union[int, Any] = Field(default=None)
|
|
368
|
+
product_id: Union[int | None, Any] = Field(default=None)
|
|
369
|
+
position: Union[int | None, Any] = Field(default=None)
|
|
370
|
+
created_at: Union[str | None, Any] = Field(default=None)
|
|
371
|
+
updated_at: Union[str | None, Any] = Field(default=None)
|
|
372
|
+
alt: Union[str | None, Any] = Field(default=None)
|
|
373
|
+
width: Union[int | None, Any] = Field(default=None)
|
|
374
|
+
height: Union[int | None, Any] = Field(default=None)
|
|
375
|
+
src: Union[str | None, Any] = Field(default=None)
|
|
376
|
+
variant_ids: Union[list[int] | None, Any] = Field(default=None)
|
|
377
|
+
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
378
|
+
|
|
379
379
|
class Product(BaseModel):
|
|
380
380
|
"""A Shopify product"""
|
|
381
381
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
File without changes
|