# Zendesk Support

## Authentication methods

### OAuth (User Created)

This method uses your own Zendesk App to authorize access, and is the most secure method since your own OAuth credentials are used.

For the latest Zendesk OAuth Client configuration steps, [visit the Zendesk docs](https://support.zendesk.com/hc/en-us/articles/4408845965210-Using-OAuth-authentication-with-your-application).

You can create a OAuth client at:\
https\://\<your subdomain>.zendesk.com/admin/apps-integrations/apis/zendesk-api/oauth\_clients

### Notes about connecting from Omnata

#### Connection parameters

The Unique Identifier and Secret are used in the Omnata connection creation as the Client ID and Client Secret respectively.

#### Client kind

The Client kind must be set to "Confidential" as the credentials are securely stored in Snowflake, removing the need for PKCE.

#### Redirect URLs

If you're unsure what value to set for the Redirect URLs, the following Snowflake query will construct it for your account:

{% code title="Run this query to construct the redirect URL for your Snowflake account" overflow="wrap" %}

```sql
select 'https://'||get(parse_json(SYSTEM$allowlist()),0):"host"::varchar||'/oauth/complete-secret' as REDIRECT_URL;
```

{% endcode %}

### Zendesk Plan for API Rate Limits

We will ask for your Zendesk product plan during the connection flow. This is because Zendesk apply rate-limits based on your plan and our Sync Engine will automatically throttle syncs to stay under these limits. You can always change or override these [rate limits](https://docs.omnata.com/omnata-product-documentation/omnata-sync-for-snowflake/how-it-works/rate-limiting) later.

You can find information on Zendesk API limits by plan on [in their docs](https://developer.zendesk.com/api-reference/introduction/rate-limits/?_ga=2.236374917.588269685.1723061165-1680524534.1723061165#zendesk-suite-plan-limits).

## Inbound Syncs

The following are available as inbound streams:

* Tickets (Full Refresh or Incremental)
* Organizations (Full Refresh or Incremental)
* Users (Full Refresh or Incremental)
* Groups (Full Refresh or Incremental)
* Group Memberships (Full Refresh or Incremental)
* Ticket Fields (Full Refresh)
* Ticket Events (Full Refresh or Incremental)

## Outbound Syncs

### Supported Targets

* Tickets
* Users
* Organizations
* Custom Objects

### Supported Sync Strategies

* Create
* Upsert
* Mirror
* Delete

{% hint style="warning" %}
Zendesk allows Users and Organizations to be identified via an external ID, which means the Upsert and Mirror sync strategies can match up with already-existing records on the first sync.

Tickets do not support this, so during the first sync every record will create a new ticket, and subsequent changes to the same record will update that ticket.
{% endhint %}
