airbyte-agent-zendesk-support 0.18.42__tar.gz → 0.18.47__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_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/CHANGELOG.md +25 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/PKG-INFO +4 -4
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/README.md +3 -3
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/REFERENCE.md +46 -44
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/connector_model_loader.py +3 -2
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/local_executor.py +8 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/base.py +4 -1
- airbyte_agent_zendesk_support-0.18.47/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/extensions.py +230 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/connector.py +2 -1
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/connector_model.py +3 -3
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/models.py +1 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/types.py +1 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/pyproject.toml +1 -1
- airbyte_agent_zendesk_support-0.18.42/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/extensions.py +0 -109
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/.gitignore +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/auth_strategies.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/auth_template.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/cloud_utils/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/cloud_utils/client.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/constants.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/exceptions.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/hosted_executor.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/executor/models.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/extensions.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/adapters/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/adapters/httpx_adapter.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/config.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/exceptions.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/protocols.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http/response.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/http_client.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/introspection.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/logging/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/logging/logger.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/logging/types.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/config.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/models.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/redactor.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/observability/session.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/performance/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/performance/instrumentation.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/performance/metrics.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/components.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/connector.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/operations.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/schema/security.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/secrets.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/__init__.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/config.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/events.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/telemetry/tracker.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/types.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/utils.py +0 -0
- {airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/airbyte_agent_zendesk_support/_vendored/connector_sdk/validation.py +0 -0
{airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/CHANGELOG.md
RENAMED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Zendesk Support changelog
|
|
2
2
|
|
|
3
|
+
## [0.18.47] - 2026-01-16
|
|
4
|
+
- Updated connector definition (YAML version 0.1.5)
|
|
5
|
+
- Source commit: ca5acdda
|
|
6
|
+
- SDK version: 0.1.0
|
|
7
|
+
|
|
8
|
+
## [0.18.46] - 2026-01-15
|
|
9
|
+
- Updated connector definition (YAML version 0.1.5)
|
|
10
|
+
- Source commit: fa9a3b02
|
|
11
|
+
- SDK version: 0.1.0
|
|
12
|
+
|
|
13
|
+
## [0.18.45] - 2026-01-15
|
|
14
|
+
- Updated connector definition (YAML version 0.1.5)
|
|
15
|
+
- Source commit: 61a2e822
|
|
16
|
+
- SDK version: 0.1.0
|
|
17
|
+
|
|
18
|
+
## [0.18.44] - 2026-01-15
|
|
19
|
+
- Updated connector definition (YAML version 0.1.5)
|
|
20
|
+
- Source commit: 236c9a8a
|
|
21
|
+
- SDK version: 0.1.0
|
|
22
|
+
|
|
23
|
+
## [0.18.43] - 2026-01-15
|
|
24
|
+
- Updated connector definition (YAML version 0.1.4)
|
|
25
|
+
- Source commit: 35211193
|
|
26
|
+
- SDK version: 0.1.0
|
|
27
|
+
|
|
3
28
|
## [0.18.42] - 2026-01-15
|
|
4
29
|
- Updated connector definition (YAML version 0.1.4)
|
|
5
30
|
- Source commit: 20b3afd9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: airbyte-agent-zendesk-support
|
|
3
|
-
Version: 0.18.
|
|
3
|
+
Version: 0.18.47
|
|
4
4
|
Summary: Airbyte Zendesk-Support 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/
|
|
@@ -140,6 +140,6 @@ For the service's official API docs, see the [Zendesk-Support API reference](htt
|
|
|
140
140
|
|
|
141
141
|
## Version information
|
|
142
142
|
|
|
143
|
-
- **Package version:** 0.18.
|
|
144
|
-
- **Connector version:** 0.1.
|
|
145
|
-
- **Generated with Connector SDK commit SHA:**
|
|
143
|
+
- **Package version:** 0.18.47
|
|
144
|
+
- **Connector version:** 0.1.5
|
|
145
|
+
- **Generated with Connector SDK commit SHA:** ca5acdda8030d8292c059c82f498a95b2227c106
|
|
@@ -107,6 +107,6 @@ For the service's official API docs, see the [Zendesk-Support API reference](htt
|
|
|
107
107
|
|
|
108
108
|
## Version information
|
|
109
109
|
|
|
110
|
-
- **Package version:** 0.18.
|
|
111
|
-
- **Connector version:** 0.1.
|
|
112
|
-
- **Generated with Connector SDK commit SHA:**
|
|
110
|
+
- **Package version:** 0.18.47
|
|
111
|
+
- **Connector version:** 0.1.5
|
|
112
|
+
- **Generated with Connector SDK commit SHA:** ca5acdda8030d8292c059c82f498a95b2227c106
|
{airbyte_agent_zendesk_support-0.18.42 → airbyte_agent_zendesk_support-0.18.47}/REFERENCE.md
RENAMED
|
@@ -46,7 +46,7 @@ await zendesk_support.tickets.list()
|
|
|
46
46
|
**API**
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
49
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
50
50
|
--header 'Content-Type: application/json' \
|
|
51
51
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
52
52
|
--data '{
|
|
@@ -138,7 +138,7 @@ await zendesk_support.tickets.get(
|
|
|
138
138
|
**API**
|
|
139
139
|
|
|
140
140
|
```bash
|
|
141
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
141
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
142
142
|
--header 'Content-Type: application/json' \
|
|
143
143
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
144
144
|
--data '{
|
|
@@ -223,7 +223,7 @@ await zendesk_support.users.list()
|
|
|
223
223
|
**API**
|
|
224
224
|
|
|
225
225
|
```bash
|
|
226
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
226
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
227
227
|
--header 'Content-Type: application/json' \
|
|
228
228
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
229
229
|
--data '{
|
|
@@ -314,7 +314,7 @@ await zendesk_support.users.get(
|
|
|
314
314
|
**API**
|
|
315
315
|
|
|
316
316
|
```bash
|
|
317
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
317
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
318
318
|
--header 'Content-Type: application/json' \
|
|
319
319
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
320
320
|
--data '{
|
|
@@ -398,7 +398,7 @@ await zendesk_support.organizations.list()
|
|
|
398
398
|
**API**
|
|
399
399
|
|
|
400
400
|
```bash
|
|
401
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
401
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
402
402
|
--header 'Content-Type: application/json' \
|
|
403
403
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
404
404
|
--data '{
|
|
@@ -463,7 +463,7 @@ await zendesk_support.organizations.get(
|
|
|
463
463
|
**API**
|
|
464
464
|
|
|
465
465
|
```bash
|
|
466
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
466
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
467
467
|
--header 'Content-Type: application/json' \
|
|
468
468
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
469
469
|
--data '{
|
|
@@ -523,7 +523,7 @@ await zendesk_support.groups.list()
|
|
|
523
523
|
**API**
|
|
524
524
|
|
|
525
525
|
```bash
|
|
526
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
526
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
527
527
|
--header 'Content-Type: application/json' \
|
|
528
528
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
529
529
|
--data '{
|
|
@@ -584,7 +584,7 @@ await zendesk_support.groups.get(
|
|
|
584
584
|
**API**
|
|
585
585
|
|
|
586
586
|
```bash
|
|
587
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
587
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
588
588
|
--header 'Content-Type: application/json' \
|
|
589
589
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
590
590
|
--data '{
|
|
@@ -641,7 +641,7 @@ await zendesk_support.ticket_comments.list(
|
|
|
641
641
|
**API**
|
|
642
642
|
|
|
643
643
|
```bash
|
|
644
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
644
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
645
645
|
--header 'Content-Type: application/json' \
|
|
646
646
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
647
647
|
--data '{
|
|
@@ -712,7 +712,7 @@ await zendesk_support.attachments.get(
|
|
|
712
712
|
**API**
|
|
713
713
|
|
|
714
714
|
```bash
|
|
715
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
715
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
716
716
|
--header 'Content-Type: application/json' \
|
|
717
717
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
718
718
|
--data '{
|
|
@@ -773,7 +773,7 @@ async for chunk in zendesk_support.attachments.download( attachment_id=0):# P
|
|
|
773
773
|
**API**
|
|
774
774
|
|
|
775
775
|
```bash
|
|
776
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
776
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
777
777
|
--header 'Content-Type: application/json' \
|
|
778
778
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
779
779
|
--data '{
|
|
@@ -809,7 +809,7 @@ await zendesk_support.ticket_audits.list()
|
|
|
809
809
|
**API**
|
|
810
810
|
|
|
811
811
|
```bash
|
|
812
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
812
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
813
813
|
--header 'Content-Type: application/json' \
|
|
814
814
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
815
815
|
--data '{
|
|
@@ -867,7 +867,7 @@ await zendesk_support.ticket_audits.list(
|
|
|
867
867
|
**API**
|
|
868
868
|
|
|
869
869
|
```bash
|
|
870
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
870
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
871
871
|
--header 'Content-Type: application/json' \
|
|
872
872
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
873
873
|
--data '{
|
|
@@ -929,7 +929,7 @@ await zendesk_support.ticket_metrics.list()
|
|
|
929
929
|
**API**
|
|
930
930
|
|
|
931
931
|
```bash
|
|
932
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
932
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
933
933
|
--header 'Content-Type: application/json' \
|
|
934
934
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
935
935
|
--data '{
|
|
@@ -1002,7 +1002,7 @@ await zendesk_support.ticket_fields.list()
|
|
|
1002
1002
|
**API**
|
|
1003
1003
|
|
|
1004
1004
|
```bash
|
|
1005
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1005
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1006
1006
|
--header 'Content-Type: application/json' \
|
|
1007
1007
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1008
1008
|
--data '{
|
|
@@ -1079,7 +1079,7 @@ await zendesk_support.ticket_fields.get(
|
|
|
1079
1079
|
**API**
|
|
1080
1080
|
|
|
1081
1081
|
```bash
|
|
1082
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1082
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1083
1083
|
--header 'Content-Type: application/json' \
|
|
1084
1084
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1085
1085
|
--data '{
|
|
@@ -1150,7 +1150,7 @@ await zendesk_support.brands.list()
|
|
|
1150
1150
|
**API**
|
|
1151
1151
|
|
|
1152
1152
|
```bash
|
|
1153
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1153
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1154
1154
|
--header 'Content-Type: application/json' \
|
|
1155
1155
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1156
1156
|
--data '{
|
|
@@ -1217,7 +1217,7 @@ await zendesk_support.brands.get(
|
|
|
1217
1217
|
**API**
|
|
1218
1218
|
|
|
1219
1219
|
```bash
|
|
1220
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1220
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1221
1221
|
--header 'Content-Type: application/json' \
|
|
1222
1222
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1223
1223
|
--data '{
|
|
@@ -1279,7 +1279,7 @@ await zendesk_support.views.list()
|
|
|
1279
1279
|
**API**
|
|
1280
1280
|
|
|
1281
1281
|
```bash
|
|
1282
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1282
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1283
1283
|
--header 'Content-Type: application/json' \
|
|
1284
1284
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1285
1285
|
--data '{
|
|
@@ -1347,7 +1347,7 @@ await zendesk_support.views.get(
|
|
|
1347
1347
|
**API**
|
|
1348
1348
|
|
|
1349
1349
|
```bash
|
|
1350
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1350
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1351
1351
|
--header 'Content-Type: application/json' \
|
|
1352
1352
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1353
1353
|
--data '{
|
|
@@ -1405,7 +1405,7 @@ await zendesk_support.macros.list()
|
|
|
1405
1405
|
**API**
|
|
1406
1406
|
|
|
1407
1407
|
```bash
|
|
1408
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1408
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1409
1409
|
--header 'Content-Type: application/json' \
|
|
1410
1410
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1411
1411
|
--data '{
|
|
@@ -1474,7 +1474,7 @@ await zendesk_support.macros.get(
|
|
|
1474
1474
|
**API**
|
|
1475
1475
|
|
|
1476
1476
|
```bash
|
|
1477
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1477
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1478
1478
|
--header 'Content-Type: application/json' \
|
|
1479
1479
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1480
1480
|
--data '{
|
|
@@ -1531,7 +1531,7 @@ await zendesk_support.triggers.list()
|
|
|
1531
1531
|
**API**
|
|
1532
1532
|
|
|
1533
1533
|
```bash
|
|
1534
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1534
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1535
1535
|
--header 'Content-Type: application/json' \
|
|
1536
1536
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1537
1537
|
--data '{
|
|
@@ -1597,7 +1597,7 @@ await zendesk_support.triggers.get(
|
|
|
1597
1597
|
**API**
|
|
1598
1598
|
|
|
1599
1599
|
```bash
|
|
1600
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1600
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1601
1601
|
--header 'Content-Type: application/json' \
|
|
1602
1602
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1603
1603
|
--data '{
|
|
@@ -1655,7 +1655,7 @@ await zendesk_support.automations.list()
|
|
|
1655
1655
|
**API**
|
|
1656
1656
|
|
|
1657
1657
|
```bash
|
|
1658
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1658
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1659
1659
|
--header 'Content-Type: application/json' \
|
|
1660
1660
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1661
1661
|
--data '{
|
|
@@ -1718,7 +1718,7 @@ await zendesk_support.automations.get(
|
|
|
1718
1718
|
**API**
|
|
1719
1719
|
|
|
1720
1720
|
```bash
|
|
1721
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1721
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1722
1722
|
--header 'Content-Type: application/json' \
|
|
1723
1723
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1724
1724
|
--data '{
|
|
@@ -1774,7 +1774,7 @@ await zendesk_support.tags.list()
|
|
|
1774
1774
|
**API**
|
|
1775
1775
|
|
|
1776
1776
|
```bash
|
|
1777
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1777
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1778
1778
|
--header 'Content-Type: application/json' \
|
|
1779
1779
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1780
1780
|
--data '{
|
|
@@ -1827,7 +1827,7 @@ await zendesk_support.satisfaction_ratings.list()
|
|
|
1827
1827
|
**API**
|
|
1828
1828
|
|
|
1829
1829
|
```bash
|
|
1830
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1830
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1831
1831
|
--header 'Content-Type: application/json' \
|
|
1832
1832
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1833
1833
|
--data '{
|
|
@@ -1894,7 +1894,7 @@ await zendesk_support.satisfaction_ratings.get(
|
|
|
1894
1894
|
**API**
|
|
1895
1895
|
|
|
1896
1896
|
```bash
|
|
1897
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1897
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1898
1898
|
--header 'Content-Type: application/json' \
|
|
1899
1899
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1900
1900
|
--data '{
|
|
@@ -1953,7 +1953,7 @@ await zendesk_support.group_memberships.list()
|
|
|
1953
1953
|
**API**
|
|
1954
1954
|
|
|
1955
1955
|
```bash
|
|
1956
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
1956
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
1957
1957
|
--header 'Content-Type: application/json' \
|
|
1958
1958
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
1959
1959
|
--data '{
|
|
@@ -2011,7 +2011,7 @@ await zendesk_support.organization_memberships.list()
|
|
|
2011
2011
|
**API**
|
|
2012
2012
|
|
|
2013
2013
|
```bash
|
|
2014
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
2014
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
2015
2015
|
--header 'Content-Type: application/json' \
|
|
2016
2016
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2017
2017
|
--data '{
|
|
@@ -2071,7 +2071,7 @@ await zendesk_support.sla_policies.list()
|
|
|
2071
2071
|
**API**
|
|
2072
2072
|
|
|
2073
2073
|
```bash
|
|
2074
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
2074
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
2075
2075
|
--header 'Content-Type: application/json' \
|
|
2076
2076
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2077
2077
|
--data '{
|
|
@@ -2131,7 +2131,7 @@ await zendesk_support.sla_policies.get(
|
|
|
2131
2131
|
**API**
|
|
2132
2132
|
|
|
2133
2133
|
```bash
|
|
2134
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
2134
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
2135
2135
|
--header 'Content-Type: application/json' \
|
|
2136
2136
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2137
2137
|
--data '{
|
|
@@ -2186,7 +2186,7 @@ await zendesk_support.ticket_forms.list()
|
|
|
2186
2186
|
**API**
|
|
2187
2187
|
|
|
2188
2188
|
```bash
|
|
2189
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
2189
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
2190
2190
|
--header 'Content-Type: application/json' \
|
|
2191
2191
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2192
2192
|
--data '{
|
|
@@ -2256,7 +2256,7 @@ await zendesk_support.ticket_forms.get(
|
|
|
2256
2256
|
**API**
|
|
2257
2257
|
|
|
2258
2258
|
```bash
|
|
2259
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
2259
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
2260
2260
|
--header 'Content-Type: application/json' \
|
|
2261
2261
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2262
2262
|
--data '{
|
|
@@ -2319,7 +2319,7 @@ await zendesk_support.articles.list()
|
|
|
2319
2319
|
**API**
|
|
2320
2320
|
|
|
2321
2321
|
```bash
|
|
2322
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
2322
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
2323
2323
|
--header 'Content-Type: application/json' \
|
|
2324
2324
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2325
2325
|
--data '{
|
|
@@ -2388,7 +2388,7 @@ await zendesk_support.articles.get(
|
|
|
2388
2388
|
**API**
|
|
2389
2389
|
|
|
2390
2390
|
```bash
|
|
2391
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
2391
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
2392
2392
|
--header 'Content-Type: application/json' \
|
|
2393
2393
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2394
2394
|
--data '{
|
|
@@ -2452,7 +2452,7 @@ await zendesk_support.article_attachments.list(
|
|
|
2452
2452
|
**API**
|
|
2453
2453
|
|
|
2454
2454
|
```bash
|
|
2455
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
2455
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
2456
2456
|
--header 'Content-Type: application/json' \
|
|
2457
2457
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2458
2458
|
--data '{
|
|
@@ -2518,7 +2518,7 @@ await zendesk_support.article_attachments.get(
|
|
|
2518
2518
|
**API**
|
|
2519
2519
|
|
|
2520
2520
|
```bash
|
|
2521
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
2521
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
2522
2522
|
--header 'Content-Type: application/json' \
|
|
2523
2523
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2524
2524
|
--data '{
|
|
@@ -2577,7 +2577,7 @@ async for chunk in zendesk_support.article_attachments.download( article_id=0
|
|
|
2577
2577
|
**API**
|
|
2578
2578
|
|
|
2579
2579
|
```bash
|
|
2580
|
-
curl --location 'https://api.airbyte.ai/api/v1/connectors/
|
|
2580
|
+
curl --location 'https://api.airbyte.ai/api/v1/connectors/sources/{your_source_id}/execute' \
|
|
2581
2581
|
--header 'Content-Type: application/json' \
|
|
2582
2582
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2583
2583
|
--data '{
|
|
@@ -2639,11 +2639,12 @@ ZendeskSupportConnector(
|
|
|
2639
2639
|
**API**
|
|
2640
2640
|
|
|
2641
2641
|
```bash
|
|
2642
|
-
curl --location 'https://api.airbyte.ai/api/v1/
|
|
2642
|
+
curl --location 'https://api.airbyte.ai/api/v1/integrations/sources' \
|
|
2643
2643
|
--header 'Content-Type: application/json' \
|
|
2644
2644
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2645
2645
|
--data '{
|
|
2646
|
-
"
|
|
2646
|
+
"workspace_id": "{your_workspace_id}",
|
|
2647
|
+
"source_template_id": "{source_template_id}",
|
|
2647
2648
|
"auth_config": {
|
|
2648
2649
|
"access_token": "<OAuth 2.0 access token>",
|
|
2649
2650
|
"refresh_token": "<OAuth 2.0 refresh token (optional)>"
|
|
@@ -2676,11 +2677,12 @@ ZendeskSupportConnector(
|
|
|
2676
2677
|
**API**
|
|
2677
2678
|
|
|
2678
2679
|
```bash
|
|
2679
|
-
curl --location 'https://api.airbyte.ai/api/v1/
|
|
2680
|
+
curl --location 'https://api.airbyte.ai/api/v1/integrations/sources' \
|
|
2680
2681
|
--header 'Content-Type: application/json' \
|
|
2681
2682
|
--header 'Authorization: Bearer {your_auth_token}' \
|
|
2682
2683
|
--data '{
|
|
2683
|
-
"
|
|
2684
|
+
"workspace_id": "{your_workspace_id}",
|
|
2685
|
+
"source_template_id": "{source_template_id}",
|
|
2684
2686
|
"auth_config": {
|
|
2685
2687
|
"email": "<Your Zendesk account email address>",
|
|
2686
2688
|
"api_token": "<Your Zendesk API token from Admin Center>"
|
|
@@ -519,13 +519,14 @@ def _parse_oauth2_config(scheme: Any) -> dict[str, str]:
|
|
|
519
519
|
config["refresh_url"] = refresh_url
|
|
520
520
|
|
|
521
521
|
# Extract custom refresh configuration from x-airbyte-token-refresh extension
|
|
522
|
+
# Note: x_token_refresh is a Dict[str, Any], not a Pydantic model, so use .get()
|
|
522
523
|
x_token_refresh = getattr(scheme, "x_token_refresh", None)
|
|
523
524
|
if x_token_refresh:
|
|
524
|
-
auth_style =
|
|
525
|
+
auth_style = x_token_refresh.get("auth_style")
|
|
525
526
|
if auth_style:
|
|
526
527
|
config["auth_style"] = auth_style
|
|
527
528
|
|
|
528
|
-
body_format =
|
|
529
|
+
body_format = x_token_refresh.get("body_format")
|
|
529
530
|
if body_format:
|
|
530
531
|
config["body_format"] = body_format
|
|
531
532
|
|
|
@@ -495,6 +495,14 @@ class LocalExecutor:
|
|
|
495
495
|
print(result.data)
|
|
496
496
|
"""
|
|
497
497
|
try:
|
|
498
|
+
# Check for hosted-only actions before converting to Action enum
|
|
499
|
+
if config.action == "search":
|
|
500
|
+
raise NotImplementedError(
|
|
501
|
+
"search is only available in hosted execution mode. "
|
|
502
|
+
"Initialize the connector with external_user_id, airbyte_client_id, "
|
|
503
|
+
"and airbyte_client_secret to use this feature."
|
|
504
|
+
)
|
|
505
|
+
|
|
498
506
|
# Convert config to internal format
|
|
499
507
|
action = Action(config.action) if isinstance(config.action, str) else config.action
|
|
500
508
|
params = config.params or {}
|
|
@@ -13,7 +13,7 @@ from uuid import UUID
|
|
|
13
13
|
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
14
14
|
from pydantic_core import Url
|
|
15
15
|
|
|
16
|
-
from .extensions import RetryConfig
|
|
16
|
+
from .extensions import CacheConfig, RetryConfig
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class ExampleQuestions(BaseModel):
|
|
@@ -105,6 +105,7 @@ class Info(BaseModel):
|
|
|
105
105
|
- x-airbyte-external-documentation-urls: List of external documentation URLs (Airbyte extension)
|
|
106
106
|
- x-airbyte-retry-config: Retry configuration for transient errors (Airbyte extension)
|
|
107
107
|
- x-airbyte-example-questions: Example questions for AI connector README (Airbyte extension)
|
|
108
|
+
- x-airbyte-cache: Cache configuration for field mapping between API and cache schemas (Airbyte extension)
|
|
108
109
|
"""
|
|
109
110
|
|
|
110
111
|
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
@@ -122,6 +123,7 @@ class Info(BaseModel):
|
|
|
122
123
|
x_airbyte_external_documentation_urls: list[DocUrl] = Field(..., alias="x-airbyte-external-documentation-urls")
|
|
123
124
|
x_airbyte_retry_config: RetryConfig | None = Field(None, alias="x-airbyte-retry-config")
|
|
124
125
|
x_airbyte_example_questions: ExampleQuestions | None = Field(None, alias="x-airbyte-example-questions")
|
|
126
|
+
x_airbyte_cache: CacheConfig | None = Field(None, alias="x-airbyte-cache")
|
|
125
127
|
|
|
126
128
|
|
|
127
129
|
class ServerVariable(BaseModel):
|
|
@@ -150,6 +152,7 @@ class Server(BaseModel):
|
|
|
150
152
|
url: str
|
|
151
153
|
description: str | None = None
|
|
152
154
|
variables: Dict[str, ServerVariable] = Field(default_factory=dict)
|
|
155
|
+
x_airbyte_replication_user_config_mapping: Dict[str, str] | None = Field(default=None, alias="x-airbyte-replication-user-config-mapping")
|
|
153
156
|
|
|
154
157
|
@field_validator("url")
|
|
155
158
|
@classmethod
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Extension models for future features.
|
|
3
|
+
|
|
4
|
+
These models are defined but NOT yet added to the main schema models.
|
|
5
|
+
They serve as:
|
|
6
|
+
1. Type hints for future use
|
|
7
|
+
2. Documentation of planned extensions
|
|
8
|
+
3. Ready-to-use structures when features are implemented
|
|
9
|
+
|
|
10
|
+
NOTE: These are not currently active in the schema. They will be added
|
|
11
|
+
to Operation, Schema, or other models when their respective features
|
|
12
|
+
are implemented.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from typing import Literal
|
|
16
|
+
|
|
17
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class PaginationConfig(BaseModel):
|
|
21
|
+
"""
|
|
22
|
+
Configuration for pagination support.
|
|
23
|
+
|
|
24
|
+
NOT YET USED - Defined for future implementation.
|
|
25
|
+
|
|
26
|
+
When active, will be added to Operation model as:
|
|
27
|
+
x_pagination: Optional[PaginationConfig] = Field(None, alias="x-pagination")
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
31
|
+
|
|
32
|
+
style: Literal["cursor", "offset", "page", "link"]
|
|
33
|
+
limit_param: str = "limit"
|
|
34
|
+
|
|
35
|
+
# Cursor-based pagination
|
|
36
|
+
cursor_param: str | None = None
|
|
37
|
+
cursor_source: Literal["body", "headers"] | None = "body"
|
|
38
|
+
cursor_path: str | None = None
|
|
39
|
+
|
|
40
|
+
# Offset-based pagination
|
|
41
|
+
offset_param: str | None = None
|
|
42
|
+
|
|
43
|
+
# Page-based pagination
|
|
44
|
+
page_param: str | None = None
|
|
45
|
+
|
|
46
|
+
# Response parsing
|
|
47
|
+
data_path: str = "data"
|
|
48
|
+
has_more_path: str | None = None
|
|
49
|
+
|
|
50
|
+
# Limits
|
|
51
|
+
max_page_size: int | None = None
|
|
52
|
+
default_page_size: int = 100
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class RateLimitConfig(BaseModel):
|
|
56
|
+
"""
|
|
57
|
+
Configuration for rate limiting.
|
|
58
|
+
|
|
59
|
+
NOT YET USED - Defined for future implementation.
|
|
60
|
+
|
|
61
|
+
When active, might be added to Server or root OpenAPIConnector as:
|
|
62
|
+
x_rate_limit: Optional[RateLimitConfig] = Field(None, alias="x-rate-limit")
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
66
|
+
|
|
67
|
+
max_requests: int
|
|
68
|
+
time_window_seconds: int
|
|
69
|
+
retry_after_header: str | None = "Retry-After"
|
|
70
|
+
respect_retry_after: bool = True
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class RetryConfig(BaseModel):
|
|
74
|
+
"""
|
|
75
|
+
Configuration for retry strategy with exponential backoff.
|
|
76
|
+
|
|
77
|
+
Used to configure automatic retries for transient errors (429, 5xx, timeouts, network errors).
|
|
78
|
+
Can be specified at the connector level via x-airbyte-retry-config in the OpenAPI spec's info section.
|
|
79
|
+
|
|
80
|
+
By default, retries are enabled with max_attempts=3. To disable retries, set max_attempts=1
|
|
81
|
+
in your connector's x-airbyte-retry-config.
|
|
82
|
+
|
|
83
|
+
Example YAML usage:
|
|
84
|
+
info:
|
|
85
|
+
title: My API
|
|
86
|
+
x-airbyte-retry-config:
|
|
87
|
+
max_attempts: 5
|
|
88
|
+
initial_delay_seconds: 2.0
|
|
89
|
+
retry_after_header: "X-RateLimit-Reset"
|
|
90
|
+
retry_after_format: "unix_timestamp"
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
94
|
+
|
|
95
|
+
# Core retry settings (max_attempts=3 enables retries by default)
|
|
96
|
+
max_attempts: int = 3
|
|
97
|
+
initial_delay_seconds: float = 1.0
|
|
98
|
+
max_delay_seconds: float = 60.0
|
|
99
|
+
exponential_base: float = 2.0
|
|
100
|
+
jitter: bool = True
|
|
101
|
+
|
|
102
|
+
# Which errors to retry
|
|
103
|
+
retry_on_status_codes: list[int] = [429, 500, 502, 503, 504]
|
|
104
|
+
retry_on_timeout: bool = True
|
|
105
|
+
retry_on_network_error: bool = True
|
|
106
|
+
|
|
107
|
+
# Header-based delay extraction
|
|
108
|
+
retry_after_header: str = "Retry-After"
|
|
109
|
+
retry_after_format: Literal["seconds", "milliseconds", "unix_timestamp"] = "seconds"
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class CacheFieldProperty(BaseModel):
|
|
113
|
+
"""
|
|
114
|
+
Nested property definition for object-type cache fields.
|
|
115
|
+
|
|
116
|
+
Supports recursive nesting to represent complex nested schemas in cache field definitions.
|
|
117
|
+
Used when a cache field has type 'object' and needs to define its internal structure.
|
|
118
|
+
|
|
119
|
+
Example YAML usage:
|
|
120
|
+
- name: collaboration
|
|
121
|
+
type: ['null', 'object']
|
|
122
|
+
description: "Collaboration data"
|
|
123
|
+
properties:
|
|
124
|
+
brief:
|
|
125
|
+
type: ['null', 'string']
|
|
126
|
+
comments:
|
|
127
|
+
type: ['null', 'array']
|
|
128
|
+
"""
|
|
129
|
+
|
|
130
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
131
|
+
|
|
132
|
+
type: str | list[str]
|
|
133
|
+
properties: dict[str, "CacheFieldProperty"] | None = None
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
class CacheFieldConfig(BaseModel):
|
|
137
|
+
"""
|
|
138
|
+
Field configuration for cache mapping.
|
|
139
|
+
|
|
140
|
+
Defines a single field in a cache entity, with optional name aliasing
|
|
141
|
+
to map between user-facing field names and cache storage names.
|
|
142
|
+
|
|
143
|
+
For object-type fields, supports nested properties to define the internal structure
|
|
144
|
+
of complex nested schemas.
|
|
145
|
+
|
|
146
|
+
Used in x-airbyte-cache extension for api_search operations.
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
150
|
+
|
|
151
|
+
name: str
|
|
152
|
+
x_airbyte_name: str | None = Field(default=None, alias="x-airbyte-name")
|
|
153
|
+
type: str | list[str]
|
|
154
|
+
description: str
|
|
155
|
+
properties: dict[str, CacheFieldProperty] | None = None
|
|
156
|
+
|
|
157
|
+
@property
|
|
158
|
+
def cache_name(self) -> str:
|
|
159
|
+
"""Return cache name, falling back to name if alias not specified."""
|
|
160
|
+
return self.x_airbyte_name or self.name
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
class CacheEntityConfig(BaseModel):
|
|
164
|
+
"""
|
|
165
|
+
Entity configuration for cache mapping.
|
|
166
|
+
|
|
167
|
+
Defines a cache-enabled entity with its fields and optional name aliasing
|
|
168
|
+
to map between user-facing entity names and cache storage names.
|
|
169
|
+
|
|
170
|
+
Used in x-airbyte-cache extension for api_search operations.
|
|
171
|
+
"""
|
|
172
|
+
|
|
173
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
174
|
+
|
|
175
|
+
entity: str
|
|
176
|
+
x_airbyte_name: str | None = Field(default=None, alias="x-airbyte-name")
|
|
177
|
+
fields: list[CacheFieldConfig]
|
|
178
|
+
|
|
179
|
+
@property
|
|
180
|
+
def cache_name(self) -> str:
|
|
181
|
+
"""Return cache entity name, falling back to entity if alias not specified."""
|
|
182
|
+
return self.x_airbyte_name or self.entity
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
class CacheConfig(BaseModel):
|
|
186
|
+
"""
|
|
187
|
+
Cache configuration extension (x-airbyte-cache).
|
|
188
|
+
|
|
189
|
+
Defines cache-enabled entities and their field mappings for api_search operations.
|
|
190
|
+
Supports optional name aliasing via x-airbyte-name for both entities and fields,
|
|
191
|
+
enabling bidirectional mapping between user-facing names and cache storage names.
|
|
192
|
+
|
|
193
|
+
This extension is added to the Info model and provides field-level mapping for
|
|
194
|
+
search operations that use cached data.
|
|
195
|
+
|
|
196
|
+
Example YAML usage:
|
|
197
|
+
info:
|
|
198
|
+
title: Stripe API
|
|
199
|
+
x-airbyte-cache:
|
|
200
|
+
entities:
|
|
201
|
+
- entity: customers
|
|
202
|
+
stream: customers
|
|
203
|
+
fields:
|
|
204
|
+
- name: email
|
|
205
|
+
type: ["null", "string"]
|
|
206
|
+
description: "Customer email address"
|
|
207
|
+
- name: customer_name
|
|
208
|
+
x-airbyte-name: name
|
|
209
|
+
type: ["null", "string"]
|
|
210
|
+
description: "Customer full name"
|
|
211
|
+
"""
|
|
212
|
+
|
|
213
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
214
|
+
|
|
215
|
+
entities: list[CacheEntityConfig]
|
|
216
|
+
|
|
217
|
+
def get_entity_mapping(self, user_entity: str) -> CacheEntityConfig | None:
|
|
218
|
+
"""
|
|
219
|
+
Get entity config by user-facing name.
|
|
220
|
+
|
|
221
|
+
Args:
|
|
222
|
+
user_entity: User-facing entity name to look up
|
|
223
|
+
|
|
224
|
+
Returns:
|
|
225
|
+
CacheEntityConfig if found, None otherwise
|
|
226
|
+
"""
|
|
227
|
+
for entity in self.entities:
|
|
228
|
+
if entity.entity == user_entity:
|
|
229
|
+
return entity
|
|
230
|
+
return None
|
|
@@ -112,6 +112,7 @@ from .models import (
|
|
|
112
112
|
_F = TypeVar("_F", bound=Callable[..., Any])
|
|
113
113
|
|
|
114
114
|
|
|
115
|
+
|
|
115
116
|
class ZendeskSupportConnector:
|
|
116
117
|
"""
|
|
117
118
|
Type-safe Zendesk-Support API connector.
|
|
@@ -120,7 +121,7 @@ class ZendeskSupportConnector:
|
|
|
120
121
|
"""
|
|
121
122
|
|
|
122
123
|
connector_name = "zendesk-support"
|
|
123
|
-
connector_version = "0.1.
|
|
124
|
+
connector_version = "0.1.5"
|
|
124
125
|
vendored_sdk_version = "0.1.0" # Version of vendored connector-sdk
|
|
125
126
|
|
|
126
127
|
# Map of (entity, action) -> needs_envelope for envelope wrapping decision
|
|
@@ -30,7 +30,7 @@ from uuid import (
|
|
|
30
30
|
ZendeskSupportConnectorModel: ConnectorModel = ConnectorModel(
|
|
31
31
|
id=UUID('79c1aa37-dae3-42ae-b333-d1c105477715'),
|
|
32
32
|
name='zendesk-support',
|
|
33
|
-
version='0.1.
|
|
33
|
+
version='0.1.5',
|
|
34
34
|
base_url='https://{subdomain}.zendesk.com/api/v2',
|
|
35
35
|
auth=AuthConfig(
|
|
36
36
|
options=[
|
|
@@ -60,7 +60,7 @@ ZendeskSupportConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
60
60
|
),
|
|
61
61
|
},
|
|
62
62
|
auth_mapping={'access_token': '${access_token}', 'refresh_token': '${refresh_token}'},
|
|
63
|
-
replication_auth_key_mapping={'access_token': 'access_token'},
|
|
63
|
+
replication_auth_key_mapping={'credentials.access_token': 'access_token'},
|
|
64
64
|
),
|
|
65
65
|
),
|
|
66
66
|
AuthOption(
|
|
@@ -84,7 +84,7 @@ ZendeskSupportConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
84
84
|
),
|
|
85
85
|
},
|
|
86
86
|
auth_mapping={'username': '${email}/token', 'password': '${api_token}'},
|
|
87
|
-
replication_auth_key_mapping={'email': 'email', 'api_token': 'api_token'},
|
|
87
|
+
replication_auth_key_mapping={'credentials.email': 'email', 'credentials.api_token': 'api_token'},
|
|
88
88
|
),
|
|
89
89
|
),
|
|
90
90
|
],
|
|
@@ -669,6 +669,7 @@ class ZendeskSupportExecuteResultWithMeta(ZendeskSupportExecuteResult[T], Generi
|
|
|
669
669
|
"""Metadata about the response (e.g., pagination cursors, record counts)."""
|
|
670
670
|
|
|
671
671
|
|
|
672
|
+
|
|
672
673
|
# ===== OPERATION RESULT TYPE ALIASES =====
|
|
673
674
|
|
|
674
675
|
# Concrete type aliases for each operation result.
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Extension models for future features.
|
|
3
|
-
|
|
4
|
-
These models are defined but NOT yet added to the main schema models.
|
|
5
|
-
They serve as:
|
|
6
|
-
1. Type hints for future use
|
|
7
|
-
2. Documentation of planned extensions
|
|
8
|
-
3. Ready-to-use structures when features are implemented
|
|
9
|
-
|
|
10
|
-
NOTE: These are not currently active in the schema. They will be added
|
|
11
|
-
to Operation, Schema, or other models when their respective features
|
|
12
|
-
are implemented.
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
from typing import Literal
|
|
16
|
-
|
|
17
|
-
from pydantic import BaseModel, ConfigDict
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class PaginationConfig(BaseModel):
|
|
21
|
-
"""
|
|
22
|
-
Configuration for pagination support.
|
|
23
|
-
|
|
24
|
-
NOT YET USED - Defined for future implementation.
|
|
25
|
-
|
|
26
|
-
When active, will be added to Operation model as:
|
|
27
|
-
x_pagination: Optional[PaginationConfig] = Field(None, alias="x-pagination")
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
31
|
-
|
|
32
|
-
style: Literal["cursor", "offset", "page", "link"]
|
|
33
|
-
limit_param: str = "limit"
|
|
34
|
-
|
|
35
|
-
# Cursor-based pagination
|
|
36
|
-
cursor_param: str | None = None
|
|
37
|
-
cursor_source: Literal["body", "headers"] | None = "body"
|
|
38
|
-
cursor_path: str | None = None
|
|
39
|
-
|
|
40
|
-
# Offset-based pagination
|
|
41
|
-
offset_param: str | None = None
|
|
42
|
-
|
|
43
|
-
# Page-based pagination
|
|
44
|
-
page_param: str | None = None
|
|
45
|
-
|
|
46
|
-
# Response parsing
|
|
47
|
-
data_path: str = "data"
|
|
48
|
-
has_more_path: str | None = None
|
|
49
|
-
|
|
50
|
-
# Limits
|
|
51
|
-
max_page_size: int | None = None
|
|
52
|
-
default_page_size: int = 100
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
class RateLimitConfig(BaseModel):
|
|
56
|
-
"""
|
|
57
|
-
Configuration for rate limiting.
|
|
58
|
-
|
|
59
|
-
NOT YET USED - Defined for future implementation.
|
|
60
|
-
|
|
61
|
-
When active, might be added to Server or root OpenAPIConnector as:
|
|
62
|
-
x_rate_limit: Optional[RateLimitConfig] = Field(None, alias="x-rate-limit")
|
|
63
|
-
"""
|
|
64
|
-
|
|
65
|
-
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
66
|
-
|
|
67
|
-
max_requests: int
|
|
68
|
-
time_window_seconds: int
|
|
69
|
-
retry_after_header: str | None = "Retry-After"
|
|
70
|
-
respect_retry_after: bool = True
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
class RetryConfig(BaseModel):
|
|
74
|
-
"""
|
|
75
|
-
Configuration for retry strategy with exponential backoff.
|
|
76
|
-
|
|
77
|
-
Used to configure automatic retries for transient errors (429, 5xx, timeouts, network errors).
|
|
78
|
-
Can be specified at the connector level via x-airbyte-retry-config in the OpenAPI spec's info section.
|
|
79
|
-
|
|
80
|
-
By default, retries are enabled with max_attempts=3. To disable retries, set max_attempts=1
|
|
81
|
-
in your connector's x-airbyte-retry-config.
|
|
82
|
-
|
|
83
|
-
Example YAML usage:
|
|
84
|
-
info:
|
|
85
|
-
title: My API
|
|
86
|
-
x-airbyte-retry-config:
|
|
87
|
-
max_attempts: 5
|
|
88
|
-
initial_delay_seconds: 2.0
|
|
89
|
-
retry_after_header: "X-RateLimit-Reset"
|
|
90
|
-
retry_after_format: "unix_timestamp"
|
|
91
|
-
"""
|
|
92
|
-
|
|
93
|
-
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
94
|
-
|
|
95
|
-
# Core retry settings (max_attempts=3 enables retries by default)
|
|
96
|
-
max_attempts: int = 3
|
|
97
|
-
initial_delay_seconds: float = 1.0
|
|
98
|
-
max_delay_seconds: float = 60.0
|
|
99
|
-
exponential_base: float = 2.0
|
|
100
|
-
jitter: bool = True
|
|
101
|
-
|
|
102
|
-
# Which errors to retry
|
|
103
|
-
retry_on_status_codes: list[int] = [429, 500, 502, 503, 504]
|
|
104
|
-
retry_on_timeout: bool = True
|
|
105
|
-
retry_on_network_error: bool = True
|
|
106
|
-
|
|
107
|
-
# Header-based delay extraction
|
|
108
|
-
retry_after_header: str = "Retry-After"
|
|
109
|
-
retry_after_format: Literal["seconds", "milliseconds", "unix_timestamp"] = "seconds"
|
|
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
|