{
  "ab_internal": {
    "isEnterprise": false,
    "ql": 400,
    "requireVersionIncrementsInPullRequests": true,
    "sl": 300
  },
  "allowedHosts": {
    "hosts": [
      "${subdomain}.zendesk.com",
      "zendesk.com"
    ]
  },
  "connectorBuildOptions": {
    "baseImage": "docker.io/airbyte/source-declarative-manifest:7.23.4@sha256:f63c39a8a6f28ec20ada2ddf5861f3b1fb7b6a1ef1a8a8d1d537ff684ee3f9bd"
  },
  "connectorTestSuitesOptions": [
    {
      "suite": "liveTests",
      "testConnections": [
        {
          "id": "0c87dd87-c04e-4fed-a86a-fa4b6acdfef6",
          "name": "zendesk-support_config_dev_null"
        },
        {
          "id": "36dad615-075b-46ed-8191-6436ca0abc29",
          "name": "zendesk-support_config_ticket_metrics_dev_null"
        },
        {
          "id": "3fef7ac6-3265-457d-9d18-cb0906ba6dde",
          "name": "zendesk-support_config_oauth_dev_null"
        }
      ]
    },
    {
      "suite": "unitTests"
    },
    {
      "suite": "acceptanceTests",
      "testSecrets": [
        {
          "fileName": "config_oauth.json",
          "name": "SECRET_SOURCE-ZENDESK-SUPPORT_OAUTH_CRED",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config.json",
          "name": "SECRET_SOURCE-ZENDESK-SUPPORT_TOKEN_CRED",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config_oauth.json",
          "name": "SECRET_ZENDESK_SUPPORT_OAUTH_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        }
      ]
    }
  ],
  "custom": false,
  "dockerImageTag": "5.5.0-preview.ac004cc",
  "dockerRepository": "airbyte/source-zendesk-support",
  "documentationUrl": "https://docs.airbyte.com/integrations/sources/zendesk-support",
  "externalDocumentationUrls": [
    {
      "title": "Zendesk Support API",
      "type": "api_reference",
      "url": "https://developer.zendesk.com/api-reference/ticketing/introduction/"
    },
    {
      "title": "API Changelog",
      "type": "api_release_history",
      "url": "https://developer.zendesk.com/api-reference/changelog/changelog/"
    },
    {
      "title": "Zendesk API changelog",
      "type": "api_release_history",
      "url": "https://developer.zendesk.com/api-reference/ticketing/introduction/#changes"
    },
    {
      "title": "Zendesk authentication",
      "type": "authentication_guide",
      "url": "https://developer.zendesk.com/api-reference/ticketing/introduction/#security-and-authentication"
    },
    {
      "title": "Zendesk rate limits",
      "type": "rate_limits",
      "url": "https://developer.zendesk.com/api-reference/ticketing/account-configuration/usage_limits/"
    },
    {
      "title": "Zendesk Status",
      "type": "status_page",
      "url": "https://status.zendesk.com/"
    }
  ],
  "generated": {
    "git": {
      "commit_author": "Anatolii Yatsuk",
      "commit_author_email": "tolikyatsuk@gmail.com",
      "commit_sha": "3a4b454fddc0db6811b75df2f1920fa60a4279f5",
      "commit_timestamp": "2026-07-10T18:34:28+03:00"
    },
    "sbomUrl": "https://connectors.airbyte.com/files/sbom/airbyte/source-zendesk-support/5.5.0-preview.ac004cc.spdx.json",
    "source_file_info": {
      "metadata_bucket_name": "prod-airbyte-cloud-connector-metadata-service",
      "metadata_file_path": "metadata/airbyte/source-zendesk-support/5.5.0-preview.ac004cc/metadata.yaml",
      "metadata_last_modified": "2026-07-11T11:52:14.874559+00:00",
      "registry_entry_generated_at": "2026-07-11T11:52:14.874559+00:00"
    }
  },
  "githubIssueLabel": "source-zendesk-support",
  "icon": "zendesk-support.svg",
  "iconUrl": "https://connectors.airbyte.com/files/metadata/airbyte/source-zendesk-support/latest/icon.svg",
  "language": "manifest-only",
  "license": "ELv2",
  "maxSecondsBetweenMessages": 60,
  "name": "Zendesk Support",
  "packageInfo": {},
  "public": true,
  "releaseStage": "generally_available",
  "releases": {
    "breakingChanges": {
      "1.0.0": {
        "message": "`cursor_field` for `Tickets` stream is changed to `generated_timestamp`",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/zendesk-support-migrations#1.0.0",
        "upgradeDeadline": "2023-07-19"
      },
      "2.0.0": {
        "message": "The `Deleted Tickets` stream was removed. Deleted tickets are still available from the Tickets stream.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/zendesk-support-migrations#2.0.0",
        "upgradeDeadline": "2023-10-04"
      },
      "3.0.0": {
        "message": "This version includes breaking changes to the `TicketsMetric` stream.  The cursor field has been updated to `generated_timestamp`. It is necessary to refresh the data and schema for the affected stream. Please see the migration guide for additional details.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/zendesk-support-migrations#3.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "ticket_metrics"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2024-09-09"
      },
      "4.0.0": {
        "message": "This version includes breaking changes to the `Tags` stream. The pagination strategy has been changed from `Offset` to `Cursor-Based`. It is necessary to reset the stream. Please see the migration guide for additional details.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/zendesk-support-migrations#4.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "tags"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2024-09-09"
      },
      "5.0.0": {
        "message": "This version adds OAuth2.0 with refresh token support. Users who authenticate via OAuth must re-authenticate to use the new flow with rotating refresh tokens.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/zendesk-support-migrations#5.0.0",
        "upgradeDeadline": "2026-01-30"
      }
    },
    "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/zendesk-support-migrations",
    "rolloutConfiguration": {
      "advanceDelayMinutes": 10,
      "enableProgressiveRollout": false,
      "initialPercentage": 0,
      "maxPercentage": 50
    }
  },
  "remoteRegistries": {
    "pypi": {
      "enabled": false,
      "packageName": "airbyte-source-zendesk-support"
    }
  },
  "sourceDefinitionId": "79c1aa37-dae3-42ae-b333-d1c105477715",
  "sourceType": "api",
  "spec": {
    "advanced_auth": {
      "auth_flow_type": "oauth2.0",
      "oauth_config_specification": {
        "complete_oauth_output_specification": {
          "properties": {
            "access_token": {
              "path_in_connector_config": [
                "credentials",
                "access_token"
              ],
              "type": "string"
            },
            "refresh_token": {
              "path_in_connector_config": [
                "credentials",
                "refresh_token"
              ],
              "type": "string"
            },
            "token_expiry_date": {
              "format": "date-time",
              "path_in_connector_config": [
                "credentials",
                "token_expiry_date"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "complete_oauth_server_input_specification": {
          "additionalProperties": false,
          "properties": {
            "client_id": {
              "type": "string"
            },
            "client_secret": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "complete_oauth_server_output_specification": {
          "additionalProperties": false,
          "properties": {
            "client_id": {
              "path_in_connector_config": [
                "credentials",
                "client_id"
              ],
              "type": "string"
            },
            "client_secret": {
              "path_in_connector_config": [
                "credentials",
                "client_secret"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "oauth_connector_input_specification": {
          "access_token_url": "https://{{subdomain}}.zendesk.com/oauth/tokens?grant_type=authorization_code&{{auth_code_param}}&{{client_id_param}}&{{client_secret_param}}&{{redirect_uri_param}}&{{scopes_param}}",
          "consent_url": "https://{{subdomain}}.zendesk.com/oauth/authorizations/new?response_type=code&{{client_id_param}}&{{redirect_uri_param}}&{{scopes_param}}&{{state_param}}",
          "extract_output": [
            "access_token",
            "refresh_token"
          ],
          "scopes": [
            {
              "scope": "read"
            }
          ],
          "scopes_join_strategy": "space"
        },
        "oauth_user_input_from_connector_config_specification": {
          "additionalProperties": false,
          "properties": {
            "subdomain": {
              "path_in_connector_config": [
                "subdomain"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "predicate_key": [
        "credentials",
        "credentials"
      ],
      "predicate_value": "oauth2_refresh"
    },
    "connectionSpecification": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": true,
      "properties": {
        "credentials": {
          "description": "Zendesk allows three authentication methods. We recommend using `OAuth2.0 with Refresh Token` for Airbyte Cloud users (recommended), `OAuth2.0 (Legacy)` for existing OAuth connections, and `API token` for Airbyte Open Source users.",
          "oneOf": [
            {
              "additionalProperties": true,
              "properties": {
                "access_token": {
                  "airbyte_secret": true,
                  "description": "Access Token for making authenticated requests.",
                  "title": "Access Token",
                  "type": "string"
                },
                "client_id": {
                  "airbyte_secret": true,
                  "description": "The OAuth client's ID. See <a href=\"https://developer.zendesk.com/api-reference/ticketing/oauth/grant_type_tokens/\">Zendesk OAuth grant-type tokens documentation</a> for more information.",
                  "title": "Client ID",
                  "type": "string"
                },
                "client_secret": {
                  "airbyte_secret": true,
                  "description": "The OAuth client secret. See <a href=\"https://developer.zendesk.com/api-reference/ticketing/oauth/grant_type_tokens/\">Zendesk OAuth grant-type tokens documentation</a> for more information.",
                  "title": "Client Secret",
                  "type": "string"
                },
                "credentials": {
                  "const": "oauth2_refresh",
                  "order": 0,
                  "type": "string"
                },
                "refresh_token": {
                  "airbyte_secret": true,
                  "description": "The refresh token used to obtain new access tokens. Note that Zendesk uses rotating refresh tokens - each refresh will return a new refresh token and invalidate the previous one.",
                  "title": "Refresh Token",
                  "type": "string"
                },
                "token_expiry_date": {
                  "description": "The date-time when the access token should be refreshed.",
                  "format": "date-time",
                  "title": "Token Expiry Date",
                  "type": "string"
                }
              },
              "required": [
                "client_id",
                "client_secret",
                "refresh_token"
              ],
              "title": "OAuth2.0 with Refresh Token",
              "type": "object"
            },
            {
              "additionalProperties": true,
              "properties": {
                "api_token": {
                  "airbyte_secret": true,
                  "description": "The value of the API token generated. See our <a href=\"https://docs.airbyte.com/integrations/sources/zendesk-support#setup-guide\">full documentation</a> for more information on generating this token.",
                  "title": "API Token",
                  "type": "string"
                },
                "credentials": {
                  "const": "api_token",
                  "order": 0,
                  "type": "string"
                },
                "email": {
                  "description": "The user email for your Zendesk account.",
                  "title": "Email",
                  "type": "string"
                }
              },
              "required": [
                "email",
                "api_token"
              ],
              "title": "API Token",
              "type": "object"
            },
            {
              "additionalProperties": true,
              "properties": {
                "access_token": {
                  "airbyte_secret": true,
                  "description": "The OAuth access token. See the <a href=\"https://developer.zendesk.com/documentation/ticketing/working-with-oauth/creating-and-using-oauth-tokens-with-the-api/\">Zendesk docs</a> for more information on generating this token.",
                  "title": "Access Token",
                  "type": "string"
                },
                "client_id": {
                  "airbyte_secret": true,
                  "description": "The OAuth client's ID. See <a href=\"https://docs.searchunify.com/Content/Content-Sources/Zendesk-Authentication-OAuth-Client-ID-Secret.htm#:~:text=Get%20Client%20ID%20and%20Client%20Secret&text=Go%20to%20OAuth%20Clients%20and,will%20be%20displayed%20only%20once.\">this guide</a> for more information.",
                  "title": "Client ID",
                  "type": "string"
                },
                "client_secret": {
                  "airbyte_secret": true,
                  "description": "The OAuth client secret. See <a href=\"https://docs.searchunify.com/Content/Content-Sources/Zendesk-Authentication-OAuth-Client-ID-Secret.htm#:~:text=Get%20Client%20ID%20and%20Client%20Secret&text=Go%20to%20OAuth%20Clients%20and,will%20be%20displayed%20only%20once.\">this guide</a> for more information.",
                  "title": "Client Secret",
                  "type": "string"
                },
                "credentials": {
                  "const": "oauth2.0",
                  "order": 0,
                  "type": "string"
                }
              },
              "required": [
                "access_token"
              ],
              "title": "OAuth2.0 (Legacy)",
              "type": "object"
            }
          ],
          "order": 1,
          "title": "Authentication",
          "type": "object"
        },
        "ignore_pagination": {
          "airbyte_hidden": true,
          "default": false,
          "description": "[Deprecated] Makes each stream read a single page of data.",
          "title": "[Deprecated] Should the connector read the second and further pages of data.",
          "type": "boolean"
        },
        "num_workers": {
          "default": 4,
          "description": "The number of worker threads to use for the sync. Higher values can improve sync throughput on large workspaces; lower values reduce load on the source.",
          "examples": [
            1,
            2,
            4,
            10
          ],
          "maximum": 40,
          "minimum": 1,
          "order": 3,
          "title": "Number of concurrent threads",
          "type": "integer"
        },
        "page_size": {
          "default": 100,
          "description": "The number of records per page for the ticket_comments stream API requests. Lower values may help prevent timeouts on large datasets. The maximum value is 1000.",
          "examples": [
            100,
            250,
            500
          ],
          "maximum": 1000,
          "minimum": 1,
          "order": 4,
          "title": "Page Size (ticket_comments)",
          "type": "integer"
        },
        "start_date": {
          "description": "The UTC date and time from which you'd like to replicate data, in the format YYYY-MM-DDT00:00:00Z. All data generated after this date will be replicated.",
          "examples": [
            "2020-10-15T00:00:00Z"
          ],
          "format": "date-time",
          "order": 2,
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$",
          "pattern_descriptor": "YYYY-MM-DDTHH:mm:ssZ",
          "title": "Start Date",
          "type": "string"
        },
        "subdomain": {
          "description": "This is your unique Zendesk subdomain that can be found in your account URL. For example, in https://MY_SUBDOMAIN.zendesk.com/, MY_SUBDOMAIN is the value of your subdomain.",
          "order": 0,
          "title": "Subdomain",
          "type": "string"
        },
        "ticket_search_lookback_days": {
          "default": 0,
          "description": "Only applies to the optional `tickets_search` stream. Number of days to re-scan before the last saved cursor on each incremental sync. This helps catch late or out-of-order `updated_at` changes. Note: it does NOT recover automation/macro/system updates (those never change `updated_at`) \u2014 use the default `tickets` stream if you need complete change tracking.",
          "examples": [
            0,
            7,
            30
          ],
          "minimum": 0,
          "order": 5,
          "title": "Tickets Search Lookback Window (days)",
          "type": "integer"
        }
      },
      "required": [
        "subdomain"
      ],
      "title": "Source Zendesk Support Spec",
      "type": "object"
    },
    "supportsDBT": false,
    "supportsNormalization": false
  },
  "suggestedStreams": {
    "streams": [
      "brands",
      "deleted_tickets",
      "groups",
      "organizations",
      "satisfaction_ratings",
      "tags",
      "ticket_audits",
      "ticket_comments",
      "ticket_fields",
      "ticket_forms",
      "ticket_events",
      "ticket_metric_events",
      "ticket_metrics",
      "tickets",
      "users"
    ]
  },
  "supportLevel": "certified",
  "supportsDataActivation": false,
  "supportsFileTransfer": true,
  "tags": [
    "cdk:low-code",
    "language:manifest-only"
  ],
  "tombstone": false
}
