outhad-integrations 0.32.0
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.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +43 -0
- data/.ruby-version +1 -0
- data/.vscode/settings.json +5 -0
- data/README.md +76 -0
- data/Rakefile +12 -0
- data/lib/outhad/integrations/config.rb +14 -0
- data/lib/outhad/integrations/core/base_connector.rb +79 -0
- data/lib/outhad/integrations/core/constants.rb +103 -0
- data/lib/outhad/integrations/core/destination_connector.rb +20 -0
- data/lib/outhad/integrations/core/fullrefresher.rb +19 -0
- data/lib/outhad/integrations/core/http_client.rb +17 -0
- data/lib/outhad/integrations/core/http_helper.rb +36 -0
- data/lib/outhad/integrations/core/query_builder.rb +33 -0
- data/lib/outhad/integrations/core/rate_limiter.rb +19 -0
- data/lib/outhad/integrations/core/source_connector.rb +66 -0
- data/lib/outhad/integrations/core/streaming_http_client.rb +21 -0
- data/lib/outhad/integrations/core/unstructured_source_connector.rb +52 -0
- data/lib/outhad/integrations/core/utils.rb +123 -0
- data/lib/outhad/integrations/core/vector_source_connector.rb +14 -0
- data/lib/outhad/integrations/destination/airtable/client.rb +157 -0
- data/lib/outhad/integrations/destination/airtable/config/catalog.json +6 -0
- data/lib/outhad/integrations/destination/airtable/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/airtable/config/spec.json +23 -0
- data/lib/outhad/integrations/destination/airtable/icon.svg +6 -0
- data/lib/outhad/integrations/destination/airtable/schema_helper.rb +141 -0
- data/lib/outhad/integrations/destination/ais_data_store/client.rb +130 -0
- data/lib/outhad/integrations/destination/ais_data_store/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/ais_data_store/config/spec.json +68 -0
- data/lib/outhad/integrations/destination/ais_data_store/icon.svg +4 -0
- data/lib/outhad/integrations/destination/amazon_s3/client.rb +92 -0
- data/lib/outhad/integrations/destination/amazon_s3/config/catalog.json +16 -0
- data/lib/outhad/integrations/destination/amazon_s3/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/amazon_s3/config/spec.json +56 -0
- data/lib/outhad/integrations/destination/amazon_s3/icon.svg +34 -0
- data/lib/outhad/integrations/destination/databricks_lakehouse/client.rb +147 -0
- data/lib/outhad/integrations/destination/databricks_lakehouse/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/databricks_lakehouse/config/spec.json +44 -0
- data/lib/outhad/integrations/destination/databricks_lakehouse/icon.svg +65 -0
- data/lib/outhad/integrations/destination/facebook_custom_audience/client.rb +125 -0
- data/lib/outhad/integrations/destination/facebook_custom_audience/config/catalog.json +42 -0
- data/lib/outhad/integrations/destination/facebook_custom_audience/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/facebook_custom_audience/config/spec.json +28 -0
- data/lib/outhad/integrations/destination/facebook_custom_audience/icon.svg +23 -0
- data/lib/outhad/integrations/destination/google_sheets/client.rb +240 -0
- data/lib/outhad/integrations/destination/google_sheets/config/catalog.json +6 -0
- data/lib/outhad/integrations/destination/google_sheets/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/google_sheets/config/spec.json +75 -0
- data/lib/outhad/integrations/destination/google_sheets/icon.svg +1 -0
- data/lib/outhad/integrations/destination/http/client.rb +106 -0
- data/lib/outhad/integrations/destination/http/config/catalog.json +16 -0
- data/lib/outhad/integrations/destination/http/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/http/config/spec.json +24 -0
- data/lib/outhad/integrations/destination/http/icon.svg +9 -0
- data/lib/outhad/integrations/destination/hubspot/client.rb +122 -0
- data/lib/outhad/integrations/destination/hubspot/config/catalog.json +351 -0
- data/lib/outhad/integrations/destination/hubspot/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/hubspot/config/spec.json +18 -0
- data/lib/outhad/integrations/destination/hubspot/icon.svg +5 -0
- data/lib/outhad/integrations/destination/iterable/client.rb +111 -0
- data/lib/outhad/integrations/destination/iterable/config/catalog.json +47 -0
- data/lib/outhad/integrations/destination/iterable/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/iterable/config/spec.json +19 -0
- data/lib/outhad/integrations/destination/iterable/icon.svg +71 -0
- data/lib/outhad/integrations/destination/klaviyo/client.rb +119 -0
- data/lib/outhad/integrations/destination/klaviyo/config/catalog.json +103 -0
- data/lib/outhad/integrations/destination/klaviyo/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/klaviyo/config/spec.json +24 -0
- data/lib/outhad/integrations/destination/klaviyo/icon.svg +6 -0
- data/lib/outhad/integrations/destination/mailchimp/client.rb +141 -0
- data/lib/outhad/integrations/destination/mailchimp/config/catalog.json +142 -0
- data/lib/outhad/integrations/destination/mailchimp/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/mailchimp/config/spec.json +28 -0
- data/lib/outhad/integrations/destination/mailchimp/icon.svg +4 -0
- data/lib/outhad/integrations/destination/maria_db/client.rb +114 -0
- data/lib/outhad/integrations/destination/maria_db/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/maria_db/config/spec.json +48 -0
- data/lib/outhad/integrations/destination/maria_db/icon.svg +15 -0
- data/lib/outhad/integrations/destination/microsoft_dynamics/client.rb +150 -0
- data/lib/outhad/integrations/destination/microsoft_dynamics/config/catalog.json +161 -0
- data/lib/outhad/integrations/destination/microsoft_dynamics/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/microsoft_dynamics/config/spec.json +35 -0
- data/lib/outhad/integrations/destination/microsoft_dynamics/icon.svg +2 -0
- data/lib/outhad/integrations/destination/microsoft_excel/client.rb +198 -0
- data/lib/outhad/integrations/destination/microsoft_excel/config/catalog.json +7 -0
- data/lib/outhad/integrations/destination/microsoft_excel/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/microsoft_excel/config/spec.json +19 -0
- data/lib/outhad/integrations/destination/microsoft_excel/icon.svg +18 -0
- data/lib/outhad/integrations/destination/microsoft_sql/client.rb +137 -0
- data/lib/outhad/integrations/destination/microsoft_sql/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/microsoft_sql/config/spec.json +68 -0
- data/lib/outhad/integrations/destination/microsoft_sql/icon.svg +22 -0
- data/lib/outhad/integrations/destination/odoo/client.rb +109 -0
- data/lib/outhad/integrations/destination/odoo/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/odoo/config/spec.json +39 -0
- data/lib/outhad/integrations/destination/odoo/icon.svg +21 -0
- data/lib/outhad/integrations/destination/oracle_db/client.rb +112 -0
- data/lib/outhad/integrations/destination/oracle_db/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/oracle_db/config/spec.json +47 -0
- data/lib/outhad/integrations/destination/oracle_db/icon.svg +4 -0
- data/lib/outhad/integrations/destination/pinecone_db/client.rb +154 -0
- data/lib/outhad/integrations/destination/pinecone_db/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/pinecone_db/config/spec.json +32 -0
- data/lib/outhad/integrations/destination/pinecone_db/icon.svg +1 -0
- data/lib/outhad/integrations/destination/postgresql/client.rb +130 -0
- data/lib/outhad/integrations/destination/postgresql/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/postgresql/config/spec.json +68 -0
- data/lib/outhad/integrations/destination/postgresql/icon.svg +20 -0
- data/lib/outhad/integrations/destination/qdrant/client.rb +184 -0
- data/lib/outhad/integrations/destination/qdrant/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/qdrant/config/spec.json +23 -0
- data/lib/outhad/integrations/destination/qdrant/icon.svg +1 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/client.rb +136 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/config/catalog.json +6 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/config/meta.json +16 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/config/spec.json +52 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/icon.svg +16 -0
- data/lib/outhad/integrations/destination/salesforce_consumer_goods_cloud/schema_helper.rb +132 -0
- data/lib/outhad/integrations/destination/salesforce_crm/client.rb +114 -0
- data/lib/outhad/integrations/destination/salesforce_crm/config/catalog.json +320 -0
- data/lib/outhad/integrations/destination/salesforce_crm/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/salesforce_crm/config/spec.json +46 -0
- data/lib/outhad/integrations/destination/salesforce_crm/icon.svg +16 -0
- data/lib/outhad/integrations/destination/sftp/client.rb +186 -0
- data/lib/outhad/integrations/destination/sftp/config/catalog.json +16 -0
- data/lib/outhad/integrations/destination/sftp/config/meta.json +16 -0
- data/lib/outhad/integrations/destination/sftp/config/spec.json +73 -0
- data/lib/outhad/integrations/destination/sftp/icon.svg +1 -0
- data/lib/outhad/integrations/destination/slack/client.rb +125 -0
- data/lib/outhad/integrations/destination/slack/config/catalog.json +22 -0
- data/lib/outhad/integrations/destination/slack/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/slack/config/spec.json +23 -0
- data/lib/outhad/integrations/destination/slack/icon.svg +26 -0
- data/lib/outhad/integrations/destination/stripe/client.rb +94 -0
- data/lib/outhad/integrations/destination/stripe/config/catalog.json +128 -0
- data/lib/outhad/integrations/destination/stripe/config/meta.json +15 -0
- data/lib/outhad/integrations/destination/stripe/config/spec.json +18 -0
- data/lib/outhad/integrations/destination/stripe/icon.svg +10 -0
- data/lib/outhad/integrations/destination/zendesk/client.rb +132 -0
- data/lib/outhad/integrations/destination/zendesk/config/catalog.json +110 -0
- data/lib/outhad/integrations/destination/zendesk/config/meta.json +18 -0
- data/lib/outhad/integrations/destination/zendesk/config/spec.json +32 -0
- data/lib/outhad/integrations/destination/zendesk/icon.svg +63 -0
- data/lib/outhad/integrations/protocol/protocol.json +189 -0
- data/lib/outhad/integrations/protocol/protocol.rb +228 -0
- data/lib/outhad/integrations/rollout.rb +66 -0
- data/lib/outhad/integrations/service.rb +55 -0
- data/lib/outhad/integrations/source/amazon_s3/client.rb +235 -0
- data/lib/outhad/integrations/source/amazon_s3/config/meta.json +16 -0
- data/lib/outhad/integrations/source/amazon_s3/config/spec.json +119 -0
- data/lib/outhad/integrations/source/amazon_s3/icon.svg +34 -0
- data/lib/outhad/integrations/source/anthropic/client.rb +135 -0
- data/lib/outhad/integrations/source/anthropic/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/anthropic/config/meta.json +16 -0
- data/lib/outhad/integrations/source/anthropic/config/spec.json +56 -0
- data/lib/outhad/integrations/source/anthropic/icon.svg +1 -0
- data/lib/outhad/integrations/source/aws_athena/client.rb +109 -0
- data/lib/outhad/integrations/source/aws_athena/config/meta.json +16 -0
- data/lib/outhad/integrations/source/aws_athena/config/spec.json +63 -0
- data/lib/outhad/integrations/source/aws_athena/icon.svg +22 -0
- data/lib/outhad/integrations/source/aws_bedrock_model/client.rb +91 -0
- data/lib/outhad/integrations/source/aws_bedrock_model/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/aws_bedrock_model/config/meta.json +16 -0
- data/lib/outhad/integrations/source/aws_bedrock_model/config/spec.json +58 -0
- data/lib/outhad/integrations/source/aws_bedrock_model/icon.svg +1 -0
- data/lib/outhad/integrations/source/aws_sagemaker_model/client.rb +79 -0
- data/lib/outhad/integrations/source/aws_sagemaker_model/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/aws_sagemaker_model/config/meta.json +16 -0
- data/lib/outhad/integrations/source/aws_sagemaker_model/config/spec.json +52 -0
- data/lib/outhad/integrations/source/aws_sagemaker_model/icon.svg +7 -0
- data/lib/outhad/integrations/source/bigquery/client.rb +98 -0
- data/lib/outhad/integrations/source/bigquery/config/meta.json +16 -0
- data/lib/outhad/integrations/source/bigquery/config/spec.json +83 -0
- data/lib/outhad/integrations/source/bigquery/icon.svg +1 -0
- data/lib/outhad/integrations/source/clickhouse/client.rb +102 -0
- data/lib/outhad/integrations/source/clickhouse/config/meta.json +16 -0
- data/lib/outhad/integrations/source/clickhouse/config/spec.json +42 -0
- data/lib/outhad/integrations/source/clickhouse/icon.svg +25 -0
- data/lib/outhad/integrations/source/databricks/client.rb +98 -0
- data/lib/outhad/integrations/source/databricks/config/meta.json +17 -0
- data/lib/outhad/integrations/source/databricks/config/spec.json +56 -0
- data/lib/outhad/integrations/source/databricks/icon.svg +19 -0
- data/lib/outhad/integrations/source/databrics_model/client.rb +89 -0
- data/lib/outhad/integrations/source/databrics_model/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/databrics_model/config/meta.json +17 -0
- data/lib/outhad/integrations/source/databrics_model/config/spec.json +63 -0
- data/lib/outhad/integrations/source/databrics_model/icon.svg +19 -0
- data/lib/outhad/integrations/source/firecrawl/client.rb +151 -0
- data/lib/outhad/integrations/source/firecrawl/config/catalog.json +29 -0
- data/lib/outhad/integrations/source/firecrawl/config/meta.json +17 -0
- data/lib/outhad/integrations/source/firecrawl/config/spec.json +31 -0
- data/lib/outhad/integrations/source/firecrawl/icon.svg +4 -0
- data/lib/outhad/integrations/source/generic_open_ai/client.rb +118 -0
- data/lib/outhad/integrations/source/generic_open_ai/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/generic_open_ai/config/meta.json +16 -0
- data/lib/outhad/integrations/source/generic_open_ai/config/spec.json +63 -0
- data/lib/outhad/integrations/source/generic_open_ai/icon.svg +6 -0
- data/lib/outhad/integrations/source/google_vertex_model/client.rb +83 -0
- data/lib/outhad/integrations/source/google_vertex_model/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/google_vertex_model/config/meta.json +17 -0
- data/lib/outhad/integrations/source/google_vertex_model/config/spec.json +105 -0
- data/lib/outhad/integrations/source/google_vertex_model/icon.svg +2 -0
- data/lib/outhad/integrations/source/http_model/client.rb +108 -0
- data/lib/outhad/integrations/source/http_model/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/http_model/config/meta.json +16 -0
- data/lib/outhad/integrations/source/http_model/config/spec.json +70 -0
- data/lib/outhad/integrations/source/http_model/icon.svg +9 -0
- data/lib/outhad/integrations/source/intuit_quick_books/client.rb +213 -0
- data/lib/outhad/integrations/source/intuit_quick_books/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/intuit_quick_books/config/meta.json +17 -0
- data/lib/outhad/integrations/source/intuit_quick_books/config/spec.json +44 -0
- data/lib/outhad/integrations/source/intuit_quick_books/icon.svg +1 -0
- data/lib/outhad/integrations/source/maria_db/client.rb +92 -0
- data/lib/outhad/integrations/source/maria_db/config/meta.json +16 -0
- data/lib/outhad/integrations/source/maria_db/config/spec.json +48 -0
- data/lib/outhad/integrations/source/maria_db/icon.svg +15 -0
- data/lib/outhad/integrations/source/odoo/client.rb +106 -0
- data/lib/outhad/integrations/source/odoo/config/meta.json +15 -0
- data/lib/outhad/integrations/source/odoo/config/spec.json +39 -0
- data/lib/outhad/integrations/source/odoo/icon.svg +21 -0
- data/lib/outhad/integrations/source/open_ai/client.rb +118 -0
- data/lib/outhad/integrations/source/open_ai/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/open_ai/config/meta.json +16 -0
- data/lib/outhad/integrations/source/open_ai/config/spec.json +56 -0
- data/lib/outhad/integrations/source/open_ai/icon.svg +1 -0
- data/lib/outhad/integrations/source/oracle_db/client.rb +127 -0
- data/lib/outhad/integrations/source/oracle_db/config/meta.json +16 -0
- data/lib/outhad/integrations/source/oracle_db/config/spec.json +47 -0
- data/lib/outhad/integrations/source/oracle_db/icon.svg +4 -0
- data/lib/outhad/integrations/source/pinecone_db/client.rb +73 -0
- data/lib/outhad/integrations/source/pinecone_db/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/pinecone_db/config/meta.json +16 -0
- data/lib/outhad/integrations/source/pinecone_db/config/spec.json +34 -0
- data/lib/outhad/integrations/source/pinecone_db/icon.svg +2 -0
- data/lib/outhad/integrations/source/postgresql/client.rb +112 -0
- data/lib/outhad/integrations/source/postgresql/config/meta.json +16 -0
- data/lib/outhad/integrations/source/postgresql/config/spec.json +86 -0
- data/lib/outhad/integrations/source/postgresql/icon.svg +20 -0
- data/lib/outhad/integrations/source/qdrant/client.rb +86 -0
- data/lib/outhad/integrations/source/qdrant/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/qdrant/config/meta.json +16 -0
- data/lib/outhad/integrations/source/qdrant/config/spec.json +29 -0
- data/lib/outhad/integrations/source/qdrant/icon.svg +1 -0
- data/lib/outhad/integrations/source/redshift/client.rb +109 -0
- data/lib/outhad/integrations/source/redshift/config/meta.json +16 -0
- data/lib/outhad/integrations/source/redshift/config/spec.json +71 -0
- data/lib/outhad/integrations/source/redshift/icon.svg +15 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/client.rb +133 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/config/meta.json +18 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/config/spec.json +53 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/icon.svg +16 -0
- data/lib/outhad/integrations/source/salesforce_consumer_goods_cloud/schema_helper.rb +130 -0
- data/lib/outhad/integrations/source/sftp/client.rb +133 -0
- data/lib/outhad/integrations/source/sftp/config/meta.json +16 -0
- data/lib/outhad/integrations/source/sftp/config/spec.json +59 -0
- data/lib/outhad/integrations/source/sftp/icon.svg +1 -0
- data/lib/outhad/integrations/source/snowflake/client.rb +92 -0
- data/lib/outhad/integrations/source/snowflake/config/meta.json +16 -0
- data/lib/outhad/integrations/source/snowflake/config/spec.json +82 -0
- data/lib/outhad/integrations/source/snowflake/icon.svg +10 -0
- data/lib/outhad/integrations/source/watsonx_ai/client.rb +194 -0
- data/lib/outhad/integrations/source/watsonx_ai/config/catalog.json +6 -0
- data/lib/outhad/integrations/source/watsonx_ai/config/meta.json +16 -0
- data/lib/outhad/integrations/source/watsonx_ai/config/spec.json +74 -0
- data/lib/outhad/integrations/source/watsonx_ai/icon.svg +1 -0
- data/lib/outhad/integrations/source/watsonx_data/client.rb +146 -0
- data/lib/outhad/integrations/source/watsonx_data/config/meta.json +17 -0
- data/lib/outhad/integrations/source/watsonx_data/config/spec.json +72 -0
- data/lib/outhad/integrations/source/watsonx_data/icon.svg +1 -0
- data/lib/outhad/integrations.rb +129 -0
- data/outhad-integrations.gemspec +79 -0
- data/sig/outhad/integrations.rbs +6 -0
- metadata +866 -0
@@ -0,0 +1,132 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Outhad
|
4
|
+
module Integrations
|
5
|
+
module Destination
|
6
|
+
module Zendesk
|
7
|
+
include Outhad::Integrations::Core
|
8
|
+
class Client < DestinationConnector
|
9
|
+
prepend Outhad::Integrations::Core::RateLimiter
|
10
|
+
def check_connection(connection_config)
|
11
|
+
connection_config = connection_config.with_indifferent_access
|
12
|
+
initialize_client(connection_config)
|
13
|
+
authenticate_client
|
14
|
+
success_status
|
15
|
+
rescue StandardError => e
|
16
|
+
handle_exception(e, {
|
17
|
+
context: "ZENDESK:CHECK_CONNECTION:EXCEPTION",
|
18
|
+
type: "error"
|
19
|
+
})
|
20
|
+
failure_status(e)
|
21
|
+
end
|
22
|
+
|
23
|
+
def discover(_connection_config = nil)
|
24
|
+
catalog = build_catalog(load_catalog)
|
25
|
+
catalog.to_outhad_message
|
26
|
+
rescue StandardError => e
|
27
|
+
handle_exception(e, {
|
28
|
+
context: "ZENDESK:DISCOVER:EXCEPTION",
|
29
|
+
type: "error"
|
30
|
+
})
|
31
|
+
failure_status(e)
|
32
|
+
end
|
33
|
+
|
34
|
+
def write(sync_config, records, action = "create")
|
35
|
+
@sync_config = sync_config
|
36
|
+
@action = sync_config.stream.action || action
|
37
|
+
initialize_client(sync_config.destination.connection_specification)
|
38
|
+
process_records(records, sync_config.stream)
|
39
|
+
rescue StandardError => e
|
40
|
+
handle_exception(e, {
|
41
|
+
context: "ZENDESK:WRITE:EXCEPTION",
|
42
|
+
type: "error",
|
43
|
+
sync_id: @sync_config.sync_id,
|
44
|
+
sync_run_id: @sync_config.sync_run_id
|
45
|
+
})
|
46
|
+
failure_status(e)
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def initialize_client(connection_config)
|
52
|
+
connection_config = connection_config.with_indifferent_access
|
53
|
+
@client = ZendeskAPI::Client.new do |config|
|
54
|
+
config.url = "#{connection_config[:subdomain]}.#{ZENDESK_URL_SUFFIX}"
|
55
|
+
config.username = connection_config[:username]
|
56
|
+
config.password = connection_config[:password]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def authenticate_client
|
61
|
+
@client.tickets.page(1).per_page(1).fetch
|
62
|
+
rescue ZendeskAPI::Error => e
|
63
|
+
raise StandardError, "Authentication failed: #{e.message}"
|
64
|
+
end
|
65
|
+
|
66
|
+
def process_records(records, stream)
|
67
|
+
log_message_array = []
|
68
|
+
write_success = 0
|
69
|
+
write_failure = 0
|
70
|
+
|
71
|
+
records.each do |record|
|
72
|
+
zendesk_data = prepare_record_data(record, stream.name)
|
73
|
+
plural_stream_name = pluralize_stream_name(stream.name.downcase)
|
74
|
+
args = [plural_stream_name, @action, zendesk_data]
|
75
|
+
|
76
|
+
if @action == "create"
|
77
|
+
response = @client.send(plural_stream_name).create!(zendesk_data)
|
78
|
+
else
|
79
|
+
existing_record = @client.send(plural_stream_name).find(id: record[:id])
|
80
|
+
response = existing_record.update!(zendesk_data)
|
81
|
+
end
|
82
|
+
|
83
|
+
write_success += 1
|
84
|
+
log_message_array << log_request_response("info", args, response)
|
85
|
+
rescue StandardError => e
|
86
|
+
handle_exception(e, {
|
87
|
+
context: "ZENDESK:WRITE:EXCEPTION",
|
88
|
+
type: "error",
|
89
|
+
sync_id: @sync_config.sync_id,
|
90
|
+
sync_run_id: @sync_config.sync_run_id
|
91
|
+
})
|
92
|
+
write_failure += 1
|
93
|
+
log_message_array << log_request_response("error", args, e.message)
|
94
|
+
end
|
95
|
+
tracking_message(write_success, write_failure, log_message_array)
|
96
|
+
end
|
97
|
+
|
98
|
+
def pluralize_stream_name(name)
|
99
|
+
{ "ticket" => "tickets", "user" => "users" }.fetch(name, name)
|
100
|
+
end
|
101
|
+
|
102
|
+
def prepare_record_data(record, type)
|
103
|
+
case type
|
104
|
+
when "Tickets"
|
105
|
+
{
|
106
|
+
subject: record[:subject],
|
107
|
+
comment: { body: record[:description] },
|
108
|
+
priority: record[:priority],
|
109
|
+
status: record[:status],
|
110
|
+
requester_id: record[:requester_id],
|
111
|
+
assignee_id: record[:assignee_id],
|
112
|
+
tags: record[:tags]
|
113
|
+
}
|
114
|
+
when "Users"
|
115
|
+
{
|
116
|
+
name: record[:name],
|
117
|
+
email: record[:email],
|
118
|
+
role: record[:role]
|
119
|
+
}
|
120
|
+
else
|
121
|
+
raise StandardError, "Unsupported record type: #{type}"
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def load_catalog
|
126
|
+
read_json(CATALOG_SPEC_PATH)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
{
|
2
|
+
"request_rate_limit": 700,
|
3
|
+
"request_rate_limit_unit": "minute",
|
4
|
+
"request_rate_concurrency": 10,
|
5
|
+
"streams": [
|
6
|
+
{
|
7
|
+
"name": "tickets",
|
8
|
+
"action": "create",
|
9
|
+
"json_schema": {
|
10
|
+
"type": "object",
|
11
|
+
"additionalProperties": true,
|
12
|
+
"properties": {
|
13
|
+
"id": {
|
14
|
+
"type": "integer"
|
15
|
+
},
|
16
|
+
"subject": {
|
17
|
+
"type": "string"
|
18
|
+
},
|
19
|
+
"description": {
|
20
|
+
"type": "string"
|
21
|
+
},
|
22
|
+
"status": {
|
23
|
+
"type": "string"
|
24
|
+
},
|
25
|
+
"priority": {
|
26
|
+
"type": "string"
|
27
|
+
},
|
28
|
+
"requester_id": {
|
29
|
+
"type": "integer"
|
30
|
+
},
|
31
|
+
"assignee_id": {
|
32
|
+
"type": "integer"
|
33
|
+
},
|
34
|
+
"tags": {
|
35
|
+
"type": "array",
|
36
|
+
"items": {
|
37
|
+
"type": "string"
|
38
|
+
}
|
39
|
+
},
|
40
|
+
"created_at": {
|
41
|
+
"type": "string",
|
42
|
+
"format": "date-time"
|
43
|
+
},
|
44
|
+
"updated_at": {
|
45
|
+
"type": "string",
|
46
|
+
"format": "date-time"
|
47
|
+
}
|
48
|
+
}
|
49
|
+
},
|
50
|
+
"supported_sync_modes": [
|
51
|
+
"incremental"
|
52
|
+
],
|
53
|
+
"source_defined_cursor": true,
|
54
|
+
"default_cursor_field": [
|
55
|
+
"updated_at"
|
56
|
+
],
|
57
|
+
"source_defined_primary_key": [
|
58
|
+
[
|
59
|
+
"id"
|
60
|
+
]
|
61
|
+
]
|
62
|
+
},
|
63
|
+
{
|
64
|
+
"name": "users",
|
65
|
+
"action": "create",
|
66
|
+
"json_schema": {
|
67
|
+
"type": "object",
|
68
|
+
"additionalProperties": true,
|
69
|
+
"properties": {
|
70
|
+
"id": {
|
71
|
+
"type": "integer"
|
72
|
+
},
|
73
|
+
"name": {
|
74
|
+
"type": "string"
|
75
|
+
},
|
76
|
+
"email": {
|
77
|
+
"type": "string"
|
78
|
+
},
|
79
|
+
"role": {
|
80
|
+
"type": "string"
|
81
|
+
},
|
82
|
+
"last_login_at": {
|
83
|
+
"type": "string",
|
84
|
+
"format": "date-time"
|
85
|
+
},
|
86
|
+
"created_at": {
|
87
|
+
"type": "string",
|
88
|
+
"format": "date-time"
|
89
|
+
},
|
90
|
+
"updated_at": {
|
91
|
+
"type": "string",
|
92
|
+
"format": "date-time"
|
93
|
+
}
|
94
|
+
}
|
95
|
+
},
|
96
|
+
"supported_sync_modes": [
|
97
|
+
"incremental"
|
98
|
+
],
|
99
|
+
"source_defined_cursor": true,
|
100
|
+
"default_cursor_field": [
|
101
|
+
"updated_at"
|
102
|
+
],
|
103
|
+
"source_defined_primary_key": [
|
104
|
+
[
|
105
|
+
"id"
|
106
|
+
]
|
107
|
+
]
|
108
|
+
}
|
109
|
+
]
|
110
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
{
|
2
|
+
"data": {
|
3
|
+
"name": "Zendesk",
|
4
|
+
"title": "Zendesk",
|
5
|
+
"connector_type": "destination",
|
6
|
+
"category": "Customer Support",
|
7
|
+
"documentation_url": "https://docs.squared.ai/guides/destinations/retl-destinations/customer-support/zendesk",
|
8
|
+
"github_issue_label": "destination-zendesk",
|
9
|
+
"icon": "icon.svg",
|
10
|
+
"license": "MIT",
|
11
|
+
"release_stage": "alpha",
|
12
|
+
"support_level": "community",
|
13
|
+
"tags": [
|
14
|
+
"language:ruby",
|
15
|
+
"outhad"
|
16
|
+
]
|
17
|
+
}
|
18
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
{
|
2
|
+
"documentation_url": "https://docs.squared.ai/guides/destinations/retl-destinations/customer-support/zendesk",
|
3
|
+
"stream_type": "static",
|
4
|
+
"connection_specification": {
|
5
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
6
|
+
"title": "Zendesk",
|
7
|
+
"type": "object",
|
8
|
+
"required": [
|
9
|
+
"username",
|
10
|
+
"password",
|
11
|
+
"subdomain"
|
12
|
+
],
|
13
|
+
"properties": {
|
14
|
+
"username": {
|
15
|
+
"type": "string",
|
16
|
+
"title": "Username",
|
17
|
+
"order": 0
|
18
|
+
},
|
19
|
+
"password": {
|
20
|
+
"type": "string",
|
21
|
+
"title": "Password",
|
22
|
+
"order": 1,
|
23
|
+
"outhad_secret": true
|
24
|
+
},
|
25
|
+
"subdomain": {
|
26
|
+
"type": "string",
|
27
|
+
"title": "Zendesk Subdomain (include https://)",
|
28
|
+
"order": 2
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
<?xml version="1.0" standalone="no"?>
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
3
|
+
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
4
|
+
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
5
|
+
width="1280.000000pt" height="913.000000pt" viewBox="0 0 1280.000000 913.000000"
|
6
|
+
preserveAspectRatio="xMidYMid meet">
|
7
|
+
|
8
|
+
<g transform="translate(0.000000,913.000000) scale(0.100000,-0.100000)"
|
9
|
+
fill="#000000" stroke="none">
|
10
|
+
<path d="M2836 9058 c30 -442 184 -789 483 -1089 777 -776 2073 -593 2604 368
|
11
|
+
118 214 182 435 203 706 l7 87 -1651 0 -1651 0 5 -72z"/>
|
12
|
+
<path d="M6670 7143 l0 -1988 24 25 c13 14 416 500 897 1080 480 580 1210
|
13
|
+
1461 1621 1957 411 497 748 905 748 908 0 3 -740 5 -1645 5 l-1645 0 0 -1987z"/>
|
14
|
+
<path d="M5913 7440 c-116 -140 -855 -1031 -1641 -1980 l-1429 -1725 1640 -3
|
15
|
+
c902 -1 1642 -1 1644 1 2 2 2 894 1 1983 l-3 1979 -212 -255z"/>
|
16
|
+
<path d="M8137 5359 c-804 -93 -1430 -760 -1459 -1554 l-3 -80 1643 -3 c1417
|
17
|
+
-2 1643 0 1648 12 8 22 -14 228 -36 334 -114 549 -530 1024 -1055 1205 -245
|
18
|
+
84 -500 114 -738 86z"/>
|
19
|
+
<path d="M6927 2433 c-4 -3 -7 -222 -7 -485 l0 -478 -72 61 c-82 68 -201 131
|
20
|
+
-298 156 -86 22 -270 22 -365 0 -312 -75 -535 -294 -621 -612 -25 -93 -30
|
21
|
+
-292 -10 -399 60 -318 275 -561 580 -655 57 -18 93 -21 228 -21 145 0 167 2
|
22
|
+
236 26 99 33 181 83 260 158 l62 59 0 -111 0 -112 175 0 175 0 0 1210 0 1210
|
23
|
+
-168 0 c-93 0 -172 -3 -175 -7z m-383 -1088 c94 -25 166 -66 237 -135 210
|
24
|
+
-206 212 -534 4 -746 -201 -205 -534 -205 -740 1 -287 287 -155 774 238 880
|
25
|
+
69 18 189 19 261 0z"/>
|
26
|
+
<path d="M11260 1230 l0 -1210 175 0 175 0 0 215 0 215 135 147 c75 82 139
|
27
|
+
149 143 151 4 1 122 -162 262 -362 l255 -365 199 0 198 -1 -18 28 c-9 15 -150
|
28
|
+
216 -312 447 -162 231 -303 432 -313 446 l-19 27 296 323 c163 178 308 336
|
29
|
+
322 352 l26 27 -215 0 -214 0 -370 -407 -370 -406 -3 791 -2 792 -175 0 -175
|
30
|
+
0 0 -1210z"/>
|
31
|
+
<path d="M2388 1695 c-432 -82 -721 -456 -695 -899 22 -371 231 -644 582 -763
|
32
|
+
75 -25 93 -27 303 -31 216 -4 225 -3 314 23 50 14 126 44 168 66 82 42 210
|
33
|
+
141 210 162 -1 6 -50 63 -109 126 l-108 114 -54 -40 c-194 -146 -470 -176
|
34
|
+
-677 -75 -106 51 -211 188 -229 297 l-6 35 647 0 646 0 0 93 c0 299 -120 583
|
35
|
+
-308 732 -76 61 -198 120 -297 145 -107 27 -286 34 -387 15z m262 -325 c123
|
36
|
+
-23 223 -95 278 -197 26 -51 62 -151 62 -175 0 -4 -205 -8 -454 -8 l-455 0 16
|
37
|
+
53 c73 245 294 376 553 327z"/>
|
38
|
+
<path d="M4375 1704 c-78 -12 -181 -38 -236 -60 -157 -64 -289 -184 -358 -326
|
39
|
+
-77 -156 -75 -138 -79 -750 l-3 -548 180 0 181 0 0 489 c0 286 4 510 10 541
|
40
|
+
15 80 55 159 107 212 141 143 433 153 584 20 44 -39 93 -130 108 -200 7 -35
|
41
|
+
11 -227 11 -557 l0 -505 181 0 180 0 -4 553 c-3 493 -5 558 -21 612 -76 255
|
42
|
+
-274 436 -546 500 -67 15 -242 27 -295 19z"/>
|
43
|
+
<path d="M8370 1704 c-14 -2 -52 -9 -85 -15 -128 -23 -272 -94 -388 -193 -109
|
44
|
+
-91 -206 -244 -253 -401 -25 -82 -28 -104 -27 -245 0 -184 17 -264 87 -405
|
45
|
+
103 -208 278 -349 521 -420 81 -23 102 -25 295 -25 192 0 214 2 294 25 131 38
|
46
|
+
247 101 338 183 21 19 38 39 38 46 -1 6 -49 62 -109 125 l-108 113 -48 -36
|
47
|
+
c-238 -182 -604 -183 -790 -1 -55 53 -111 155 -122 218 l-6 37 647 0 646 0 0
|
48
|
+
93 c0 448 -230 782 -604 877 -77 19 -272 34 -326 24z m200 -334 c123 -23 223
|
49
|
+
-95 278 -197 26 -51 62 -151 62 -175 0 -4 -205 -8 -454 -8 l-455 0 16 53 c46
|
50
|
+
157 147 266 288 310 89 28 177 34 265 17z"/>
|
51
|
+
<path d="M10070 1695 c-365 -74 -562 -393 -420 -681 73 -149 225 -229 572
|
52
|
+
-303 228 -49 314 -84 343 -141 47 -91 -25 -216 -145 -254 -172 -55 -370 -6
|
53
|
+
-491 121 -31 32 -60 67 -67 78 -10 19 -18 16 -166 -60 -86 -44 -156 -84 -156
|
54
|
+
-90 0 -22 108 -152 165 -198 75 -61 196 -121 299 -147 104 -26 394 -29 490 -4
|
55
|
+
213 54 387 222 427 411 29 144 -12 296 -106 387 -93 91 -203 137 -477 202
|
56
|
+
-232 54 -292 77 -340 124 -32 32 -38 44 -38 79 0 91 67 161 177 187 165 39
|
57
|
+
323 -6 433 -122 l50 -53 145 80 c167 93 163 82 65 180 -145 146 -348 220 -594
|
58
|
+
218 -55 0 -130 -7 -166 -14z"/>
|
59
|
+
<path d="M22 1513 l3 -158 483 -5 483 -5 -496 -504 -495 -505 0 -158 0 -158
|
60
|
+
735 0 735 0 0 155 0 155 -500 0 c-275 0 -500 3 -500 6 0 3 223 232 495 507
|
61
|
+
l495 502 0 163 0 162 -720 0 -721 0 3 -157z"/>
|
62
|
+
</g>
|
63
|
+
</svg>
|
@@ -0,0 +1,189 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
+
"title": "Mutliwoven Protocol",
|
4
|
+
"type": "object",
|
5
|
+
"description": "Mutliwoven protocol schema",
|
6
|
+
"version": "1.0.0",
|
7
|
+
"definitions": {
|
8
|
+
"SyncMode": {
|
9
|
+
"type": "string",
|
10
|
+
"enum": [
|
11
|
+
"full_refresh",
|
12
|
+
"incremental"
|
13
|
+
]
|
14
|
+
},
|
15
|
+
"SyncStatus": {
|
16
|
+
"type": "string",
|
17
|
+
"enum": [
|
18
|
+
"STARTED",
|
19
|
+
"RUNNING",
|
20
|
+
"COMPLETE",
|
21
|
+
"INCOMPLETE"
|
22
|
+
]
|
23
|
+
},
|
24
|
+
"DestinationSyncMode": {
|
25
|
+
"type": "string",
|
26
|
+
"enum": [
|
27
|
+
"append",
|
28
|
+
"overwrite",
|
29
|
+
"append_dedup"
|
30
|
+
]
|
31
|
+
},
|
32
|
+
"ProtocolModel": {
|
33
|
+
"type": "object",
|
34
|
+
"additionalProperties": true
|
35
|
+
},
|
36
|
+
"ConnectionStatus": {
|
37
|
+
"type": "object",
|
38
|
+
"properties": {
|
39
|
+
"status": {
|
40
|
+
"$ref": "#/definitions/Types/String.enum(SUCCEEDED,FAILED)"
|
41
|
+
},
|
42
|
+
"message": {
|
43
|
+
"type": "string"
|
44
|
+
}
|
45
|
+
},
|
46
|
+
"additionalProperties": true
|
47
|
+
},
|
48
|
+
"ConnectorSpecification": {
|
49
|
+
"type": "object",
|
50
|
+
"properties": {
|
51
|
+
"documentation_url": {
|
52
|
+
"type": "string"
|
53
|
+
},
|
54
|
+
"changelog_url": {
|
55
|
+
"type": "string"
|
56
|
+
},
|
57
|
+
"connection_specification": {
|
58
|
+
"type": "object"
|
59
|
+
},
|
60
|
+
"supports_normalization": {
|
61
|
+
"type": "boolean",
|
62
|
+
"default": false
|
63
|
+
},
|
64
|
+
"supports_dbt": {
|
65
|
+
"type": "boolean",
|
66
|
+
"default": false
|
67
|
+
},
|
68
|
+
"supported_destination_sync_modes": {
|
69
|
+
"type": "array",
|
70
|
+
"items": {
|
71
|
+
"$ref": "#/definitions/DestinationSyncMode"
|
72
|
+
}
|
73
|
+
}
|
74
|
+
},
|
75
|
+
"additionalProperties": true
|
76
|
+
},
|
77
|
+
"LogMessage": {
|
78
|
+
"type": "object",
|
79
|
+
"properties": {
|
80
|
+
"level": {
|
81
|
+
"$ref": "#/definitions/Types/String.enum(FATAL,ERROR,WARN,INFO,DEBUG,TRACE)"
|
82
|
+
},
|
83
|
+
"message": {
|
84
|
+
"type": "string"
|
85
|
+
},
|
86
|
+
"stack_trace": {
|
87
|
+
"type": "string"
|
88
|
+
}
|
89
|
+
},
|
90
|
+
"additionalProperties": true
|
91
|
+
},
|
92
|
+
"RecordMessage": {
|
93
|
+
"type": "object",
|
94
|
+
"properties": {
|
95
|
+
"stream": {
|
96
|
+
"type": "string"
|
97
|
+
},
|
98
|
+
"data": {
|
99
|
+
"type": "object"
|
100
|
+
},
|
101
|
+
"emitted_at": {
|
102
|
+
"type": "integer"
|
103
|
+
}
|
104
|
+
},
|
105
|
+
"additionalProperties": true
|
106
|
+
},
|
107
|
+
"Stream": {
|
108
|
+
"type": "object",
|
109
|
+
"properties": {
|
110
|
+
"name": {
|
111
|
+
"type": "string"
|
112
|
+
},
|
113
|
+
"json_schema": {
|
114
|
+
"type": "object"
|
115
|
+
},
|
116
|
+
"supported_sync_modes": {
|
117
|
+
"type": "array",
|
118
|
+
"items": {
|
119
|
+
"$ref": "#/definitions/SyncMode"
|
120
|
+
}
|
121
|
+
},
|
122
|
+
"source_defined_cursor": {
|
123
|
+
"type": "boolean"
|
124
|
+
},
|
125
|
+
"default_cursor_field": {
|
126
|
+
"type": "array",
|
127
|
+
"items": {
|
128
|
+
"type": "string"
|
129
|
+
}
|
130
|
+
},
|
131
|
+
"source_defined_primary_key": {
|
132
|
+
"type": "array",
|
133
|
+
"items": {
|
134
|
+
"type": "array",
|
135
|
+
"items": {
|
136
|
+
"type": "string"
|
137
|
+
}
|
138
|
+
}
|
139
|
+
},
|
140
|
+
"namespace": {
|
141
|
+
"type": "string"
|
142
|
+
}
|
143
|
+
},
|
144
|
+
"additionalProperties": true
|
145
|
+
},
|
146
|
+
"Catalog": {
|
147
|
+
"type": "object",
|
148
|
+
"properties": {
|
149
|
+
"streams": {
|
150
|
+
"type": "array",
|
151
|
+
"items": {
|
152
|
+
"$ref": "#/definitions/Stream"
|
153
|
+
}
|
154
|
+
}
|
155
|
+
},
|
156
|
+
"additionalProperties": true
|
157
|
+
},
|
158
|
+
"SyncConfig": {
|
159
|
+
"type": "object",
|
160
|
+
"properties": {
|
161
|
+
"stream": {
|
162
|
+
"$ref": "#/definitions/Stream"
|
163
|
+
},
|
164
|
+
"sync_mode": {
|
165
|
+
"$ref": "#/definitions/SyncMode"
|
166
|
+
},
|
167
|
+
"cursor_field": {
|
168
|
+
"type": "array",
|
169
|
+
"items": {
|
170
|
+
"type": "string"
|
171
|
+
}
|
172
|
+
},
|
173
|
+
"destination_sync_mode": {
|
174
|
+
"$ref": "#/definitions/DestinationSyncMode"
|
175
|
+
},
|
176
|
+
"primary_key": {
|
177
|
+
"type": "array",
|
178
|
+
"items": {
|
179
|
+
"type": "array",
|
180
|
+
"items": {
|
181
|
+
"type": "string"
|
182
|
+
}
|
183
|
+
}
|
184
|
+
}
|
185
|
+
},
|
186
|
+
"additionalProperties": true
|
187
|
+
}
|
188
|
+
}
|
189
|
+
}
|